diff --git a/CHANGELOG.md b/CHANGELOG.md index d21b1582cf..88614e484a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,7 +31,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - 🪪 **More user placeholders in custom headers.** Custom-header templates for direct connections and tool servers now support "{{USER_EMAIL}}" and "{{USER_ROLE}}" alongside the existing user and session placeholders. [Commit](https://github.com/open-webui/open-webui/commit/ed73ef3d8df988b0e9646b82df5b1a453202ef8d) - ⏱️ **Configurable MCP connection timeout.** The timeout for the initial handshake with an MCP tool server is now configurable via the new "MCP_INITIALIZE_TIMEOUT" setting, so servers that are slow to start or expose many tools can finish connecting instead of timing out. [#25011](https://github.com/open-webui/open-webui/pull/25011), [Commit](https://github.com/open-webui/open-webui/commit/4297c02b121180e239a61c483ac8477cc557d4ef) - 📐 **Profile image size limit.** Administrators can now cap the size of inline profile images via the new "PROFILE_IMAGE_MAX_DATA_URI_SIZE" setting, bounding how much database and cache space inline avatars and model icons can consume. [#25468](https://github.com/open-webui/open-webui/issues/25468), [#25476](https://github.com/open-webui/open-webui/pull/25476) -- 🎫 **Wildcard OAuth role mapping.** Administrators can now set "*" in the allowed OAuth roles to grant the user role to any authenticated OAuth user, instead of having to enumerate every accepted role. [#25062](https://github.com/open-webui/open-webui/pull/25062), [Commit](https://github.com/open-webui/open-webui/commit/07cbc91a8eba3a9a3b39588b2ae5de916930af70) +- 🎫 **Wildcard OAuth role mapping.** Administrators can now set "\*" in the allowed OAuth roles to grant the user role to any authenticated OAuth user, instead of having to enumerate every accepted role. [#25062](https://github.com/open-webui/open-webui/pull/25062), [Commit](https://github.com/open-webui/open-webui/commit/07cbc91a8eba3a9a3b39588b2ae5de916930af70) - 📊 **Paginated feedback history.** The feedback and evaluation history list is now paginated, keeping it responsive for instances that have accumulated large numbers of feedback entries. [Commit](https://github.com/open-webui/open-webui/commit/160a6694e4bd66fc42e6361947516e8e15414ef3) - ➡️ **Optional auto-redirect to single sign-on.** Administrators can now enable "OAUTH_AUTO_REDIRECT" so that, on deployments with a single sign-on provider and no other login methods, users are sent straight to the provider instead of seeing a login page first. [#25067](https://github.com/open-webui/open-webui/pull/25067), [Commit](https://github.com/open-webui/open-webui/commit/d64ef1803d2f5cedb7b3a308151d08ff2cd2b8e1) - ☁️ **Azure AI Foundry v1 with Entra ID.** Open WebUI now supports Azure AI Foundry's OpenAI v1 endpoint together with Microsoft Entra ID authentication, so these connections work without manual workarounds. [#24761](https://github.com/open-webui/open-webui/issues/24761), [#24985](https://github.com/open-webui/open-webui/pull/24985), [Commit](https://github.com/open-webui/open-webui/commit/eb4eebc3ce1042cb0d393bf890c1895db6e08b19) diff --git a/backend/open_webui/env.py b/backend/open_webui/env.py index 01b1e9dde3..1e96689d7e 100644 --- a/backend/open_webui/env.py +++ b/backend/open_webui/env.py @@ -685,9 +685,7 @@ BYPASS_RETRIEVAL_ACCESS_CONTROL = os.getenv('BYPASS_RETRIEVAL_ACCESS_CONTROL', ' # web-search-*, or knowledge-base collection are allowed through access control # for non-admin users. When False (default), unknown collection names are # denied — closing the legacy unscoped namespace. -ENABLE_RETRIEVAL_UNSCOPED_COLLECTIONS = ( - os.getenv('ENABLE_RETRIEVAL_UNSCOPED_COLLECTIONS', 'False').lower() == 'true' -) +ENABLE_RETRIEVAL_UNSCOPED_COLLECTIONS = os.getenv('ENABLE_RETRIEVAL_UNSCOPED_COLLECTIONS', 'False').lower() == 'true' # When enabled, skips pydub-based preprocessing (format conversion, compression, # and chunked splitting) before sending files to processing engines. Useful when @@ -800,9 +798,7 @@ PROFILE_IMAGE_ALLOWED_MIME_TYPES = frozenset( # Max stored length (bytes) of a data:image profile URI; bounds Postgres/Redis # bloat from inline avatars and model icons. Unset (default) disables the cap. _profile_image_max_data_uri_size = os.getenv('PROFILE_IMAGE_MAX_DATA_URI_SIZE', '').strip() -PROFILE_IMAGE_MAX_DATA_URI_SIZE = ( - int(_profile_image_max_data_uri_size) if _profile_image_max_data_uri_size else None -) +PROFILE_IMAGE_MAX_DATA_URI_SIZE = int(_profile_image_max_data_uri_size) if _profile_image_max_data_uri_size else None #################################### # Forward Headers diff --git a/backend/open_webui/internal/db.py b/backend/open_webui/internal/db.py index 496029fe5c..d3402b0310 100644 --- a/backend/open_webui/internal/db.py +++ b/backend/open_webui/internal/db.py @@ -127,10 +127,13 @@ class JSONField(types.TypeDecorator): # TEXT-backed JSON storage impl = types.UnicodeText cache_ok = True + def process_bind_param(self, value: _T | None, dialect: Dialect) -> Any: return json.dumps(value) if value is not None else None + def process_result_value(self, value: _T | None, dialect: Dialect) -> Any: return json.loads(value) if value is not None else None + def copy(self, **kwargs: Any) -> Self: return JSONField(length=self.impl.length) diff --git a/backend/open_webui/main.py b/backend/open_webui/main.py index 7611ca454b..e05497c616 100644 --- a/backend/open_webui/main.py +++ b/backend/open_webui/main.py @@ -2061,7 +2061,9 @@ async def chat_completion( if metadata.get('chat_id') and metadata.get('message_id'): # Update the chat message with the error try: - if not metadata.get('chat_id', '').startswith('local:') and not metadata.get('chat_id', '').startswith('channel:'): + if not metadata.get('chat_id', '').startswith('local:') and not metadata.get( + 'chat_id', '' + ).startswith('channel:'): await Chats.upsert_message_to_chat_by_id_and_message_id( metadata['chat_id'], metadata['message_id'], @@ -2969,6 +2971,8 @@ async def check_db_health(): """Verify database connectivity by issuing a lightweight ping.""" await async_db_ping() return {'status': True} + + # --- static assets & files --- # Serve build-time static assets (CSS, JS, images, favicon, etc.) app.mount('/static', StaticFiles(directory=STATIC_DIR), name='static') diff --git a/backend/open_webui/migrations/env.py b/backend/open_webui/migrations/env.py index 648c32ef74..6fcd9a64cd 100644 --- a/backend/open_webui/migrations/env.py +++ b/backend/open_webui/migrations/env.py @@ -1,4 +1,5 @@ from __future__ import annotations + # Alembic environment configuration runner. # Coordinates database migrations in both offline and online execution modes. import logging.config @@ -9,11 +10,13 @@ from open_webui.internal.db import extract_ssl_params_from_url, reattach_ssl_par from open_webui.models.auths import Auth from open_webui.models.calendar import Calendar, CalendarEvent, CalendarEventAttendee # noqa: F401 from sqlalchemy import create_engine, engine_from_config, pool + alembic_config = alembic.context.config if alembic_config.config_file_name: logging.config.fileConfig(alembic_config.config_file_name, disable_existing_loggers=False) if LOG_FORMAT == 'json': from open_webui.env import JSONFormatter + for log_handler in logging.root.handlers: log_handler.setFormatter(JSONFormatter()) migration_metadata = Auth.metadata @@ -23,12 +26,21 @@ if ssl_query_params: target_db_url = reattach_ssl_params_to_url(base_url, ssl_query_params) if target_db_url: alembic_config.set_main_option('sqlalchemy.url', target_db_url.replace('%', '%%')) + + def run_migrations_offline() -> None: """Execute Alembic migrations in offline mode (outputs raw SQL DDL).""" db_connection_url = alembic_config.get_main_option('sqlalchemy.url') - alembic.context.configure(url=db_connection_url, target_metadata=migration_metadata, literal_binds=True, dialect_opts={"paramstyle": "named"}) + alembic.context.configure( + url=db_connection_url, + target_metadata=migration_metadata, + literal_binds=True, + dialect_opts={'paramstyle': 'named'}, + ) with alembic.context.begin_transaction(): alembic.context.run_migrations() + + def _get_engine_connectable(): """Build the database engine based on target URL and authentication credentials.""" if target_db_url and target_db_url.startswith('sqlite+sqlcipher://'): @@ -37,17 +49,22 @@ def _get_engine_connectable(): raw_db_path = target_db_url.replace('sqlite+sqlcipher://', '') if raw_db_path.startswith('/'): raw_db_path = raw_db_path[1:] + def _sqlite_cipher_creator(): import sqlcipher3 + cipher_conn = sqlcipher3.connect(raw_db_path, check_same_thread=False) cipher_conn.execute(f"PRAGMA key = '{DATABASE_PASSWORD}'") return cipher_conn + return create_engine('sqlite://', creator=_sqlite_cipher_creator, echo=False) return engine_from_config( alembic_config.get_section(alembic_config.config_ini_section, {}), prefix='sqlalchemy.', poolclass=pool.NullPool, ) + + def run_migrations_online() -> None: """Execute migrations against a live database connection.""" live_connectable = _get_engine_connectable() @@ -58,6 +75,8 @@ def run_migrations_online() -> None: ) with alembic.context.begin_transaction(): alembic.context.run_migrations() + + # Alembic execution entrypoint branch if alembic.context.is_offline_mode(): run_migrations_offline() # run in offline mode diff --git a/backend/open_webui/migrations/util.py b/backend/open_webui/migrations/util.py index 5734b8a0d6..1c55faf0e9 100644 --- a/backend/open_webui/migrations/util.py +++ b/backend/open_webui/migrations/util.py @@ -4,6 +4,8 @@ from __future__ import annotations from alembic import op # noqa: E402 — alembic runtime context from sqlalchemy import inspect # metadata inspection + + # --- database helper functions --- def get_existing_tables() -> set[str]: """Return table names already present in the database.""" diff --git a/backend/open_webui/migrations/versions/3781e22d8b01_update_message_table.py b/backend/open_webui/migrations/versions/3781e22d8b01_update_message_table.py index aaebaacb49..7dd3ed33cb 100644 --- a/backend/open_webui/migrations/versions/3781e22d8b01_update_message_table.py +++ b/backend/open_webui/migrations/versions/3781e22d8b01_update_message_table.py @@ -53,7 +53,9 @@ def upgrade(): if 'channel_member' not in existing_tables: op.create_table( 'channel_member', - sa.Column('id', sa.Text(), nullable=False, primary_key=True, unique=True), # Record ID for the membership row + sa.Column( + 'id', sa.Text(), nullable=False, primary_key=True, unique=True + ), # Record ID for the membership row sa.Column('channel_id', sa.Text(), nullable=False), # Associated channel sa.Column('user_id', sa.Text(), nullable=False), # Associated user sa.Column('created_at', sa.BigInteger(), nullable=True), # Timestamp of when the user joined the channel diff --git a/backend/open_webui/migrations/versions/38d63c18f30f_add_oauth_session_table.py b/backend/open_webui/migrations/versions/38d63c18f30f_add_oauth_session_table.py index b212c7f43a..ff6fe65118 100644 --- a/backend/open_webui/migrations/versions/38d63c18f30f_add_oauth_session_table.py +++ b/backend/open_webui/migrations/versions/38d63c18f30f_add_oauth_session_table.py @@ -42,9 +42,9 @@ def upgrade() -> None: # Create indexes (idempotent — no-ops when table was just created # with the columns above, and safe to call if indexes already exist). - existing_indexes = { - idx['name'] for idx in inspector.get_indexes('oauth_session') - } if 'oauth_session' in existing_tables else set() + existing_indexes = ( + {idx['name'] for idx in inspector.get_indexes('oauth_session')} if 'oauth_session' in existing_tables else set() + ) if 'idx_oauth_session_user_id' not in existing_indexes: op.create_index('idx_oauth_session_user_id', 'oauth_session', ['user_id']) diff --git a/backend/open_webui/migrations/versions/3c9b0ca343fd_add_knowledge_directory_table.py b/backend/open_webui/migrations/versions/3c9b0ca343fd_add_knowledge_directory_table.py index ab2b0c9498..90b1bb0085 100644 --- a/backend/open_webui/migrations/versions/3c9b0ca343fd_add_knowledge_directory_table.py +++ b/backend/open_webui/migrations/versions/3c9b0ca343fd_add_knowledge_directory_table.py @@ -5,6 +5,7 @@ Revises: a0b1c2d3e4f5 Create Date: 2026-05-13 21:58:40.832482 """ + from typing import Sequence, Union from alembic import op @@ -36,7 +37,9 @@ def upgrade() -> None: sa.ForeignKeyConstraint(['knowledge_id'], ['knowledge.id'], ondelete='CASCADE'), sa.ForeignKeyConstraint(['parent_id'], ['knowledge_directory.id'], ondelete='CASCADE'), sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('knowledge_id', 'parent_id', 'name', name='uq_knowledge_directory_knowledge_parent_name'), + sa.UniqueConstraint( + 'knowledge_id', 'parent_id', 'name', name='uq_knowledge_directory_knowledge_parent_name' + ), ) op.create_index('ix_knowledge_directory_knowledge_id', 'knowledge_directory', ['knowledge_id']) op.create_index('ix_knowledge_directory_parent_id', 'knowledge_directory', ['parent_id']) diff --git a/backend/open_webui/migrations/versions/461111b60977_add_missing_primary_keys_to_legacy_.py b/backend/open_webui/migrations/versions/461111b60977_add_missing_primary_keys_to_legacy_.py index 67b737c530..1e5901e275 100644 --- a/backend/open_webui/migrations/versions/461111b60977_add_missing_primary_keys_to_legacy_.py +++ b/backend/open_webui/migrations/versions/461111b60977_add_missing_primary_keys_to_legacy_.py @@ -5,6 +5,7 @@ Revises: 3c9b0ca343fd Create Date: 2026-05-14 04:38:14.000000 """ + from typing import Sequence, Union import sqlalchemy as sa @@ -21,9 +22,18 @@ depends_on: Union[str, Sequence[str], None] = None # already have correct PKs from 7e5b5dc7342b_init.py. # 'tag' uses a composite PK since the same tag name can exist for multiple users. LEGACY_TABLES = { - 'auth': ['id'], 'chat': ['id'], 'chatidtag': ['id'], 'document': ['id'], - 'file': ['id'], 'function': ['id'], 'memory': ['id'], 'model': ['id'], - 'prompt': ['id'], 'tag': ['id', 'user_id'], 'tool': ['id'], 'user': ['id'], + 'auth': ['id'], + 'chat': ['id'], + 'chatidtag': ['id'], + 'document': ['id'], + 'file': ['id'], + 'function': ['id'], + 'memory': ['id'], + 'model': ['id'], + 'prompt': ['id'], + 'tag': ['id', 'user_id'], + 'tool': ['id'], + 'user': ['id'], } diff --git a/backend/open_webui/migrations/versions/4de81c2a3af1_add_pinned_note_table.py b/backend/open_webui/migrations/versions/4de81c2a3af1_add_pinned_note_table.py index a7b019f35a..1ec11a0419 100644 --- a/backend/open_webui/migrations/versions/4de81c2a3af1_add_pinned_note_table.py +++ b/backend/open_webui/migrations/versions/4de81c2a3af1_add_pinned_note_table.py @@ -52,13 +52,18 @@ def upgrade() -> None: column('created_at', sa.BigInteger), ) - notes = conn.execute(select(note_table.c.id, note_table.c.user_id).where(note_table.c.is_pinned == True)).fetchall() + notes = conn.execute( + select(note_table.c.id, note_table.c.user_id).where(note_table.c.is_pinned == True) + ).fetchall() if notes: now = int(time.time_ns()) conn.execute( insert(pinned_note_table), - [{'id': str(uuid.uuid4()), 'user_id': note[1], 'note_id': note[0], 'created_at': now} for note in notes], + [ + {'id': str(uuid.uuid4()), 'user_id': note[1], 'note_id': note[0], 'created_at': now} + for note in notes + ], ) with op.batch_alter_table('note', schema=None) as batch_op: diff --git a/backend/open_webui/migrations/versions/56359461a091_add_calendar_tables.py b/backend/open_webui/migrations/versions/56359461a091_add_calendar_tables.py index 571390a6fa..4796233604 100644 --- a/backend/open_webui/migrations/versions/56359461a091_add_calendar_tables.py +++ b/backend/open_webui/migrations/versions/56359461a091_add_calendar_tables.py @@ -95,7 +95,9 @@ def upgrade() -> None: inspector.clear_cache() if 'calendar_event_attendee' in inspector.get_table_names(): if not _index_exists(inspector, 'ix_calendar_event_attendee_user', 'calendar_event_attendee'): - op.create_index('ix_calendar_event_attendee_user', 'calendar_event_attendee', ['user_id', 'status'], unique=False) + op.create_index( + 'ix_calendar_event_attendee_user', 'calendar_event_attendee', ['user_id', 'status'], unique=False + ) def downgrade() -> None: diff --git a/backend/open_webui/migrations/versions/6283dc0e4d8d_add_channel_file_table.py b/backend/open_webui/migrations/versions/6283dc0e4d8d_add_channel_file_table.py index 7f2913bd5e..aa1e52062b 100644 --- a/backend/open_webui/migrations/versions/6283dc0e4d8d_add_channel_file_table.py +++ b/backend/open_webui/migrations/versions/6283dc0e4d8d_add_channel_file_table.py @@ -48,7 +48,9 @@ def upgrade() -> None: sa.Index('ix_channel_file_file_id', 'file_id'), sa.Index('ix_channel_file_user_id', 'user_id'), # unique constraints - sa.UniqueConstraint('channel_id', 'file_id', name='uq_channel_file_channel_file'), # prevent duplicate entries + sa.UniqueConstraint( + 'channel_id', 'file_id', name='uq_channel_file_channel_file' + ), # prevent duplicate entries ) diff --git a/backend/open_webui/migrations/versions/7e5b5dc7342b_init.py b/backend/open_webui/migrations/versions/7e5b5dc7342b_init.py index 8f0500d8ec..ca75fff7d1 100644 --- a/backend/open_webui/migrations/versions/7e5b5dc7342b_init.py +++ b/backend/open_webui/migrations/versions/7e5b5dc7342b_init.py @@ -9,7 +9,8 @@ import sqlalchemy as sa from alembic import op from open_webui.internal.db import JSONField from open_webui.migrations.util import get_existing_tables -revision: str = "7e5b5dc7342b" + +revision: str = '7e5b5dc7342b' down_revision: str | None = None branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None @@ -175,12 +176,16 @@ _INITIAL_TABLES: list[tuple[str, list[sa.Column], list]] = [ ], ), ] + + # --- migration execution --- def upgrade() -> None: # deploy initial schema tables existing_tables = set(get_existing_tables()) for name, columns, constraints in _INITIAL_TABLES: if name not in existing_tables: op.create_table(name, *columns, *constraints) + + # --- rollback function --- def downgrade() -> None: # rollback initial schema tables for table_name, _, _ in reversed(_INITIAL_TABLES): diff --git a/backend/open_webui/migrations/versions/b10670c03dd5_update_user_table.py b/backend/open_webui/migrations/versions/b10670c03dd5_update_user_table.py index ccb12515f1..ba2ab26cca 100644 --- a/backend/open_webui/migrations/versions/b10670c03dd5_update_user_table.py +++ b/backend/open_webui/migrations/versions/b10670c03dd5_update_user_table.py @@ -182,27 +182,18 @@ def upgrade() -> None: # ── Migrate oauth_sub → oauth JSON (only if old column still exists) if 'oauth_sub' in user_columns: - rows = conn.execute( - sa.select(_user.c.id, _user.c.oauth_sub) - .where(_user.c.oauth_sub.is_not(None)) - ).fetchall() + rows = conn.execute(sa.select(_user.c.id, _user.c.oauth_sub).where(_user.c.oauth_sub.is_not(None))).fetchall() for uid, oauth_sub in rows: if oauth_sub: - provider, sub = (oauth_sub.split('@', 1) if '@' in oauth_sub - else ('oidc', oauth_sub)) + provider, sub = oauth_sub.split('@', 1) if '@' in oauth_sub else ('oidc', oauth_sub) conn.execute( - sa.update(_user) - .where(_user.c.id == uid) - .values(oauth=json.dumps({provider: {'sub': sub}})) + sa.update(_user).where(_user.c.id == uid).values(oauth=json.dumps({provider: {'sub': sub}})) ) # ── Migrate api_key column → api_key table (only if old column still exists) if 'api_key' in user_columns: - rows = conn.execute( - sa.select(_user.c.id, _user.c.api_key) - .where(_user.c.api_key.is_not(None)) - ).fetchall() + rows = conn.execute(sa.select(_user.c.id, _user.c.api_key).where(_user.c.api_key.is_not(None))).fetchall() now = int(time.time()) for uid, key_val in rows: @@ -233,10 +224,7 @@ def downgrade() -> None: op.add_column('user', sa.Column('oauth_sub', sa.Text(), nullable=True)) conn = op.get_bind() - rows = conn.execute( - sa.select(_user.c.id, _user.c.oauth) - .where(_user.c.oauth.is_not(None)) - ).fetchall() + rows = conn.execute(sa.select(_user.c.id, _user.c.oauth).where(_user.c.oauth.is_not(None))).fetchall() for uid, oauth in rows: try: @@ -247,11 +235,7 @@ def downgrade() -> None: except Exception: oauth_sub = None - conn.execute( - sa.update(_user) - .where(_user.c.id == uid) - .values(oauth_sub=oauth_sub) - ) + conn.execute(sa.update(_user).where(_user.c.id == uid).values(oauth_sub=oauth_sub)) op.drop_column('user', 'oauth') @@ -260,11 +244,7 @@ def downgrade() -> None: keys = conn.execute(sa.select(_api_key.c.user_id, _api_key.c.key)).fetchall() for uid, key in keys: - conn.execute( - sa.update(_user) - .where(_user.c.id == uid) - .values(api_key=key) - ) + conn.execute(sa.update(_user).where(_user.c.id == uid).values(api_key=key)) op.drop_table('api_key') diff --git a/backend/open_webui/migrations/versions/c1d2e3f4a5b6_add_shared_chat_table.py b/backend/open_webui/migrations/versions/c1d2e3f4a5b6_add_shared_chat_table.py index b70022e168..771f7195b7 100644 --- a/backend/open_webui/migrations/versions/c1d2e3f4a5b6_add_shared_chat_table.py +++ b/backend/open_webui/migrations/versions/c1d2e3f4a5b6_add_shared_chat_table.py @@ -101,9 +101,7 @@ def upgrade(): # Check if shared_chat record already exists (idempotent) existing_shared = conn.execute( - sa.select(shared_chat_t.c.id).where( - shared_chat_t.c.id == share_token - ) + sa.select(shared_chat_t.c.id).where(shared_chat_t.c.id == share_token) ).fetchone() if not existing_shared: diff --git a/backend/open_webui/models/auths.py b/backend/open_webui/models/auths.py index a46826d207..5e363352bd 100644 --- a/backend/open_webui/models/auths.py +++ b/backend/open_webui/models/auths.py @@ -119,7 +119,13 @@ class AuthsTable: session.add(credential) created_user = await Users.insert_new_user( - new_id, name, email, profile_image_url, role, oauth=oauth, db=session, + new_id, + name, + email, + profile_image_url, + role, + oauth=oauth, + db=session, ) # persist both records and reload generated defaults await session.commit() @@ -127,7 +133,10 @@ class AuthsTable: return created_user if credential and created_user else None async def authenticate_user( - self, email: str, verify_password: callable, db: AsyncSession | None = None, + self, + email: str, + verify_password: callable, + db: AsyncSession | None = None, ) -> UserModel | None: """Verify email + password credentials and return the matching user.""" log.info('authenticate_user: %s', email) @@ -144,7 +153,9 @@ class AuthsTable: return resolved async def authenticate_user_by_api_key( - self, api_key: str, db: AsyncSession | None = None, + self, + api_key: str, + db: AsyncSession | None = None, ) -> UserModel | None: """Look up the user that owns the given API key.""" log.info('authenticate_user_by_api_key') @@ -163,17 +174,19 @@ class AuthsTable: # single JOIN avoids N+1 — returns (Auth, User) tuple or None async with get_async_db_context(db) as session: joined_query = ( - select(Auth, User) - .join(User, Auth.id == User.id) - .where(Auth.email == email, Auth.active.is_(True)) + select(Auth, User).join(User, Auth.id == User.id).where(Auth.email == email, Auth.active.is_(True)) ) match = (await session.execute(joined_query)).first() if not match: return _, found_user = match return UserModel.model_validate(found_user) + async def update_email_by_id( - self, user_id: str, email: str, db: AsyncSession | None = None, + self, + user_id: str, + email: str, + db: AsyncSession | None = None, ) -> bool: """Set a new email on the auth record and propagate to the user row.""" async with get_async_db_context(db) as session: @@ -185,8 +198,12 @@ class AuthsTable: await Users.update_user_by_id(user_id, {'email': email}, db=session) return True # --- password modification --- + async def update_user_password_by_id( - self, user_id: str, new_password: str, db: AsyncSession | None = None, + self, + user_id: str, + new_password: str, + db: AsyncSession | None = None, ) -> bool: """Set a new password hash for an existing user.""" async with get_async_db_context(db) as session: @@ -198,7 +215,9 @@ class AuthsTable: return True async def delete_auth_by_id( - self, id: str, db: AsyncSession | None = None, + self, + id: str, + db: AsyncSession | None = None, ) -> bool: """Remove a user and their auth credential in one transaction.""" async with get_async_db_context(db) as session: diff --git a/backend/open_webui/models/chats.py b/backend/open_webui/models/chats.py index ceaa28bef2..f237ce58f7 100644 --- a/backend/open_webui/models/chats.py +++ b/backend/open_webui/models/chats.py @@ -6,6 +6,7 @@ import json import logging import time import uuid + # local imports from open_webui.internal.db import Base, JSONField, get_async_db_context from open_webui.models.automations import AutomationRun @@ -358,9 +359,7 @@ class ChatTable: ) -> list[ChatModel]: async with get_async_db_context(db) as session: # Validate folder_id references — clear any that don't exist - folder_ids = { - f.folder_id for f in chat_import_forms if f.folder_id - } + folder_ids = {f.folder_id for f in chat_import_forms if f.folder_id} existing = set() for fid in folder_ids: if await Folders.get_folder_by_id_and_user_id(fid, user_id, db=session): @@ -402,7 +401,10 @@ class ChatTable: return [ChatModel.model_validate(chat) for chat in chats] async def update_chat_by_id( - self, id: str, chat: dict, db: AsyncSession | None = None, + self, + id: str, + chat: dict, + db: AsyncSession | None = None, ) -> ChatModel | None: """Persist updated chat content, sanitizing null bytes.""" try: # load the chat record for in-place mutation @@ -512,9 +514,7 @@ class ChatTable: except Exception as e: log.warning('Backfill failed for message %s in chat %s: %s', message_id, chat_id, e) - async def reconcile_messages_by_chat_id( - self, chat_id: str, user_id: str, messages: dict[str, dict] - ) -> None: + async def reconcile_messages_by_chat_id(self, chat_id: str, user_id: str, messages: dict[str, dict]) -> None: """Sync ``chat_message`` rows with the committed JSON blob. Upserts current messages via ``backfill_messages_by_chat_id`` @@ -692,9 +692,12 @@ class ChatTable: await session.commit() await session.refresh(chat) return ChatModel.model_validate(chat) # return the updated original + # refresh helper async def update_shared_chat_by_chat_id( - self, chat_id: str, db: AsyncSession | None = None, + self, + chat_id: str, + db: AsyncSession | None = None, ) -> ChatModel | None: """Refresh the shared snapshot with current chat content.""" from open_webui.models.shared_chats import SharedChats @@ -953,9 +956,12 @@ class ChatTable: ) all_chats = result.scalars().all() return [ChatModel.model_validate(chat) for chat in all_chats] + # retrieve conversation async def get_chat_by_id( - self, id: str, db: AsyncSession | None = None, + self, + id: str, + db: AsyncSession | None = None, ) -> ChatModel | None: """Fetch a chat by PK, auto-sanitizing null bytes on read.""" try: @@ -1034,6 +1040,7 @@ class ChatTable: result = await session.execute(select(Chat).order_by(Chat.updated_at.desc())) all_chats = result.scalars().all() return [ChatModel.model_validate(chat) for chat in all_chats] + # list user conversations async def get_chats_by_user_id( self, @@ -1082,6 +1089,7 @@ class ChatTable: 'total': total, } ) + # list pinned chats async def get_pinned_chats_by_user_id( self, user_id: str, db: AsyncSession | None = None @@ -1112,6 +1120,7 @@ class ChatTable: select(Chat).filter_by(user_id=user_id, archived=True).order_by(Chat.updated_at.desc()) ) return [ChatModel.model_validate(chat) for chat in result.scalars().all()] + # search user conversations async def get_chats_by_user_id_and_search_text( self, diff --git a/backend/open_webui/models/files.py b/backend/open_webui/models/files.py index 8d2ff54510..7fcc62558b 100644 --- a/backend/open_webui/models/files.py +++ b/backend/open_webui/models/files.py @@ -4,6 +4,7 @@ from __future__ import annotations import logging import time + # local imports from open_webui.internal.db import Base, JSONField, get_async_db_context from open_webui.utils.misc import sanitize_metadata @@ -46,6 +47,7 @@ class FileModel(BaseModel): created_at: int | None # timestamp in epoch updated_at: int | None # timestamp in epoch + # --- metadata structures --- class FileMeta(BaseModel): name: str | None = None @@ -150,7 +152,9 @@ class FilesTable: return None # insertion failed async def get_file_by_id( - self, id: str, db: AsyncSession | None = None, + self, + id: str, + db: AsyncSession | None = None, ) -> FileModel | None: """Look up a file by its primary key.""" try: @@ -409,9 +413,7 @@ class FilesTable: # Subquery: file IDs already linked to this knowledge base linked_ids = ( - select(KnowledgeFile.file_id) - .filter(KnowledgeFile.knowledge_id == knowledge_id) - .correlate(None) + select(KnowledgeFile.file_id).filter(KnowledgeFile.knowledge_id == knowledge_id).correlate(None) ) stmt = ( @@ -424,10 +426,7 @@ class FilesTable: .order_by(File.created_at.desc()) ) result = await db.execute(stmt) - return [ - FileModelResponse.model_validate(f, from_attributes=True) - for f in result.scalars().all() - ] + return [FileModelResponse.model_validate(f, from_attributes=True) for f in result.scalars().all()] except Exception as e: log.warning(f'Error fetching pending files for knowledge {knowledge_id}: {e}') return [] diff --git a/backend/open_webui/models/functions.py b/backend/open_webui/models/functions.py index 99677a62e6..c419dd3f93 100644 --- a/backend/open_webui/models/functions.py +++ b/backend/open_webui/models/functions.py @@ -4,6 +4,7 @@ from __future__ import annotations import logging import time + # local imports from open_webui.internal.db import Base, JSONField, get_async_db_context from open_webui.models.users import UserModel, UserResponse, Users @@ -52,6 +53,7 @@ class FunctionModel(BaseModel): model_config = ConfigDict(from_attributes=True) # allows ORM model binding + # --- form / schema definitions --- class FunctionWithValvesModel(BaseModel): id: str diff --git a/backend/open_webui/models/memories.py b/backend/open_webui/models/memories.py index 668d8c005f..2337371f12 100644 --- a/backend/open_webui/models/memories.py +++ b/backend/open_webui/models/memories.py @@ -34,6 +34,7 @@ class MemoryModel(BaseModel): created_at: int # timestamp in epoch model_config = ConfigDict(from_attributes=True) # allows ORM mapping + class MemoriesTable: async def insert_new_memory( self, diff --git a/backend/open_webui/models/models.py b/backend/open_webui/models/models.py index fa8f05a377..0fab100c46 100755 --- a/backend/open_webui/models/models.py +++ b/backend/open_webui/models/models.py @@ -51,8 +51,7 @@ class ModelMeta(BaseModel): if v not in _warned_profile_urls: _warned_profile_urls.add(v) log.warning( - 'Clearing invalid profile_image_url stored in DB ' - '(likely a legacy SVG data-URI): %.80s…', + 'Clearing invalid profile_image_url stored in DB (likely a legacy SVG data-URI): %.80s…', v, ) return None @@ -74,7 +73,6 @@ class ModelMeta(BaseModel): class Model(Base): - """Workspace model entry — wraps an upstream LLM with custom params and metadata.""" __tablename__ = 'model' @@ -195,9 +193,7 @@ class ModelsTable: models: list[ModelModel] = [] for model in all_models: try: - models.append( - await self._to_model_model(model, access_grants=grants_map.get(model.id, []), db=db) - ) + models.append(await self._to_model_model(model, access_grants=grants_map.get(model.id, []), db=db)) except Exception as exc: log.error('Skipping model %r during get_all_models due to error: %s', model.id, exc) return models diff --git a/backend/open_webui/models/prompts.py b/backend/open_webui/models/prompts.py index 6155c5f95b..23a5017acf 100644 --- a/backend/open_webui/models/prompts.py +++ b/backend/open_webui/models/prompts.py @@ -55,6 +55,8 @@ class PromptModel(BaseModel): access_grants: list[AccessGrantModel] = Field(default_factory=list) model_config = ConfigDict(from_attributes=True) # allows ORM model binding + + # --- form / schema definitions --- # Forms #################### @@ -107,26 +109,36 @@ class PromptsTable: ) return PromptModel.model_validate(prompt_data) - async def insert_new_prompt(self, user_id: str, form_data: PromptForm, db: AsyncSession | None = None) -> PromptModel | None: + async def insert_new_prompt( + self, user_id: str, form_data: PromptForm, db: AsyncSession | None = None + ) -> PromptModel | None: now = int(time.time()) prompt_id = str(uuid.uuid4()) async with get_async_db_context(db) as session: try: record = Prompt( - id=prompt_id, user_id=user_id, - command=form_data.command, name=form_data.name, + id=prompt_id, + user_id=user_id, + command=form_data.command, + name=form_data.name, content=form_data.content, - data=form_data.data or {}, meta=form_data.meta or {}, - tags=form_data.tags or [], is_active=True, - created_at=now, updated_at=now, + data=form_data.data or {}, + meta=form_data.meta or {}, + tags=form_data.tags or [], + is_active=True, + created_at=now, + updated_at=now, ) session.add(record) await session.commit() await session.refresh(record) # populate generated defaults await AccessGrants.set_access_grants( - 'prompt', prompt_id, form_data.access_grants, db=session, + 'prompt', + prompt_id, + form_data.access_grants, + db=session, ) # persist sharing rules if not record: # shouldn't happen, but guard anyway @@ -145,8 +157,10 @@ class PromptsTable: } history_entry = await PromptHistories.create_history_entry( - prompt_id=prompt_id, snapshot=snapshot, - user_id=user_id, parent_id=None, + prompt_id=prompt_id, + snapshot=snapshot, + user_id=user_id, + parent_id=None, commit_message=form_data.commit_message or 'Initial version', db=session, ) # creates the first version entry @@ -178,9 +192,7 @@ class PromptsTable: async def get_prompt_by_command(self, command: str, db: AsyncSession | None = None) -> PromptModel | None: """Look up a prompt by its unique slash-command string.""" async with get_async_db_context(db) as session: - match = (await session.execute( - select(Prompt).where(Prompt.command == command) - )).scalars().first() + match = (await session.execute(select(Prompt).where(Prompt.command == command))).scalars().first() if match is None: return return await self._to_prompt_model(match, db=session) @@ -190,9 +202,15 @@ class PromptsTable: async def get_prompts(self, db: AsyncSession | None = None) -> list[PromptUserResponse]: """Return all active prompts ordered by most recently updated.""" async with get_async_db_context(db) as session: - active = (await session.execute( - select(Prompt).where(Prompt.is_active.is_(True)).order_by(Prompt.updated_at.desc()) - )).scalars().all() + active = ( + ( + await session.execute( + select(Prompt).where(Prompt.is_active.is_(True)).order_by(Prompt.updated_at.desc()) + ) + ) + .scalars() + .all() + ) user_ids = list(set(p.user_id for p in active)) prompt_ids = [p.id for p in active] @@ -600,10 +618,13 @@ class PromptsTable: return await self._to_prompt_model(prompt, db=session) except Exception as e: # connection error - log.error(f"Failed to restore prompt version: {e}") + log.error(f'Failed to restore prompt version: {e}') return None # restoration failed + async def toggle_prompt_active( - self, prompt_id: str, db: AsyncSession | None = None, + self, + prompt_id: str, + db: AsyncSession | None = None, ) -> PromptModel | None: """Flip the is_active flag on a prompt.""" if not prompt_id: @@ -654,7 +675,7 @@ class PromptsTable: return True return False except Exception as err: - log.error(f"Failed to delete prompt: {err}") + log.error(f'Failed to delete prompt: {err}') return False # deletion failed async def get_tags(self, db: AsyncSession | None = None) -> list[str]: diff --git a/backend/open_webui/models/tags.py b/backend/open_webui/models/tags.py index 5eb320dfe2..87f6bac7e3 100644 --- a/backend/open_webui/models/tags.py +++ b/backend/open_webui/models/tags.py @@ -5,6 +5,7 @@ from __future__ import annotations import logging import time import uuid + # local imports from open_webui.internal.db import Base, JSONField, get_async_db_context from pydantic import BaseModel, ConfigDict @@ -37,6 +38,7 @@ class TagModel(BaseModel): meta: dict | None = None model_config = ConfigDict(from_attributes=True) # allows ORM model binding + # --- tag schema forms --- # Forms #################### @@ -49,7 +51,10 @@ class TagChatIdForm(BaseModel): class TagTable: async def insert_new_tag( - self, name: str, user_id: str, db: AsyncSession | None = None, + self, + name: str, + user_id: str, + db: AsyncSession | None = None, ) -> TagModel | None: """Create a new tag, deriving the id from the name.""" async with get_async_db_context(db) as db: diff --git a/backend/open_webui/models/tools.py b/backend/open_webui/models/tools.py index 3384d20807..d575cc1439 100644 --- a/backend/open_webui/models/tools.py +++ b/backend/open_webui/models/tools.py @@ -4,6 +4,7 @@ from __future__ import annotations import logging import time + # local imports from open_webui.internal.db import Base, JSONField, get_async_db_context from open_webui.models.access_grants import AccessGrantModel, AccessGrants @@ -50,6 +51,7 @@ class ToolModel(BaseModel): model_config = ConfigDict(from_attributes=True) # enables ORM mapping + # --- tool request forms --- # Forms #################### @@ -138,7 +140,9 @@ class ToolsTable: return None # creation failed async def get_tool_by_id( - self, id: str, db: AsyncSession | None = None, + self, + id: str, + db: AsyncSession | None = None, ) -> ToolModel | None: """Fetch a single tool by primary key, including access grants.""" try: # single PK lookup + access grants @@ -150,18 +154,14 @@ class ToolsTable: except Exception: return None - async def get_tools_by_ids( - self, tool_ids: list[str], db: AsyncSession | None = None - ) -> dict[str, ToolModel]: + async def get_tools_by_ids(self, tool_ids: list[str], db: AsyncSession | None = None) -> dict[str, ToolModel]: """Batch-fetch multiple tools by ID, returning a dict keyed by tool ID.""" if not tool_ids: return {} async with get_async_db_context(db) as db: result = await db.execute(select(Tool).where(Tool.id.in_(tool_ids))) tools = result.scalars().all() - grants_map = await AccessGrants.get_grants_by_resources( - 'tool', [tool.id for tool in tools], db=db - ) + grants_map = await AccessGrants.get_grants_by_resources('tool', [tool.id for tool in tools], db=db) return { tool.id: await self._to_tool_model(tool, access_grants=grants_map.get(tool.id, []), db=db) for tool in tools diff --git a/backend/open_webui/models/users.py b/backend/open_webui/models/users.py index d28757e68f..bd64887ad8 100644 --- a/backend/open_webui/models/users.py +++ b/backend/open_webui/models/users.py @@ -46,11 +46,11 @@ class UserSettings(BaseModel): class User(Base): # identity & profile """One row per registered account — profile, role, and settings.""" - __tablename__: str = 'user' # Identity & Credentials + __tablename__: str = 'user' # Identity & Credentials id = Column(String, primary_key=True, unique=True) # unique user id email = Column(String, unique=True) # user email address username = Column(String(50), nullable=True) # custom handle - role = Column(String, default="pending") # permissions role + role = Column(String, default='pending') # permissions role name = Column(String, nullable=False) # display name # Profile @@ -117,20 +117,16 @@ class UserModel(BaseModel): model_config = ConfigDict( from_attributes=True, ) + # validation schema logic # --- model validators --- @model_validator(mode='after') def _ensure_profile_image(self) -> 'UserModel': """Assign a generated avatar when no profile image is provided.""" - self.profile_image_url = ( - self.profile_image_url - or _DEFAULT_PROFILE_IMAGE_URL.format(user_id=self.id) - ) + self.profile_image_url = self.profile_image_url or _DEFAULT_PROFILE_IMAGE_URL.format(user_id=self.id) return self - - class UserStatusModel(UserModel): is_active: bool = False @@ -303,31 +299,37 @@ class UsersTable: await session.commit() await session.refresh(result) return user if result else None + # database read methods # --- read / lookup operations --- async def get_user_by_id( - self, id: str, db: AsyncSession | None = None, + self, + id: str, + db: AsyncSession | None = None, ) -> UserModel | None: """Fetch a single user by primary key.""" async with get_async_db_context(db) as session: user = await session.get(User, id) return UserModel.model_validate(user) if user else None + # api key auth helper async def get_user_by_api_key( - self, api_key: str, db: AsyncSession | None = None, + self, + api_key: str, + db: AsyncSession | None = None, ) -> UserModel | None: """Resolve a user from their API key via a JOIN on the api_key table.""" async with get_async_db_context(db) as session: result = await session.execute( - select(User) - .join(ApiKey, User.id == ApiKey.user_id) - .where(ApiKey.key == api_key), + select(User).join(ApiKey, User.id == ApiKey.user_id).where(ApiKey.key == api_key), ) user = result.scalars().first() return UserModel.model_validate(user) if user else None async def get_user_by_email( - self, email: str, db: AsyncSession | None = None, + self, + email: str, + db: AsyncSession | None = None, ) -> UserModel | None: """Case-insensitive email lookup using SQL lower().""" async with get_async_db_context(db) as session: @@ -342,7 +344,10 @@ class UsersTable: # --- oauth & integrations --- async def get_user_by_oauth_sub( - self, provider: str, sub: str, db: AsyncSession | None = None, + self, + provider: str, + sub: str, + db: AsyncSession | None = None, ) -> UserModel | None: """Look up a user by OAuth provider + subject claim (dialect-aware JSON filter).""" async with get_async_db_context(db) as session: @@ -358,7 +363,10 @@ class UsersTable: return UserModel.model_validate(row) if row else None async def get_user_by_scim_external_id( - self, provider: str, external_id: str, db: AsyncSession | None = None, + self, + provider: str, + external_id: str, + db: AsyncSession | None = None, ) -> UserModel | None: """Look up a user by SCIM provider + external ID (dialect-aware JSON filter).""" async with get_async_db_context(db) as session: @@ -373,10 +381,12 @@ class UsersTable: row = (await session.execute(query)).scalars().first() return UserModel.model_validate(row) if row else None - async def get_users( - self, filter: dict | None = None, skip: int | None = None, - limit: int | None = None, db: AsyncSession | None = None, + self, + filter: dict | None = None, + skip: int | None = None, + limit: int | None = None, + db: AsyncSession | None = None, ) -> dict: """Paginated user listing with optional filters for role, group, and channel.""" async with get_async_db_context(db) as session: @@ -531,11 +541,13 @@ class UsersTable: result = await session.execute(select(User).filter(User.id.in_(user_ids))) users = result.scalars().all() return [UserModel.model_validate(user) for user in users] + # count registered accounts async def get_num_users(self, db: AsyncSession | None = None) -> int | None: async with get_async_db_context(db) as session: result = await session.execute(select(func.count()).select_from(User)) return result.scalar() + # check user existence async def has_users(self, db: AsyncSession | None = None) -> bool: async with get_async_db_context(db) as session: @@ -589,7 +601,10 @@ class UsersTable: return UserModel.model_validate(user) async def update_user_profile_image_url_by_id( - self, id: str, profile_image_url: str, db: AsyncSession | None = None, + self, + id: str, + profile_image_url: str, + db: AsyncSession | None = None, ) -> UserModel | None: async with get_async_db_context(db) as session: user = await session.get(User, id) @@ -650,6 +665,7 @@ class UsersTable: await session.commit() await session.refresh(user) return UserModel.model_validate(user) + # settings update helper async def update_user_settings_by_id( self, id: str, updated: dict, db: AsyncSession | None = None @@ -745,4 +761,3 @@ class UsersTable: Users = UsersTable() # singleton user repository - diff --git a/backend/open_webui/retrieval/loaders/main.py b/backend/open_webui/retrieval/loaders/main.py index 68d6b79702..ee4166d120 100644 --- a/backend/open_webui/retrieval/loaders/main.py +++ b/backend/open_webui/retrieval/loaders/main.py @@ -273,18 +273,18 @@ class Loader: 4. Falling back to latin-1 (always valid, ftfy fixes mojibake later). """ try: - with open(file_path, "rb") as f: + with open(file_path, 'rb') as f: raw = f.read() except OSError: - return "utf-8" + return 'utf-8' if not raw: - return "utf-8" + return 'utf-8' # Fast path: most files are UTF-8 try: - raw.decode("utf-8") - return "utf-8" + raw.decode('utf-8') + return 'utf-8' except UnicodeDecodeError: pass @@ -292,24 +292,24 @@ class Loader: import chardet detected = chardet.detect(raw) - detected_enc = (detected.get("encoding") or "").lower().replace("-", "").replace("_", "") + detected_enc = (detected.get('encoding') or '').lower().replace('-', '').replace('_', '') # Map chardet's detected encoding to the correct superset codec. # chardet often reports GB2312 for content that is actually GB18030; # GB18030 is a strict superset of both GB2312 and GBK. _ENC_FAMILY = { - "gb2312": "gb18030", - "gb18030": "gb18030", - "gbk": "gb18030", - "big5": "big5", - "euckr": "euc-kr", - "eucjp": "euc-jp", - "iso2022jp": "euc-jp", - "shiftjis": "shift_jis", + 'gb2312': 'gb18030', + 'gb18030': 'gb18030', + 'gbk': 'gb18030', + 'big5': 'big5', + 'euckr': 'euc-kr', + 'eucjp': 'euc-jp', + 'iso2022jp': 'euc-jp', + 'shiftjis': 'shift_jis', } # Build priority list: chardet-hinted codec first, then remaining CJK - base_order = ["gb18030", "big5", "euc-kr", "euc-jp"] + base_order = ['gb18030', 'big5', 'euc-kr', 'euc-jp'] hinted = _ENC_FAMILY.get(detected_enc) if hinted and hinted in base_order: ordered = [hinted] + [e for e in base_order if e != hinted] @@ -321,10 +321,10 @@ class Loader: text = raw.decode(enc) if text.strip() and self._has_cjk_characters(text): log.info( - "Detected encoding %s for %s (chardet guessed %s)", + 'Detected encoding %s for %s (chardet guessed %s)', enc, file_path, - detected.get("encoding"), + detected.get('encoding'), ) return enc except (UnicodeDecodeError, LookupError): @@ -332,12 +332,12 @@ class Loader: # If chardet gave a non-CJK answer that isn't in our family map, # try it directly — it might be a valid Western encoding. - chardet_encoding = detected.get("encoding") + chardet_encoding = detected.get('encoding') if chardet_encoding: try: raw.decode(chardet_encoding) log.info( - "Using chardet-detected encoding %s for %s", + 'Using chardet-detected encoding %s for %s', chardet_encoding, file_path, ) @@ -348,8 +348,8 @@ class Loader: # latin-1 is the ultimate fallback: every byte 0x00–0xFF is valid. # ftfy.fix_text() (applied downstream) repairs most mojibake that # results from treating Windows-1252 content as Latin-1. - log.info("Falling back to latin-1 encoding for %s", file_path) - return "latin-1" + log.info('Falling back to latin-1 encoding for %s', file_path) + return 'latin-1' @staticmethod def _has_cjk_characters(text: str, threshold: float = 0.05) -> bool: @@ -371,17 +371,17 @@ class Loader: total += 1 cp = ord(ch) if ( - 0x4E00 <= cp <= 0x9FFF # CJK Unified Ideographs - or 0x3400 <= cp <= 0x4DBF # CJK Extension A - or 0x20000 <= cp <= 0x2A6DF # CJK Extension B - or 0x2A700 <= cp <= 0x2B73F # CJK Extension C - or 0x2B740 <= cp <= 0x2B81F # CJK Extension D - or 0xF900 <= cp <= 0xFAFF # CJK Compatibility Ideographs - or 0x3000 <= cp <= 0x303F # CJK Symbols and Punctuation - or 0x3040 <= cp <= 0x309F # Hiragana - or 0x30A0 <= cp <= 0x30FF # Katakana - or 0xAC00 <= cp <= 0xD7AF # Hangul Syllables - or 0xFF00 <= cp <= 0xFFEF # Halfwidth and Fullwidth Forms + 0x4E00 <= cp <= 0x9FFF # CJK Unified Ideographs + or 0x3400 <= cp <= 0x4DBF # CJK Extension A + or 0x20000 <= cp <= 0x2A6DF # CJK Extension B + or 0x2A700 <= cp <= 0x2B73F # CJK Extension C + or 0x2B740 <= cp <= 0x2B81F # CJK Extension D + or 0xF900 <= cp <= 0xFAFF # CJK Compatibility Ideographs + or 0x3000 <= cp <= 0x303F # CJK Symbols and Punctuation + or 0x3040 <= cp <= 0x309F # Hiragana + or 0x30A0 <= cp <= 0x30FF # Katakana + or 0xAC00 <= cp <= 0xD7AF # Hangul Syllables + or 0xFF00 <= cp <= 0xFFEF # Halfwidth and Fullwidth Forms ): cjk_count += 1 @@ -646,4 +646,3 @@ class Loader: loader = TextLoader(file_path, encoding=self._detect_text_encoding(file_path)) return loader - diff --git a/backend/open_webui/retrieval/utils.py b/backend/open_webui/retrieval/utils.py index dc23fafb07..2db9f47c53 100644 --- a/backend/open_webui/retrieval/utils.py +++ b/backend/open_webui/retrieval/utils.py @@ -933,6 +933,7 @@ def get_embedding_function( 'SentenceTransformer model name, or configure an external ' 'RAG_EMBEDDING_ENGINE (ollama, openai, azure_openai).' ) + # Sentence transformers: CPU-bound sync operation async def async_embedding_function(query, prefix=None, user=None): return await asyncio.to_thread( @@ -1108,8 +1109,7 @@ async def filter_accessible_collections( rejected = collection_names - safe_names if rejected: log.warning( - 'filter_accessible_collections: rejected %d collection name(s) ' - 'with unsafe characters (user_id=%s)', + 'filter_accessible_collections: rejected %d collection name(s) with unsafe characters (user_id=%s)', len(rejected), getattr(user, 'id', ''), ) @@ -1363,10 +1363,7 @@ async def get_sources_from_items( files = await Knowledges.get_files_by_id(knowledge_base.id) owned_names = {f'file-{f.id}' for f in files} owned_names.add(knowledge_base.id) - valid_names = [ - n for n in (item.get('collection_names') or []) - if n in owned_names - ] + valid_names = [n for n in (item.get('collection_names') or []) if n in owned_names] collection_names = valid_names if valid_names else [knowledge_base.id] else: collection_names.append(item['id']) @@ -1382,8 +1379,7 @@ async def get_sources_from_items( collection_names.append(item['collection_name']) else: log.debug( - "get_sources_from_items: ignoring untrusted direct " - "collection_name '%s' on item without type", + "get_sources_from_items: ignoring untrusted direct collection_name '%s' on item without type", item.get('collection_name'), ) elif item.get('collection_names'): @@ -1391,8 +1387,7 @@ async def get_sources_from_items( collection_names.extend(item['collection_names']) else: log.debug( - "get_sources_from_items: ignoring untrusted direct " - "collection_names on item without type", + 'get_sources_from_items: ignoring untrusted direct collection_names on item without type', ) # If query_result is None diff --git a/backend/open_webui/retrieval/vector/dbs/milvus_multitenancy.py b/backend/open_webui/retrieval/vector/dbs/milvus_multitenancy.py index 91c5f58665..af64919b6e 100644 --- a/backend/open_webui/retrieval/vector/dbs/milvus_multitenancy.py +++ b/backend/open_webui/retrieval/vector/dbs/milvus_multitenancy.py @@ -284,9 +284,7 @@ class MilvusClient(VectorDBBase): elif isinstance(value, (int, float)): expr.append(f"metadata['{key}'] == {value}") else: - raise TypeError( - f'Unsupported Milvus filter value type for key {key!r}: {type(value).__name__}' - ) + raise TypeError(f'Unsupported Milvus filter value type for key {key!r}: {type(value).__name__}') iterator = collection.query_iterator( expr=' and '.join(expr), diff --git a/backend/open_webui/retrieval/vector/dbs/valkey.py b/backend/open_webui/retrieval/vector/dbs/valkey.py index 987993dc2b..1db10281a4 100644 --- a/backend/open_webui/retrieval/vector/dbs/valkey.py +++ b/backend/open_webui/retrieval/vector/dbs/valkey.py @@ -56,8 +56,7 @@ def _import_glide(): ) except ImportError as e: raise ImportError( - 'valkey-glide-sync is required when VECTOR_DB=valkey. ' - 'Install it with: pip install valkey-glide-sync==2.3.1' + 'valkey-glide-sync is required when VECTOR_DB=valkey. Install it with: pip install valkey-glide-sync==2.3.1' ) from e return { 'Batch': Batch, @@ -193,7 +192,7 @@ class ValkeyClient(VectorDBBase): addresses=[NodeAddress(host=host, port=port)], database_id=db if db else None, request_timeout=5000, - client_name="open_webui_vector_store_client", + client_name='open_webui_vector_store_client', ) try: self.client = GlideClient.create(config) @@ -206,7 +205,7 @@ class ValkeyClient(VectorDBBase): addresses=[NodeAddress(host=host, port=port)], database_id=db if db else None, request_timeout=10000, # 10s — HNSW indexing can take 1-4s per vector - client_name="open_webui_vector_store_batch_client", + client_name='open_webui_vector_store_batch_client', ) try: self.batch_client = GlideClient.create(batch_config) diff --git a/backend/open_webui/retrieval/web/bing.py b/backend/open_webui/retrieval/web/bing.py index 2a38454b9d..00449f9091 100644 --- a/backend/open_webui/retrieval/web/bing.py +++ b/backend/open_webui/retrieval/web/bing.py @@ -66,9 +66,7 @@ def main(): results = search_bing( os.environ.get('BING_SEARCH_V7_SUBSCRIPTION_KEY', ''), - os.environ.get( - 'BING_SEARCH_V7_ENDPOINT', 'https://api.bing.microsoft.com/v7.0/search' - ), + os.environ.get('BING_SEARCH_V7_ENDPOINT', 'https://api.bing.microsoft.com/v7.0/search'), args.locale, args.query, args.count, diff --git a/backend/open_webui/retrieval/web/linkup.py b/backend/open_webui/retrieval/web/linkup.py index 7547fe887e..b62ec9ed53 100644 --- a/backend/open_webui/retrieval/web/linkup.py +++ b/backend/open_webui/retrieval/web/linkup.py @@ -51,9 +51,7 @@ def search_linkup( output_type = merged.get('outputType', 'sourcedAnswer') search_results = ( - json_response.get('sources', []) - if output_type == 'sourcedAnswer' - else json_response.get('results', []) + json_response.get('sources', []) if output_type == 'sourcedAnswer' else json_response.get('results', []) ) if filter_list: diff --git a/backend/open_webui/routers/audio.py b/backend/open_webui/routers/audio.py index aaa27e8785..441915972d 100644 --- a/backend/open_webui/routers/audio.py +++ b/backend/open_webui/routers/audio.py @@ -72,7 +72,6 @@ SPEECH_CACHE_DIR = CACHE_DIR / 'audio' / 'speech' SPEECH_CACHE_DIR.mkdir(parents=True, exist_ok=True) - def is_audio_conversion_required(file_path): """ Check if the given audio file needs conversion to mp3. @@ -307,8 +306,6 @@ async def update_audio_config(request: Request, form_data: AudioConfigUpdateForm else: request.app.state.faster_whisper_model = None - - return { 'tts': { 'ENGINE': request.app.state.config.TTS_ENGINE, @@ -377,7 +374,10 @@ async def _raise_tts_error(exc: Exception, r=None) -> None: async def _write_tts_cache( - file_path: Path, audio: bytes, body_path: Path, payload: dict, + file_path: Path, + audio: bytes, + body_path: Path, + payload: dict, ) -> None: """Persist audio + request metadata to the speech cache.""" async with aiofiles.open(file_path, 'wb') as f: @@ -405,16 +405,16 @@ async def _tts_openai(request, payload, file_path, file_body_path, user): session = await get_session() r = await session.post( url=f'{request.app.state.config.TTS_OPENAI_API_BASE_URL}/audio/speech', - json=payload, headers=headers, ssl=AIOHTTP_CLIENT_SESSION_SSL, + json=payload, + headers=headers, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) r.raise_for_status() audio_data = await r.read() content_type = r.headers.get('Content-Type', 'audio/mpeg') - if not await asyncio.to_thread( - transcode_audio_to_mp3, audio_data, content_type, file_path - ): + if not await asyncio.to_thread(transcode_audio_to_mp3, audio_data, content_type, file_path): async with aiofiles.open(file_path, 'wb') as f: await f.write(audio_data) @@ -595,9 +595,7 @@ async def speech(request: Request, user=Depends(get_verified_user)): body = await request.body() name = hashlib.sha256( - body - + str(engine).encode('utf-8') - + str(request.app.state.config.TTS_MODEL).encode('utf-8') + body + str(engine).encode('utf-8') + str(request.app.state.config.TTS_MODEL).encode('utf-8') ).hexdigest() file_path = SPEECH_CACHE_DIR.joinpath(f'{name}.mp3') @@ -628,8 +626,11 @@ async def _transcribe_whisper(request, file_path, languages, file_dir, id): def _run(): segments, info = model.transcribe( - file_path, beam_size=5, vad_filter=WHISPER_VAD_FILTER, - language=languages[0], multilingual=WHISPER_MULTILINGUAL, + file_path, + beam_size=5, + vad_filter=WHISPER_VAD_FILTER, + language=languages[0], + multilingual=WHISPER_MULTILINGUAL, ) log.info("Detected language '%s' with probability %f" % (info.language, info.language_probability)) return ''.join([segment.text for segment in list(segments)]) @@ -665,7 +666,9 @@ async def _transcribe_openai(request, file_path, filename, languages, file_dir, r = await session.post( url=f'{request.app.state.config.STT_OPENAI_API_BASE_URL}/audio/transcriptions', - headers=headers, data=form_data, ssl=AIOHTTP_CLIENT_SESSION_SSL, + headers=headers, + data=form_data, + ssl=AIOHTTP_CLIENT_SESSION_SSL, ) if r.status == 200: break @@ -724,11 +727,7 @@ async def _transcribe_deepgram(request, file_path, languages, file_dir, id): # Parse the Deepgram response structure try: - transcript = ( - body['results']['channels'][0]['alternatives'][0] - .get('transcript', '') - .strip() - ) + transcript = body['results']['channels'][0]['alternatives'][0].get('transcript', '').strip() except (KeyError, IndexError) as exc: log.error(f'Malformed Deepgram response: {exc}') raise Exception('Failed to parse Deepgram response') from exc @@ -744,7 +743,11 @@ async def _transcribe_deepgram(request, file_path, languages, file_dir, id): if r is not None: try: res = await r.json() - msg = res.get('error', {}).get('message', '') if isinstance(res.get('error'), dict) else str(res.get('error', '')) + msg = ( + res.get('error', {}).get('message', '') + if isinstance(res.get('error'), dict) + else str(res.get('error', '')) + ) if msg: detail = f'External: {msg}' except Exception: @@ -752,7 +755,6 @@ async def _transcribe_deepgram(request, file_path, languages, file_dir, id): raise Exception(detail) - async def _transcribe_azure(request, file_path, filename, file_dir, id): """Transcribe audio via Azure Cognitive Services batch transcription.""" if not os.path.isfile(file_path): @@ -762,7 +764,7 @@ async def _transcribe_azure(request, file_path, filename, file_dir, id): if audio_size > AZURE_MAX_FILE_SIZE: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, - detail=f'File size ({audio_size // (1024*1024)}MB) exceeds Azure limit of {AZURE_MAX_FILE_SIZE_MB}MB', + detail=f'File size ({audio_size // (1024 * 1024)}MB) exceeds Azure limit of {AZURE_MAX_FILE_SIZE_MB}MB', ) api_key = request.app.state.config.AUDIO_STT_AZURE_API_KEY @@ -773,11 +775,23 @@ async def _transcribe_azure(request, file_path, filename, file_dir, id): # Default to a broad set of locales when none are configured if len(locale_str) < 2: - locale_str = ','.join([ - 'en-US', 'es-ES', 'es-MX', 'fr-FR', 'hi-IN', - 'it-IT', 'de-DE', 'en-GB', 'en-IN', 'ja-JP', - 'ko-KR', 'pt-BR', 'zh-CN', - ]) + locale_str = ','.join( + [ + 'en-US', + 'es-ES', + 'es-MX', + 'fr-FR', + 'hi-IN', + 'it-IT', + 'de-DE', + 'en-GB', + 'en-IN', + 'ja-JP', + 'ko-KR', + 'pt-BR', + 'zh-CN', + ] + ) if not api_key or not region: raise HTTPException(status_code=400, detail='Azure API key and region are required for Azure STT') @@ -785,7 +799,8 @@ async def _transcribe_azure(request, file_path, filename, file_dir, id): # Build the transcription definition payload definition = json.dumps( {'locales': locale_str.split(','), 'diarization': {'maxSpeakers': max_speakers, 'enabled': True}} - if locale_str else {} + if locale_str + else {} ) endpoint = ( base_url or f'https://{region}.api.cognitive.microsoft.com' @@ -799,7 +814,8 @@ async def _transcribe_azure(request, file_path, filename, file_dir, id): try: session = await get_session() r = await session.post( - url=endpoint, data=form_data, + url=endpoint, + data=form_data, headers={'Ocp-Apim-Subscription-Key': api_key}, ssl=AIOHTTP_CLIENT_SESSION_SSL, ) @@ -833,8 +849,10 @@ async def _transcribe_azure(request, file_path, filename, file_dir, id): if 'code' in res and 'message' in res: azure_code = res.get('innerError', {}).get('code', res['code']) user_facing_codes = { - 'EmptyAudioFile', 'AudioLengthLimitExceeded', - 'NoLanguageIdentified', 'MultipleLanguagesIdentified', + 'EmptyAudioFile', + 'AudioLengthLimitExceeded', + 'NoLanguageIdentified', + 'MultipleLanguagesIdentified', } if azure_code in user_facing_codes: detail = res['message'] @@ -851,7 +869,6 @@ async def _transcribe_azure(request, file_path, filename, file_dir, id): ) - async def transcription_handler(request, file_path, metadata, user=None): filename = os.path.basename(file_path) file_dir = os.path.dirname(file_path) @@ -897,8 +914,7 @@ async def _transcribe_mistral(request, file_path, filename, metadata, file_dir, try: model = request.app.state.config.STT_MODEL or 'voxtral-mini-latest' log.info( - f'Mistral STT - model: {model}, ' - f'method: {"chat_completions" if use_chat_completions else "transcriptions"}' + f'Mistral STT - model: {model}, method: {"chat_completions" if use_chat_completions else "transcriptions"}' ) session = await get_session() @@ -932,17 +948,20 @@ async def _transcribe_mistral(request, file_path, filename, metadata, file_dir, payload = { 'model': model, - 'messages': [{ - 'role': 'user', - 'content': [ - {'type': 'input_audio', 'input_audio': audio_base64}, - {'type': 'text', 'text': text_instruction}, - ], - }], + 'messages': [ + { + 'role': 'user', + 'content': [ + {'type': 'input_audio', 'input_audio': audio_base64}, + {'type': 'text', 'text': text_instruction}, + ], + } + ], } r = await session.post( - url=f'{api_base_url}/chat/completions', json=payload, + url=f'{api_base_url}/chat/completions', + json=payload, headers={'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json'}, ssl=AIOHTTP_CLIENT_SESSION_SSL, ) @@ -969,7 +988,8 @@ async def _transcribe_mistral(request, file_path, filename, metadata, file_dir, form_data.add_field('file', open(file_path, 'rb'), filename=filename, content_type=mime_type) r = await session.post( - url=f'{api_base_url}/audio/transcriptions', data=form_data, + url=f'{api_base_url}/audio/transcriptions', + data=form_data, headers={'Authorization': f'Bearer {api_key}'}, ssl=AIOHTTP_CLIENT_SESSION_SSL, ) @@ -1041,10 +1061,7 @@ async def transcribe(request: Request, file_path: str, metadata: Optional[dict] results = [] try: - tasks = [ - transcription_handler(request, chunk_path, metadata, user) - for chunk_path in chunk_paths - ] + tasks = [transcription_handler(request, chunk_path, metadata, user) for chunk_path in chunk_paths] for coro in asyncio.as_completed(tasks): try: results.append(await coro) @@ -1226,7 +1243,8 @@ async def get_available_models(request: Request) -> list[dict]: try: async with session.get( f'{base_url}/audio/models', - ssl=AIOHTTP_CLIENT_SESSION_SSL, timeout=_timeout, + ssl=AIOHTTP_CLIENT_SESSION_SSL, + timeout=_timeout, ) as resp: resp.raise_for_status() data = await resp.json() @@ -1236,7 +1254,8 @@ async def get_available_models(request: Request) -> list[dict]: try: async with session.get( f'{base_url}/models', - ssl=AIOHTTP_CLIENT_SESSION_SSL, timeout=_timeout, + ssl=AIOHTTP_CLIENT_SESSION_SSL, + timeout=_timeout, ) as resp: resp.raise_for_status() data = await resp.json() @@ -1256,7 +1275,8 @@ async def get_available_models(request: Request) -> list[dict]: 'xi-api-key': request.app.state.config.TTS_API_KEY, 'Content-Type': 'application/json', }, - ssl=AIOHTTP_CLIENT_SESSION_SSL, timeout=_timeout, + ssl=AIOHTTP_CLIENT_SESSION_SSL, + timeout=_timeout, ) as resp: resp.raise_for_status() models = await resp.json() @@ -1274,9 +1294,14 @@ async def get_available_models(request: Request) -> list[dict]: async def get_models(request: Request, user=Depends(get_verified_user)): return {'models': await get_available_models(request)} + _OPENAI_DEFAULT_VOICES = { - 'alloy': 'alloy', 'echo': 'echo', 'fable': 'fable', - 'onyx': 'onyx', 'nova': 'nova', 'shimmer': 'shimmer', + 'alloy': 'alloy', + 'echo': 'echo', + 'fable': 'fable', + 'onyx': 'onyx', + 'nova': 'nova', + 'shimmer': 'shimmer', } @@ -1292,7 +1317,8 @@ async def get_available_voices(request) -> dict: session = await get_session() async with session.get( f'{base_url}/audio/voices', - ssl=AIOHTTP_CLIENT_SESSION_SSL, timeout=_timeout, + ssl=AIOHTTP_CLIENT_SESSION_SSL, + timeout=_timeout, ) as resp: resp.raise_for_status() data = await resp.json() @@ -1311,7 +1337,8 @@ async def get_available_voices(request) -> dict: 'xi-api-key': request.app.state.config.TTS_API_KEY, 'Content-Type': 'application/json', }, - ssl=AIOHTTP_CLIENT_SESSION_SSL, timeout=_timeout, + ssl=AIOHTTP_CLIENT_SESSION_SSL, + timeout=_timeout, ) as resp: resp.raise_for_status() voices_data = await resp.json() @@ -1330,7 +1357,8 @@ async def get_available_voices(request) -> dict: async with session.get( url, headers={'Ocp-Apim-Subscription-Key': request.app.state.config.TTS_API_KEY}, - ssl=AIOHTTP_CLIENT_SESSION_SSL, timeout=_timeout, + ssl=AIOHTTP_CLIENT_SESSION_SSL, + timeout=_timeout, ) as resp: resp.raise_for_status() voices = await resp.json() @@ -1348,7 +1376,8 @@ async def get_available_voices(request) -> dict: async with session.get( f'{api_base_url}/audio/voices', headers={'Authorization': f'Bearer {api_key}'}, - ssl=AIOHTTP_CLIENT_SESSION_SSL, timeout=_timeout, + ssl=AIOHTTP_CLIENT_SESSION_SSL, + timeout=_timeout, ) as resp: resp.raise_for_status() voices_data = await resp.json() diff --git a/backend/open_webui/routers/chats.py b/backend/open_webui/routers/chats.py index c618334783..2689aa6d2f 100644 --- a/backend/open_webui/routers/chats.py +++ b/backend/open_webui/routers/chats.py @@ -514,9 +514,13 @@ async def delete_all_user_chats( @router.get('/list/user/{user_id}', response_model=list[ChatTitleIdResponse]) async def get_user_chat_list_by_user_id( - user_id: str, page: int | None = None, query: str | None = None, - order_by: str | None = None, direction: str | None = None, - user=Depends(get_admin_user), db: AsyncSession = Depends(get_async_session), + user_id: str, + page: int | None = None, + query: str | None = None, + order_by: str | None = None, + direction: str | None = None, + user=Depends(get_admin_user), + db: AsyncSession = Depends(get_async_session), ): """List chat summaries for a given user (admin-only endpoint).""" if not ENABLE_ADMIN_CHAT_ACCESS: diff --git a/backend/open_webui/routers/files.py b/backend/open_webui/routers/files.py index 3e036613d4..dbf1ccb885 100644 --- a/backend/open_webui/routers/files.py +++ b/backend/open_webui/routers/files.py @@ -123,9 +123,7 @@ async def process_uploaded_file( if _is_text_file(file_path): content_type = 'text/plain' - stt_supported = getattr( - request.app.state.config, 'STT_SUPPORTED_CONTENT_TYPES', [] - ) + stt_supported = getattr(request.app.state.config, 'STT_SUPPORTED_CONTENT_TYPES', []) if content_type and strict_match_mime_type(stt_supported, content_type): # Audio / STT-supported files → transcribe then index @@ -161,17 +159,12 @@ async def process_uploaded_file( db=db_session, ) else: - raise Exception( - f'File type {content_type} is not supported for processing' - ) + raise Exception(f'File type {content_type} is not supported for processing') else: # Documents, or any file when an external engine is configured if not content_type: - log.info( - f'File type {file.content_type} is not provided, ' - 'but trying to process anyway' - ) + log.info(f'File type {file.content_type} is not provided, but trying to process anyway') await process_file( request, ProcessFileForm(file_id=file_item.id), diff --git a/backend/open_webui/routers/groups.py b/backend/open_webui/routers/groups.py index 3a06cb287c..6efcd3946e 100755 --- a/backend/open_webui/routers/groups.py +++ b/backend/open_webui/routers/groups.py @@ -336,29 +336,16 @@ async def preview_group_access( return { 'group': {'id': group.id, 'name': group.name}, 'models': { - 'items': [ - {'id': m.id, 'name': m.name} - for m in active_models - if m.id in accessible_model_ids - ], + 'items': [{'id': m.id, 'name': m.name} for m in active_models if m.id in accessible_model_ids], 'total': len(active_models), }, 'knowledge': { - 'items': [ - {'id': k.id, 'name': k.name} - for k in all_knowledge - if k.id in accessible_knowledge_ids - ], + 'items': [{'id': k.id, 'name': k.name} for k in all_knowledge if k.id in accessible_knowledge_ids], 'total': len(all_knowledge), }, 'tools': { - 'items': [ - {'id': t.id, 'name': t.name} - for t in all_tools - if t.id in accessible_tool_ids - ], + 'items': [{'id': t.id, 'name': t.name} for t in all_tools if t.id in accessible_tool_ids], 'total': len(all_tools), }, 'permissions': group.permissions or {}, } - diff --git a/backend/open_webui/routers/images.py b/backend/open_webui/routers/images.py index ba824f33c1..9d65cebfb8 100644 --- a/backend/open_webui/routers/images.py +++ b/backend/open_webui/routers/images.py @@ -447,6 +447,7 @@ def _is_same_origin(url: str, base_url: str) -> bool: and comparing the three origin components eliminates those attack vectors. """ + def _default_port(scheme: str) -> int: return 443 if scheme == 'https' else 80 @@ -455,8 +456,7 @@ def _is_same_origin(url: str, base_url: str) -> bool: return ( parsed.scheme == trusted.scheme and parsed.hostname == trusted.hostname - and (parsed.port or _default_port(parsed.scheme)) - == (trusted.port or _default_port(trusted.scheme)) + and (parsed.port or _default_port(parsed.scheme)) == (trusted.port or _default_port(trusted.scheme)) ) @@ -743,7 +743,8 @@ async def image_generations( headers = {'Authorization': f'Bearer {request.app.state.config.COMFYUI_API_KEY}'} image_data, content_type = await get_image_data( - image['url'], headers, + image['url'], + headers, trusted_base_url=request.app.state.config.COMFYUI_BASE_URL, ) _, url = await upload_image( @@ -1102,7 +1103,8 @@ async def image_edits( headers = {'Authorization': f'Bearer {request.app.state.config.IMAGES_EDIT_COMFYUI_API_KEY}'} image_data, content_type = await get_image_data( - image_url, headers, + image_url, + headers, trusted_base_url=request.app.state.config.IMAGES_EDIT_COMFYUI_BASE_URL, ) _, url = await upload_image( diff --git a/backend/open_webui/routers/knowledge.py b/backend/open_webui/routers/knowledge.py index 46f4e56b4b..3506986429 100644 --- a/backend/open_webui/routers/knowledge.py +++ b/backend/open_webui/routers/knowledge.py @@ -1336,8 +1336,11 @@ async def add_files_to_knowledge_batch( dir_map = {form.file_id: form.directory_id for form in new_entries} for file_id in successful_file_ids: await Knowledges.add_file_to_knowledge_by_id( - knowledge_id=id, file_id=file_id, user_id=user.id, - directory_id=dir_map.get(file_id), db=db, + knowledge_id=id, + file_id=file_id, + user_id=user.id, + directory_id=dir_map.get(file_id), + db=db, ) # If there were any errors, include them in the response diff --git a/backend/open_webui/routers/memories.py b/backend/open_webui/routers/memories.py index 226a64e310..aad881b6da 100644 --- a/backend/open_webui/routers/memories.py +++ b/backend/open_webui/routers/memories.py @@ -63,7 +63,9 @@ class MemoryUpdateModel(BaseModel): @router.post('/add', response_model=MemoryModel | None) async def add_memory( - request: Request, form_data: AddMemoryForm, user=Depends(get_verified_user), + request: Request, + form_data: AddMemoryForm, + user=Depends(get_verified_user), ): """Persist a new memory and embed it into the user's vector collection. diff --git a/backend/open_webui/routers/models.py b/backend/open_webui/routers/models.py index 5200a99a54..75ee4e723b 100644 --- a/backend/open_webui/routers/models.py +++ b/backend/open_webui/routers/models.py @@ -220,8 +220,10 @@ async def get_model_tags(user=Depends(get_verified_user), db: AsyncSession = Dep @router.post('/create', response_model=ModelModel | None) async def create_new_model( - request: Request, form_data: ModelForm, - user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session), + request: Request, + form_data: ModelForm, + user=Depends(get_verified_user), + db: AsyncSession = Depends(get_async_session), ): """Create a new workspace model entry.""" if user.role != 'admin' and not await has_permission( @@ -248,7 +250,8 @@ async def create_new_model( else: await _verify_knowledge_file_access( getattr(form_data.meta, 'knowledge', None) if form_data.meta else None, - user, db, + user, + db, ) form_data.access_grants = await filter_allowed_access_grants( @@ -361,13 +364,14 @@ async def import_models( try: await _verify_knowledge_file_access( (model_data.get('meta') or {}).get('knowledge'), - user, db, + user, + db, ) except HTTPException: log.warning( - 'import_models: user %s skipped model %s ' - '(knowledge file access denied)', - user.id, model_id, + 'import_models: user %s skipped model %s (knowledge file access denied)', + user.id, + model_id, ) continue @@ -634,14 +638,17 @@ async def toggle_model_by_id(id: str, user=Depends(get_verified_user), db: Async @router.post('/model/update', response_model=ModelModel | None) async def update_model_by_id( - request: Request, form_data: ModelForm, - user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session), + request: Request, + form_data: ModelForm, + user=Depends(get_verified_user), + db: AsyncSession = Depends(get_async_session), ): """Update a workspace model's configuration.""" model = await Models.get_model_by_id(form_data.id, db=db) if not model: raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND, + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.NOT_FOUND, ) if ( @@ -662,7 +669,8 @@ async def update_model_by_id( await _verify_knowledge_file_access( getattr(form_data.meta, 'knowledge', None) if form_data.meta else None, - user, db, + user, + db, ) form_data.access_grants = await filter_allowed_access_grants( diff --git a/backend/open_webui/routers/ollama.py b/backend/open_webui/routers/ollama.py index e315121ac4..a4e166ba9e 100644 --- a/backend/open_webui/routers/ollama.py +++ b/backend/open_webui/routers/ollama.py @@ -338,9 +338,7 @@ async def get_all_models(request: Request, user: UserModel | None = None): allowed_model_ids = api_config.get('model_ids', []) if allowed_model_ids and 'models' in response: - response['models'] = [ - m for m in response['models'] if m['model'] in allowed_model_ids - ] + response['models'] = [m for m in response['models'] if m['model'] in allowed_model_ids] for m in response.get('models', []): if prefix_id: @@ -350,11 +348,7 @@ async def get_all_models(request: Request, user: UserModel | None = None): if connection_type: m['connection_type'] = connection_type - models_dict = { - 'models': merge_models_lists( - r.get('models', []) if r else None for r in responses - ) - } + models_dict = {'models': merge_models_lists(r.get('models', []) if r else None for r in responses)} # Annotate with expiry info from loaded-model state try: @@ -386,7 +380,8 @@ async def get_filtered_models(models, user, db=None): db=db, ) return [ - m for m in models.get('models', []) + m + for m in models.get('models', []) if (mi := model_infos.get(m['model'])) and (user.id == mi.user_id or mi.id in accessible_ids) ] @@ -439,19 +434,13 @@ async def get_ollama_loaded_models( for idx, response in enumerate(responses): if not response: continue - api_config = _resolve_api_config( - request.app.state.config, idx, request.app.state.config.OLLAMA_BASE_URLS[idx] - ) + api_config = _resolve_api_config(request.app.state.config, idx, request.app.state.config.OLLAMA_BASE_URLS[idx]) prefix_id = api_config.get('prefix_id') if prefix_id: for m in response.get('models', []): m['model'] = f'{prefix_id}.{m["model"]}' - return { - 'models': merge_models_lists( - r.get('models', []) if r else None for r in responses - ) - } + return {'models': merge_models_lists(r.get('models', []) if r else None for r in responses)} @router.get('/api/version') @@ -472,7 +461,8 @@ async def get_ollama_versions( tasks = [] for idx, url in enumerate(request.app.state.config.OLLAMA_BASE_URLS): api_config = request.app.state.config.OLLAMA_API_CONFIGS.get( - str(idx), request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), + str(idx), + request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), ) if api_config.get('enable', True): tasks.append(send_get_request(f'{url}/api/version', api_config.get('key'))) @@ -799,7 +789,8 @@ async def embed( url = request.app.state.config.OLLAMA_BASE_URLS[url_idx] api_config = request.app.state.config.OLLAMA_API_CONFIGS.get( - str(url_idx), request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), + str(url_idx), + request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), ) key = get_api_key(url_idx, url, request.app.state.config.OLLAMA_API_CONFIGS) @@ -852,7 +843,8 @@ async def embeddings( url = request.app.state.config.OLLAMA_BASE_URLS[url_idx] api_config = request.app.state.config.OLLAMA_API_CONFIGS.get( - str(url_idx), request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), + str(url_idx), + request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), ) key = get_api_key(url_idx, url, request.app.state.config.OLLAMA_API_CONFIGS) @@ -910,7 +902,8 @@ async def generate_completion( url = request.app.state.config.OLLAMA_BASE_URLS[url_idx] api_config = request.app.state.config.OLLAMA_API_CONFIGS.get( - str(url_idx), request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), + str(url_idx), + request.app.state.config.OLLAMA_API_CONFIGS.get(url, {}), ) prefix_id = api_config.get('prefix_id') @@ -1027,9 +1020,7 @@ async def generate_chat_completion( if model_info is not None: if model_info.base_model_id: - base_model_id = ( - request.base_model_id if hasattr(request, 'base_model_id') else model_info.base_model_id - ) + base_model_id = request.base_model_id if hasattr(request, 'base_model_id') else model_info.base_model_id payload['model'] = base_model_id params = model_info.params.model_dump() @@ -1331,19 +1322,12 @@ async def get_openai_models( raw_models = model_list.get('models', []) now_ts = int(time.time()) - models = [ - {'id': m['model'], 'object': 'model', 'created': now_ts, 'owned_by': 'openai'} - for m in raw_models - ] + models = [{'id': m['model'], 'object': 'model', 'created': now_ts, 'owned_by': 'openai'} for m in raw_models] if user.role == 'user' and not BYPASS_MODEL_ACCESS_CONTROL: model_ids = [m['id'] for m in models] - model_infos = { - mi.id: mi for mi in await Models.get_models_by_ids(model_ids, db=db) - } - user_group_ids = { - g.id for g in await Groups.get_groups_by_member_id(user.id, db=db) - } + model_infos = {mi.id: mi for mi in await Models.get_models_by_ids(model_ids, db=db)} + user_group_ids = {g.id for g in await Groups.get_groups_by_member_id(user.id, db=db)} accessible_ids = await AccessGrants.get_accessible_resource_ids( user_id=user.id, resource_type='model', @@ -1353,8 +1337,7 @@ async def get_openai_models( db=db, ) models = [ - m for m in models - if (mi := model_infos.get(m['id'])) and (user.id == mi.user_id or mi.id in accessible_ids) + m for m in models if (mi := model_infos.get(m['id'])) and (user.id == mi.user_id or mi.id in accessible_ids) ] return {'data': models, 'object': 'list'} diff --git a/backend/open_webui/routers/prompts.py b/backend/open_webui/routers/prompts.py index 94f18e499f..1054288da0 100644 --- a/backend/open_webui/routers/prompts.py +++ b/backend/open_webui/routers/prompts.py @@ -239,8 +239,11 @@ async def get_prompt_by_id( @router.post('/id/{prompt_id}/update', response_model=PromptModel | None) async def update_prompt_by_id( - request: Request, prompt_id: str, form_data: PromptForm, - user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session), + request: Request, + prompt_id: str, + form_data: PromptForm, + user=Depends(get_verified_user), + db: AsyncSession = Depends(get_async_session), ): """Update a prompt's content, creating a new history entry if changed.""" prompt = await Prompts.get_prompt_by_id(prompt_id, db=db) diff --git a/backend/open_webui/routers/retrieval.py b/backend/open_webui/routers/retrieval.py index 646ee554e1..70f6cf6309 100644 --- a/backend/open_webui/routers/retrieval.py +++ b/backend/open_webui/routers/retrieval.py @@ -1314,7 +1314,7 @@ def merge_docs_to_target_size( prev = result[-1] if not can_merge_chunks(prev, chunk): return False - merged = f"{prev.page_content}\n\n{content}" + merged = f'{prev.page_content}\n\n{content}' if measure(merged) > max_size: return False result[-1] = Document(page_content=merged, metadata={**prev.metadata}) @@ -2211,7 +2211,6 @@ async def search_web(request: Request, engine: str, query: str, user=None) -> li raise Exception('No search engine API key found in environment variables') - @router.post('/process/web/search') async def process_web_search(request: Request, form_data: SearchForm, user=Depends(get_verified_user)): if not request.app.state.config.ENABLE_WEB_SEARCH: diff --git a/backend/open_webui/routers/tools.py b/backend/open_webui/routers/tools.py index b922a9c0d6..963a727cde 100644 --- a/backend/open_webui/routers/tools.py +++ b/backend/open_webui/routers/tools.py @@ -324,8 +324,10 @@ async def export_tools( @router.post('/create', response_model=ToolResponse | None) async def create_new_tools( - request: Request, form_data: ToolForm, - user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session), + request: Request, + form_data: ToolForm, + user=Depends(get_verified_user), + db: AsyncSession = Depends(get_async_session), ): """Create a new tool from user-supplied Python source code.""" if user.role != 'admin' and not ( @@ -448,14 +450,18 @@ async def get_tools_by_id(id: str, user=Depends(get_verified_user), db: AsyncSes @router.post('/id/{id}/update', response_model=ToolModel | None) async def update_tools_by_id( - request: Request, id: str, form_data: ToolForm, - user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session), + request: Request, + id: str, + form_data: ToolForm, + user=Depends(get_verified_user), + db: AsyncSession = Depends(get_async_session), ): """Update an existing tool's source code and metadata.""" tools = await Tools.get_tool_by_id(id, db=db) if not tools: raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, detail=ERROR_MESSAGES.NOT_FOUND, + status_code=status.HTTP_401_UNAUTHORIZED, + detail=ERROR_MESSAGES.NOT_FOUND, ) # Is the user the original creator, in a group with write access, or an admin diff --git a/backend/open_webui/routers/users.py b/backend/open_webui/routers/users.py index c9fca5a12f..0b8da713df 100644 --- a/backend/open_webui/routers/users.py +++ b/backend/open_webui/routers/users.py @@ -384,7 +384,9 @@ async def get_user_info_by_session_user(user=Depends(get_verified_user), db: Asy @router.post('/user/info/update', response_model=dict | None) async def update_user_info_by_session_user( # PATCH-style merge - form_data: dict, user=Depends(get_verified_user), db: AsyncSession = Depends(get_async_session), + form_data: dict, + user=Depends(get_verified_user), + db: AsyncSession = Depends(get_async_session), ): """Merge caller-supplied fields into the current user's info dict. @@ -401,6 +403,7 @@ async def update_user_info_by_session_user( # PATCH-style merge ) return updated.info + ############################ # GetUserById ############################ @@ -538,7 +541,8 @@ async def get_user_active_status_by_id( @router.post('/{user_id}/update', response_model=UserModel | None) async def update_user_by_id( - user_id: str, form_data: UserUpdateForm, + user_id: str, + form_data: UserUpdateForm, session_user: UserModel = Depends(get_admin_user), db: AsyncSession = Depends(get_async_session), ): @@ -743,27 +747,15 @@ async def get_user_preview( 'user': {'id': target_user.id, 'name': target_user.name}, 'groups': [{'id': g.id, 'name': g.name} for g in user_groups], 'models': { - 'items': [ - {'id': m.id, 'name': m.name} - for m in active_models - if m.id in accessible_model_ids - ], + 'items': [{'id': m.id, 'name': m.name} for m in active_models if m.id in accessible_model_ids], 'total': len(active_models), }, 'knowledge': { - 'items': [ - {'id': k.id, 'name': k.name} - for k in all_knowledge - if k.id in accessible_knowledge_ids - ], + 'items': [{'id': k.id, 'name': k.name} for k in all_knowledge if k.id in accessible_knowledge_ids], 'total': len(all_knowledge), }, 'tools': { - 'items': [ - {'id': t.id, 'name': t.name} - for t in all_tools - if t.id in accessible_tool_ids - ], + 'items': [{'id': t.id, 'name': t.name} for t in all_tools if t.id in accessible_tool_ids], 'total': len(all_tools), }, } diff --git a/backend/open_webui/socket/utils.py b/backend/open_webui/socket/utils.py index 7133f57410..b337b08f40 100644 --- a/backend/open_webui/socket/utils.py +++ b/backend/open_webui/socket/utils.py @@ -9,7 +9,9 @@ import uuid import pycrdt as Y from open_webui.utils.redis import get_redis_connection from open_webui.env import REDIS_KEY_PREFIX -YDOC_KEY_PREFIX = f"{REDIS_KEY_PREFIX}:ydoc:documents" + +YDOC_KEY_PREFIX = f'{REDIS_KEY_PREFIX}:ydoc:documents' + class RedisLock: """Distributed lock backed by a Redis SET with NX/EX semantics.""" @@ -105,9 +107,7 @@ class RedisDict: # this process wrote. The check is per-instance (not distributed), but # still eliminates the majority of redundant writes because each pod # typically produces the same model list on consecutive refreshes. - signature = hashlib.sha256( - json.dumps(serialized, sort_keys=True).encode() - ).hexdigest() + signature = hashlib.sha256(json.dumps(serialized, sort_keys=True).encode()).hexdigest() if signature == self._last_signature: return diff --git a/backend/open_webui/static/swagger-ui/swagger-ui-bundle.js b/backend/open_webui/static/swagger-ui/swagger-ui-bundle.js index 5ea59d21ef..2bb7c93062 100644 --- a/backend/open_webui/static/swagger-ui/swagger-ui-bundle.js +++ b/backend/open_webui/static/swagger-ui/swagger-ui-bundle.js @@ -1,2 +1,76454 @@ /*! For license information please see swagger-ui-bundle.js.LICENSE.txt */ -!function webpackUniversalModuleDefinition(s,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define([],o):"object"==typeof exports?exports.SwaggerUIBundle=o():s.SwaggerUIBundle=o()}(this,(()=>(()=>{var s={67526(s,o){"use strict";o.byteLength=function byteLength(s){var o=getLens(s),i=o[0],a=o[1];return 3*(i+a)/4-a},o.toByteArray=function toByteArray(s){var o,i,_=getLens(s),w=_[0],x=_[1],C=new u(function _byteLength(s,o,i){return 3*(o+i)/4-i}(0,w,x)),j=0,L=x>0?w-4:w;for(i=0;i>16&255,C[j++]=o>>8&255,C[j++]=255&o;2===x&&(o=a[s.charCodeAt(i)]<<2|a[s.charCodeAt(i+1)]>>4,C[j++]=255&o);1===x&&(o=a[s.charCodeAt(i)]<<10|a[s.charCodeAt(i+1)]<<4|a[s.charCodeAt(i+2)]>>2,C[j++]=o>>8&255,C[j++]=255&o);return C},o.fromByteArray=function fromByteArray(s){for(var o,a=s.length,u=a%3,_=[],w=16383,x=0,C=a-u;xC?C:x+w));1===u?(o=s[a-1],_.push(i[o>>2]+i[o<<4&63]+"==")):2===u&&(o=(s[a-2]<<8)+s[a-1],_.push(i[o>>10]+i[o>>4&63]+i[o<<2&63]+"="));return _.join("")};for(var i=[],a=[],u="undefined"!=typeof Uint8Array?Uint8Array:Array,_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",w=0;w<64;++w)i[w]=_[w],a[_.charCodeAt(w)]=w;function getLens(s){var o=s.length;if(o%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var i=s.indexOf("=");return-1===i&&(i=o),[i,i===o?0:4-i%4]}function encodeChunk(s,o,a){for(var u,_,w=[],x=o;x>18&63]+i[_>>12&63]+i[_>>6&63]+i[63&_]);return w.join("")}a["-".charCodeAt(0)]=62,a["_".charCodeAt(0)]=63},48287(s,o,i){"use strict";const a=i(67526),u=i(251),_="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;o.Buffer=Buffer,o.SlowBuffer=function SlowBuffer(s){+s!=s&&(s=0);return Buffer.alloc(+s)},o.INSPECT_MAX_BYTES=50;const w=2147483647;function createBuffer(s){if(s>w)throw new RangeError('The value "'+s+'" is invalid for option "size"');const o=new Uint8Array(s);return Object.setPrototypeOf(o,Buffer.prototype),o}function Buffer(s,o,i){if("number"==typeof s){if("string"==typeof o)throw new TypeError('The "string" argument must be of type string. Received type number');return allocUnsafe(s)}return from(s,o,i)}function from(s,o,i){if("string"==typeof s)return function fromString(s,o){"string"==typeof o&&""!==o||(o="utf8");if(!Buffer.isEncoding(o))throw new TypeError("Unknown encoding: "+o);const i=0|byteLength(s,o);let a=createBuffer(i);const u=a.write(s,o);u!==i&&(a=a.slice(0,u));return a}(s,o);if(ArrayBuffer.isView(s))return function fromArrayView(s){if(isInstance(s,Uint8Array)){const o=new Uint8Array(s);return fromArrayBuffer(o.buffer,o.byteOffset,o.byteLength)}return fromArrayLike(s)}(s);if(null==s)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof s);if(isInstance(s,ArrayBuffer)||s&&isInstance(s.buffer,ArrayBuffer))return fromArrayBuffer(s,o,i);if("undefined"!=typeof SharedArrayBuffer&&(isInstance(s,SharedArrayBuffer)||s&&isInstance(s.buffer,SharedArrayBuffer)))return fromArrayBuffer(s,o,i);if("number"==typeof s)throw new TypeError('The "value" argument must not be of type number. Received type number');const a=s.valueOf&&s.valueOf();if(null!=a&&a!==s)return Buffer.from(a,o,i);const u=function fromObject(s){if(Buffer.isBuffer(s)){const o=0|checked(s.length),i=createBuffer(o);return 0===i.length||s.copy(i,0,0,o),i}if(void 0!==s.length)return"number"!=typeof s.length||numberIsNaN(s.length)?createBuffer(0):fromArrayLike(s);if("Buffer"===s.type&&Array.isArray(s.data))return fromArrayLike(s.data)}(s);if(u)return u;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof s[Symbol.toPrimitive])return Buffer.from(s[Symbol.toPrimitive]("string"),o,i);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof s)}function assertSize(s){if("number"!=typeof s)throw new TypeError('"size" argument must be of type number');if(s<0)throw new RangeError('The value "'+s+'" is invalid for option "size"')}function allocUnsafe(s){return assertSize(s),createBuffer(s<0?0:0|checked(s))}function fromArrayLike(s){const o=s.length<0?0:0|checked(s.length),i=createBuffer(o);for(let a=0;a=w)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+w.toString(16)+" bytes");return 0|s}function byteLength(s,o){if(Buffer.isBuffer(s))return s.length;if(ArrayBuffer.isView(s)||isInstance(s,ArrayBuffer))return s.byteLength;if("string"!=typeof s)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof s);const i=s.length,a=arguments.length>2&&!0===arguments[2];if(!a&&0===i)return 0;let u=!1;for(;;)switch(o){case"ascii":case"latin1":case"binary":return i;case"utf8":case"utf-8":return utf8ToBytes(s).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*i;case"hex":return i>>>1;case"base64":return base64ToBytes(s).length;default:if(u)return a?-1:utf8ToBytes(s).length;o=(""+o).toLowerCase(),u=!0}}function slowToString(s,o,i){let a=!1;if((void 0===o||o<0)&&(o=0),o>this.length)return"";if((void 0===i||i>this.length)&&(i=this.length),i<=0)return"";if((i>>>=0)<=(o>>>=0))return"";for(s||(s="utf8");;)switch(s){case"hex":return hexSlice(this,o,i);case"utf8":case"utf-8":return utf8Slice(this,o,i);case"ascii":return asciiSlice(this,o,i);case"latin1":case"binary":return latin1Slice(this,o,i);case"base64":return base64Slice(this,o,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,o,i);default:if(a)throw new TypeError("Unknown encoding: "+s);s=(s+"").toLowerCase(),a=!0}}function swap(s,o,i){const a=s[o];s[o]=s[i],s[i]=a}function bidirectionalIndexOf(s,o,i,a,u){if(0===s.length)return-1;if("string"==typeof i?(a=i,i=0):i>2147483647?i=2147483647:i<-2147483648&&(i=-2147483648),numberIsNaN(i=+i)&&(i=u?0:s.length-1),i<0&&(i=s.length+i),i>=s.length){if(u)return-1;i=s.length-1}else if(i<0){if(!u)return-1;i=0}if("string"==typeof o&&(o=Buffer.from(o,a)),Buffer.isBuffer(o))return 0===o.length?-1:arrayIndexOf(s,o,i,a,u);if("number"==typeof o)return o&=255,"function"==typeof Uint8Array.prototype.indexOf?u?Uint8Array.prototype.indexOf.call(s,o,i):Uint8Array.prototype.lastIndexOf.call(s,o,i):arrayIndexOf(s,[o],i,a,u);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(s,o,i,a,u){let _,w=1,x=s.length,C=o.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(s.length<2||o.length<2)return-1;w=2,x/=2,C/=2,i/=2}function read(s,o){return 1===w?s[o]:s.readUInt16BE(o*w)}if(u){let a=-1;for(_=i;_x&&(i=x-C),_=i;_>=0;_--){let i=!0;for(let a=0;au&&(a=u):a=u;const _=o.length;let w;for(a>_/2&&(a=_/2),w=0;w>8,u=i%256,_.push(u),_.push(a);return _}(o,s.length-i),s,i,a)}function base64Slice(s,o,i){return 0===o&&i===s.length?a.fromByteArray(s):a.fromByteArray(s.slice(o,i))}function utf8Slice(s,o,i){i=Math.min(s.length,i);const a=[];let u=o;for(;u239?4:o>223?3:o>191?2:1;if(u+w<=i){let i,a,x,C;switch(w){case 1:o<128&&(_=o);break;case 2:i=s[u+1],128==(192&i)&&(C=(31&o)<<6|63&i,C>127&&(_=C));break;case 3:i=s[u+1],a=s[u+2],128==(192&i)&&128==(192&a)&&(C=(15&o)<<12|(63&i)<<6|63&a,C>2047&&(C<55296||C>57343)&&(_=C));break;case 4:i=s[u+1],a=s[u+2],x=s[u+3],128==(192&i)&&128==(192&a)&&128==(192&x)&&(C=(15&o)<<18|(63&i)<<12|(63&a)<<6|63&x,C>65535&&C<1114112&&(_=C))}}null===_?(_=65533,w=1):_>65535&&(_-=65536,a.push(_>>>10&1023|55296),_=56320|1023&_),a.push(_),u+=w}return function decodeCodePointsArray(s){const o=s.length;if(o<=x)return String.fromCharCode.apply(String,s);let i="",a=0;for(;aa.length?(Buffer.isBuffer(o)||(o=Buffer.from(o)),o.copy(a,u)):Uint8Array.prototype.set.call(a,o,u);else{if(!Buffer.isBuffer(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(a,u)}u+=o.length}return a},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function swap16(){const s=this.length;if(s%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let o=0;oi&&(s+=" ... "),""},_&&(Buffer.prototype[_]=Buffer.prototype.inspect),Buffer.prototype.compare=function compare(s,o,i,a,u){if(isInstance(s,Uint8Array)&&(s=Buffer.from(s,s.offset,s.byteLength)),!Buffer.isBuffer(s))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof s);if(void 0===o&&(o=0),void 0===i&&(i=s?s.length:0),void 0===a&&(a=0),void 0===u&&(u=this.length),o<0||i>s.length||a<0||u>this.length)throw new RangeError("out of range index");if(a>=u&&o>=i)return 0;if(a>=u)return-1;if(o>=i)return 1;if(this===s)return 0;let _=(u>>>=0)-(a>>>=0),w=(i>>>=0)-(o>>>=0);const x=Math.min(_,w),C=this.slice(a,u),j=s.slice(o,i);for(let s=0;s>>=0,isFinite(i)?(i>>>=0,void 0===a&&(a="utf8")):(a=i,i=void 0)}const u=this.length-o;if((void 0===i||i>u)&&(i=u),s.length>0&&(i<0||o<0)||o>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");let _=!1;for(;;)switch(a){case"hex":return hexWrite(this,s,o,i);case"utf8":case"utf-8":return utf8Write(this,s,o,i);case"ascii":case"latin1":case"binary":return asciiWrite(this,s,o,i);case"base64":return base64Write(this,s,o,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,s,o,i);default:if(_)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),_=!0}},Buffer.prototype.toJSON=function toJSON(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const x=4096;function asciiSlice(s,o,i){let a="";i=Math.min(s.length,i);for(let u=o;ua)&&(i=a);let u="";for(let a=o;ai)throw new RangeError("Trying to access beyond buffer length")}function checkInt(s,o,i,a,u,_){if(!Buffer.isBuffer(s))throw new TypeError('"buffer" argument must be a Buffer instance');if(o>u||o<_)throw new RangeError('"value" argument is out of bounds');if(i+a>s.length)throw new RangeError("Index out of range")}function wrtBigUInt64LE(s,o,i,a,u){checkIntBI(o,a,u,s,i,7);let _=Number(o&BigInt(4294967295));s[i++]=_,_>>=8,s[i++]=_,_>>=8,s[i++]=_,_>>=8,s[i++]=_;let w=Number(o>>BigInt(32)&BigInt(4294967295));return s[i++]=w,w>>=8,s[i++]=w,w>>=8,s[i++]=w,w>>=8,s[i++]=w,i}function wrtBigUInt64BE(s,o,i,a,u){checkIntBI(o,a,u,s,i,7);let _=Number(o&BigInt(4294967295));s[i+7]=_,_>>=8,s[i+6]=_,_>>=8,s[i+5]=_,_>>=8,s[i+4]=_;let w=Number(o>>BigInt(32)&BigInt(4294967295));return s[i+3]=w,w>>=8,s[i+2]=w,w>>=8,s[i+1]=w,w>>=8,s[i]=w,i+8}function checkIEEE754(s,o,i,a,u,_){if(i+a>s.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("Index out of range")}function writeFloat(s,o,i,a,_){return o=+o,i>>>=0,_||checkIEEE754(s,0,i,4),u.write(s,o,i,a,23,4),i+4}function writeDouble(s,o,i,a,_){return o=+o,i>>>=0,_||checkIEEE754(s,0,i,8),u.write(s,o,i,a,52,8),i+8}Buffer.prototype.slice=function slice(s,o){const i=this.length;(s=~~s)<0?(s+=i)<0&&(s=0):s>i&&(s=i),(o=void 0===o?i:~~o)<0?(o+=i)<0&&(o=0):o>i&&(o=i),o>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=this[s],u=1,_=0;for(;++_>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=this[s+--o],u=1;for(;o>0&&(u*=256);)a+=this[s+--o]*u;return a},Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function readUInt8(s,o){return s>>>=0,o||checkOffset(s,1,this.length),this[s]},Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function readUInt16LE(s,o){return s>>>=0,o||checkOffset(s,2,this.length),this[s]|this[s+1]<<8},Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function readUInt16BE(s,o){return s>>>=0,o||checkOffset(s,2,this.length),this[s]<<8|this[s+1]},Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function readUInt32LE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),(this[s]|this[s+1]<<8|this[s+2]<<16)+16777216*this[s+3]},Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function readUInt32BE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),16777216*this[s]+(this[s+1]<<16|this[s+2]<<8|this[s+3])},Buffer.prototype.readBigUInt64LE=defineBigIntMethod((function readBigUInt64LE(s){validateNumber(s>>>=0,"offset");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=o+256*this[++s]+65536*this[++s]+this[++s]*2**24,u=this[++s]+256*this[++s]+65536*this[++s]+i*2**24;return BigInt(a)+(BigInt(u)<>>=0,"offset");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=o*2**24+65536*this[++s]+256*this[++s]+this[++s],u=this[++s]*2**24+65536*this[++s]+256*this[++s]+i;return(BigInt(a)<>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=this[s],u=1,_=0;for(;++_=u&&(a-=Math.pow(2,8*o)),a},Buffer.prototype.readIntBE=function readIntBE(s,o,i){s>>>=0,o>>>=0,i||checkOffset(s,o,this.length);let a=o,u=1,_=this[s+--a];for(;a>0&&(u*=256);)_+=this[s+--a]*u;return u*=128,_>=u&&(_-=Math.pow(2,8*o)),_},Buffer.prototype.readInt8=function readInt8(s,o){return s>>>=0,o||checkOffset(s,1,this.length),128&this[s]?-1*(255-this[s]+1):this[s]},Buffer.prototype.readInt16LE=function readInt16LE(s,o){s>>>=0,o||checkOffset(s,2,this.length);const i=this[s]|this[s+1]<<8;return 32768&i?4294901760|i:i},Buffer.prototype.readInt16BE=function readInt16BE(s,o){s>>>=0,o||checkOffset(s,2,this.length);const i=this[s+1]|this[s]<<8;return 32768&i?4294901760|i:i},Buffer.prototype.readInt32LE=function readInt32LE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),this[s]|this[s+1]<<8|this[s+2]<<16|this[s+3]<<24},Buffer.prototype.readInt32BE=function readInt32BE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),this[s]<<24|this[s+1]<<16|this[s+2]<<8|this[s+3]},Buffer.prototype.readBigInt64LE=defineBigIntMethod((function readBigInt64LE(s){validateNumber(s>>>=0,"offset");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=this[s+4]+256*this[s+5]+65536*this[s+6]+(i<<24);return(BigInt(a)<>>=0,"offset");const o=this[s],i=this[s+7];void 0!==o&&void 0!==i||boundsError(s,this.length-8);const a=(o<<24)+65536*this[++s]+256*this[++s]+this[++s];return(BigInt(a)<>>=0,o||checkOffset(s,4,this.length),u.read(this,s,!0,23,4)},Buffer.prototype.readFloatBE=function readFloatBE(s,o){return s>>>=0,o||checkOffset(s,4,this.length),u.read(this,s,!1,23,4)},Buffer.prototype.readDoubleLE=function readDoubleLE(s,o){return s>>>=0,o||checkOffset(s,8,this.length),u.read(this,s,!0,52,8)},Buffer.prototype.readDoubleBE=function readDoubleBE(s,o){return s>>>=0,o||checkOffset(s,8,this.length),u.read(this,s,!1,52,8)},Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function writeUIntLE(s,o,i,a){if(s=+s,o>>>=0,i>>>=0,!a){checkInt(this,s,o,i,Math.pow(2,8*i)-1,0)}let u=1,_=0;for(this[o]=255&s;++_>>=0,i>>>=0,!a){checkInt(this,s,o,i,Math.pow(2,8*i)-1,0)}let u=i-1,_=1;for(this[o+u]=255&s;--u>=0&&(_*=256);)this[o+u]=s/_&255;return o+i},Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function writeUInt8(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,1,255,0),this[o]=255&s,o+1},Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function writeUInt16LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,65535,0),this[o]=255&s,this[o+1]=s>>>8,o+2},Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function writeUInt16BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,65535,0),this[o]=s>>>8,this[o+1]=255&s,o+2},Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function writeUInt32LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,4294967295,0),this[o+3]=s>>>24,this[o+2]=s>>>16,this[o+1]=s>>>8,this[o]=255&s,o+4},Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function writeUInt32BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,4294967295,0),this[o]=s>>>24,this[o+1]=s>>>16,this[o+2]=s>>>8,this[o+3]=255&s,o+4},Buffer.prototype.writeBigUInt64LE=defineBigIntMethod((function writeBigUInt64LE(s,o=0){return wrtBigUInt64LE(this,s,o,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeBigUInt64BE=defineBigIntMethod((function writeBigUInt64BE(s,o=0){return wrtBigUInt64BE(this,s,o,BigInt(0),BigInt("0xffffffffffffffff"))})),Buffer.prototype.writeIntLE=function writeIntLE(s,o,i,a){if(s=+s,o>>>=0,!a){const a=Math.pow(2,8*i-1);checkInt(this,s,o,i,a-1,-a)}let u=0,_=1,w=0;for(this[o]=255&s;++u>>=0,!a){const a=Math.pow(2,8*i-1);checkInt(this,s,o,i,a-1,-a)}let u=i-1,_=1,w=0;for(this[o+u]=255&s;--u>=0&&(_*=256);)s<0&&0===w&&0!==this[o+u+1]&&(w=1),this[o+u]=(s/_|0)-w&255;return o+i},Buffer.prototype.writeInt8=function writeInt8(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,1,127,-128),s<0&&(s=255+s+1),this[o]=255&s,o+1},Buffer.prototype.writeInt16LE=function writeInt16LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,32767,-32768),this[o]=255&s,this[o+1]=s>>>8,o+2},Buffer.prototype.writeInt16BE=function writeInt16BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,2,32767,-32768),this[o]=s>>>8,this[o+1]=255&s,o+2},Buffer.prototype.writeInt32LE=function writeInt32LE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,2147483647,-2147483648),this[o]=255&s,this[o+1]=s>>>8,this[o+2]=s>>>16,this[o+3]=s>>>24,o+4},Buffer.prototype.writeInt32BE=function writeInt32BE(s,o,i){return s=+s,o>>>=0,i||checkInt(this,s,o,4,2147483647,-2147483648),s<0&&(s=4294967295+s+1),this[o]=s>>>24,this[o+1]=s>>>16,this[o+2]=s>>>8,this[o+3]=255&s,o+4},Buffer.prototype.writeBigInt64LE=defineBigIntMethod((function writeBigInt64LE(s,o=0){return wrtBigUInt64LE(this,s,o,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeBigInt64BE=defineBigIntMethod((function writeBigInt64BE(s,o=0){return wrtBigUInt64BE(this,s,o,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),Buffer.prototype.writeFloatLE=function writeFloatLE(s,o,i){return writeFloat(this,s,o,!0,i)},Buffer.prototype.writeFloatBE=function writeFloatBE(s,o,i){return writeFloat(this,s,o,!1,i)},Buffer.prototype.writeDoubleLE=function writeDoubleLE(s,o,i){return writeDouble(this,s,o,!0,i)},Buffer.prototype.writeDoubleBE=function writeDoubleBE(s,o,i){return writeDouble(this,s,o,!1,i)},Buffer.prototype.copy=function copy(s,o,i,a){if(!Buffer.isBuffer(s))throw new TypeError("argument should be a Buffer");if(i||(i=0),a||0===a||(a=this.length),o>=s.length&&(o=s.length),o||(o=0),a>0&&a=this.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),s.length-o>>=0,i=void 0===i?this.length:i>>>0,s||(s=0),"number"==typeof s)for(u=o;u=a+4;i-=3)o=`_${s.slice(i-3,i)}${o}`;return`${s.slice(0,i)}${o}`}function checkIntBI(s,o,i,a,u,_){if(s>i||s3?0===o||o===BigInt(0)?`>= 0${a} and < 2${a} ** ${8*(_+1)}${a}`:`>= -(2${a} ** ${8*(_+1)-1}${a}) and < 2 ** ${8*(_+1)-1}${a}`:`>= ${o}${a} and <= ${i}${a}`,new C.ERR_OUT_OF_RANGE("value",u,s)}!function checkBounds(s,o,i){validateNumber(o,"offset"),void 0!==s[o]&&void 0!==s[o+i]||boundsError(o,s.length-(i+1))}(a,u,_)}function validateNumber(s,o){if("number"!=typeof s)throw new C.ERR_INVALID_ARG_TYPE(o,"number",s)}function boundsError(s,o,i){if(Math.floor(s)!==s)throw validateNumber(s,i),new C.ERR_OUT_OF_RANGE(i||"offset","an integer",s);if(o<0)throw new C.ERR_BUFFER_OUT_OF_BOUNDS;throw new C.ERR_OUT_OF_RANGE(i||"offset",`>= ${i?1:0} and <= ${o}`,s)}E("ERR_BUFFER_OUT_OF_BOUNDS",(function(s){return s?`${s} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),E("ERR_INVALID_ARG_TYPE",(function(s,o){return`The "${s}" argument must be of type number. Received type ${typeof o}`}),TypeError),E("ERR_OUT_OF_RANGE",(function(s,o,i){let a=`The value of "${s}" is out of range.`,u=i;return Number.isInteger(i)&&Math.abs(i)>2**32?u=addNumericalSeparator(String(i)):"bigint"==typeof i&&(u=String(i),(i>BigInt(2)**BigInt(32)||i<-(BigInt(2)**BigInt(32)))&&(u=addNumericalSeparator(u)),u+="n"),a+=` It must be ${o}. Received ${u}`,a}),RangeError);const j=/[^+/0-9A-Za-z-_]/g;function utf8ToBytes(s,o){let i;o=o||1/0;const a=s.length;let u=null;const _=[];for(let w=0;w55295&&i<57344){if(!u){if(i>56319){(o-=3)>-1&&_.push(239,191,189);continue}if(w+1===a){(o-=3)>-1&&_.push(239,191,189);continue}u=i;continue}if(i<56320){(o-=3)>-1&&_.push(239,191,189),u=i;continue}i=65536+(u-55296<<10|i-56320)}else u&&(o-=3)>-1&&_.push(239,191,189);if(u=null,i<128){if((o-=1)<0)break;_.push(i)}else if(i<2048){if((o-=2)<0)break;_.push(i>>6|192,63&i|128)}else if(i<65536){if((o-=3)<0)break;_.push(i>>12|224,i>>6&63|128,63&i|128)}else{if(!(i<1114112))throw new Error("Invalid code point");if((o-=4)<0)break;_.push(i>>18|240,i>>12&63|128,i>>6&63|128,63&i|128)}}return _}function base64ToBytes(s){return a.toByteArray(function base64clean(s){if((s=(s=s.split("=")[0]).trim().replace(j,"")).length<2)return"";for(;s.length%4!=0;)s+="=";return s}(s))}function blitBuffer(s,o,i,a){let u;for(u=0;u=o.length||u>=s.length);++u)o[u+i]=s[u];return u}function isInstance(s,o){return s instanceof o||null!=s&&null!=s.constructor&&null!=s.constructor.name&&s.constructor.name===o.name}function numberIsNaN(s){return s!=s}const L=function(){const s="0123456789abcdef",o=new Array(256);for(let i=0;i<16;++i){const a=16*i;for(let u=0;u<16;++u)o[a+u]=s[i]+s[u]}return o}();function defineBigIntMethod(s){return"undefined"==typeof BigInt?BufferBigIntNotDefined:s}function BufferBigIntNotDefined(){throw new Error("BigInt not supported")}},13144(s,o,i){"use strict";var a=i(66743),u=i(11002),_=i(10076),w=i(47119);s.exports=w||a.call(_,u)},12205(s,o,i){"use strict";var a=i(66743),u=i(11002),_=i(13144);s.exports=function applyBind(){return _(a,u,arguments)}},11002(s){"use strict";s.exports=Function.prototype.apply},10076(s){"use strict";s.exports=Function.prototype.call},73126(s,o,i){"use strict";var a=i(66743),u=i(69675),_=i(10076),w=i(13144);s.exports=function callBindBasic(s){if(s.length<1||"function"!=typeof s[0])throw new u("a function is required");return w(a,_,s)}},47119(s){"use strict";s.exports="undefined"!=typeof Reflect&&Reflect&&Reflect.apply},10487(s,o,i){"use strict";var a=i(96897),u=i(30655),_=i(73126),w=i(12205);s.exports=function callBind(s){var o=_(arguments),i=s.length-(arguments.length-1);return a(o,1+(i>0?i:0),!0)},u?u(s.exports,"apply",{value:w}):s.exports.apply=w},36556(s,o,i){"use strict";var a=i(70453),u=i(73126),_=u([a("%String.prototype.indexOf%")]);s.exports=function callBoundIntrinsic(s,o){var i=a(s,!!o);return"function"==typeof i&&_(s,".prototype.")>-1?u([i]):i}},17965(s,o,i){"use strict";var a=i(16426),u={"text/plain":"Text","text/html":"Url",default:"Text"};s.exports=function copy(s,o){var i,_,w,x,C,j,L=!1;o||(o={}),i=o.debug||!1;try{if(w=a(),x=document.createRange(),C=document.getSelection(),(j=document.createElement("span")).textContent=s,j.ariaHidden="true",j.style.all="unset",j.style.position="fixed",j.style.top=0,j.style.clip="rect(0, 0, 0, 0)",j.style.whiteSpace="pre",j.style.webkitUserSelect="text",j.style.MozUserSelect="text",j.style.msUserSelect="text",j.style.userSelect="text",j.addEventListener("copy",(function(a){if(a.stopPropagation(),o.format)if(a.preventDefault(),void 0===a.clipboardData){i&&console.warn("unable to use e.clipboardData"),i&&console.warn("trying IE specific stuff"),window.clipboardData.clearData();var _=u[o.format]||u.default;window.clipboardData.setData(_,s)}else a.clipboardData.clearData(),a.clipboardData.setData(o.format,s);o.onCopy&&(a.preventDefault(),o.onCopy(a.clipboardData))})),document.body.appendChild(j),x.selectNodeContents(j),C.addRange(x),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");L=!0}catch(a){i&&console.error("unable to copy using execCommand: ",a),i&&console.warn("trying IE specific stuff");try{window.clipboardData.setData(o.format||"text",s),o.onCopy&&o.onCopy(window.clipboardData),L=!0}catch(a){i&&console.error("unable to copy using clipboardData: ",a),i&&console.error("falling back to prompt"),_=function format(s){var o=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return s.replace(/#{\s*key\s*}/g,o)}("message"in o?o.message:"Copy to clipboard: #{key}, Enter"),window.prompt(_,s)}}finally{C&&("function"==typeof C.removeRange?C.removeRange(x):C.removeAllRanges()),j&&document.body.removeChild(j),w()}return L}},2205(s,o,i){var a;a=void 0!==i.g?i.g:this,s.exports=function(s){if(s.CSS&&s.CSS.escape)return s.CSS.escape;var cssEscape=function(s){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var o,i=String(s),a=i.length,u=-1,_="",w=i.charCodeAt(0);++u=1&&o<=31||127==o||0==u&&o>=48&&o<=57||1==u&&o>=48&&o<=57&&45==w?"\\"+o.toString(16)+" ":0==u&&1==a&&45==o||!(o>=128||45==o||95==o||o>=48&&o<=57||o>=65&&o<=90||o>=97&&o<=122)?"\\"+i.charAt(u):i.charAt(u):_+="�";return _};return s.CSS||(s.CSS={}),s.CSS.escape=cssEscape,cssEscape}(a)},81919(s,o,i){"use strict";var a=i(48287).Buffer;function isSpecificValue(s){return s instanceof a||s instanceof Date||s instanceof RegExp}function cloneSpecificValue(s){if(s instanceof a){var o=a.alloc?a.alloc(s.length):new a(s.length);return s.copy(o),o}if(s instanceof Date)return new Date(s.getTime());if(s instanceof RegExp)return new RegExp(s);throw new Error("Unexpected situation")}function deepCloneArray(s){var o=[];return s.forEach((function(s,i){"object"==typeof s&&null!==s?Array.isArray(s)?o[i]=deepCloneArray(s):isSpecificValue(s)?o[i]=cloneSpecificValue(s):o[i]=u({},s):o[i]=s})),o}function safeGetProperty(s,o){return"__proto__"===o?void 0:s[o]}var u=s.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var s,o,i=arguments[0];return Array.prototype.slice.call(arguments,1).forEach((function(a){"object"!=typeof a||null===a||Array.isArray(a)||Object.keys(a).forEach((function(_){return o=safeGetProperty(i,_),(s=safeGetProperty(a,_))===i?void 0:"object"!=typeof s||null===s?void(i[_]=s):Array.isArray(s)?void(i[_]=deepCloneArray(s)):isSpecificValue(s)?void(i[_]=cloneSpecificValue(s)):"object"!=typeof o||null===o||Array.isArray(o)?void(i[_]=u({},s)):void(i[_]=u(o,s))}))})),i}},14744(s){"use strict";var o=function isMergeableObject(s){return function isNonNullObject(s){return!!s&&"object"==typeof s}(s)&&!function isSpecial(s){var o=Object.prototype.toString.call(s);return"[object RegExp]"===o||"[object Date]"===o||function isReactElement(s){return s.$$typeof===i}(s)}(s)};var i="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function cloneUnlessOtherwiseSpecified(s,o){return!1!==o.clone&&o.isMergeableObject(s)?deepmerge(function emptyTarget(s){return Array.isArray(s)?[]:{}}(s),s,o):s}function defaultArrayMerge(s,o,i){return s.concat(o).map((function(s){return cloneUnlessOtherwiseSpecified(s,i)}))}function getKeys(s){return Object.keys(s).concat(function getEnumerableOwnPropertySymbols(s){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(s).filter((function(o){return Object.propertyIsEnumerable.call(s,o)})):[]}(s))}function propertyIsOnObject(s,o){try{return o in s}catch(s){return!1}}function mergeObject(s,o,i){var a={};return i.isMergeableObject(s)&&getKeys(s).forEach((function(o){a[o]=cloneUnlessOtherwiseSpecified(s[o],i)})),getKeys(o).forEach((function(u){(function propertyIsUnsafe(s,o){return propertyIsOnObject(s,o)&&!(Object.hasOwnProperty.call(s,o)&&Object.propertyIsEnumerable.call(s,o))})(s,u)||(propertyIsOnObject(s,u)&&i.isMergeableObject(o[u])?a[u]=function getMergeFunction(s,o){if(!o.customMerge)return deepmerge;var i=o.customMerge(s);return"function"==typeof i?i:deepmerge}(u,i)(s[u],o[u],i):a[u]=cloneUnlessOtherwiseSpecified(o[u],i))})),a}function deepmerge(s,i,a){(a=a||{}).arrayMerge=a.arrayMerge||defaultArrayMerge,a.isMergeableObject=a.isMergeableObject||o,a.cloneUnlessOtherwiseSpecified=cloneUnlessOtherwiseSpecified;var u=Array.isArray(i);return u===Array.isArray(s)?u?a.arrayMerge(s,i,a):mergeObject(s,i,a):cloneUnlessOtherwiseSpecified(i,a)}deepmerge.all=function deepmergeAll(s,o){if(!Array.isArray(s))throw new Error("first argument should be an array");return s.reduce((function(s,i){return deepmerge(s,i,o)}),{})};var a=deepmerge;s.exports=a},30041(s,o,i){"use strict";var a=i(30655),u=i(58068),_=i(69675),w=i(75795);s.exports=function defineDataProperty(s,o,i){if(!s||"object"!=typeof s&&"function"!=typeof s)throw new _("`obj` must be an object or a function`");if("string"!=typeof o&&"symbol"!=typeof o)throw new _("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new _("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new _("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new _("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new _("`loose`, if provided, must be a boolean");var x=arguments.length>3?arguments[3]:null,C=arguments.length>4?arguments[4]:null,j=arguments.length>5?arguments[5]:null,L=arguments.length>6&&arguments[6],B=!!w&&w(s,o);if(a)a(s,o,{configurable:null===j&&B?B.configurable:!j,enumerable:null===x&&B?B.enumerable:!x,value:i,writable:null===C&&B?B.writable:!C});else{if(!L&&(x||C||j))throw new u("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");s[o]=i}}},78004(s){"use strict";class SubRange{constructor(s,o){this.low=s,this.high=o,this.length=1+o-s}overlaps(s){return!(this.highs.high)}touches(s){return!(this.high+1s.high)}add(s){return new SubRange(Math.min(this.low,s.low),Math.max(this.high,s.high))}subtract(s){return s.low<=this.low&&s.high>=this.high?[]:s.low>this.low&&s.highs+o.length),0)}add(s,o){var _add=s=>{for(var o=0;o{for(var o=0;o{for(var o=0;o{for(var i=o.low;i<=o.high;)s.push(i),i++;return s}),[])}subranges(){return this.ranges.map((s=>({low:s.low,high:s.high,length:1+s.high-s.low})))}}s.exports=DRange},7176(s,o,i){"use strict";var a,u=i(73126),_=i(75795);try{a=[].__proto__===Array.prototype}catch(s){if(!s||"object"!=typeof s||!("code"in s)||"ERR_PROTO_ACCESS"!==s.code)throw s}var w=!!a&&_&&_(Object.prototype,"__proto__"),x=Object,C=x.getPrototypeOf;s.exports=w&&"function"==typeof w.get?u([w.get]):"function"==typeof C&&function getDunder(s){return C(null==s?s:x(s))}},30655(s){"use strict";var o=Object.defineProperty||!1;if(o)try{o({},"a",{value:1})}catch(s){o=!1}s.exports=o},41237(s){"use strict";s.exports=EvalError},69383(s){"use strict";s.exports=Error},79290(s){"use strict";s.exports=RangeError},79538(s){"use strict";s.exports=ReferenceError},58068(s){"use strict";s.exports=SyntaxError},69675(s){"use strict";s.exports=TypeError},35345(s){"use strict";s.exports=URIError},79612(s){"use strict";s.exports=Object},37007(s){"use strict";var o,i="object"==typeof Reflect?Reflect:null,a=i&&"function"==typeof i.apply?i.apply:function ReflectApply(s,o,i){return Function.prototype.apply.call(s,o,i)};o=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function ReflectOwnKeys(s){return Object.getOwnPropertyNames(s).concat(Object.getOwnPropertySymbols(s))}:function ReflectOwnKeys(s){return Object.getOwnPropertyNames(s)};var u=Number.isNaN||function NumberIsNaN(s){return s!=s};function EventEmitter(){EventEmitter.init.call(this)}s.exports=EventEmitter,s.exports.once=function once(s,o){return new Promise((function(i,a){function errorListener(i){s.removeListener(o,resolver),a(i)}function resolver(){"function"==typeof s.removeListener&&s.removeListener("error",errorListener),i([].slice.call(arguments))}eventTargetAgnosticAddListener(s,o,resolver,{once:!0}),"error"!==o&&function addErrorHandlerIfEventEmitter(s,o,i){"function"==typeof s.on&&eventTargetAgnosticAddListener(s,"error",o,i)}(s,errorListener,{once:!0})}))},EventEmitter.EventEmitter=EventEmitter,EventEmitter.prototype._events=void 0,EventEmitter.prototype._eventsCount=0,EventEmitter.prototype._maxListeners=void 0;var _=10;function checkListener(s){if("function"!=typeof s)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof s)}function _getMaxListeners(s){return void 0===s._maxListeners?EventEmitter.defaultMaxListeners:s._maxListeners}function _addListener(s,o,i,a){var u,_,w;if(checkListener(i),void 0===(_=s._events)?(_=s._events=Object.create(null),s._eventsCount=0):(void 0!==_.newListener&&(s.emit("newListener",o,i.listener?i.listener:i),_=s._events),w=_[o]),void 0===w)w=_[o]=i,++s._eventsCount;else if("function"==typeof w?w=_[o]=a?[i,w]:[w,i]:a?w.unshift(i):w.push(i),(u=_getMaxListeners(s))>0&&w.length>u&&!w.warned){w.warned=!0;var x=new Error("Possible EventEmitter memory leak detected. "+w.length+" "+String(o)+" listeners added. Use emitter.setMaxListeners() to increase limit");x.name="MaxListenersExceededWarning",x.emitter=s,x.type=o,x.count=w.length,function ProcessEmitWarning(s){console&&console.warn&&console.warn(s)}(x)}return s}function onceWrapper(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _onceWrap(s,o,i){var a={fired:!1,wrapFn:void 0,target:s,type:o,listener:i},u=onceWrapper.bind(a);return u.listener=i,a.wrapFn=u,u}function _listeners(s,o,i){var a=s._events;if(void 0===a)return[];var u=a[o];return void 0===u?[]:"function"==typeof u?i?[u.listener||u]:[u]:i?function unwrapListeners(s){for(var o=new Array(s.length),i=0;i0&&(w=o[0]),w instanceof Error)throw w;var x=new Error("Unhandled error."+(w?" ("+w.message+")":""));throw x.context=w,x}var C=_[s];if(void 0===C)return!1;if("function"==typeof C)a(C,this,o);else{var j=C.length,L=arrayClone(C,j);for(i=0;i=0;_--)if(i[_]===o||i[_].listener===o){w=i[_].listener,u=_;break}if(u<0)return this;0===u?i.shift():function spliceOne(s,o){for(;o+1=0;a--)this.removeListener(s,o[a]);return this},EventEmitter.prototype.listeners=function listeners(s){return _listeners(this,s,!0)},EventEmitter.prototype.rawListeners=function rawListeners(s){return _listeners(this,s,!1)},EventEmitter.listenerCount=function(s,o){return"function"==typeof s.listenerCount?s.listenerCount(o):listenerCount.call(s,o)},EventEmitter.prototype.listenerCount=listenerCount,EventEmitter.prototype.eventNames=function eventNames(){return this._eventsCount>0?o(this._events):[]}},85587(s,o,i){"use strict";var a=i(26311),u=create(Error);function create(s){return FormattedError.displayName=s.displayName||s.name,FormattedError;function FormattedError(o){return o&&(o=a.apply(null,arguments)),new s(o)}}s.exports=u,u.eval=create(EvalError),u.range=create(RangeError),u.reference=create(ReferenceError),u.syntax=create(SyntaxError),u.type=create(TypeError),u.uri=create(URIError),u.create=create},82682(s,o,i){"use strict";var a=i(69600),u=Object.prototype.toString,_=Object.prototype.hasOwnProperty;s.exports=function forEach(s,o,i){if(!a(o))throw new TypeError("iterator must be a function");var w;arguments.length>=3&&(w=i),function isArray(s){return"[object Array]"===u.call(s)}(s)?function forEachArray(s,o,i){for(var a=0,u=s.length;a0?parseInt(i):null};x1&&"boolean"!=typeof o)throw new L('"allowMissing" argument must be a boolean');if(null===Xe(/^%?[^%]*%?$/,s))throw new j("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var i=function stringToPath(s){var o=Ye(s,0,1),i=Ye(s,-1);if("%"===o&&"%"!==i)throw new j("invalid intrinsic syntax, expected closing `%`");if("%"===i&&"%"!==o)throw new j("invalid intrinsic syntax, expected opening `%`");var a=[];return He(s,Qe,(function(s,o,i,u){a[a.length]=i?He(u,et,"$1"):o||s})),a}(s),a=i.length>0?i[0]:"",u=tt("%"+a+"%",o),_=u.name,w=u.value,x=!1,C=u.alias;C&&(a=C[0],We(i,ze([0,1],C)));for(var B=1,$=!0;B=i.length){var Y=ae(w,U);w=($=!!Y)&&"get"in Y&&!("originalValue"in Y.get)?Y.get:w[U]}else $=qe(w,U),w=w[U];$&&!x&&(xe[_]=w)}}return w}},71064(s,o,i){"use strict";var a=i(79612);s.exports=a.getPrototypeOf||null},48648(s){"use strict";s.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null},93628(s,o,i){"use strict";var a=i(48648),u=i(71064),_=i(7176);s.exports=a?function getProto(s){return a(s)}:u?function getProto(s){if(!s||"object"!=typeof s&&"function"!=typeof s)throw new TypeError("getProto: not an object");return u(s)}:_?function getProto(s){return _(s)}:null},6549(s){"use strict";s.exports=Object.getOwnPropertyDescriptor},75795(s,o,i){"use strict";var a=i(6549);if(a)try{a([],"length")}catch(s){a=null}s.exports=a},30592(s,o,i){"use strict";var a=i(30655),u=function hasPropertyDescriptors(){return!!a};u.hasArrayLengthDefineBug=function hasArrayLengthDefineBug(){if(!a)return null;try{return 1!==a([],"length",{value:1}).length}catch(s){return!0}},s.exports=u},64039(s,o,i){"use strict";var a="undefined"!=typeof Symbol&&Symbol,u=i(41333);s.exports=function hasNativeSymbols(){return"function"==typeof a&&("function"==typeof Symbol&&("symbol"==typeof a("foo")&&("symbol"==typeof Symbol("bar")&&u())))}},41333(s){"use strict";s.exports=function hasSymbols(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var s={},o=Symbol("test"),i=Object(o);if("string"==typeof o)return!1;if("[object Symbol]"!==Object.prototype.toString.call(o))return!1;if("[object Symbol]"!==Object.prototype.toString.call(i))return!1;for(var a in s[o]=42,s)return!1;if("function"==typeof Object.keys&&0!==Object.keys(s).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(s).length)return!1;var u=Object.getOwnPropertySymbols(s);if(1!==u.length||u[0]!==o)return!1;if(!Object.prototype.propertyIsEnumerable.call(s,o))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var _=Object.getOwnPropertyDescriptor(s,o);if(42!==_.value||!0!==_.enumerable)return!1}return!0}},49092(s,o,i){"use strict";var a=i(41333);s.exports=function hasToStringTagShams(){return a()&&!!Symbol.toStringTag}},9957(s,o,i){"use strict";var a=Function.prototype.call,u=Object.prototype.hasOwnProperty,_=i(66743);s.exports=_.call(a,u)},45981(s){function deepFreeze(s){return s instanceof Map?s.clear=s.delete=s.set=function(){throw new Error("map is read-only")}:s instanceof Set&&(s.add=s.clear=s.delete=function(){throw new Error("set is read-only")}),Object.freeze(s),Object.getOwnPropertyNames(s).forEach((function(o){var i=s[o];"object"!=typeof i||Object.isFrozen(i)||deepFreeze(i)})),s}var o=deepFreeze,i=deepFreeze;o.default=i;class Response{constructor(s){void 0===s.data&&(s.data={}),this.data=s.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function escapeHTML(s){return s.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function inherit(s,...o){const i=Object.create(null);for(const o in s)i[o]=s[o];return o.forEach((function(s){for(const o in s)i[o]=s[o]})),i}const emitsWrappingTags=s=>!!s.kind;class HTMLRenderer{constructor(s,o){this.buffer="",this.classPrefix=o.classPrefix,s.walk(this)}addText(s){this.buffer+=escapeHTML(s)}openNode(s){if(!emitsWrappingTags(s))return;let o=s.kind;s.sublanguage||(o=`${this.classPrefix}${o}`),this.span(o)}closeNode(s){emitsWrappingTags(s)&&(this.buffer+="")}value(){return this.buffer}span(s){this.buffer+=``}}class TokenTree{constructor(){this.rootNode={children:[]},this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(s){this.top.children.push(s)}openNode(s){const o={kind:s,children:[]};this.add(o),this.stack.push(o)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(s){return this.constructor._walk(s,this.rootNode)}static _walk(s,o){return"string"==typeof o?s.addText(o):o.children&&(s.openNode(o),o.children.forEach((o=>this._walk(s,o))),s.closeNode(o)),s}static _collapse(s){"string"!=typeof s&&s.children&&(s.children.every((s=>"string"==typeof s))?s.children=[s.children.join("")]:s.children.forEach((s=>{TokenTree._collapse(s)})))}}class TokenTreeEmitter extends TokenTree{constructor(s){super(),this.options=s}addKeyword(s,o){""!==s&&(this.openNode(o),this.addText(s),this.closeNode())}addText(s){""!==s&&this.add(s)}addSublanguage(s,o){const i=s.root;i.kind=o,i.sublanguage=!0,this.add(i)}toHTML(){return new HTMLRenderer(this,this.options).value()}finalize(){return!0}}function source(s){return s?"string"==typeof s?s:s.source:null}const a=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;const u="[a-zA-Z]\\w*",_="[a-zA-Z_]\\w*",w="\\b\\d+(\\.\\d+)?",x="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",C="\\b(0b[01]+)",j={begin:"\\\\[\\s\\S]",relevance:0},L={className:"string",begin:"'",end:"'",illegal:"\\n",contains:[j]},B={className:"string",begin:'"',end:'"',illegal:"\\n",contains:[j]},$={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},COMMENT=function(s,o,i={}){const a=inherit({className:"comment",begin:s,end:o,contains:[]},i);return a.contains.push($),a.contains.push({className:"doctag",begin:"(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",relevance:0}),a},U=COMMENT("//","$"),V=COMMENT("/\\*","\\*/"),z=COMMENT("#","$"),Y={className:"number",begin:w,relevance:0},Z={className:"number",begin:x,relevance:0},ee={className:"number",begin:C,relevance:0},ie={className:"number",begin:w+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},ae={begin:/(?=\/[^/\n]*\/)/,contains:[{className:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[j,{begin:/\[/,end:/\]/,relevance:0,contains:[j]}]}]},ce={className:"title",begin:u,relevance:0},le={className:"title",begin:_,relevance:0},pe={begin:"\\.\\s*"+_,relevance:0};var de=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:u,UNDERSCORE_IDENT_RE:_,NUMBER_RE:w,C_NUMBER_RE:x,BINARY_NUMBER_RE:C,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(s={})=>{const o=/^#![ ]*\//;return s.binary&&(s.begin=function concat(...s){return s.map((s=>source(s))).join("")}(o,/.*\b/,s.binary,/\b.*/)),inherit({className:"meta",begin:o,end:/$/,relevance:0,"on:begin":(s,o)=>{0!==s.index&&o.ignoreMatch()}},s)},BACKSLASH_ESCAPE:j,APOS_STRING_MODE:L,QUOTE_STRING_MODE:B,PHRASAL_WORDS_MODE:$,COMMENT,C_LINE_COMMENT_MODE:U,C_BLOCK_COMMENT_MODE:V,HASH_COMMENT_MODE:z,NUMBER_MODE:Y,C_NUMBER_MODE:Z,BINARY_NUMBER_MODE:ee,CSS_NUMBER_MODE:ie,REGEXP_MODE:ae,TITLE_MODE:ce,UNDERSCORE_TITLE_MODE:le,METHOD_GUARD:pe,END_SAME_AS_BEGIN:function(s){return Object.assign(s,{"on:begin":(s,o)=>{o.data._beginMatch=s[1]},"on:end":(s,o)=>{o.data._beginMatch!==s[1]&&o.ignoreMatch()}})}});function skipIfhasPrecedingDot(s,o){"."===s.input[s.index-1]&&o.ignoreMatch()}function beginKeywords(s,o){o&&s.beginKeywords&&(s.begin="\\b("+s.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",s.__beforeBegin=skipIfhasPrecedingDot,s.keywords=s.keywords||s.beginKeywords,delete s.beginKeywords,void 0===s.relevance&&(s.relevance=0))}function compileIllegal(s,o){Array.isArray(s.illegal)&&(s.illegal=function either(...s){return"("+s.map((s=>source(s))).join("|")+")"}(...s.illegal))}function compileMatch(s,o){if(s.match){if(s.begin||s.end)throw new Error("begin & end are not supported with match");s.begin=s.match,delete s.match}}function compileRelevance(s,o){void 0===s.relevance&&(s.relevance=1)}const fe=["of","and","for","in","not","or","if","then","parent","list","value"];function compileKeywords(s,o,i="keyword"){const a={};return"string"==typeof s?compileList(i,s.split(" ")):Array.isArray(s)?compileList(i,s):Object.keys(s).forEach((function(i){Object.assign(a,compileKeywords(s[i],o,i))})),a;function compileList(s,i){o&&(i=i.map((s=>s.toLowerCase()))),i.forEach((function(o){const i=o.split("|");a[i[0]]=[s,scoreForKeyword(i[0],i[1])]}))}}function scoreForKeyword(s,o){return o?Number(o):function commonKeyword(s){return fe.includes(s.toLowerCase())}(s)?0:1}function compileLanguage(s,{plugins:o}){function langRe(o,i){return new RegExp(source(o),"m"+(s.case_insensitive?"i":"")+(i?"g":""))}class MultiRegex{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(s,o){o.position=this.position++,this.matchIndexes[this.matchAt]=o,this.regexes.push([o,s]),this.matchAt+=function countMatchGroups(s){return new RegExp(s.toString()+"|").exec("").length-1}(s)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const s=this.regexes.map((s=>s[1]));this.matcherRe=langRe(function join(s,o="|"){let i=0;return s.map((s=>{i+=1;const o=i;let u=source(s),_="";for(;u.length>0;){const s=a.exec(u);if(!s){_+=u;break}_+=u.substring(0,s.index),u=u.substring(s.index+s[0].length),"\\"===s[0][0]&&s[1]?_+="\\"+String(Number(s[1])+o):(_+=s[0],"("===s[0]&&i++)}return _})).map((s=>`(${s})`)).join(o)}(s),!0),this.lastIndex=0}exec(s){this.matcherRe.lastIndex=this.lastIndex;const o=this.matcherRe.exec(s);if(!o)return null;const i=o.findIndex(((s,o)=>o>0&&void 0!==s)),a=this.matchIndexes[i];return o.splice(0,i),Object.assign(o,a)}}class ResumableMultiRegex{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(s){if(this.multiRegexes[s])return this.multiRegexes[s];const o=new MultiRegex;return this.rules.slice(s).forEach((([s,i])=>o.addRule(s,i))),o.compile(),this.multiRegexes[s]=o,o}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(s,o){this.rules.push([s,o]),"begin"===o.type&&this.count++}exec(s){const o=this.getMatcher(this.regexIndex);o.lastIndex=this.lastIndex;let i=o.exec(s);if(this.resumingScanAtSamePosition())if(i&&i.index===this.lastIndex);else{const o=this.getMatcher(0);o.lastIndex=this.lastIndex+1,i=o.exec(s)}return i&&(this.regexIndex+=i.position+1,this.regexIndex===this.count&&this.considerAll()),i}}if(s.compilerExtensions||(s.compilerExtensions=[]),s.contains&&s.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return s.classNameAliases=inherit(s.classNameAliases||{}),function compileMode(o,i){const a=o;if(o.isCompiled)return a;[compileMatch].forEach((s=>s(o,i))),s.compilerExtensions.forEach((s=>s(o,i))),o.__beforeBegin=null,[beginKeywords,compileIllegal,compileRelevance].forEach((s=>s(o,i))),o.isCompiled=!0;let u=null;if("object"==typeof o.keywords&&(u=o.keywords.$pattern,delete o.keywords.$pattern),o.keywords&&(o.keywords=compileKeywords(o.keywords,s.case_insensitive)),o.lexemes&&u)throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");return u=u||o.lexemes||/\w+/,a.keywordPatternRe=langRe(u,!0),i&&(o.begin||(o.begin=/\B|\b/),a.beginRe=langRe(o.begin),o.endSameAsBegin&&(o.end=o.begin),o.end||o.endsWithParent||(o.end=/\B|\b/),o.end&&(a.endRe=langRe(o.end)),a.terminatorEnd=source(o.end)||"",o.endsWithParent&&i.terminatorEnd&&(a.terminatorEnd+=(o.end?"|":"")+i.terminatorEnd)),o.illegal&&(a.illegalRe=langRe(o.illegal)),o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((function(s){return function expandOrCloneMode(s){s.variants&&!s.cachedVariants&&(s.cachedVariants=s.variants.map((function(o){return inherit(s,{variants:null},o)})));if(s.cachedVariants)return s.cachedVariants;if(dependencyOnParent(s))return inherit(s,{starts:s.starts?inherit(s.starts):null});if(Object.isFrozen(s))return inherit(s);return s}("self"===s?o:s)}))),o.contains.forEach((function(s){compileMode(s,a)})),o.starts&&compileMode(o.starts,i),a.matcher=function buildModeRegex(s){const o=new ResumableMultiRegex;return s.contains.forEach((s=>o.addRule(s.begin,{rule:s,type:"begin"}))),s.terminatorEnd&&o.addRule(s.terminatorEnd,{type:"end"}),s.illegal&&o.addRule(s.illegal,{type:"illegal"}),o}(a),a}(s)}function dependencyOnParent(s){return!!s&&(s.endsWithParent||dependencyOnParent(s.starts))}function BuildVuePlugin(s){const o={props:["language","code","autodetect"],data:function(){return{detectedLanguage:"",unknownLanguage:!1}},computed:{className(){return this.unknownLanguage?"":"hljs "+this.detectedLanguage},highlighted(){if(!this.autoDetect&&!s.getLanguage(this.language))return console.warn(`The language "${this.language}" you specified could not be found.`),this.unknownLanguage=!0,escapeHTML(this.code);let o={};return this.autoDetect?(o=s.highlightAuto(this.code),this.detectedLanguage=o.language):(o=s.highlight(this.language,this.code,this.ignoreIllegals),this.detectedLanguage=this.language),o.value},autoDetect(){return!this.language||function hasValueOrEmptyAttribute(s){return Boolean(s||""===s)}(this.autodetect)},ignoreIllegals:()=>!0},render(s){return s("pre",{},[s("code",{class:this.className,domProps:{innerHTML:this.highlighted}})])}};return{Component:o,VuePlugin:{install(s){s.component("highlightjs",o)}}}}const ye={"after:highlightElement":({el:s,result:o,text:i})=>{const a=nodeStream(s);if(!a.length)return;const u=document.createElement("div");u.innerHTML=o.value,o.value=function mergeStreams(s,o,i){let a=0,u="";const _=[];function selectStream(){return s.length&&o.length?s[0].offset!==o[0].offset?s[0].offset"}function close(s){u+=""}function render(s){("start"===s.event?open:close)(s.node)}for(;s.length||o.length;){let o=selectStream();if(u+=escapeHTML(i.substring(a,o[0].offset)),a=o[0].offset,o===s){_.reverse().forEach(close);do{render(o.splice(0,1)[0]),o=selectStream()}while(o===s&&o.length&&o[0].offset===a);_.reverse().forEach(open)}else"start"===o[0].event?_.push(o[0].node):_.pop(),render(o.splice(0,1)[0])}return u+escapeHTML(i.substr(a))}(a,nodeStream(u),i)}};function tag(s){return s.nodeName.toLowerCase()}function nodeStream(s){const o=[];return function _nodeStream(s,i){for(let a=s.firstChild;a;a=a.nextSibling)3===a.nodeType?i+=a.nodeValue.length:1===a.nodeType&&(o.push({event:"start",offset:i,node:a}),i=_nodeStream(a,i),tag(a).match(/br|hr|img|input/)||o.push({event:"stop",offset:i,node:a}));return i}(s,0),o}const be={},error=s=>{console.error(s)},warn=(s,...o)=>{console.log(`WARN: ${s}`,...o)},deprecated=(s,o)=>{be[`${s}/${o}`]||(console.log(`Deprecated as of ${s}. ${o}`),be[`${s}/${o}`]=!0)},Se=escapeHTML,_e=inherit,we=Symbol("nomatch");var xe=function(s){const i=Object.create(null),a=Object.create(null),u=[];let _=!0;const w=/(^(<[^>]+>|\t|)+|\n)/gm,x="Could not find the language '{}', did you forget to load/include a language module?",C={disableAutodetect:!0,name:"Plain text",contains:[]};let j={noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:null,__emitter:TokenTreeEmitter};function shouldNotHighlight(s){return j.noHighlightRe.test(s)}function highlight(s,o,i,a){let u="",_="";"object"==typeof o?(u=s,i=o.ignoreIllegals,_=o.language,a=void 0):(deprecated("10.7.0","highlight(lang, code, ...args) has been deprecated."),deprecated("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),_=s,u=o);const w={code:u,language:_};fire("before:highlight",w);const x=w.result?w.result:_highlight(w.language,w.code,i,a);return x.code=w.code,fire("after:highlight",x),x}function _highlight(s,o,a,w){function keywordData(s,o){const i=L.case_insensitive?o[0].toLowerCase():o[0];return Object.prototype.hasOwnProperty.call(s.keywords,i)&&s.keywords[i]}function processBuffer(){null!=U.subLanguage?function processSubLanguage(){if(""===Y)return;let s=null;if("string"==typeof U.subLanguage){if(!i[U.subLanguage])return void z.addText(Y);s=_highlight(U.subLanguage,Y,!0,V[U.subLanguage]),V[U.subLanguage]=s.top}else s=highlightAuto(Y,U.subLanguage.length?U.subLanguage:null);U.relevance>0&&(Z+=s.relevance),z.addSublanguage(s.emitter,s.language)}():function processKeywords(){if(!U.keywords)return void z.addText(Y);let s=0;U.keywordPatternRe.lastIndex=0;let o=U.keywordPatternRe.exec(Y),i="";for(;o;){i+=Y.substring(s,o.index);const a=keywordData(U,o);if(a){const[s,u]=a;if(z.addText(i),i="",Z+=u,s.startsWith("_"))i+=o[0];else{const i=L.classNameAliases[s]||s;z.addKeyword(o[0],i)}}else i+=o[0];s=U.keywordPatternRe.lastIndex,o=U.keywordPatternRe.exec(Y)}i+=Y.substr(s),z.addText(i)}(),Y=""}function startNewMode(s){return s.className&&z.openNode(L.classNameAliases[s.className]||s.className),U=Object.create(s,{parent:{value:U}}),U}function endOfMode(s,o,i){let a=function startsWith(s,o){const i=s&&s.exec(o);return i&&0===i.index}(s.endRe,i);if(a){if(s["on:end"]){const i=new Response(s);s["on:end"](o,i),i.isMatchIgnored&&(a=!1)}if(a){for(;s.endsParent&&s.parent;)s=s.parent;return s}}if(s.endsWithParent)return endOfMode(s.parent,o,i)}function doIgnore(s){return 0===U.matcher.regexIndex?(Y+=s[0],1):(ae=!0,0)}function doBeginMatch(s){const o=s[0],i=s.rule,a=new Response(i),u=[i.__beforeBegin,i["on:begin"]];for(const i of u)if(i&&(i(s,a),a.isMatchIgnored))return doIgnore(o);return i&&i.endSameAsBegin&&(i.endRe=function escape(s){return new RegExp(s.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}(o)),i.skip?Y+=o:(i.excludeBegin&&(Y+=o),processBuffer(),i.returnBegin||i.excludeBegin||(Y=o)),startNewMode(i),i.returnBegin?0:o.length}function doEndMatch(s){const i=s[0],a=o.substr(s.index),u=endOfMode(U,s,a);if(!u)return we;const _=U;_.skip?Y+=i:(_.returnEnd||_.excludeEnd||(Y+=i),processBuffer(),_.excludeEnd&&(Y=i));do{U.className&&z.closeNode(),U.skip||U.subLanguage||(Z+=U.relevance),U=U.parent}while(U!==u.parent);return u.starts&&(u.endSameAsBegin&&(u.starts.endRe=u.endRe),startNewMode(u.starts)),_.returnEnd?0:i.length}let C={};function processLexeme(i,u){const w=u&&u[0];if(Y+=i,null==w)return processBuffer(),0;if("begin"===C.type&&"end"===u.type&&C.index===u.index&&""===w){if(Y+=o.slice(u.index,u.index+1),!_){const o=new Error("0 width match regex");throw o.languageName=s,o.badRule=C.rule,o}return 1}if(C=u,"begin"===u.type)return doBeginMatch(u);if("illegal"===u.type&&!a){const s=new Error('Illegal lexeme "'+w+'" for mode "'+(U.className||"")+'"');throw s.mode=U,s}if("end"===u.type){const s=doEndMatch(u);if(s!==we)return s}if("illegal"===u.type&&""===w)return 1;if(ie>1e5&&ie>3*u.index){throw new Error("potential infinite loop, way more iterations than matches")}return Y+=w,w.length}const L=getLanguage(s);if(!L)throw error(x.replace("{}",s)),new Error('Unknown language: "'+s+'"');const B=compileLanguage(L,{plugins:u});let $="",U=w||B;const V={},z=new j.__emitter(j);!function processContinuations(){const s=[];for(let o=U;o!==L;o=o.parent)o.className&&s.unshift(o.className);s.forEach((s=>z.openNode(s)))}();let Y="",Z=0,ee=0,ie=0,ae=!1;try{for(U.matcher.considerAll();;){ie++,ae?ae=!1:U.matcher.considerAll(),U.matcher.lastIndex=ee;const s=U.matcher.exec(o);if(!s)break;const i=processLexeme(o.substring(ee,s.index),s);ee=s.index+i}return processLexeme(o.substr(ee)),z.closeAllNodes(),z.finalize(),$=z.toHTML(),{relevance:Math.floor(Z),value:$,language:s,illegal:!1,emitter:z,top:U}}catch(i){if(i.message&&i.message.includes("Illegal"))return{illegal:!0,illegalBy:{msg:i.message,context:o.slice(ee-100,ee+100),mode:i.mode},sofar:$,relevance:0,value:Se(o),emitter:z};if(_)return{illegal:!1,relevance:0,value:Se(o),emitter:z,language:s,top:U,errorRaised:i};throw i}}function highlightAuto(s,o){o=o||j.languages||Object.keys(i);const a=function justTextHighlightResult(s){const o={relevance:0,emitter:new j.__emitter(j),value:Se(s),illegal:!1,top:C};return o.emitter.addText(s),o}(s),u=o.filter(getLanguage).filter(autoDetection).map((o=>_highlight(o,s,!1)));u.unshift(a);const _=u.sort(((s,o)=>{if(s.relevance!==o.relevance)return o.relevance-s.relevance;if(s.language&&o.language){if(getLanguage(s.language).supersetOf===o.language)return 1;if(getLanguage(o.language).supersetOf===s.language)return-1}return 0})),[w,x]=_,L=w;return L.second_best=x,L}const L={"before:highlightElement":({el:s})=>{j.useBR&&(s.innerHTML=s.innerHTML.replace(/\n/g,"").replace(//g,"\n"))},"after:highlightElement":({result:s})=>{j.useBR&&(s.value=s.value.replace(/\n/g,"
"))}},B=/^(<[^>]+>|\t)+/gm,$={"after:highlightElement":({result:s})=>{j.tabReplace&&(s.value=s.value.replace(B,(s=>s.replace(/\t/g,j.tabReplace))))}};function highlightElement(s){let o=null;const i=function blockLanguage(s){let o=s.className+" ";o+=s.parentNode?s.parentNode.className:"";const i=j.languageDetectRe.exec(o);if(i){const o=getLanguage(i[1]);return o||(warn(x.replace("{}",i[1])),warn("Falling back to no-highlight mode for this block.",s)),o?i[1]:"no-highlight"}return o.split(/\s+/).find((s=>shouldNotHighlight(s)||getLanguage(s)))}(s);if(shouldNotHighlight(i))return;fire("before:highlightElement",{el:s,language:i}),o=s;const u=o.textContent,_=i?highlight(u,{language:i,ignoreIllegals:!0}):highlightAuto(u);fire("after:highlightElement",{el:s,result:_,text:u}),s.innerHTML=_.value,function updateClassName(s,o,i){const u=o?a[o]:i;s.classList.add("hljs"),u&&s.classList.add(u)}(s,i,_.language),s.result={language:_.language,re:_.relevance,relavance:_.relevance},_.second_best&&(s.second_best={language:_.second_best.language,re:_.second_best.relevance,relavance:_.second_best.relevance})}const initHighlighting=()=>{if(initHighlighting.called)return;initHighlighting.called=!0,deprecated("10.6.0","initHighlighting() is deprecated. Use highlightAll() instead.");document.querySelectorAll("pre code").forEach(highlightElement)};let U=!1;function highlightAll(){if("loading"===document.readyState)return void(U=!0);document.querySelectorAll("pre code").forEach(highlightElement)}function getLanguage(s){return s=(s||"").toLowerCase(),i[s]||i[a[s]]}function registerAliases(s,{languageName:o}){"string"==typeof s&&(s=[s]),s.forEach((s=>{a[s.toLowerCase()]=o}))}function autoDetection(s){const o=getLanguage(s);return o&&!o.disableAutodetect}function fire(s,o){const i=s;u.forEach((function(s){s[i]&&s[i](o)}))}"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(function boot(){U&&highlightAll()}),!1),Object.assign(s,{highlight,highlightAuto,highlightAll,fixMarkup:function deprecateFixMarkup(s){return deprecated("10.2.0","fixMarkup will be removed entirely in v11.0"),deprecated("10.2.0","Please see https://github.com/highlightjs/highlight.js/issues/2534"),function fixMarkup(s){return j.tabReplace||j.useBR?s.replace(w,(s=>"\n"===s?j.useBR?"
":s:j.tabReplace?s.replace(/\t/g,j.tabReplace):s)):s}(s)},highlightElement,highlightBlock:function deprecateHighlightBlock(s){return deprecated("10.7.0","highlightBlock will be removed entirely in v12.0"),deprecated("10.7.0","Please use highlightElement now."),highlightElement(s)},configure:function configure(s){s.useBR&&(deprecated("10.3.0","'useBR' will be removed entirely in v11.0"),deprecated("10.3.0","Please see https://github.com/highlightjs/highlight.js/issues/2559")),j=_e(j,s)},initHighlighting,initHighlightingOnLoad:function initHighlightingOnLoad(){deprecated("10.6.0","initHighlightingOnLoad() is deprecated. Use highlightAll() instead."),U=!0},registerLanguage:function registerLanguage(o,a){let u=null;try{u=a(s)}catch(s){if(error("Language definition for '{}' could not be registered.".replace("{}",o)),!_)throw s;error(s),u=C}u.name||(u.name=o),i[o]=u,u.rawDefinition=a.bind(null,s),u.aliases&®isterAliases(u.aliases,{languageName:o})},unregisterLanguage:function unregisterLanguage(s){delete i[s];for(const o of Object.keys(a))a[o]===s&&delete a[o]},listLanguages:function listLanguages(){return Object.keys(i)},getLanguage,registerAliases,requireLanguage:function requireLanguage(s){deprecated("10.4.0","requireLanguage will be removed entirely in v11."),deprecated("10.4.0","Please see https://github.com/highlightjs/highlight.js/pull/2844");const o=getLanguage(s);if(o)return o;throw new Error("The '{}' language is required, but not loaded.".replace("{}",s))},autoDetection,inherit:_e,addPlugin:function addPlugin(s){!function upgradePluginAPI(s){s["before:highlightBlock"]&&!s["before:highlightElement"]&&(s["before:highlightElement"]=o=>{s["before:highlightBlock"](Object.assign({block:o.el},o))}),s["after:highlightBlock"]&&!s["after:highlightElement"]&&(s["after:highlightElement"]=o=>{s["after:highlightBlock"](Object.assign({block:o.el},o))})}(s),u.push(s)},vuePlugin:BuildVuePlugin(s).VuePlugin}),s.debugMode=function(){_=!1},s.safeMode=function(){_=!0},s.versionString="10.7.3";for(const s in de)"object"==typeof de[s]&&o(de[s]);return Object.assign(s,de),s.addPlugin(L),s.addPlugin(ye),s.addPlugin($),s}({});s.exports=xe},35344(s){function concat(...s){return s.map((s=>function source(s){return s?"string"==typeof s?s:s.source:null}(s))).join("")}s.exports=function bash(s){const o={},i={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[o]}]};Object.assign(o,{className:"variable",variants:[{begin:concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},i]});const a={className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},u={begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},_={className:"string",begin:/"/,end:/"/,contains:[s.BACKSLASH_ESCAPE,o,a]};a.contains.push(_);const w={begin:/\$\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,o]},x=s.SHEBANG({binary:`(${["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"].join("|")})`,relevance:10}),C={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[s.inherit(s.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z._-]+\b/,keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"},contains:[x,s.SHEBANG(),C,w,s.HASH_COMMENT_MODE,u,_,{className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},o]}}},73402(s){function concat(...s){return s.map((s=>function source(s){return s?"string"==typeof s?s:s.source:null}(s))).join("")}s.exports=function http(s){const o="HTTP/(2|1\\.[01])",i={className:"attribute",begin:concat("^",/[A-Za-z][A-Za-z0-9-]*/,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},a=[i,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+o+" \\d{3})",end:/$/,contains:[{className:"meta",begin:o},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},{begin:"(?=^[A-Z]+ (.*?) "+o+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:o},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:a}},s.inherit(i,{relevance:0})]}}},95089(s){const o="[A-Za-z$_][0-9A-Za-z$_]*",i=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],u=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"]);function lookahead(s){return concat("(?=",s,")")}function concat(...s){return s.map((s=>function source(s){return s?"string"==typeof s?s:s.source:null}(s))).join("")}s.exports=function javascript(s){const _=o,w="<>",x="",C={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(s,o)=>{const i=s[0].length+s.index,a=s.input[i];"<"!==a?">"===a&&(((s,{after:o})=>{const i="",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:s.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:j,contains:ce}]}]},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{variants:[{begin:w,end:x},{begin:C.begin,"on:begin":C.isTrulyOpeningTag,end:C.end}],subLanguage:"xml",contains:[{begin:C.begin,end:C.end,skip:!0,contains:["self"]}]}],relevance:0},{className:"function",beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:j,contains:["self",s.inherit(s.TITLE_MODE,{begin:_}),le],illegal:/%/},{beginKeywords:"while if switch catch for"},{className:"function",begin:s.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,contains:[le,s.inherit(s.TITLE_MODE,{begin:_})]},{variants:[{begin:"\\."+_},{begin:"\\$"+_}],relevance:0},{className:"class",beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{beginKeywords:"extends"},s.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,end:/[{;]/,excludeEnd:!0,contains:[s.inherit(s.TITLE_MODE,{begin:_}),"self",le]},{begin:"(get|set)\\s+(?="+_+"\\()",end:/\{/,keywords:"get set",contains:[s.inherit(s.TITLE_MODE,{begin:_}),{begin:/\(\)/},le]},{begin:/\$[(.]/}]}}},65772(s){s.exports=function json(s){const o={literal:"true false null"},i=[s.C_LINE_COMMENT_MODE,s.C_BLOCK_COMMENT_MODE],a=[s.QUOTE_STRING_MODE,s.C_NUMBER_MODE],u={end:",",endsWithParent:!0,excludeEnd:!0,contains:a,keywords:o},_={begin:/\{/,end:/\}/,contains:[{className:"attr",begin:/"/,end:/"/,contains:[s.BACKSLASH_ESCAPE],illegal:"\\n"},s.inherit(u,{begin:/:/})].concat(i),illegal:"\\S"},w={begin:"\\[",end:"\\]",contains:[s.inherit(u)],illegal:"\\S"};return a.push(_,w),i.forEach((function(s){a.push(s)})),{name:"JSON",contains:a,keywords:o,illegal:"\\S"}}},26571(s){s.exports=function powershell(s){const o={$pattern:/-?[A-z\.\-]+\b/,keyword:"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter",built_in:"ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write"},i={begin:"`[\\s\\S]",relevance:0},a={className:"variable",variants:[{begin:/\$\B/},{className:"keyword",begin:/\$this/},{begin:/\$[\w\d][\w\d_:]*/}]},u={className:"string",variants:[{begin:/"/,end:/"/},{begin:/@"/,end:/^"@/}],contains:[i,a,{className:"variable",begin:/\$[A-z]/,end:/[^A-z]/}]},_={className:"string",variants:[{begin:/'/,end:/'/},{begin:/@'/,end:/^'@/}]},w=s.inherit(s.COMMENT(null,null),{variants:[{begin:/#/,end:/$/},{begin:/<#/,end:/#>/}],contains:[{className:"doctag",variants:[{begin:/\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/},{begin:/\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/}]}]}),x={className:"built_in",variants:[{begin:"(".concat("Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where",")+(-)[\\w\\d]+")}]},C={className:"class",beginKeywords:"class enum",end:/\s*[{]/,excludeEnd:!0,relevance:0,contains:[s.TITLE_MODE]},j={className:"function",begin:/function\s+/,end:/\s*\{|$/,excludeEnd:!0,returnBegin:!0,relevance:0,contains:[{begin:"function",relevance:0,className:"keyword"},{className:"title",begin:/\w[\w\d]*((-)[\w\d]+)*/,relevance:0},{begin:/\(/,end:/\)/,className:"params",relevance:0,contains:[a]}]},L={begin:/using\s/,end:/$/,returnBegin:!0,contains:[u,_,{className:"keyword",begin:/(using|assembly|command|module|namespace|type)/}]},B={variants:[{className:"operator",begin:"(".concat("-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor",")\\b")},{className:"literal",begin:/(-)[\w\d]+/,relevance:0}]},$={className:"function",begin:/\[.*\]\s*[\w]+[ ]??\(/,end:/$/,returnBegin:!0,relevance:0,contains:[{className:"keyword",begin:"(".concat(o.keyword.toString().replace(/\s/g,"|"),")\\b"),endsParent:!0,relevance:0},s.inherit(s.TITLE_MODE,{endsParent:!0})]},U=[$,w,i,s.NUMBER_MODE,u,_,x,a,{className:"literal",begin:/\$(null|true|false)\b/},{className:"selector-tag",begin:/@\B/,relevance:0}],V={begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0,relevance:0,contains:[].concat("self",U,{begin:"("+["string","char","byte","int","long","bool","decimal","single","double","DateTime","xml","array","hashtable","void"].join("|")+")",className:"built_in",relevance:0},{className:"type",begin:/[\.\w\d]+/,relevance:0})};return $.contains.unshift(V),{name:"PowerShell",aliases:["ps","ps1"],case_insensitive:!0,keywords:o,contains:U.concat(C,j,L,B,V)}}},17285(s){function source(s){return s?"string"==typeof s?s:s.source:null}function lookahead(s){return concat("(?=",s,")")}function concat(...s){return s.map((s=>source(s))).join("")}function either(...s){return"("+s.map((s=>source(s))).join("|")+")"}s.exports=function xml(s){const o=concat(/[A-Z_]/,function optional(s){return concat("(",s,")?")}(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),i={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},a={begin:/\s/,contains:[{className:"meta-keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},u=s.inherit(a,{begin:/\(/,end:/\)/}),_=s.inherit(s.APOS_STRING_MODE,{className:"meta-string"}),w=s.inherit(s.QUOTE_STRING_MODE,{className:"meta-string"}),x={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[a,w,_,u,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[a,u,w,_]}]}]},s.COMMENT(//,{relevance:10}),{begin://,relevance:10},i,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[x],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[x],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:o,relevance:0,starts:x}]},{className:"tag",begin:concat(/<\//,lookahead(concat(o,/>/))),contains:[{className:"name",begin:o,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}},17533(s){s.exports=function yaml(s){var o="true false yes no null",i="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/\S+/}],contains:[s.BACKSLASH_ESCAPE,{className:"template-variable",variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},u=s.inherit(a,{variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),_={className:"number",begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b"},w={end:",",endsWithParent:!0,excludeEnd:!0,keywords:o,relevance:0},x={begin:/\{/,end:/\}/,contains:[w],illegal:"\\n",relevance:0},C={begin:"\\[",end:"\\]",contains:[w],illegal:"\\n",relevance:0},j=[{className:"attr",variants:[{begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$",relevance:10},{className:"string",begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:"!\\w+!"+i},{className:"type",begin:"!<"+i+">"},{className:"type",begin:"!"+i},{className:"type",begin:"!!"+i},{className:"meta",begin:"&"+s.UNDERSCORE_IDENT_RE+"$"},{className:"meta",begin:"\\*"+s.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)",relevance:0},s.HASH_COMMENT_MODE,{beginKeywords:o,keywords:{literal:o}},_,{className:"number",begin:s.C_NUMBER_RE+"\\b",relevance:0},x,C,a],L=[...j];return L.pop(),L.push(u),w.contains=L,{name:"YAML",case_insensitive:!0,aliases:["yml"],contains:j}}},251(s,o){o.read=function(s,o,i,a,u){var _,w,x=8*u-a-1,C=(1<>1,L=-7,B=i?u-1:0,$=i?-1:1,U=s[o+B];for(B+=$,_=U&(1<<-L)-1,U>>=-L,L+=x;L>0;_=256*_+s[o+B],B+=$,L-=8);for(w=_&(1<<-L)-1,_>>=-L,L+=a;L>0;w=256*w+s[o+B],B+=$,L-=8);if(0===_)_=1-j;else{if(_===C)return w?NaN:1/0*(U?-1:1);w+=Math.pow(2,a),_-=j}return(U?-1:1)*w*Math.pow(2,_-a)},o.write=function(s,o,i,a,u,_){var w,x,C,j=8*_-u-1,L=(1<>1,$=23===u?Math.pow(2,-24)-Math.pow(2,-77):0,U=a?0:_-1,V=a?1:-1,z=o<0||0===o&&1/o<0?1:0;for(o=Math.abs(o),isNaN(o)||o===1/0?(x=isNaN(o)?1:0,w=L):(w=Math.floor(Math.log(o)/Math.LN2),o*(C=Math.pow(2,-w))<1&&(w--,C*=2),(o+=w+B>=1?$/C:$*Math.pow(2,1-B))*C>=2&&(w++,C/=2),w+B>=L?(x=0,w=L):w+B>=1?(x=(o*C-1)*Math.pow(2,u),w+=B):(x=o*Math.pow(2,B-1)*Math.pow(2,u),w=0));u>=8;s[i+U]=255&x,U+=V,x/=256,u-=8);for(w=w<0;s[i+U]=255&w,U+=V,w/=256,j-=8);s[i+U-V]|=128*z}},9404(s){s.exports=function(){"use strict";var s=Array.prototype.slice;function createClass(s,o){o&&(s.prototype=Object.create(o.prototype)),s.prototype.constructor=s}function Iterable(s){return isIterable(s)?s:Seq(s)}function KeyedIterable(s){return isKeyed(s)?s:KeyedSeq(s)}function IndexedIterable(s){return isIndexed(s)?s:IndexedSeq(s)}function SetIterable(s){return isIterable(s)&&!isAssociative(s)?s:SetSeq(s)}function isIterable(s){return!(!s||!s[o])}function isKeyed(s){return!(!s||!s[i])}function isIndexed(s){return!(!s||!s[a])}function isAssociative(s){return isKeyed(s)||isIndexed(s)}function isOrdered(s){return!(!s||!s[u])}createClass(KeyedIterable,Iterable),createClass(IndexedIterable,Iterable),createClass(SetIterable,Iterable),Iterable.isIterable=isIterable,Iterable.isKeyed=isKeyed,Iterable.isIndexed=isIndexed,Iterable.isAssociative=isAssociative,Iterable.isOrdered=isOrdered,Iterable.Keyed=KeyedIterable,Iterable.Indexed=IndexedIterable,Iterable.Set=SetIterable;var o="@@__IMMUTABLE_ITERABLE__@@",i="@@__IMMUTABLE_KEYED__@@",a="@@__IMMUTABLE_INDEXED__@@",u="@@__IMMUTABLE_ORDERED__@@",_="delete",w=5,x=1<>>0;if(""+i!==o||4294967295===i)return NaN;o=i}return o<0?ensureSize(s)+o:o}function returnTrue(){return!0}function wholeSlice(s,o,i){return(0===s||void 0!==i&&s<=-i)&&(void 0===o||void 0!==i&&o>=i)}function resolveBegin(s,o){return resolveIndex(s,o,0)}function resolveEnd(s,o){return resolveIndex(s,o,o)}function resolveIndex(s,o,i){return void 0===s?i:s<0?Math.max(0,o+s):void 0===o?s:Math.min(o,s)}var $=0,U=1,V=2,z="function"==typeof Symbol&&Symbol.iterator,Y="@@iterator",Z=z||Y;function Iterator(s){this.next=s}function iteratorValue(s,o,i,a){var u=0===s?o:1===s?i:[o,i];return a?a.value=u:a={value:u,done:!1},a}function iteratorDone(){return{value:void 0,done:!0}}function hasIterator(s){return!!getIteratorFn(s)}function isIterator(s){return s&&"function"==typeof s.next}function getIterator(s){var o=getIteratorFn(s);return o&&o.call(s)}function getIteratorFn(s){var o=s&&(z&&s[z]||s[Y]);if("function"==typeof o)return o}function isArrayLike(s){return s&&"number"==typeof s.length}function Seq(s){return null==s?emptySequence():isIterable(s)?s.toSeq():seqFromValue(s)}function KeyedSeq(s){return null==s?emptySequence().toKeyedSeq():isIterable(s)?isKeyed(s)?s.toSeq():s.fromEntrySeq():keyedSeqFromValue(s)}function IndexedSeq(s){return null==s?emptySequence():isIterable(s)?isKeyed(s)?s.entrySeq():s.toIndexedSeq():indexedSeqFromValue(s)}function SetSeq(s){return(null==s?emptySequence():isIterable(s)?isKeyed(s)?s.entrySeq():s:indexedSeqFromValue(s)).toSetSeq()}Iterator.prototype.toString=function(){return"[Iterator]"},Iterator.KEYS=$,Iterator.VALUES=U,Iterator.ENTRIES=V,Iterator.prototype.inspect=Iterator.prototype.toSource=function(){return this.toString()},Iterator.prototype[Z]=function(){return this},createClass(Seq,Iterable),Seq.of=function(){return Seq(arguments)},Seq.prototype.toSeq=function(){return this},Seq.prototype.toString=function(){return this.__toString("Seq {","}")},Seq.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},Seq.prototype.__iterate=function(s,o){return seqIterate(this,s,o,!0)},Seq.prototype.__iterator=function(s,o){return seqIterator(this,s,o,!0)},createClass(KeyedSeq,Seq),KeyedSeq.prototype.toKeyedSeq=function(){return this},createClass(IndexedSeq,Seq),IndexedSeq.of=function(){return IndexedSeq(arguments)},IndexedSeq.prototype.toIndexedSeq=function(){return this},IndexedSeq.prototype.toString=function(){return this.__toString("Seq [","]")},IndexedSeq.prototype.__iterate=function(s,o){return seqIterate(this,s,o,!1)},IndexedSeq.prototype.__iterator=function(s,o){return seqIterator(this,s,o,!1)},createClass(SetSeq,Seq),SetSeq.of=function(){return SetSeq(arguments)},SetSeq.prototype.toSetSeq=function(){return this},Seq.isSeq=isSeq,Seq.Keyed=KeyedSeq,Seq.Set=SetSeq,Seq.Indexed=IndexedSeq;var ee,ie,ae,ce="@@__IMMUTABLE_SEQ__@@";function ArraySeq(s){this._array=s,this.size=s.length}function ObjectSeq(s){var o=Object.keys(s);this._object=s,this._keys=o,this.size=o.length}function IterableSeq(s){this._iterable=s,this.size=s.length||s.size}function IteratorSeq(s){this._iterator=s,this._iteratorCache=[]}function isSeq(s){return!(!s||!s[ce])}function emptySequence(){return ee||(ee=new ArraySeq([]))}function keyedSeqFromValue(s){var o=Array.isArray(s)?new ArraySeq(s).fromEntrySeq():isIterator(s)?new IteratorSeq(s).fromEntrySeq():hasIterator(s)?new IterableSeq(s).fromEntrySeq():"object"==typeof s?new ObjectSeq(s):void 0;if(!o)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+s);return o}function indexedSeqFromValue(s){var o=maybeIndexedSeqFromValue(s);if(!o)throw new TypeError("Expected Array or iterable object of values: "+s);return o}function seqFromValue(s){var o=maybeIndexedSeqFromValue(s)||"object"==typeof s&&new ObjectSeq(s);if(!o)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+s);return o}function maybeIndexedSeqFromValue(s){return isArrayLike(s)?new ArraySeq(s):isIterator(s)?new IteratorSeq(s):hasIterator(s)?new IterableSeq(s):void 0}function seqIterate(s,o,i,a){var u=s._cache;if(u){for(var _=u.length-1,w=0;w<=_;w++){var x=u[i?_-w:w];if(!1===o(x[1],a?x[0]:w,s))return w+1}return w}return s.__iterateUncached(o,i)}function seqIterator(s,o,i,a){var u=s._cache;if(u){var _=u.length-1,w=0;return new Iterator((function(){var s=u[i?_-w:w];return w++>_?iteratorDone():iteratorValue(o,a?s[0]:w-1,s[1])}))}return s.__iteratorUncached(o,i)}function fromJS(s,o){return o?fromJSWith(o,s,"",{"":s}):fromJSDefault(s)}function fromJSWith(s,o,i,a){return Array.isArray(o)?s.call(a,i,IndexedSeq(o).map((function(i,a){return fromJSWith(s,i,a,o)}))):isPlainObj(o)?s.call(a,i,KeyedSeq(o).map((function(i,a){return fromJSWith(s,i,a,o)}))):o}function fromJSDefault(s){return Array.isArray(s)?IndexedSeq(s).map(fromJSDefault).toList():isPlainObj(s)?KeyedSeq(s).map(fromJSDefault).toMap():s}function isPlainObj(s){return s&&(s.constructor===Object||void 0===s.constructor)}function is(s,o){if(s===o||s!=s&&o!=o)return!0;if(!s||!o)return!1;if("function"==typeof s.valueOf&&"function"==typeof o.valueOf){if((s=s.valueOf())===(o=o.valueOf())||s!=s&&o!=o)return!0;if(!s||!o)return!1}return!("function"!=typeof s.equals||"function"!=typeof o.equals||!s.equals(o))}function deepEqual(s,o){if(s===o)return!0;if(!isIterable(o)||void 0!==s.size&&void 0!==o.size&&s.size!==o.size||void 0!==s.__hash&&void 0!==o.__hash&&s.__hash!==o.__hash||isKeyed(s)!==isKeyed(o)||isIndexed(s)!==isIndexed(o)||isOrdered(s)!==isOrdered(o))return!1;if(0===s.size&&0===o.size)return!0;var i=!isAssociative(s);if(isOrdered(s)){var a=s.entries();return o.every((function(s,o){var u=a.next().value;return u&&is(u[1],s)&&(i||is(u[0],o))}))&&a.next().done}var u=!1;if(void 0===s.size)if(void 0===o.size)"function"==typeof s.cacheResult&&s.cacheResult();else{u=!0;var _=s;s=o,o=_}var w=!0,x=o.__iterate((function(o,a){if(i?!s.has(o):u?!is(o,s.get(a,j)):!is(s.get(a,j),o))return w=!1,!1}));return w&&s.size===x}function Repeat(s,o){if(!(this instanceof Repeat))return new Repeat(s,o);if(this._value=s,this.size=void 0===o?1/0:Math.max(0,o),0===this.size){if(ie)return ie;ie=this}}function invariant(s,o){if(!s)throw new Error(o)}function Range(s,o,i){if(!(this instanceof Range))return new Range(s,o,i);if(invariant(0!==i,"Cannot step a Range by 0"),s=s||0,void 0===o&&(o=1/0),i=void 0===i?1:Math.abs(i),oa?iteratorDone():iteratorValue(s,u,i[o?a-u++:u++])}))},createClass(ObjectSeq,KeyedSeq),ObjectSeq.prototype.get=function(s,o){return void 0===o||this.has(s)?this._object[s]:o},ObjectSeq.prototype.has=function(s){return this._object.hasOwnProperty(s)},ObjectSeq.prototype.__iterate=function(s,o){for(var i=this._object,a=this._keys,u=a.length-1,_=0;_<=u;_++){var w=a[o?u-_:_];if(!1===s(i[w],w,this))return _+1}return _},ObjectSeq.prototype.__iterator=function(s,o){var i=this._object,a=this._keys,u=a.length-1,_=0;return new Iterator((function(){var w=a[o?u-_:_];return _++>u?iteratorDone():iteratorValue(s,w,i[w])}))},ObjectSeq.prototype[u]=!0,createClass(IterableSeq,IndexedSeq),IterableSeq.prototype.__iterateUncached=function(s,o){if(o)return this.cacheResult().__iterate(s,o);var i=getIterator(this._iterable),a=0;if(isIterator(i))for(var u;!(u=i.next()).done&&!1!==s(u.value,a++,this););return a},IterableSeq.prototype.__iteratorUncached=function(s,o){if(o)return this.cacheResult().__iterator(s,o);var i=getIterator(this._iterable);if(!isIterator(i))return new Iterator(iteratorDone);var a=0;return new Iterator((function(){var o=i.next();return o.done?o:iteratorValue(s,a++,o.value)}))},createClass(IteratorSeq,IndexedSeq),IteratorSeq.prototype.__iterateUncached=function(s,o){if(o)return this.cacheResult().__iterate(s,o);for(var i,a=this._iterator,u=this._iteratorCache,_=0;_=a.length){var o=i.next();if(o.done)return o;a[u]=o.value}return iteratorValue(s,u,a[u++])}))},createClass(Repeat,IndexedSeq),Repeat.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},Repeat.prototype.get=function(s,o){return this.has(s)?this._value:o},Repeat.prototype.includes=function(s){return is(this._value,s)},Repeat.prototype.slice=function(s,o){var i=this.size;return wholeSlice(s,o,i)?this:new Repeat(this._value,resolveEnd(o,i)-resolveBegin(s,i))},Repeat.prototype.reverse=function(){return this},Repeat.prototype.indexOf=function(s){return is(this._value,s)?0:-1},Repeat.prototype.lastIndexOf=function(s){return is(this._value,s)?this.size:-1},Repeat.prototype.__iterate=function(s,o){for(var i=0;i=0&&o=0&&ii?iteratorDone():iteratorValue(s,_++,w)}))},Range.prototype.equals=function(s){return s instanceof Range?this._start===s._start&&this._end===s._end&&this._step===s._step:deepEqual(this,s)},createClass(Collection,Iterable),createClass(KeyedCollection,Collection),createClass(IndexedCollection,Collection),createClass(SetCollection,Collection),Collection.Keyed=KeyedCollection,Collection.Indexed=IndexedCollection,Collection.Set=SetCollection;var le="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function imul(s,o){var i=65535&(s|=0),a=65535&(o|=0);return i*a+((s>>>16)*a+i*(o>>>16)<<16>>>0)|0};function smi(s){return s>>>1&1073741824|3221225471&s}function hash(s){if(!1===s||null==s)return 0;if("function"==typeof s.valueOf&&(!1===(s=s.valueOf())||null==s))return 0;if(!0===s)return 1;var o=typeof s;if("number"===o){if(s!=s||s===1/0)return 0;var i=0|s;for(i!==s&&(i^=4294967295*s);s>4294967295;)i^=s/=4294967295;return smi(i)}if("string"===o)return s.length>_e?cachedHashString(s):hashString(s);if("function"==typeof s.hashCode)return s.hashCode();if("object"===o)return hashJSObj(s);if("function"==typeof s.toString)return hashString(s.toString());throw new Error("Value type "+o+" cannot be hashed.")}function cachedHashString(s){var o=Pe[s];return void 0===o&&(o=hashString(s),xe===we&&(xe=0,Pe={}),xe++,Pe[s]=o),o}function hashString(s){for(var o=0,i=0;i0)switch(s.nodeType){case 1:return s.uniqueID;case 9:return s.documentElement&&s.documentElement.uniqueID}}var fe,ye="function"==typeof WeakMap;ye&&(fe=new WeakMap);var be=0,Se="__immutablehash__";"function"==typeof Symbol&&(Se=Symbol(Se));var _e=16,we=255,xe=0,Pe={};function assertNotInfinite(s){invariant(s!==1/0,"Cannot perform this action with an infinite size.")}function Map(s){return null==s?emptyMap():isMap(s)&&!isOrdered(s)?s:emptyMap().withMutations((function(o){var i=KeyedIterable(s);assertNotInfinite(i.size),i.forEach((function(s,i){return o.set(i,s)}))}))}function isMap(s){return!(!s||!s[Re])}createClass(Map,KeyedCollection),Map.of=function(){var o=s.call(arguments,0);return emptyMap().withMutations((function(s){for(var i=0;i=o.length)throw new Error("Missing value for key: "+o[i]);s.set(o[i],o[i+1])}}))},Map.prototype.toString=function(){return this.__toString("Map {","}")},Map.prototype.get=function(s,o){return this._root?this._root.get(0,void 0,s,o):o},Map.prototype.set=function(s,o){return updateMap(this,s,o)},Map.prototype.setIn=function(s,o){return this.updateIn(s,j,(function(){return o}))},Map.prototype.remove=function(s){return updateMap(this,s,j)},Map.prototype.deleteIn=function(s){return this.updateIn(s,(function(){return j}))},Map.prototype.update=function(s,o,i){return 1===arguments.length?s(this):this.updateIn([s],o,i)},Map.prototype.updateIn=function(s,o,i){i||(i=o,o=void 0);var a=updateInDeepMap(this,forceIterator(s),o,i);return a===j?void 0:a},Map.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):emptyMap()},Map.prototype.merge=function(){return mergeIntoMapWith(this,void 0,arguments)},Map.prototype.mergeWith=function(o){return mergeIntoMapWith(this,o,s.call(arguments,1))},Map.prototype.mergeIn=function(o){var i=s.call(arguments,1);return this.updateIn(o,emptyMap(),(function(s){return"function"==typeof s.merge?s.merge.apply(s,i):i[i.length-1]}))},Map.prototype.mergeDeep=function(){return mergeIntoMapWith(this,deepMerger,arguments)},Map.prototype.mergeDeepWith=function(o){var i=s.call(arguments,1);return mergeIntoMapWith(this,deepMergerWith(o),i)},Map.prototype.mergeDeepIn=function(o){var i=s.call(arguments,1);return this.updateIn(o,emptyMap(),(function(s){return"function"==typeof s.mergeDeep?s.mergeDeep.apply(s,i):i[i.length-1]}))},Map.prototype.sort=function(s){return OrderedMap(sortFactory(this,s))},Map.prototype.sortBy=function(s,o){return OrderedMap(sortFactory(this,o,s))},Map.prototype.withMutations=function(s){var o=this.asMutable();return s(o),o.wasAltered()?o.__ensureOwner(this.__ownerID):this},Map.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new OwnerID)},Map.prototype.asImmutable=function(){return this.__ensureOwner()},Map.prototype.wasAltered=function(){return this.__altered},Map.prototype.__iterator=function(s,o){return new MapIterator(this,s,o)},Map.prototype.__iterate=function(s,o){var i=this,a=0;return this._root&&this._root.iterate((function(o){return a++,s(o[1],o[0],i)}),o),a},Map.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeMap(this.size,this._root,s,this.__hash):(this.__ownerID=s,this.__altered=!1,this)},Map.isMap=isMap;var Te,Re="@@__IMMUTABLE_MAP__@@",$e=Map.prototype;function ArrayMapNode(s,o){this.ownerID=s,this.entries=o}function BitmapIndexedNode(s,o,i){this.ownerID=s,this.bitmap=o,this.nodes=i}function HashArrayMapNode(s,o,i){this.ownerID=s,this.count=o,this.nodes=i}function HashCollisionNode(s,o,i){this.ownerID=s,this.keyHash=o,this.entries=i}function ValueNode(s,o,i){this.ownerID=s,this.keyHash=o,this.entry=i}function MapIterator(s,o,i){this._type=o,this._reverse=i,this._stack=s._root&&mapIteratorFrame(s._root)}function mapIteratorValue(s,o){return iteratorValue(s,o[0],o[1])}function mapIteratorFrame(s,o){return{node:s,index:0,__prev:o}}function makeMap(s,o,i,a){var u=Object.create($e);return u.size=s,u._root=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyMap(){return Te||(Te=makeMap(0))}function updateMap(s,o,i){var a,u;if(s._root){var _=MakeRef(L),w=MakeRef(B);if(a=updateNode(s._root,s.__ownerID,0,void 0,o,i,_,w),!w.value)return s;u=s.size+(_.value?i===j?-1:1:0)}else{if(i===j)return s;u=1,a=new ArrayMapNode(s.__ownerID,[[o,i]])}return s.__ownerID?(s.size=u,s._root=a,s.__hash=void 0,s.__altered=!0,s):a?makeMap(u,a):emptyMap()}function updateNode(s,o,i,a,u,_,w,x){return s?s.update(o,i,a,u,_,w,x):_===j?s:(SetRef(x),SetRef(w),new ValueNode(o,a,[u,_]))}function isLeafNode(s){return s.constructor===ValueNode||s.constructor===HashCollisionNode}function mergeIntoNode(s,o,i,a,u){if(s.keyHash===a)return new HashCollisionNode(o,a,[s.entry,u]);var _,x=(0===i?s.keyHash:s.keyHash>>>i)&C,j=(0===i?a:a>>>i)&C;return new BitmapIndexedNode(o,1<>>=1)w[C]=1&i?o[_++]:void 0;return w[a]=u,new HashArrayMapNode(s,_+1,w)}function mergeIntoMapWith(s,o,i){for(var a=[],u=0;u>1&1431655765))+(s>>2&858993459))+(s>>4)&252645135,s+=s>>8,127&(s+=s>>16)}function setIn(s,o,i,a){var u=a?s:arrCopy(s);return u[o]=i,u}function spliceIn(s,o,i,a){var u=s.length+1;if(a&&o+1===u)return s[o]=i,s;for(var _=new Array(u),w=0,x=0;x=qe)return createNodes(s,C,a,u);var U=s&&s===this.ownerID,V=U?C:arrCopy(C);return $?x?L===B-1?V.pop():V[L]=V.pop():V[L]=[a,u]:V.push([a,u]),U?(this.entries=V,this):new ArrayMapNode(s,V)}},BitmapIndexedNode.prototype.get=function(s,o,i,a){void 0===o&&(o=hash(i));var u=1<<((0===s?o:o>>>s)&C),_=this.bitmap;return _&u?this.nodes[popCount(_&u-1)].get(s+w,o,i,a):a},BitmapIndexedNode.prototype.update=function(s,o,i,a,u,_,x){void 0===i&&(i=hash(a));var L=(0===o?i:i>>>o)&C,B=1<=ze)return expandNodes(s,z,$,L,Z);if(U&&!Z&&2===z.length&&isLeafNode(z[1^V]))return z[1^V];if(U&&Z&&1===z.length&&isLeafNode(Z))return Z;var ee=s&&s===this.ownerID,ie=U?Z?$:$^B:$|B,ae=U?Z?setIn(z,V,Z,ee):spliceOut(z,V,ee):spliceIn(z,V,Z,ee);return ee?(this.bitmap=ie,this.nodes=ae,this):new BitmapIndexedNode(s,ie,ae)},HashArrayMapNode.prototype.get=function(s,o,i,a){void 0===o&&(o=hash(i));var u=(0===s?o:o>>>s)&C,_=this.nodes[u];return _?_.get(s+w,o,i,a):a},HashArrayMapNode.prototype.update=function(s,o,i,a,u,_,x){void 0===i&&(i=hash(a));var L=(0===o?i:i>>>o)&C,B=u===j,$=this.nodes,U=$[L];if(B&&!U)return this;var V=updateNode(U,s,o+w,i,a,u,_,x);if(V===U)return this;var z=this.count;if(U){if(!V&&--z0&&a=0&&s>>o&C;if(a>=this.array.length)return new VNode([],s);var u,_=0===a;if(o>0){var x=this.array[a];if((u=x&&x.removeBefore(s,o-w,i))===x&&_)return this}if(_&&!u)return this;var j=editableVNode(this,s);if(!_)for(var L=0;L>>o&C;if(u>=this.array.length)return this;if(o>0){var _=this.array[u];if((a=_&&_.removeAfter(s,o-w,i))===_&&u===this.array.length-1)return this}var x=editableVNode(this,s);return x.array.splice(u+1),a&&(x.array[u]=a),x};var Xe,Qe,et={};function iterateList(s,o){var i=s._origin,a=s._capacity,u=getTailOffset(a),_=s._tail;return iterateNodeOrLeaf(s._root,s._level,0);function iterateNodeOrLeaf(s,o,i){return 0===o?iterateLeaf(s,i):iterateNode(s,o,i)}function iterateLeaf(s,w){var C=w===u?_&&_.array:s&&s.array,j=w>i?0:i-w,L=a-w;return L>x&&(L=x),function(){if(j===L)return et;var s=o?--L:j++;return C&&C[s]}}function iterateNode(s,u,_){var C,j=s&&s.array,L=_>i?0:i-_>>u,B=1+(a-_>>u);return B>x&&(B=x),function(){for(;;){if(C){var s=C();if(s!==et)return s;C=null}if(L===B)return et;var i=o?--B:L++;C=iterateNodeOrLeaf(j&&j[i],u-w,_+(i<=s.size||o<0)return s.withMutations((function(s){o<0?setListBounds(s,o).set(0,i):setListBounds(s,0,o+1).set(o,i)}));o+=s._origin;var a=s._tail,u=s._root,_=MakeRef(B);return o>=getTailOffset(s._capacity)?a=updateVNode(a,s.__ownerID,0,o,i,_):u=updateVNode(u,s.__ownerID,s._level,o,i,_),_.value?s.__ownerID?(s._root=u,s._tail=a,s.__hash=void 0,s.__altered=!0,s):makeList(s._origin,s._capacity,s._level,u,a):s}function updateVNode(s,o,i,a,u,_){var x,j=a>>>i&C,L=s&&j0){var B=s&&s.array[j],$=updateVNode(B,o,i-w,a,u,_);return $===B?s:((x=editableVNode(s,o)).array[j]=$,x)}return L&&s.array[j]===u?s:(SetRef(_),x=editableVNode(s,o),void 0===u&&j===x.array.length-1?x.array.pop():x.array[j]=u,x)}function editableVNode(s,o){return o&&s&&o===s.ownerID?s:new VNode(s?s.array.slice():[],o)}function listNodeFor(s,o){if(o>=getTailOffset(s._capacity))return s._tail;if(o<1<0;)i=i.array[o>>>a&C],a-=w;return i}}function setListBounds(s,o,i){void 0!==o&&(o|=0),void 0!==i&&(i|=0);var a=s.__ownerID||new OwnerID,u=s._origin,_=s._capacity,x=u+o,j=void 0===i?_:i<0?_+i:u+i;if(x===u&&j===_)return s;if(x>=j)return s.clear();for(var L=s._level,B=s._root,$=0;x+$<0;)B=new VNode(B&&B.array.length?[void 0,B]:[],a),$+=1<<(L+=w);$&&(x+=$,u+=$,j+=$,_+=$);for(var U=getTailOffset(_),V=getTailOffset(j);V>=1<U?new VNode([],a):z;if(z&&V>U&&x<_&&z.array.length){for(var Z=B=editableVNode(B,a),ee=L;ee>w;ee-=w){var ie=U>>>ee&C;Z=Z.array[ie]=editableVNode(Z.array[ie],a)}Z.array[U>>>w&C]=z}if(j<_&&(Y=Y&&Y.removeAfter(a,0,j)),x>=V)x-=V,j-=V,L=w,B=null,Y=Y&&Y.removeBefore(a,0,x);else if(x>u||V>>L&C;if(ae!==V>>>L&C)break;ae&&($+=(1<u&&(B=B.removeBefore(a,L,x-$)),B&&Vu&&(u=x.size),isIterable(w)||(x=x.map((function(s){return fromJS(s)}))),a.push(x)}return u>s.size&&(s=s.setSize(u)),mergeIntoCollectionWith(s,o,a)}function getTailOffset(s){return s>>w<=x&&w.size>=2*_.size?(a=(u=w.filter((function(s,o){return void 0!==s&&C!==o}))).toKeyedSeq().map((function(s){return s[0]})).flip().toMap(),s.__ownerID&&(a.__ownerID=u.__ownerID=s.__ownerID)):(a=_.remove(o),u=C===w.size-1?w.pop():w.set(C,void 0))}else if(L){if(i===w.get(C)[1])return s;a=_,u=w.set(C,[o,i])}else a=_.set(o,w.size),u=w.set(w.size,[o,i]);return s.__ownerID?(s.size=a.size,s._map=a,s._list=u,s.__hash=void 0,s):makeOrderedMap(a,u)}function ToKeyedSequence(s,o){this._iter=s,this._useKeys=o,this.size=s.size}function ToIndexedSequence(s){this._iter=s,this.size=s.size}function ToSetSequence(s){this._iter=s,this.size=s.size}function FromEntriesSequence(s){this._iter=s,this.size=s.size}function flipFactory(s){var o=makeSequence(s);return o._iter=s,o.size=s.size,o.flip=function(){return s},o.reverse=function(){var o=s.reverse.apply(this);return o.flip=function(){return s.reverse()},o},o.has=function(o){return s.includes(o)},o.includes=function(o){return s.has(o)},o.cacheResult=cacheResultThrough,o.__iterateUncached=function(o,i){var a=this;return s.__iterate((function(s,i){return!1!==o(i,s,a)}),i)},o.__iteratorUncached=function(o,i){if(o===V){var a=s.__iterator(o,i);return new Iterator((function(){var s=a.next();if(!s.done){var o=s.value[0];s.value[0]=s.value[1],s.value[1]=o}return s}))}return s.__iterator(o===U?$:U,i)},o}function mapFactory(s,o,i){var a=makeSequence(s);return a.size=s.size,a.has=function(o){return s.has(o)},a.get=function(a,u){var _=s.get(a,j);return _===j?u:o.call(i,_,a,s)},a.__iterateUncached=function(a,u){var _=this;return s.__iterate((function(s,u,w){return!1!==a(o.call(i,s,u,w),u,_)}),u)},a.__iteratorUncached=function(a,u){var _=s.__iterator(V,u);return new Iterator((function(){var u=_.next();if(u.done)return u;var w=u.value,x=w[0];return iteratorValue(a,x,o.call(i,w[1],x,s),u)}))},a}function reverseFactory(s,o){var i=makeSequence(s);return i._iter=s,i.size=s.size,i.reverse=function(){return s},s.flip&&(i.flip=function(){var o=flipFactory(s);return o.reverse=function(){return s.flip()},o}),i.get=function(i,a){return s.get(o?i:-1-i,a)},i.has=function(i){return s.has(o?i:-1-i)},i.includes=function(o){return s.includes(o)},i.cacheResult=cacheResultThrough,i.__iterate=function(o,i){var a=this;return s.__iterate((function(s,i){return o(s,i,a)}),!i)},i.__iterator=function(o,i){return s.__iterator(o,!i)},i}function filterFactory(s,o,i,a){var u=makeSequence(s);return a&&(u.has=function(a){var u=s.get(a,j);return u!==j&&!!o.call(i,u,a,s)},u.get=function(a,u){var _=s.get(a,j);return _!==j&&o.call(i,_,a,s)?_:u}),u.__iterateUncached=function(u,_){var w=this,x=0;return s.__iterate((function(s,_,C){if(o.call(i,s,_,C))return x++,u(s,a?_:x-1,w)}),_),x},u.__iteratorUncached=function(u,_){var w=s.__iterator(V,_),x=0;return new Iterator((function(){for(;;){var _=w.next();if(_.done)return _;var C=_.value,j=C[0],L=C[1];if(o.call(i,L,j,s))return iteratorValue(u,a?j:x++,L,_)}}))},u}function countByFactory(s,o,i){var a=Map().asMutable();return s.__iterate((function(u,_){a.update(o.call(i,u,_,s),0,(function(s){return s+1}))})),a.asImmutable()}function groupByFactory(s,o,i){var a=isKeyed(s),u=(isOrdered(s)?OrderedMap():Map()).asMutable();s.__iterate((function(_,w){u.update(o.call(i,_,w,s),(function(s){return(s=s||[]).push(a?[w,_]:_),s}))}));var _=iterableClass(s);return u.map((function(o){return reify(s,_(o))}))}function sliceFactory(s,o,i,a){var u=s.size;if(void 0!==o&&(o|=0),void 0!==i&&(i===1/0?i=u:i|=0),wholeSlice(o,i,u))return s;var _=resolveBegin(o,u),w=resolveEnd(i,u);if(_!=_||w!=w)return sliceFactory(s.toSeq().cacheResult(),o,i,a);var x,C=w-_;C==C&&(x=C<0?0:C);var j=makeSequence(s);return j.size=0===x?x:s.size&&x||void 0,!a&&isSeq(s)&&x>=0&&(j.get=function(o,i){return(o=wrapIndex(this,o))>=0&&ox)return iteratorDone();var s=u.next();return a||o===U?s:iteratorValue(o,C-1,o===$?void 0:s.value[1],s)}))},j}function takeWhileFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterate(a,u);var w=0;return s.__iterate((function(s,u,x){return o.call(i,s,u,x)&&++w&&a(s,u,_)})),w},a.__iteratorUncached=function(a,u){var _=this;if(u)return this.cacheResult().__iterator(a,u);var w=s.__iterator(V,u),x=!0;return new Iterator((function(){if(!x)return iteratorDone();var s=w.next();if(s.done)return s;var u=s.value,C=u[0],j=u[1];return o.call(i,j,C,_)?a===V?s:iteratorValue(a,C,j,s):(x=!1,iteratorDone())}))},a}function skipWhileFactory(s,o,i,a){var u=makeSequence(s);return u.__iterateUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterate(u,_);var x=!0,C=0;return s.__iterate((function(s,_,j){if(!x||!(x=o.call(i,s,_,j)))return C++,u(s,a?_:C-1,w)})),C},u.__iteratorUncached=function(u,_){var w=this;if(_)return this.cacheResult().__iterator(u,_);var x=s.__iterator(V,_),C=!0,j=0;return new Iterator((function(){var s,_,L;do{if((s=x.next()).done)return a||u===U?s:iteratorValue(u,j++,u===$?void 0:s.value[1],s);var B=s.value;_=B[0],L=B[1],C&&(C=o.call(i,L,_,w))}while(C);return u===V?s:iteratorValue(u,_,L,s)}))},u}function concatFactory(s,o){var i=isKeyed(s),a=[s].concat(o).map((function(s){return isIterable(s)?i&&(s=KeyedIterable(s)):s=i?keyedSeqFromValue(s):indexedSeqFromValue(Array.isArray(s)?s:[s]),s})).filter((function(s){return 0!==s.size}));if(0===a.length)return s;if(1===a.length){var u=a[0];if(u===s||i&&isKeyed(u)||isIndexed(s)&&isIndexed(u))return u}var _=new ArraySeq(a);return i?_=_.toKeyedSeq():isIndexed(s)||(_=_.toSetSeq()),(_=_.flatten(!0)).size=a.reduce((function(s,o){if(void 0!==s){var i=o.size;if(void 0!==i)return s+i}}),0),_}function flattenFactory(s,o,i){var a=makeSequence(s);return a.__iterateUncached=function(a,u){var _=0,w=!1;function flatDeep(s,x){var C=this;s.__iterate((function(s,u){return(!o||x0}function zipWithFactory(s,o,i){var a=makeSequence(s);return a.size=new ArraySeq(i).map((function(s){return s.size})).min(),a.__iterate=function(s,o){for(var i,a=this.__iterator(U,o),u=0;!(i=a.next()).done&&!1!==s(i.value,u++,this););return u},a.__iteratorUncached=function(s,a){var u=i.map((function(s){return s=Iterable(s),getIterator(a?s.reverse():s)})),_=0,w=!1;return new Iterator((function(){var i;return w||(i=u.map((function(s){return s.next()})),w=i.some((function(s){return s.done}))),w?iteratorDone():iteratorValue(s,_++,o.apply(null,i.map((function(s){return s.value}))))}))},a}function reify(s,o){return isSeq(s)?o:s.constructor(o)}function validateEntry(s){if(s!==Object(s))throw new TypeError("Expected [K, V] tuple: "+s)}function resolveSize(s){return assertNotInfinite(s.size),ensureSize(s)}function iterableClass(s){return isKeyed(s)?KeyedIterable:isIndexed(s)?IndexedIterable:SetIterable}function makeSequence(s){return Object.create((isKeyed(s)?KeyedSeq:isIndexed(s)?IndexedSeq:SetSeq).prototype)}function cacheResultThrough(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):Seq.prototype.cacheResult.call(this)}function defaultComparator(s,o){return s>o?1:s=0;i--)o={value:arguments[i],next:o};return this.__ownerID?(this.size=s,this._head=o,this.__hash=void 0,this.__altered=!0,this):makeStack(s,o)},Stack.prototype.pushAll=function(s){if(0===(s=IndexedIterable(s)).size)return this;assertNotInfinite(s.size);var o=this.size,i=this._head;return s.reverse().forEach((function(s){o++,i={value:s,next:i}})),this.__ownerID?(this.size=o,this._head=i,this.__hash=void 0,this.__altered=!0,this):makeStack(o,i)},Stack.prototype.pop=function(){return this.slice(1)},Stack.prototype.unshift=function(){return this.push.apply(this,arguments)},Stack.prototype.unshiftAll=function(s){return this.pushAll(s)},Stack.prototype.shift=function(){return this.pop.apply(this,arguments)},Stack.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):emptyStack()},Stack.prototype.slice=function(s,o){if(wholeSlice(s,o,this.size))return this;var i=resolveBegin(s,this.size);if(resolveEnd(o,this.size)!==this.size)return IndexedCollection.prototype.slice.call(this,s,o);for(var a=this.size-i,u=this._head;i--;)u=u.next;return this.__ownerID?(this.size=a,this._head=u,this.__hash=void 0,this.__altered=!0,this):makeStack(a,u)},Stack.prototype.__ensureOwner=function(s){return s===this.__ownerID?this:s?makeStack(this.size,this._head,s,this.__hash):(this.__ownerID=s,this.__altered=!1,this)},Stack.prototype.__iterate=function(s,o){if(o)return this.reverse().__iterate(s);for(var i=0,a=this._head;a&&!1!==s(a.value,i++,this);)a=a.next;return i},Stack.prototype.__iterator=function(s,o){if(o)return this.reverse().__iterator(s);var i=0,a=this._head;return new Iterator((function(){if(a){var o=a.value;return a=a.next,iteratorValue(s,i++,o)}return iteratorDone()}))},Stack.isStack=isStack;var at,ct="@@__IMMUTABLE_STACK__@@",lt=Stack.prototype;function makeStack(s,o,i,a){var u=Object.create(lt);return u.size=s,u._head=o,u.__ownerID=i,u.__hash=a,u.__altered=!1,u}function emptyStack(){return at||(at=makeStack(0))}function mixin(s,o){var keyCopier=function(i){s.prototype[i]=o[i]};return Object.keys(o).forEach(keyCopier),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(o).forEach(keyCopier),s}function isProtoKey(s){return"string"==typeof s&&("__proto__"===s||"constructor"===s)}lt[ct]=!0,lt.withMutations=$e.withMutations,lt.asMutable=$e.asMutable,lt.asImmutable=$e.asImmutable,lt.wasAltered=$e.wasAltered,Iterable.Iterator=Iterator,mixin(Iterable,{toArray:function(){assertNotInfinite(this.size);var s=new Array(this.size||0);return this.valueSeq().__iterate((function(o,i){s[i]=o})),s},toIndexedSeq:function(){return new ToIndexedSequence(this)},toJS:function(){return this.toSeq().map((function(s){return s&&"function"==typeof s.toJS?s.toJS():s})).__toJS()},toJSON:function(){return this.toSeq().map((function(s){return s&&"function"==typeof s.toJSON?s.toJSON():s})).__toJS()},toKeyedSeq:function(){return new ToKeyedSequence(this,!0)},toMap:function(){return Map(this.toKeyedSeq())},toObject:function(){assertNotInfinite(this.size);var s={};return this.__iterate((function(o,i){isProtoKey(i)||(s[i]=o)})),s},toOrderedMap:function(){return OrderedMap(this.toKeyedSeq())},toOrderedSet:function(){return OrderedSet(isKeyed(this)?this.valueSeq():this)},toSet:function(){return Set(isKeyed(this)?this.valueSeq():this)},toSetSeq:function(){return new ToSetSequence(this)},toSeq:function(){return isIndexed(this)?this.toIndexedSeq():isKeyed(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Stack(isKeyed(this)?this.valueSeq():this)},toList:function(){return List(isKeyed(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(s,o){return 0===this.size?s+o:s+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+o},concat:function(){return reify(this,concatFactory(this,s.call(arguments,0)))},includes:function(s){return this.some((function(o){return is(o,s)}))},entries:function(){return this.__iterator(V)},every:function(s,o){assertNotInfinite(this.size);var i=!0;return this.__iterate((function(a,u,_){if(!s.call(o,a,u,_))return i=!1,!1})),i},filter:function(s,o){return reify(this,filterFactory(this,s,o,!0))},find:function(s,o,i){var a=this.findEntry(s,o);return a?a[1]:i},forEach:function(s,o){return assertNotInfinite(this.size),this.__iterate(o?s.bind(o):s)},join:function(s){assertNotInfinite(this.size),s=void 0!==s?""+s:",";var o="",i=!0;return this.__iterate((function(a){i?i=!1:o+=s,o+=null!=a?a.toString():""})),o},keys:function(){return this.__iterator($)},map:function(s,o){return reify(this,mapFactory(this,s,o))},reduce:function(s,o,i){var a,u;return assertNotInfinite(this.size),arguments.length<2?u=!0:a=o,this.__iterate((function(o,_,w){u?(u=!1,a=o):a=s.call(i,a,o,_,w)})),a},reduceRight:function(s,o,i){var a=this.toKeyedSeq().reverse();return a.reduce.apply(a,arguments)},reverse:function(){return reify(this,reverseFactory(this,!0))},slice:function(s,o){return reify(this,sliceFactory(this,s,o,!0))},some:function(s,o){return!this.every(not(s),o)},sort:function(s){return reify(this,sortFactory(this,s))},values:function(){return this.__iterator(U)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(s,o){return ensureSize(s?this.toSeq().filter(s,o):this)},countBy:function(s,o){return countByFactory(this,s,o)},equals:function(s){return deepEqual(this,s)},entrySeq:function(){var s=this;if(s._cache)return new ArraySeq(s._cache);var o=s.toSeq().map(entryMapper).toIndexedSeq();return o.fromEntrySeq=function(){return s.toSeq()},o},filterNot:function(s,o){return this.filter(not(s),o)},findEntry:function(s,o,i){var a=i;return this.__iterate((function(i,u,_){if(s.call(o,i,u,_))return a=[u,i],!1})),a},findKey:function(s,o){var i=this.findEntry(s,o);return i&&i[0]},findLast:function(s,o,i){return this.toKeyedSeq().reverse().find(s,o,i)},findLastEntry:function(s,o,i){return this.toKeyedSeq().reverse().findEntry(s,o,i)},findLastKey:function(s,o){return this.toKeyedSeq().reverse().findKey(s,o)},first:function(){return this.find(returnTrue)},flatMap:function(s,o){return reify(this,flatMapFactory(this,s,o))},flatten:function(s){return reify(this,flattenFactory(this,s,!0))},fromEntrySeq:function(){return new FromEntriesSequence(this)},get:function(s,o){return this.find((function(o,i){return is(i,s)}),void 0,o)},getIn:function(s,o){for(var i,a=this,u=forceIterator(s);!(i=u.next()).done;){var _=i.value;if((a=a&&a.get?a.get(_,j):j)===j)return o}return a},groupBy:function(s,o){return groupByFactory(this,s,o)},has:function(s){return this.get(s,j)!==j},hasIn:function(s){return this.getIn(s,j)!==j},isSubset:function(s){return s="function"==typeof s.includes?s:Iterable(s),this.every((function(o){return s.includes(o)}))},isSuperset:function(s){return(s="function"==typeof s.isSubset?s:Iterable(s)).isSubset(this)},keyOf:function(s){return this.findKey((function(o){return is(o,s)}))},keySeq:function(){return this.toSeq().map(keyMapper).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(s){return this.toKeyedSeq().reverse().keyOf(s)},max:function(s){return maxFactory(this,s)},maxBy:function(s,o){return maxFactory(this,o,s)},min:function(s){return maxFactory(this,s?neg(s):defaultNegComparator)},minBy:function(s,o){return maxFactory(this,o?neg(o):defaultNegComparator,s)},rest:function(){return this.slice(1)},skip:function(s){return this.slice(Math.max(0,s))},skipLast:function(s){return reify(this,this.toSeq().reverse().skip(s).reverse())},skipWhile:function(s,o){return reify(this,skipWhileFactory(this,s,o,!0))},skipUntil:function(s,o){return this.skipWhile(not(s),o)},sortBy:function(s,o){return reify(this,sortFactory(this,o,s))},take:function(s){return this.slice(0,Math.max(0,s))},takeLast:function(s){return reify(this,this.toSeq().reverse().take(s).reverse())},takeWhile:function(s,o){return reify(this,takeWhileFactory(this,s,o))},takeUntil:function(s,o){return this.takeWhile(not(s),o)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=hashIterable(this))}});var ut=Iterable.prototype;ut[o]=!0,ut[Z]=ut.values,ut.__toJS=ut.toArray,ut.__toStringMapper=quoteString,ut.inspect=ut.toSource=function(){return this.toString()},ut.chain=ut.flatMap,ut.contains=ut.includes,mixin(KeyedIterable,{flip:function(){return reify(this,flipFactory(this))},mapEntries:function(s,o){var i=this,a=0;return reify(this,this.toSeq().map((function(u,_){return s.call(o,[_,u],a++,i)})).fromEntrySeq())},mapKeys:function(s,o){var i=this;return reify(this,this.toSeq().flip().map((function(a,u){return s.call(o,a,u,i)})).flip())}});var pt=KeyedIterable.prototype;function keyMapper(s,o){return o}function entryMapper(s,o){return[o,s]}function not(s){return function(){return!s.apply(this,arguments)}}function neg(s){return function(){return-s.apply(this,arguments)}}function quoteString(s){return"string"==typeof s?JSON.stringify(s):String(s)}function defaultZipper(){return arrCopy(arguments)}function defaultNegComparator(s,o){return so?-1:0}function hashIterable(s){if(s.size===1/0)return 0;var o=isOrdered(s),i=isKeyed(s),a=o?1:0;return murmurHashOfSize(s.__iterate(i?o?function(s,o){a=31*a+hashMerge(hash(s),hash(o))|0}:function(s,o){a=a+hashMerge(hash(s),hash(o))|0}:o?function(s){a=31*a+hash(s)|0}:function(s){a=a+hash(s)|0}),a)}function murmurHashOfSize(s,o){return o=le(o,3432918353),o=le(o<<15|o>>>-15,461845907),o=le(o<<13|o>>>-13,5),o=le((o=o+3864292196^s)^o>>>16,2246822507),o=smi((o=le(o^o>>>13,3266489909))^o>>>16)}function hashMerge(s,o){return s^o+2654435769+(s<<6)+(s>>2)}return pt[i]=!0,pt[Z]=ut.entries,pt.__toJS=ut.toObject,pt.__toStringMapper=function(s,o){return JSON.stringify(o)+": "+quoteString(s)},mixin(IndexedIterable,{toKeyedSeq:function(){return new ToKeyedSequence(this,!1)},filter:function(s,o){return reify(this,filterFactory(this,s,o,!1))},findIndex:function(s,o){var i=this.findEntry(s,o);return i?i[0]:-1},indexOf:function(s){var o=this.keyOf(s);return void 0===o?-1:o},lastIndexOf:function(s){var o=this.lastKeyOf(s);return void 0===o?-1:o},reverse:function(){return reify(this,reverseFactory(this,!1))},slice:function(s,o){return reify(this,sliceFactory(this,s,o,!1))},splice:function(s,o){var i=arguments.length;if(o=Math.max(0|o,0),0===i||2===i&&!o)return this;s=resolveBegin(s,s<0?this.count():this.size);var a=this.slice(0,s);return reify(this,1===i?a:a.concat(arrCopy(arguments,2),this.slice(s+o)))},findLastIndex:function(s,o){var i=this.findLastEntry(s,o);return i?i[0]:-1},first:function(){return this.get(0)},flatten:function(s){return reify(this,flattenFactory(this,s,!1))},get:function(s,o){return(s=wrapIndex(this,s))<0||this.size===1/0||void 0!==this.size&&s>this.size?o:this.find((function(o,i){return i===s}),void 0,o)},has:function(s){return(s=wrapIndex(this,s))>=0&&(void 0!==this.size?this.size===1/0||s=o||i<0||B&&s-j>=_}function timerExpired(){var s=now();if(shouldInvoke(s))return trailingEdge(s);x=setTimeout(timerExpired,function remainingWait(s){var i=o-(s-C);return B?U(i,_-(s-j)):i}(s))}function trailingEdge(s){return x=void 0,V&&a?invokeFunc(s):(a=u=void 0,w)}function debounced(){var s=now(),i=shouldInvoke(s);if(a=arguments,u=this,C=s,i){if(void 0===x)return function leadingEdge(s){return j=s,x=setTimeout(timerExpired,o),L?invokeFunc(s):w}(C);if(B)return x=setTimeout(timerExpired,o),invokeFunc(C)}return void 0===x&&(x=setTimeout(timerExpired,o)),w}return o=toNumber(o)||0,isObject(i)&&(L=!!i.leading,_=(B="maxWait"in i)?$(toNumber(i.maxWait)||0,o):_,V="trailing"in i?!!i.trailing:V),debounced.cancel=function cancel(){void 0!==x&&clearTimeout(x),j=0,a=C=u=x=void 0},debounced.flush=function flush(){return void 0===x?w:trailingEdge(now())},debounced}},55580(s,o,i){var a=i(56110)(i(9325),"DataView");s.exports=a},21549(s,o,i){var a=i(22032),u=i(63862),_=i(66721),w=i(12749),x=i(35749);function Hash(s){var o=-1,i=null==s?0:s.length;for(this.clear();++o-1}},70695(s,o,i){var a=i(78096),u=i(72428),_=i(56449),w=i(3656),x=i(30361),C=i(37167),j=Object.prototype.hasOwnProperty;s.exports=function arrayLikeKeys(s,o){var i=_(s),L=!i&&u(s),B=!i&&!L&&w(s),$=!i&&!L&&!B&&C(s),U=i||L||B||$,V=U?a(s.length,String):[],z=V.length;for(var Y in s)!o&&!j.call(s,Y)||U&&("length"==Y||B&&("offset"==Y||"parent"==Y)||$&&("buffer"==Y||"byteLength"==Y||"byteOffset"==Y)||x(Y,z))||V.push(Y);return V}},34932(s){s.exports=function arrayMap(s,o){for(var i=-1,a=null==s?0:s.length,u=Array(a);++i0&&i(j)?o>1?baseFlatten(j,o-1,i,_,w):a(w,j):_||(w[w.length]=j)}return w}},86649(s,o,i){var a=i(83221)();s.exports=a},30641(s,o,i){var a=i(86649),u=i(95950);s.exports=function baseForOwn(s,o){return s&&a(s,o,u)}},47422(s,o,i){var a=i(31769),u=i(77797);s.exports=function baseGet(s,o){for(var i=0,_=(o=a(o,s)).length;null!=s&&i<_;)s=s[u(o[i++])];return i&&i==_?s:void 0}},82199(s,o,i){var a=i(14528),u=i(56449);s.exports=function baseGetAllKeys(s,o,i){var _=o(s);return u(s)?_:a(_,i(s))}},72552(s,o,i){var a=i(51873),u=i(659),_=i(59350),w=a?a.toStringTag:void 0;s.exports=function baseGetTag(s){return null==s?void 0===s?"[object Undefined]":"[object Null]":w&&w in Object(s)?u(s):_(s)}},20426(s){var o=Object.prototype.hasOwnProperty;s.exports=function baseHas(s,i){return null!=s&&o.call(s,i)}},28077(s){s.exports=function baseHasIn(s,o){return null!=s&&o in Object(s)}},96131(s,o,i){var a=i(2523),u=i(85463),_=i(76959);s.exports=function baseIndexOf(s,o,i){return o==o?_(s,o,i):a(s,u,i)}},27534(s,o,i){var a=i(72552),u=i(40346);s.exports=function baseIsArguments(s){return u(s)&&"[object Arguments]"==a(s)}},60270(s,o,i){var a=i(87068),u=i(40346);s.exports=function baseIsEqual(s,o,i,_,w){return s===o||(null==s||null==o||!u(s)&&!u(o)?s!=s&&o!=o:a(s,o,i,_,baseIsEqual,w))}},87068(s,o,i){var a=i(37217),u=i(25911),_=i(21986),w=i(50689),x=i(5861),C=i(56449),j=i(3656),L=i(37167),B="[object Arguments]",$="[object Array]",U="[object Object]",V=Object.prototype.hasOwnProperty;s.exports=function baseIsEqualDeep(s,o,i,z,Y,Z){var ee=C(s),ie=C(o),ae=ee?$:x(s),ce=ie?$:x(o),le=(ae=ae==B?U:ae)==U,pe=(ce=ce==B?U:ce)==U,de=ae==ce;if(de&&j(s)){if(!j(o))return!1;ee=!0,le=!1}if(de&&!le)return Z||(Z=new a),ee||L(s)?u(s,o,i,z,Y,Z):_(s,o,ae,i,z,Y,Z);if(!(1&i)){var fe=le&&V.call(s,"__wrapped__"),ye=pe&&V.call(o,"__wrapped__");if(fe||ye){var be=fe?s.value():s,Se=ye?o.value():o;return Z||(Z=new a),Y(be,Se,i,z,Z)}}return!!de&&(Z||(Z=new a),w(s,o,i,z,Y,Z))}},29172(s,o,i){var a=i(5861),u=i(40346);s.exports=function baseIsMap(s){return u(s)&&"[object Map]"==a(s)}},41799(s,o,i){var a=i(37217),u=i(60270);s.exports=function baseIsMatch(s,o,i,_){var w=i.length,x=w,C=!_;if(null==s)return!x;for(s=Object(s);w--;){var j=i[w];if(C&&j[2]?j[1]!==s[j[0]]:!(j[0]in s))return!1}for(;++wu?0:u+o),(i=i>u?u:i)<0&&(i+=u),u=o>i?0:i-o>>>0,o>>>=0;for(var _=Array(u);++a=u?s:a(s,o,i)}},49653(s,o,i){var a=i(37828);s.exports=function cloneArrayBuffer(s){var o=new s.constructor(s.byteLength);return new a(o).set(new a(s)),o}},93290(s,o,i){s=i.nmd(s);var a=i(9325),u=o&&!o.nodeType&&o,_=u&&s&&!s.nodeType&&s,w=_&&_.exports===u?a.Buffer:void 0,x=w?w.allocUnsafe:void 0;s.exports=function cloneBuffer(s,o){if(o)return s.slice();var i=s.length,a=x?x(i):new s.constructor(i);return s.copy(a),a}},76169(s,o,i){var a=i(49653);s.exports=function cloneDataView(s,o){var i=o?a(s.buffer):s.buffer;return new s.constructor(i,s.byteOffset,s.byteLength)}},73201(s){var o=/\w*$/;s.exports=function cloneRegExp(s){var i=new s.constructor(s.source,o.exec(s));return i.lastIndex=s.lastIndex,i}},93736(s,o,i){var a=i(51873),u=a?a.prototype:void 0,_=u?u.valueOf:void 0;s.exports=function cloneSymbol(s){return _?Object(_.call(s)):{}}},71961(s,o,i){var a=i(49653);s.exports=function cloneTypedArray(s,o){var i=o?a(s.buffer):s.buffer;return new s.constructor(i,s.byteOffset,s.length)}},91596(s){var o=Math.max;s.exports=function composeArgs(s,i,a,u){for(var _=-1,w=s.length,x=a.length,C=-1,j=i.length,L=o(w-x,0),B=Array(j+L),$=!u;++C1?i[_-1]:void 0,x=_>2?i[2]:void 0;for(w=s.length>3&&"function"==typeof w?(_--,w):void 0,x&&u(i[0],i[1],x)&&(w=_<3?void 0:w,_=1),o=Object(o);++a<_;){var C=i[a];C&&s(o,C,a,w)}return o}))}},38329(s,o,i){var a=i(64894);s.exports=function createBaseEach(s,o){return function(i,u){if(null==i)return i;if(!a(i))return s(i,u);for(var _=i.length,w=o?_:-1,x=Object(i);(o?w--:++w<_)&&!1!==u(x[w],w,x););return i}}},83221(s){s.exports=function createBaseFor(s){return function(o,i,a){for(var u=-1,_=Object(o),w=a(o),x=w.length;x--;){var C=w[s?x:++u];if(!1===i(_[C],C,_))break}return o}}},11842(s,o,i){var a=i(82819),u=i(9325);s.exports=function createBind(s,o,i){var _=1&o,w=a(s);return function wrapper(){return(this&&this!==u&&this instanceof wrapper?w:s).apply(_?i:this,arguments)}}},12507(s,o,i){var a=i(28754),u=i(49698),_=i(63912),w=i(13222);s.exports=function createCaseFirst(s){return function(o){o=w(o);var i=u(o)?_(o):void 0,x=i?i[0]:o.charAt(0),C=i?a(i,1).join(""):o.slice(1);return x[s]()+C}}},45539(s,o,i){var a=i(40882),u=i(50828),_=i(66645),w=RegExp("['’]","g");s.exports=function createCompounder(s){return function(o){return a(_(u(o).replace(w,"")),s,"")}}},82819(s,o,i){var a=i(39344),u=i(23805);s.exports=function createCtor(s){return function(){var o=arguments;switch(o.length){case 0:return new s;case 1:return new s(o[0]);case 2:return new s(o[0],o[1]);case 3:return new s(o[0],o[1],o[2]);case 4:return new s(o[0],o[1],o[2],o[3]);case 5:return new s(o[0],o[1],o[2],o[3],o[4]);case 6:return new s(o[0],o[1],o[2],o[3],o[4],o[5]);case 7:return new s(o[0],o[1],o[2],o[3],o[4],o[5],o[6])}var i=a(s.prototype),_=s.apply(i,o);return u(_)?_:i}}},77078(s,o,i){var a=i(91033),u=i(82819),_=i(37471),w=i(18073),x=i(11287),C=i(36306),j=i(9325);s.exports=function createCurry(s,o,i){var L=u(s);return function wrapper(){for(var u=arguments.length,B=Array(u),$=u,U=x(wrapper);$--;)B[$]=arguments[$];var V=u<3&&B[0]!==U&&B[u-1]!==U?[]:C(B,U);return(u-=V.length)-1?x[C?o[j]:j]:void 0}}},37471(s,o,i){var a=i(91596),u=i(53320),_=i(58523),w=i(82819),x=i(18073),C=i(11287),j=i(68294),L=i(36306),B=i(9325);s.exports=function createHybrid(s,o,i,$,U,V,z,Y,Z,ee){var ie=128&o,ae=1&o,ce=2&o,le=24&o,pe=512&o,de=ce?void 0:w(s);return function wrapper(){for(var fe=arguments.length,ye=Array(fe),be=fe;be--;)ye[be]=arguments[be];if(le)var Se=C(wrapper),_e=_(ye,Se);if($&&(ye=a(ye,$,U,le)),V&&(ye=u(ye,V,z,le)),fe-=_e,le&&fe1&&ye.reverse(),ie&&ZL))return!1;var $=C.get(s),U=C.get(o);if($&&U)return $==o&&U==s;var V=-1,z=!0,Y=2&i?new a:void 0;for(C.set(s,o),C.set(o,s);++V1?"& ":"")+i[u],i=i.join(a>2?", ":" "),s.replace(o,"{\n/* [wrapped with "+i+"] */\n")}},45891(s,o,i){var a=i(51873),u=i(72428),_=i(56449),w=a?a.isConcatSpreadable:void 0;s.exports=function isFlattenable(s){return _(s)||u(s)||!!(w&&s&&s[w])}},30361(s){var o=/^(?:0|[1-9]\d*)$/;s.exports=function isIndex(s,i){var a=typeof s;return!!(i=null==i?9007199254740991:i)&&("number"==a||"symbol"!=a&&o.test(s))&&s>-1&&s%1==0&&s-1}},31175(s,o,i){var a=i(26025);s.exports=function listCacheSet(s,o){var i=this.__data__,u=a(i,s);return u<0?(++this.size,i.push([s,o])):i[u][1]=o,this}},63040(s,o,i){var a=i(21549),u=i(80079),_=i(68223);s.exports=function mapCacheClear(){this.size=0,this.__data__={hash:new a,map:new(_||u),string:new a}}},17670(s,o,i){var a=i(12651);s.exports=function mapCacheDelete(s){var o=a(this,s).delete(s);return this.size-=o?1:0,o}},90289(s,o,i){var a=i(12651);s.exports=function mapCacheGet(s){return a(this,s).get(s)}},4509(s,o,i){var a=i(12651);s.exports=function mapCacheHas(s){return a(this,s).has(s)}},72949(s,o,i){var a=i(12651);s.exports=function mapCacheSet(s,o){var i=a(this,s),u=i.size;return i.set(s,o),this.size+=i.size==u?0:1,this}},20317(s){s.exports=function mapToArray(s){var o=-1,i=Array(s.size);return s.forEach((function(s,a){i[++o]=[a,s]})),i}},67197(s){s.exports=function matchesStrictComparable(s,o){return function(i){return null!=i&&(i[s]===o&&(void 0!==o||s in Object(i)))}}},62224(s,o,i){var a=i(50104);s.exports=function memoizeCapped(s){var o=a(s,(function(s){return 500===i.size&&i.clear(),s})),i=o.cache;return o}},3209(s,o,i){var a=i(91596),u=i(53320),_=i(36306),w="__lodash_placeholder__",x=128,C=Math.min;s.exports=function mergeData(s,o){var i=s[1],j=o[1],L=i|j,B=L<131,$=j==x&&8==i||j==x&&256==i&&s[7].length<=o[8]||384==j&&o[7].length<=o[8]&&8==i;if(!B&&!$)return s;1&j&&(s[2]=o[2],L|=1&i?0:4);var U=o[3];if(U){var V=s[3];s[3]=V?a(V,U,o[4]):U,s[4]=V?_(s[3],w):o[4]}return(U=o[5])&&(V=s[5],s[5]=V?u(V,U,o[6]):U,s[6]=V?_(s[5],w):o[6]),(U=o[7])&&(s[7]=U),j&x&&(s[8]=null==s[8]?o[8]:C(s[8],o[8])),null==s[9]&&(s[9]=o[9]),s[0]=o[0],s[1]=L,s}},48152(s,o,i){var a=i(28303),u=a&&new a;s.exports=u},81042(s,o,i){var a=i(56110)(Object,"create");s.exports=a},3650(s,o,i){var a=i(74335)(Object.keys,Object);s.exports=a},90181(s){s.exports=function nativeKeysIn(s){var o=[];if(null!=s)for(var i in Object(s))o.push(i);return o}},86009(s,o,i){s=i.nmd(s);var a=i(34840),u=o&&!o.nodeType&&o,_=u&&s&&!s.nodeType&&s,w=_&&_.exports===u&&a.process,x=function(){try{var s=_&&_.require&&_.require("util").types;return s||w&&w.binding&&w.binding("util")}catch(s){}}();s.exports=x},59350(s){var o=Object.prototype.toString;s.exports=function objectToString(s){return o.call(s)}},74335(s){s.exports=function overArg(s,o){return function(i){return s(o(i))}}},56757(s,o,i){var a=i(91033),u=Math.max;s.exports=function overRest(s,o,i){return o=u(void 0===o?s.length-1:o,0),function(){for(var _=arguments,w=-1,x=u(_.length-o,0),C=Array(x);++w0){if(++i>=800)return arguments[0]}else i=0;return s.apply(void 0,arguments)}}},51420(s,o,i){var a=i(80079);s.exports=function stackClear(){this.__data__=new a,this.size=0}},90938(s){s.exports=function stackDelete(s){var o=this.__data__,i=o.delete(s);return this.size=o.size,i}},63605(s){s.exports=function stackGet(s){return this.__data__.get(s)}},29817(s){s.exports=function stackHas(s){return this.__data__.has(s)}},80945(s,o,i){var a=i(80079),u=i(68223),_=i(53661);s.exports=function stackSet(s,o){var i=this.__data__;if(i instanceof a){var w=i.__data__;if(!u||w.length<199)return w.push([s,o]),this.size=++i.size,this;i=this.__data__=new _(w)}return i.set(s,o),this.size=i.size,this}},76959(s){s.exports=function strictIndexOf(s,o,i){for(var a=i-1,u=s.length;++a=o||i<0||Y&&s-V>=L}function timerExpired(){var s=u();if(shouldInvoke(s))return trailingEdge(s);$=setTimeout(timerExpired,function remainingWait(s){var i=o-(s-U);return Y?x(i,L-(s-V)):i}(s))}function trailingEdge(s){return $=void 0,Z&&C?invokeFunc(s):(C=j=void 0,B)}function debounced(){var s=u(),i=shouldInvoke(s);if(C=arguments,j=this,U=s,i){if(void 0===$)return function leadingEdge(s){return V=s,$=setTimeout(timerExpired,o),z?invokeFunc(s):B}(U);if(Y)return clearTimeout($),$=setTimeout(timerExpired,o),invokeFunc(U)}return void 0===$&&($=setTimeout(timerExpired,o)),B}return o=_(o)||0,a(i)&&(z=!!i.leading,L=(Y="maxWait"in i)?w(_(i.maxWait)||0,o):L,Z="trailing"in i?!!i.trailing:Z),debounced.cancel=function cancel(){void 0!==$&&clearTimeout($),V=0,C=U=j=$=void 0},debounced.flush=function flush(){return void 0===$?B:trailingEdge(u())},debounced}},50828(s,o,i){var a=i(24647),u=i(13222),_=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,w=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]","g");s.exports=function deburr(s){return(s=u(s))&&s.replace(_,a).replace(w,"")}},75288(s){s.exports=function eq(s,o){return s===o||s!=s&&o!=o}},60680(s,o,i){var a=i(13222),u=/[\\^$.*+?()[\]{}|]/g,_=RegExp(u.source);s.exports=function escapeRegExp(s){return(s=a(s))&&_.test(s)?s.replace(u,"\\$&"):s}},7309(s,o,i){var a=i(62006)(i(24713));s.exports=a},24713(s,o,i){var a=i(2523),u=i(15389),_=i(61489),w=Math.max;s.exports=function findIndex(s,o,i){var x=null==s?0:s.length;if(!x)return-1;var C=null==i?0:_(i);return C<0&&(C=w(x+C,0)),a(s,u(o,3),C)}},35970(s,o,i){var a=i(83120);s.exports=function flatten(s){return(null==s?0:s.length)?a(s,1):[]}},73424(s,o,i){var a=i(16962),u=i(2874),_=Array.prototype.push;function baseAry(s,o){return 2==o?function(o,i){return s(o,i)}:function(o){return s(o)}}function cloneArray(s){for(var o=s?s.length:0,i=Array(o);o--;)i[o]=s[o];return i}function wrapImmutable(s,o){return function(){var i=arguments.length;if(i){for(var a=Array(i);i--;)a[i]=arguments[i];var u=a[0]=o.apply(void 0,a);return s.apply(void 0,a),u}}}s.exports=function baseConvert(s,o,i,w){var x="function"==typeof o,C=o===Object(o);if(C&&(w=i,i=o,o=void 0),null==i)throw new TypeError;w||(w={});var j=!("cap"in w)||w.cap,L=!("curry"in w)||w.curry,B=!("fixed"in w)||w.fixed,$=!("immutable"in w)||w.immutable,U=!("rearg"in w)||w.rearg,V=x?i:u,z="curry"in w&&w.curry,Y="fixed"in w&&w.fixed,Z="rearg"in w&&w.rearg,ee=x?i.runInContext():void 0,ie=x?i:{ary:s.ary,assign:s.assign,clone:s.clone,curry:s.curry,forEach:s.forEach,isArray:s.isArray,isError:s.isError,isFunction:s.isFunction,isWeakMap:s.isWeakMap,iteratee:s.iteratee,keys:s.keys,rearg:s.rearg,toInteger:s.toInteger,toPath:s.toPath},ae=ie.ary,ce=ie.assign,le=ie.clone,pe=ie.curry,de=ie.forEach,fe=ie.isArray,ye=ie.isError,be=ie.isFunction,Se=ie.isWeakMap,_e=ie.keys,we=ie.rearg,xe=ie.toInteger,Pe=ie.toPath,Te=_e(a.aryMethod),Re={castArray:function(s){return function(){var o=arguments[0];return fe(o)?s(cloneArray(o)):s.apply(void 0,arguments)}},iteratee:function(s){return function(){var o=arguments[1],i=s(arguments[0],o),a=i.length;return j&&"number"==typeof o?(o=o>2?o-2:1,a&&a<=o?i:baseAry(i,o)):i}},mixin:function(s){return function(o){var i=this;if(!be(i))return s(i,Object(o));var a=[];return de(_e(o),(function(s){be(o[s])&&a.push([s,i.prototype[s]])})),s(i,Object(o)),de(a,(function(s){var o=s[1];be(o)?i.prototype[s[0]]=o:delete i.prototype[s[0]]})),i}},nthArg:function(s){return function(o){var i=o<0?1:xe(o)+1;return pe(s(o),i)}},rearg:function(s){return function(o,i){var a=i?i.length:0;return pe(s(o,i),a)}},runInContext:function(o){return function(i){return baseConvert(s,o(i),w)}}};function castCap(s,o){if(j){var i=a.iterateeRearg[s];if(i)return function iterateeRearg(s,o){return overArg(s,(function(s){var i=o.length;return function baseArity(s,o){return 2==o?function(o,i){return s.apply(void 0,arguments)}:function(o){return s.apply(void 0,arguments)}}(we(baseAry(s,i),o),i)}))}(o,i);var u=!x&&a.iterateeAry[s];if(u)return function iterateeAry(s,o){return overArg(s,(function(s){return"function"==typeof s?baseAry(s,o):s}))}(o,u)}return o}function castFixed(s,o,i){if(B&&(Y||!a.skipFixed[s])){var u=a.methodSpread[s],w=u&&u.start;return void 0===w?ae(o,i):function flatSpread(s,o){return function(){for(var i=arguments.length,a=i-1,u=Array(i);i--;)u[i]=arguments[i];var w=u[o],x=u.slice(0,o);return w&&_.apply(x,w),o!=a&&_.apply(x,u.slice(o+1)),s.apply(this,x)}}(o,w)}return o}function castRearg(s,o,i){return U&&i>1&&(Z||!a.skipRearg[s])?we(o,a.methodRearg[s]||a.aryRearg[i]):o}function cloneByPath(s,o){for(var i=-1,a=(o=Pe(o)).length,u=a-1,_=le(Object(s)),w=_;null!=w&&++i1?pe(o,i):o}(0,u=castCap(_,u),s),!1}})),!u})),u||(u=w),u==o&&(u=z?pe(u,1):function(){return o.apply(this,arguments)}),u.convert=createConverter(_,o),u.placeholder=o.placeholder=i,u}if(!C)return wrap(o,i,V);var $e=i,qe=[];return de(Te,(function(s){de(a.aryMethod[s],(function(s){var o=$e[a.remap[s]||s];o&&qe.push([s,wrap(s,o,$e)])}))})),de(_e($e),(function(s){var o=$e[s];if("function"==typeof o){for(var i=qe.length;i--;)if(qe[i][0]==s)return;o.convert=createConverter(s,o),qe.push([s,o])}})),de(qe,(function(s){$e[s[0]]=s[1]})),$e.convert=function convertLib(s){return $e.runInContext.convert(s)(void 0)},$e.placeholder=$e,de(_e($e),(function(s){de(a.realToAlias[s]||[],(function(o){$e[o]=$e[s]}))})),$e}},16962(s,o){o.aliasToReal={each:"forEach",eachRight:"forEachRight",entries:"toPairs",entriesIn:"toPairsIn",extend:"assignIn",extendAll:"assignInAll",extendAllWith:"assignInAllWith",extendWith:"assignInWith",first:"head",conforms:"conformsTo",matches:"isMatch",property:"get",__:"placeholder",F:"stubFalse",T:"stubTrue",all:"every",allPass:"overEvery",always:"constant",any:"some",anyPass:"overSome",apply:"spread",assoc:"set",assocPath:"set",complement:"negate",compose:"flowRight",contains:"includes",dissoc:"unset",dissocPath:"unset",dropLast:"dropRight",dropLastWhile:"dropRightWhile",equals:"isEqual",identical:"eq",indexBy:"keyBy",init:"initial",invertObj:"invert",juxt:"over",omitAll:"omit",nAry:"ary",path:"get",pathEq:"matchesProperty",pathOr:"getOr",paths:"at",pickAll:"pick",pipe:"flow",pluck:"map",prop:"get",propEq:"matchesProperty",propOr:"getOr",props:"at",symmetricDifference:"xor",symmetricDifferenceBy:"xorBy",symmetricDifferenceWith:"xorWith",takeLast:"takeRight",takeLastWhile:"takeRightWhile",unapply:"rest",unnest:"flatten",useWith:"overArgs",where:"conformsTo",whereEq:"isMatch",zipObj:"zipObject"},o.aryMethod={1:["assignAll","assignInAll","attempt","castArray","ceil","create","curry","curryRight","defaultsAll","defaultsDeepAll","floor","flow","flowRight","fromPairs","invert","iteratee","memoize","method","mergeAll","methodOf","mixin","nthArg","over","overEvery","overSome","rest","reverse","round","runInContext","spread","template","trim","trimEnd","trimStart","uniqueId","words","zipAll"],2:["add","after","ary","assign","assignAllWith","assignIn","assignInAllWith","at","before","bind","bindAll","bindKey","chunk","cloneDeepWith","cloneWith","concat","conformsTo","countBy","curryN","curryRightN","debounce","defaults","defaultsDeep","defaultTo","delay","difference","divide","drop","dropRight","dropRightWhile","dropWhile","endsWith","eq","every","filter","find","findIndex","findKey","findLast","findLastIndex","findLastKey","flatMap","flatMapDeep","flattenDepth","forEach","forEachRight","forIn","forInRight","forOwn","forOwnRight","get","groupBy","gt","gte","has","hasIn","includes","indexOf","intersection","invertBy","invoke","invokeMap","isEqual","isMatch","join","keyBy","lastIndexOf","lt","lte","map","mapKeys","mapValues","matchesProperty","maxBy","meanBy","merge","mergeAllWith","minBy","multiply","nth","omit","omitBy","overArgs","pad","padEnd","padStart","parseInt","partial","partialRight","partition","pick","pickBy","propertyOf","pull","pullAll","pullAt","random","range","rangeRight","rearg","reject","remove","repeat","restFrom","result","sampleSize","some","sortBy","sortedIndex","sortedIndexOf","sortedLastIndex","sortedLastIndexOf","sortedUniqBy","split","spreadFrom","startsWith","subtract","sumBy","take","takeRight","takeRightWhile","takeWhile","tap","throttle","thru","times","trimChars","trimCharsEnd","trimCharsStart","truncate","union","uniqBy","uniqWith","unset","unzipWith","without","wrap","xor","zip","zipObject","zipObjectDeep"],3:["assignInWith","assignWith","clamp","differenceBy","differenceWith","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","getOr","includesFrom","indexOfFrom","inRange","intersectionBy","intersectionWith","invokeArgs","invokeArgsMap","isEqualWith","isMatchWith","flatMapDepth","lastIndexOfFrom","mergeWith","orderBy","padChars","padCharsEnd","padCharsStart","pullAllBy","pullAllWith","rangeStep","rangeStepRight","reduce","reduceRight","replace","set","slice","sortedIndexBy","sortedLastIndexBy","transform","unionBy","unionWith","update","xorBy","xorWith","zipWith"],4:["fill","setWith","updateWith"]},o.aryRearg={2:[1,0],3:[2,0,1],4:[3,2,0,1]},o.iterateeAry={dropRightWhile:1,dropWhile:1,every:1,filter:1,find:1,findFrom:1,findIndex:1,findIndexFrom:1,findKey:1,findLast:1,findLastFrom:1,findLastIndex:1,findLastIndexFrom:1,findLastKey:1,flatMap:1,flatMapDeep:1,flatMapDepth:1,forEach:1,forEachRight:1,forIn:1,forInRight:1,forOwn:1,forOwnRight:1,map:1,mapKeys:1,mapValues:1,partition:1,reduce:2,reduceRight:2,reject:1,remove:1,some:1,takeRightWhile:1,takeWhile:1,times:1,transform:2},o.iterateeRearg={mapKeys:[1],reduceRight:[1,0]},o.methodRearg={assignInAllWith:[1,0],assignInWith:[1,2,0],assignAllWith:[1,0],assignWith:[1,2,0],differenceBy:[1,2,0],differenceWith:[1,2,0],getOr:[2,1,0],intersectionBy:[1,2,0],intersectionWith:[1,2,0],isEqualWith:[1,2,0],isMatchWith:[2,1,0],mergeAllWith:[1,0],mergeWith:[1,2,0],padChars:[2,1,0],padCharsEnd:[2,1,0],padCharsStart:[2,1,0],pullAllBy:[2,1,0],pullAllWith:[2,1,0],rangeStep:[1,2,0],rangeStepRight:[1,2,0],setWith:[3,1,2,0],sortedIndexBy:[2,1,0],sortedLastIndexBy:[2,1,0],unionBy:[1,2,0],unionWith:[1,2,0],updateWith:[3,1,2,0],xorBy:[1,2,0],xorWith:[1,2,0],zipWith:[1,2,0]},o.methodSpread={assignAll:{start:0},assignAllWith:{start:0},assignInAll:{start:0},assignInAllWith:{start:0},defaultsAll:{start:0},defaultsDeepAll:{start:0},invokeArgs:{start:2},invokeArgsMap:{start:2},mergeAll:{start:0},mergeAllWith:{start:0},partial:{start:1},partialRight:{start:1},without:{start:1},zipAll:{start:0}},o.mutate={array:{fill:!0,pull:!0,pullAll:!0,pullAllBy:!0,pullAllWith:!0,pullAt:!0,remove:!0,reverse:!0},object:{assign:!0,assignAll:!0,assignAllWith:!0,assignIn:!0,assignInAll:!0,assignInAllWith:!0,assignInWith:!0,assignWith:!0,defaults:!0,defaultsAll:!0,defaultsDeep:!0,defaultsDeepAll:!0,merge:!0,mergeAll:!0,mergeAllWith:!0,mergeWith:!0},set:{set:!0,setWith:!0,unset:!0,update:!0,updateWith:!0}},o.realToAlias=function(){var s=Object.prototype.hasOwnProperty,i=o.aliasToReal,a={};for(var u in i){var _=i[u];s.call(a,_)?a[_].push(u):a[_]=[u]}return a}(),o.remap={assignAll:"assign",assignAllWith:"assignWith",assignInAll:"assignIn",assignInAllWith:"assignInWith",curryN:"curry",curryRightN:"curryRight",defaultsAll:"defaults",defaultsDeepAll:"defaultsDeep",findFrom:"find",findIndexFrom:"findIndex",findLastFrom:"findLast",findLastIndexFrom:"findLastIndex",getOr:"get",includesFrom:"includes",indexOfFrom:"indexOf",invokeArgs:"invoke",invokeArgsMap:"invokeMap",lastIndexOfFrom:"lastIndexOf",mergeAll:"merge",mergeAllWith:"mergeWith",padChars:"pad",padCharsEnd:"padEnd",padCharsStart:"padStart",propertyOf:"get",rangeStep:"range",rangeStepRight:"rangeRight",restFrom:"rest",spreadFrom:"spread",trimChars:"trim",trimCharsEnd:"trimEnd",trimCharsStart:"trimStart",zipAll:"zip"},o.skipFixed={castArray:!0,flow:!0,flowRight:!0,iteratee:!0,mixin:!0,rearg:!0,runInContext:!0},o.skipRearg={add:!0,assign:!0,assignIn:!0,bind:!0,bindKey:!0,concat:!0,difference:!0,divide:!0,eq:!0,gt:!0,gte:!0,isEqual:!0,lt:!0,lte:!0,matchesProperty:!0,merge:!0,multiply:!0,overArgs:!0,partial:!0,partialRight:!0,propertyOf:!0,random:!0,range:!0,rangeRight:!0,subtract:!0,zip:!0,zipObject:!0,zipObjectDeep:!0}},47934(s,o,i){s.exports={ary:i(64626),assign:i(74733),clone:i(32629),curry:i(49747),forEach:i(83729),isArray:i(56449),isError:i(23546),isFunction:i(1882),isWeakMap:i(47886),iteratee:i(33855),keys:i(88984),rearg:i(84195),toInteger:i(61489),toPath:i(42072)}},56367(s,o,i){s.exports=i(77731)},79920(s,o,i){var a=i(73424),u=i(47934);s.exports=function convert(s,o,i){return a(u,s,o,i)}},2874(s){s.exports={}},77731(s,o,i){var a=i(79920)("set",i(63560));a.placeholder=i(2874),s.exports=a},58156(s,o,i){var a=i(47422);s.exports=function get(s,o,i){var u=null==s?void 0:a(s,o);return void 0===u?i:u}},61448(s,o,i){var a=i(20426),u=i(49326);s.exports=function has(s,o){return null!=s&&u(s,o,a)}},80631(s,o,i){var a=i(28077),u=i(49326);s.exports=function hasIn(s,o){return null!=s&&u(s,o,a)}},83488(s){s.exports=function identity(s){return s}},72428(s,o,i){var a=i(27534),u=i(40346),_=Object.prototype,w=_.hasOwnProperty,x=_.propertyIsEnumerable,C=a(function(){return arguments}())?a:function(s){return u(s)&&w.call(s,"callee")&&!x.call(s,"callee")};s.exports=C},56449(s){var o=Array.isArray;s.exports=o},64894(s,o,i){var a=i(1882),u=i(30294);s.exports=function isArrayLike(s){return null!=s&&u(s.length)&&!a(s)}},83693(s,o,i){var a=i(64894),u=i(40346);s.exports=function isArrayLikeObject(s){return u(s)&&a(s)}},53812(s,o,i){var a=i(72552),u=i(40346);s.exports=function isBoolean(s){return!0===s||!1===s||u(s)&&"[object Boolean]"==a(s)}},3656(s,o,i){s=i.nmd(s);var a=i(9325),u=i(89935),_=o&&!o.nodeType&&o,w=_&&s&&!s.nodeType&&s,x=w&&w.exports===_?a.Buffer:void 0,C=(x?x.isBuffer:void 0)||u;s.exports=C},62193(s,o,i){var a=i(88984),u=i(5861),_=i(72428),w=i(56449),x=i(64894),C=i(3656),j=i(55527),L=i(37167),B=Object.prototype.hasOwnProperty;s.exports=function isEmpty(s){if(null==s)return!0;if(x(s)&&(w(s)||"string"==typeof s||"function"==typeof s.splice||C(s)||L(s)||_(s)))return!s.length;var o=u(s);if("[object Map]"==o||"[object Set]"==o)return!s.size;if(j(s))return!a(s).length;for(var i in s)if(B.call(s,i))return!1;return!0}},2404(s,o,i){var a=i(60270);s.exports=function isEqual(s,o){return a(s,o)}},23546(s,o,i){var a=i(72552),u=i(40346),_=i(11331);s.exports=function isError(s){if(!u(s))return!1;var o=a(s);return"[object Error]"==o||"[object DOMException]"==o||"string"==typeof s.message&&"string"==typeof s.name&&!_(s)}},1882(s,o,i){var a=i(72552),u=i(23805);s.exports=function isFunction(s){if(!u(s))return!1;var o=a(s);return"[object Function]"==o||"[object GeneratorFunction]"==o||"[object AsyncFunction]"==o||"[object Proxy]"==o}},30294(s){s.exports=function isLength(s){return"number"==typeof s&&s>-1&&s%1==0&&s<=9007199254740991}},87730(s,o,i){var a=i(29172),u=i(27301),_=i(86009),w=_&&_.isMap,x=w?u(w):a;s.exports=x},5187(s){s.exports=function isNull(s){return null===s}},98023(s,o,i){var a=i(72552),u=i(40346);s.exports=function isNumber(s){return"number"==typeof s||u(s)&&"[object Number]"==a(s)}},23805(s){s.exports=function isObject(s){var o=typeof s;return null!=s&&("object"==o||"function"==o)}},40346(s){s.exports=function isObjectLike(s){return null!=s&&"object"==typeof s}},11331(s,o,i){var a=i(72552),u=i(28879),_=i(40346),w=Function.prototype,x=Object.prototype,C=w.toString,j=x.hasOwnProperty,L=C.call(Object);s.exports=function isPlainObject(s){if(!_(s)||"[object Object]"!=a(s))return!1;var o=u(s);if(null===o)return!0;var i=j.call(o,"constructor")&&o.constructor;return"function"==typeof i&&i instanceof i&&C.call(i)==L}},38440(s,o,i){var a=i(16038),u=i(27301),_=i(86009),w=_&&_.isSet,x=w?u(w):a;s.exports=x},85015(s,o,i){var a=i(72552),u=i(56449),_=i(40346);s.exports=function isString(s){return"string"==typeof s||!u(s)&&_(s)&&"[object String]"==a(s)}},44394(s,o,i){var a=i(72552),u=i(40346);s.exports=function isSymbol(s){return"symbol"==typeof s||u(s)&&"[object Symbol]"==a(s)}},37167(s,o,i){var a=i(4901),u=i(27301),_=i(86009),w=_&&_.isTypedArray,x=w?u(w):a;s.exports=x},47886(s,o,i){var a=i(5861),u=i(40346);s.exports=function isWeakMap(s){return u(s)&&"[object WeakMap]"==a(s)}},33855(s,o,i){var a=i(9999),u=i(15389);s.exports=function iteratee(s){return u("function"==typeof s?s:a(s,1))}},95950(s,o,i){var a=i(70695),u=i(88984),_=i(64894);s.exports=function keys(s){return _(s)?a(s):u(s)}},37241(s,o,i){var a=i(70695),u=i(72903),_=i(64894);s.exports=function keysIn(s){return _(s)?a(s,!0):u(s)}},68090(s){s.exports=function last(s){var o=null==s?0:s.length;return o?s[o-1]:void 0}},50104(s,o,i){var a=i(53661);function memoize(s,o){if("function"!=typeof s||null!=o&&"function"!=typeof o)throw new TypeError("Expected a function");var memoized=function(){var i=arguments,a=o?o.apply(this,i):i[0],u=memoized.cache;if(u.has(a))return u.get(a);var _=s.apply(this,i);return memoized.cache=u.set(a,_)||u,_};return memoized.cache=new(memoize.Cache||a),memoized}memoize.Cache=a,s.exports=memoize},55364(s,o,i){var a=i(85250),u=i(20999)((function(s,o,i){a(s,o,i)}));s.exports=u},6048(s){s.exports=function negate(s){if("function"!=typeof s)throw new TypeError("Expected a function");return function(){var o=arguments;switch(o.length){case 0:return!s.call(this);case 1:return!s.call(this,o[0]);case 2:return!s.call(this,o[0],o[1]);case 3:return!s.call(this,o[0],o[1],o[2])}return!s.apply(this,o)}}},63950(s){s.exports=function noop(){}},10124(s,o,i){var a=i(9325);s.exports=function(){return a.Date.now()}},90179(s,o,i){var a=i(34932),u=i(9999),_=i(19931),w=i(31769),x=i(21791),C=i(53138),j=i(38816),L=i(83349),B=j((function(s,o){var i={};if(null==s)return i;var j=!1;o=a(o,(function(o){return o=w(o,s),j||(j=o.length>1),o})),x(s,L(s),i),j&&(i=u(i,7,C));for(var B=o.length;B--;)_(i,o[B]);return i}));s.exports=B},50583(s,o,i){var a=i(47237),u=i(17255),_=i(28586),w=i(77797);s.exports=function property(s){return _(s)?a(w(s)):u(s)}},84195(s,o,i){var a=i(66977),u=i(38816),_=u((function(s,o){return a(s,256,void 0,void 0,void 0,o)}));s.exports=_},40860(s,o,i){var a=i(40882),u=i(80909),_=i(15389),w=i(85558),x=i(56449);s.exports=function reduce(s,o,i){var C=x(s)?a:w,j=arguments.length<3;return C(s,_(o,4),i,j,u)}},63560(s,o,i){var a=i(73170);s.exports=function set(s,o,i){return null==s?s:a(s,o,i)}},42426(s,o,i){var a=i(14248),u=i(15389),_=i(90916),w=i(56449),x=i(36800);s.exports=function some(s,o,i){var C=w(s)?a:_;return i&&x(s,o,i)&&(o=void 0),C(s,u(o,3))}},63345(s){s.exports=function stubArray(){return[]}},89935(s){s.exports=function stubFalse(){return!1}},17400(s,o,i){var a=i(99374),u=1/0;s.exports=function toFinite(s){return s?(s=a(s))===u||s===-1/0?17976931348623157e292*(s<0?-1:1):s==s?s:0:0===s?s:0}},61489(s,o,i){var a=i(17400);s.exports=function toInteger(s){var o=a(s),i=o%1;return o==o?i?o-i:o:0}},80218(s,o,i){var a=i(13222);s.exports=function toLower(s){return a(s).toLowerCase()}},99374(s,o,i){var a=i(54128),u=i(23805),_=i(44394),w=/^[-+]0x[0-9a-f]+$/i,x=/^0b[01]+$/i,C=/^0o[0-7]+$/i,j=parseInt;s.exports=function toNumber(s){if("number"==typeof s)return s;if(_(s))return NaN;if(u(s)){var o="function"==typeof s.valueOf?s.valueOf():s;s=u(o)?o+"":o}if("string"!=typeof s)return 0===s?s:+s;s=a(s);var i=x.test(s);return i||C.test(s)?j(s.slice(2),i?2:8):w.test(s)?NaN:+s}},42072(s,o,i){var a=i(34932),u=i(23007),_=i(56449),w=i(44394),x=i(61802),C=i(77797),j=i(13222);s.exports=function toPath(s){return _(s)?a(s,C):w(s)?[s]:u(x(j(s)))}},69884(s,o,i){var a=i(21791),u=i(37241);s.exports=function toPlainObject(s){return a(s,u(s))}},13222(s,o,i){var a=i(77556);s.exports=function toString(s){return null==s?"":a(s)}},55808(s,o,i){var a=i(12507)("toUpperCase");s.exports=a},66645(s,o,i){var a=i(1733),u=i(45434),_=i(13222),w=i(22225);s.exports=function words(s,o,i){return s=_(s),void 0===(o=i?void 0:o)?u(s)?w(s):a(s):s.match(o)||[]}},53758(s,o,i){var a=i(30980),u=i(56017),_=i(94033),w=i(56449),x=i(40346),C=i(80257),j=Object.prototype.hasOwnProperty;function lodash(s){if(x(s)&&!w(s)&&!(s instanceof a)){if(s instanceof u)return s;if(j.call(s,"__wrapped__"))return C(s)}return new u(s)}lodash.prototype=_.prototype,lodash.prototype.constructor=lodash,s.exports=lodash},47248(s,o,i){var a=i(16547),u=i(51234);s.exports=function zipObject(s,o){return u(s||[],o||[],a)}},43768(s,o,i){"use strict";var a=i(45981),u=i(85587);o.highlight=highlight,o.highlightAuto=function highlightAuto(s,o){var i,w,x,C,j=o||{},L=j.subset||a.listLanguages(),B=j.prefix,$=L.length,U=-1;null==B&&(B=_);if("string"!=typeof s)throw u("Expected `string` for value, got `%s`",s);w={relevance:0,language:null,value:[]},i={relevance:0,language:null,value:[]};for(;++U<$;)C=L[U],a.getLanguage(C)&&((x=highlight(C,s,o)).language=C,x.relevance>w.relevance&&(w=x),x.relevance>i.relevance&&(w=i,i=x));w.language&&(i.secondBest=w);return i},o.registerLanguage=function registerLanguage(s,o){a.registerLanguage(s,o)},o.listLanguages=function listLanguages(){return a.listLanguages()},o.registerAlias=function registerAlias(s,o){var i,u=s;o&&((u={})[s]=o);for(i in u)a.registerAliases(u[i],{languageName:i})},Emitter.prototype.addText=function text(s){var o,i,a=this.stack;if(""===s)return;o=a[a.length-1],(i=o.children[o.children.length-1])&&"text"===i.type?i.value+=s:o.children.push({type:"text",value:s})},Emitter.prototype.addKeyword=function addKeyword(s,o){this.openNode(o),this.addText(s),this.closeNode()},Emitter.prototype.addSublanguage=function addSublanguage(s,o){var i=this.stack,a=i[i.length-1],u=s.rootNode.children,_=o?{type:"element",tagName:"span",properties:{className:[o]},children:u}:u;a.children=a.children.concat(_)},Emitter.prototype.openNode=function open(s){var o=this.stack,i=this.options.classPrefix+s,a=o[o.length-1],u={type:"element",tagName:"span",properties:{className:[i]},children:[]};a.children.push(u),o.push(u)},Emitter.prototype.closeNode=function close(){this.stack.pop()},Emitter.prototype.closeAllNodes=noop,Emitter.prototype.finalize=noop,Emitter.prototype.toHTML=function toHtmlNoop(){return""};var _="hljs-";function highlight(s,o,i){var w,x=a.configure({}),C=(i||{}).prefix;if("string"!=typeof s)throw u("Expected `string` for name, got `%s`",s);if(!a.getLanguage(s))throw u("Unknown language: `%s` is not registered",s);if("string"!=typeof o)throw u("Expected `string` for value, got `%s`",o);if(null==C&&(C=_),a.configure({__emitter:Emitter,classPrefix:C}),w=a.highlight(o,{language:s,ignoreIllegals:!0}),a.configure(x||{}),w.errorRaised)throw w.errorRaised;return{relevance:w.relevance,language:w.language,value:w.emitter.rootNode.children}}function Emitter(s){this.options=s,this.rootNode={children:[]},this.stack=[this.rootNode]}function noop(){}},71514(s){"use strict";s.exports=Math.abs},58968(s){"use strict";s.exports=Math.floor},94459(s){"use strict";s.exports=Number.isNaN||function isNaN(s){return s!=s}},6188(s){"use strict";s.exports=Math.max},68002(s){"use strict";s.exports=Math.min},75880(s){"use strict";s.exports=Math.pow},70414(s){"use strict";s.exports=Math.round},73093(s,o,i){"use strict";var a=i(94459);s.exports=function sign(s){return a(s)||0===s?s:s<0?-1:1}},92340(s,o,i){const a=i(6048);function coerceElementMatchingCallback(s){return"string"==typeof s?o=>o.element===s:s.constructor&&s.extend?o=>o instanceof s:s}class ArraySlice{constructor(s){this.elements=s||[]}toValue(){return this.elements.map((s=>s.toValue()))}map(s,o){return this.elements.map(s,o)}flatMap(s,o){return this.map(s,o).reduce(((s,o)=>s.concat(o)),[])}compactMap(s,o){const i=[];return this.forEach((a=>{const u=s.bind(o)(a);u&&i.push(u)})),i}filter(s,o){return s=coerceElementMatchingCallback(s),new ArraySlice(this.elements.filter(s,o))}reject(s,o){return s=coerceElementMatchingCallback(s),new ArraySlice(this.elements.filter(a(s),o))}find(s,o){return s=coerceElementMatchingCallback(s),this.elements.find(s,o)}forEach(s,o){this.elements.forEach(s,o)}reduce(s,o){return this.elements.reduce(s,o)}includes(s){return this.elements.some((o=>o.equals(s)))}shift(){return this.elements.shift()}unshift(s){this.elements.unshift(this.refract(s))}push(s){return this.elements.push(this.refract(s)),this}add(s){this.push(s)}get(s){return this.elements[s]}getValue(s){const o=this.elements[s];if(o)return o.toValue()}get length(){return this.elements.length}get isEmpty(){return 0===this.elements.length}get first(){return this.elements[0]}}"undefined"!=typeof Symbol&&(ArraySlice.prototype[Symbol.iterator]=function symbol(){return this.elements[Symbol.iterator]()}),s.exports=ArraySlice},55973(s){class KeyValuePair{constructor(s,o){this.key=s,this.value=o}clone(){const s=new KeyValuePair;return this.key&&(s.key=this.key.clone()),this.value&&(s.value=this.value.clone()),s}}s.exports=KeyValuePair},3110(s,o,i){const a=i(5187),u=i(85015),_=i(98023),w=i(53812),x=i(23805),C=i(85105),j=i(86804);class Namespace{constructor(s){this.elementMap={},this.elementDetection=[],this.Element=j.Element,this.KeyValuePair=j.KeyValuePair,s&&s.noDefault||this.useDefault(),this._attributeElementKeys=[],this._attributeElementArrayKeys=[]}use(s){return s.namespace&&s.namespace({base:this}),s.load&&s.load({base:this}),this}useDefault(){return this.register("null",j.NullElement).register("string",j.StringElement).register("number",j.NumberElement).register("boolean",j.BooleanElement).register("array",j.ArrayElement).register("object",j.ObjectElement).register("member",j.MemberElement).register("ref",j.RefElement).register("link",j.LinkElement),this.detect(a,j.NullElement,!1).detect(u,j.StringElement,!1).detect(_,j.NumberElement,!1).detect(w,j.BooleanElement,!1).detect(Array.isArray,j.ArrayElement,!1).detect(x,j.ObjectElement,!1),this}register(s,o){return this._elements=void 0,this.elementMap[s]=o,this}unregister(s){return this._elements=void 0,delete this.elementMap[s],this}detect(s,o,i){return void 0===i||i?this.elementDetection.unshift([s,o]):this.elementDetection.push([s,o]),this}toElement(s){if(s instanceof this.Element)return s;let o;for(let i=0;i{const o=s[0].toUpperCase()+s.substr(1);this._elements[o]=this.elementMap[s]}))),this._elements}get serialiser(){return new C(this)}}C.prototype.Namespace=Namespace,s.exports=Namespace},10866(s,o,i){const a=i(6048),u=i(92340);class ObjectSlice extends u{map(s,o){return this.elements.map((i=>s.bind(o)(i.value,i.key,i)))}filter(s,o){return new ObjectSlice(this.elements.filter((i=>s.bind(o)(i.value,i.key,i))))}reject(s,o){return this.filter(a(s.bind(o)))}forEach(s,o){return this.elements.forEach(((i,a)=>{s.bind(o)(i.value,i.key,i,a)}))}keys(){return this.map(((s,o)=>o.toValue()))}values(){return this.map((s=>s.toValue()))}}s.exports=ObjectSlice},86804(s,o,i){const a=i(10316),u=i(41067),_=i(71167),w=i(40239),x=i(12242),C=i(6233),j=i(87726),L=i(61045),B=i(86303),$=i(14540),U=i(92340),V=i(10866),z=i(55973);function refract(s){if(s instanceof a)return s;if("string"==typeof s)return new _(s);if("number"==typeof s)return new w(s);if("boolean"==typeof s)return new x(s);if(null===s)return new u;if(Array.isArray(s))return new C(s.map(refract));if("object"==typeof s){return new L(s)}return s}a.prototype.ObjectElement=L,a.prototype.RefElement=$,a.prototype.MemberElement=j,a.prototype.refract=refract,U.prototype.refract=refract,s.exports={Element:a,NullElement:u,StringElement:_,NumberElement:w,BooleanElement:x,ArrayElement:C,MemberElement:j,ObjectElement:L,LinkElement:B,RefElement:$,refract,ArraySlice:U,ObjectSlice:V,KeyValuePair:z}},86303(s,o,i){const a=i(10316);s.exports=class LinkElement extends a{constructor(s,o,i){super(s||[],o,i),this.element="link"}get relation(){return this.attributes.get("relation")}set relation(s){this.attributes.set("relation",s)}get href(){return this.attributes.get("href")}set href(s){this.attributes.set("href",s)}}},14540(s,o,i){const a=i(10316);s.exports=class RefElement extends a{constructor(s,o,i){super(s||[],o,i),this.element="ref",this.path||(this.path="element")}get path(){return this.attributes.get("path")}set path(s){this.attributes.set("path",s)}}},34035(s,o,i){const a=i(3110),u=i(86804);o.g$=a,o.KeyValuePair=i(55973),o.G6=u.ArraySlice,o.ot=u.ObjectSlice,o.Hg=u.Element,o.Om=u.StringElement,o.kT=u.NumberElement,o.bd=u.BooleanElement,o.Os=u.NullElement,o.wE=u.ArrayElement,o.Sh=u.ObjectElement,o.Pr=u.MemberElement,o.sI=u.RefElement,o.Ft=u.LinkElement,o.e=u.refract,i(85105),i(75147)},6233(s,o,i){const a=i(6048),u=i(10316),_=i(92340);class ArrayElement extends u{constructor(s,o,i){super(s||[],o,i),this.element="array"}primitive(){return"array"}get(s){return this.content[s]}getValue(s){const o=this.get(s);if(o)return o.toValue()}getIndex(s){return this.content[s]}set(s,o){return this.content[s]=this.refract(o),this}remove(s){const o=this.content.splice(s,1);return o.length?o[0]:null}map(s,o){return this.content.map(s,o)}flatMap(s,o){return this.map(s,o).reduce(((s,o)=>s.concat(o)),[])}compactMap(s,o){const i=[];return this.forEach((a=>{const u=s.bind(o)(a);u&&i.push(u)})),i}filter(s,o){return new _(this.content.filter(s,o))}reject(s,o){return this.filter(a(s),o)}reduce(s,o){let i,a;void 0!==o?(i=0,a=this.refract(o)):(i=1,a="object"===this.primitive()?this.first.value:this.first);for(let o=i;o{s.bind(o)(i,this.refract(a))}))}shift(){return this.content.shift()}unshift(s){this.content.unshift(this.refract(s))}push(s){return this.content.push(this.refract(s)),this}add(s){this.push(s)}findElements(s,o){const i=o||{},a=!!i.recursive,u=void 0===i.results?[]:i.results;return this.forEach(((o,i,_)=>{a&&void 0!==o.findElements&&o.findElements(s,{results:u,recursive:a}),s(o,i,_)&&u.push(o)})),u}find(s){return new _(this.findElements(s,{recursive:!0}))}findByElement(s){return this.find((o=>o.element===s))}findByClass(s){return this.find((o=>o.classes.includes(s)))}getById(s){return this.find((o=>o.id.toValue()===s)).first}includes(s){return this.content.some((o=>o.equals(s)))}contains(s){return this.includes(s)}empty(){return new this.constructor([])}"fantasy-land/empty"(){return this.empty()}concat(s){return new this.constructor(this.content.concat(s.content))}"fantasy-land/concat"(s){return this.concat(s)}"fantasy-land/map"(s){return new this.constructor(this.map(s))}"fantasy-land/chain"(s){return this.map((o=>s(o)),this).reduce(((s,o)=>s.concat(o)),this.empty())}"fantasy-land/filter"(s){return new this.constructor(this.content.filter(s))}"fantasy-land/reduce"(s,o){return this.content.reduce(s,o)}get length(){return this.content.length}get isEmpty(){return 0===this.content.length}get first(){return this.getIndex(0)}get second(){return this.getIndex(1)}get last(){return this.getIndex(this.length-1)}}ArrayElement.empty=function empty(){return new this},ArrayElement["fantasy-land/empty"]=ArrayElement.empty,"undefined"!=typeof Symbol&&(ArrayElement.prototype[Symbol.iterator]=function symbol(){return this.content[Symbol.iterator]()}),s.exports=ArrayElement},12242(s,o,i){const a=i(10316);s.exports=class BooleanElement extends a{constructor(s,o,i){super(s,o,i),this.element="boolean"}primitive(){return"boolean"}}},10316(s,o,i){const a=i(2404),u=i(55973),_=i(92340);class Element{constructor(s,o,i){o&&(this.meta=o),i&&(this.attributes=i),this.content=s}freeze(){Object.isFrozen(this)||(this._meta&&(this.meta.parent=this,this.meta.freeze()),this._attributes&&(this.attributes.parent=this,this.attributes.freeze()),this.children.forEach((s=>{s.parent=this,s.freeze()}),this),this.content&&Array.isArray(this.content)&&Object.freeze(this.content),Object.freeze(this))}primitive(){}clone(){const s=new this.constructor;return s.element=this.element,this.meta.length&&(s._meta=this.meta.clone()),this.attributes.length&&(s._attributes=this.attributes.clone()),this.content?this.content.clone?s.content=this.content.clone():Array.isArray(this.content)?s.content=this.content.map((s=>s.clone())):s.content=this.content:s.content=this.content,s}toValue(){return this.content instanceof Element?this.content.toValue():this.content instanceof u?{key:this.content.key.toValue(),value:this.content.value?this.content.value.toValue():void 0}:this.content&&this.content.map?this.content.map((s=>s.toValue()),this):this.content}toRef(s){if(""===this.id.toValue())throw Error("Cannot create reference to an element that does not contain an ID");const o=new this.RefElement(this.id.toValue());return s&&(o.path=s),o}findRecursive(...s){if(arguments.length>1&&!this.isFrozen)throw new Error("Cannot find recursive with multiple element names without first freezing the element. Call `element.freeze()`");const o=s.pop();let i=new _;const append=(s,o)=>(s.push(o),s),checkElement=(s,i)=>{i.element===o&&s.push(i);const a=i.findRecursive(o);return a&&a.reduce(append,s),i.content instanceof u&&(i.content.key&&checkElement(s,i.content.key),i.content.value&&checkElement(s,i.content.value)),s};return this.content&&(this.content.element&&checkElement(i,this.content),Array.isArray(this.content)&&this.content.reduce(checkElement,i)),s.isEmpty||(i=i.filter((o=>{let i=o.parents.map((s=>s.element));for(const o in s){const a=s[o],u=i.indexOf(a);if(-1===u)return!1;i=i.splice(0,u)}return!0}))),i}set(s){return this.content=s,this}equals(s){return a(this.toValue(),s)}getMetaProperty(s,o){if(!this.meta.hasKey(s)){if(this.isFrozen){const s=this.refract(o);return s.freeze(),s}this.meta.set(s,o)}return this.meta.get(s)}setMetaProperty(s,o){this.meta.set(s,o)}get element(){return this._storedElement||"element"}set element(s){this._storedElement=s}get content(){return this._content}set content(s){if(s instanceof Element)this._content=s;else if(s instanceof _)this.content=s.elements;else if("string"==typeof s||"number"==typeof s||"boolean"==typeof s||"null"===s||null==s)this._content=s;else if(s instanceof u)this._content=s;else if(Array.isArray(s))this._content=s.map(this.refract);else{if("object"!=typeof s)throw new Error("Cannot set content to given value");this._content=Object.keys(s).map((o=>new this.MemberElement(o,s[o])))}}get meta(){if(!this._meta){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._meta=new this.ObjectElement}return this._meta}set meta(s){s instanceof this.ObjectElement?this._meta=s:this.meta.set(s||{})}get attributes(){if(!this._attributes){if(this.isFrozen){const s=new this.ObjectElement;return s.freeze(),s}this._attributes=new this.ObjectElement}return this._attributes}set attributes(s){s instanceof this.ObjectElement?this._attributes=s:this.attributes.set(s||{})}get id(){return this.getMetaProperty("id","")}set id(s){this.setMetaProperty("id",s)}get classes(){return this.getMetaProperty("classes",[])}set classes(s){this.setMetaProperty("classes",s)}get title(){return this.getMetaProperty("title","")}set title(s){this.setMetaProperty("title",s)}get description(){return this.getMetaProperty("description","")}set description(s){this.setMetaProperty("description",s)}get links(){return this.getMetaProperty("links",[])}set links(s){this.setMetaProperty("links",s)}get isFrozen(){return Object.isFrozen(this)}get parents(){let{parent:s}=this;const o=new _;for(;s;)o.push(s),s=s.parent;return o}get children(){if(Array.isArray(this.content))return new _(this.content);if(this.content instanceof u){const s=new _([this.content.key]);return this.content.value&&s.push(this.content.value),s}return this.content instanceof Element?new _([this.content]):new _}get recursiveChildren(){const s=new _;return this.children.forEach((o=>{s.push(o),o.recursiveChildren.forEach((o=>{s.push(o)}))})),s}}s.exports=Element},87726(s,o,i){const a=i(55973),u=i(10316);s.exports=class MemberElement extends u{constructor(s,o,i,u){super(new a,i,u),this.element="member",this.key=s,this.value=o}get key(){return this.content.key}set key(s){this.content.key=this.refract(s)}get value(){return this.content.value}set value(s){this.content.value=this.refract(s)}}},41067(s,o,i){const a=i(10316);s.exports=class NullElement extends a{constructor(s,o,i){super(s||null,o,i),this.element="null"}primitive(){return"null"}set(){return new Error("Cannot set the value of null")}}},40239(s,o,i){const a=i(10316);s.exports=class NumberElement extends a{constructor(s,o,i){super(s,o,i),this.element="number"}primitive(){return"number"}}},61045(s,o,i){const a=i(6048),u=i(23805),_=i(6233),w=i(87726),x=i(10866);s.exports=class ObjectElement extends _{constructor(s,o,i){super(s||[],o,i),this.element="object"}primitive(){return"object"}toValue(){return this.content.reduce(((s,o)=>(s[o.key.toValue()]=o.value?o.value.toValue():void 0,s)),{})}get(s){const o=this.getMember(s);if(o)return o.value}getMember(s){if(void 0!==s)return this.content.find((o=>o.key.toValue()===s))}remove(s){let o=null;return this.content=this.content.filter((i=>i.key.toValue()!==s||(o=i,!1))),o}getKey(s){const o=this.getMember(s);if(o)return o.key}set(s,o){if(u(s))return Object.keys(s).forEach((o=>{this.set(o,s[o])})),this;const i=s,a=this.getMember(i);return a?a.value=o:this.content.push(new w(i,o)),this}keys(){return this.content.map((s=>s.key.toValue()))}values(){return this.content.map((s=>s.value.toValue()))}hasKey(s){return this.content.some((o=>o.key.equals(s)))}items(){return this.content.map((s=>[s.key.toValue(),s.value.toValue()]))}map(s,o){return this.content.map((i=>s.bind(o)(i.value,i.key,i)))}compactMap(s,o){const i=[];return this.forEach(((a,u,_)=>{const w=s.bind(o)(a,u,_);w&&i.push(w)})),i}filter(s,o){return new x(this.content).filter(s,o)}reject(s,o){return this.filter(a(s),o)}forEach(s,o){return this.content.forEach((i=>s.bind(o)(i.value,i.key,i)))}}},71167(s,o,i){const a=i(10316);s.exports=class StringElement extends a{constructor(s,o,i){super(s,o,i),this.element="string"}primitive(){return"string"}get length(){return this.content.length}}},75147(s,o,i){const a=i(85105);s.exports=class JSON06Serialiser extends a{serialise(s){if(!(s instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${s}\` is not an Element instance`);let o;s._attributes&&s.attributes.get("variable")&&(o=s.attributes.get("variable"));const i={element:s.element};s._meta&&s._meta.length>0&&(i.meta=this.serialiseObject(s.meta));const a="enum"===s.element||-1!==s.attributes.keys().indexOf("enumerations");if(a){const o=this.enumSerialiseAttributes(s);o&&(i.attributes=o)}else if(s._attributes&&s._attributes.length>0){let{attributes:a}=s;a.get("metadata")&&(a=a.clone(),a.set("meta",a.get("metadata")),a.remove("metadata")),"member"===s.element&&o&&(a=a.clone(),a.remove("variable")),a.length>0&&(i.attributes=this.serialiseObject(a))}if(a)i.content=this.enumSerialiseContent(s,i);else if(this[`${s.element}SerialiseContent`])i.content=this[`${s.element}SerialiseContent`](s,i);else if(void 0!==s.content){let a;o&&s.content.key?(a=s.content.clone(),a.key.attributes.set("variable",o),a=this.serialiseContent(a)):a=this.serialiseContent(s.content),this.shouldSerialiseContent(s,a)&&(i.content=a)}else this.shouldSerialiseContent(s,s.content)&&s instanceof this.namespace.elements.Array&&(i.content=[]);return i}shouldSerialiseContent(s,o){return"parseResult"===s.element||"httpRequest"===s.element||"httpResponse"===s.element||"category"===s.element||"link"===s.element||void 0!==o&&(!Array.isArray(o)||0!==o.length)}refSerialiseContent(s,o){return delete o.attributes,{href:s.toValue(),path:s.path.toValue()}}sourceMapSerialiseContent(s){return s.toValue()}dataStructureSerialiseContent(s){return[this.serialiseContent(s.content)]}enumSerialiseAttributes(s){const o=s.attributes.clone(),i=o.remove("enumerations")||new this.namespace.elements.Array([]),a=o.get("default");let u=o.get("samples")||new this.namespace.elements.Array([]);if(a&&a.content&&(a.content.attributes&&a.content.attributes.remove("typeAttributes"),o.set("default",new this.namespace.elements.Array([a.content]))),u.forEach((s=>{s.content&&s.content.element&&s.content.attributes.remove("typeAttributes")})),s.content&&0!==i.length&&u.unshift(s.content),u=u.map((s=>s instanceof this.namespace.elements.Array?[s]:new this.namespace.elements.Array([s.content]))),u.length&&o.set("samples",u),o.length>0)return this.serialiseObject(o)}enumSerialiseContent(s){if(s._attributes){const o=s.attributes.get("enumerations");if(o&&o.length>0)return o.content.map((s=>{const o=s.clone();return o.attributes.remove("typeAttributes"),this.serialise(o)}))}if(s.content){const o=s.content.clone();return o.attributes.remove("typeAttributes"),[this.serialise(o)]}return[]}deserialise(s){if("string"==typeof s)return new this.namespace.elements.String(s);if("number"==typeof s)return new this.namespace.elements.Number(s);if("boolean"==typeof s)return new this.namespace.elements.Boolean(s);if(null===s)return new this.namespace.elements.Null;if(Array.isArray(s))return new this.namespace.elements.Array(s.map(this.deserialise,this));const o=this.namespace.getElementClass(s.element),i=new o;i.element!==s.element&&(i.element=s.element),s.meta&&this.deserialiseObject(s.meta,i.meta),s.attributes&&this.deserialiseObject(s.attributes,i.attributes);const a=this.deserialiseContent(s.content);if(void 0===a&&null!==i.content||(i.content=a),"enum"===i.element){i.content&&i.attributes.set("enumerations",i.content);let s=i.attributes.get("samples");if(i.attributes.remove("samples"),s){const a=s;s=new this.namespace.elements.Array,a.forEach((a=>{a.forEach((a=>{const u=new o(a);u.element=i.element,s.push(u)}))}));const u=s.shift();i.content=u?u.content:void 0,i.attributes.set("samples",s)}else i.content=void 0;let a=i.attributes.get("default");if(a&&a.length>0){a=a.get(0);const s=new o(a);s.element=i.element,i.attributes.set("default",s)}}else if("dataStructure"===i.element&&Array.isArray(i.content))[i.content]=i.content;else if("category"===i.element){const s=i.attributes.get("meta");s&&(i.attributes.set("metadata",s),i.attributes.remove("meta"))}else"member"===i.element&&i.key&&i.key._attributes&&i.key._attributes.getValue("variable")&&(i.attributes.set("variable",i.key.attributes.get("variable")),i.key.attributes.remove("variable"));return i}serialiseContent(s){if(s instanceof this.namespace.elements.Element)return this.serialise(s);if(s instanceof this.namespace.KeyValuePair){const o={key:this.serialise(s.key)};return s.value&&(o.value=this.serialise(s.value)),o}return s&&s.map?s.map(this.serialise,this):s}deserialiseContent(s){if(s){if(s.element)return this.deserialise(s);if(s.key){const o=new this.namespace.KeyValuePair(this.deserialise(s.key));return s.value&&(o.value=this.deserialise(s.value)),o}if(s.map)return s.map(this.deserialise,this)}return s}shouldRefract(s){return!!(s._attributes&&s.attributes.keys().length||s._meta&&s.meta.keys().length)||"enum"!==s.element&&(s.element!==s.primitive()||"member"===s.element)}convertKeyToRefract(s,o){return this.shouldRefract(o)?this.serialise(o):"enum"===o.element?this.serialiseEnum(o):"array"===o.element?o.map((o=>this.shouldRefract(o)||"default"===s?this.serialise(o):"array"===o.element||"object"===o.element||"enum"===o.element?o.children.map((s=>this.serialise(s))):o.toValue())):"object"===o.element?(o.content||[]).map(this.serialise,this):o.toValue()}serialiseEnum(s){return s.children.map((s=>this.serialise(s)))}serialiseObject(s){const o={};return s.forEach(((s,i)=>{if(s){const a=i.toValue();o[a]=this.convertKeyToRefract(a,s)}})),o}deserialiseObject(s,o){Object.keys(s).forEach((i=>{o.set(i,this.deserialise(s[i]))}))}}},85105(s){s.exports=class JSONSerialiser{constructor(s){this.namespace=s||new this.Namespace}serialise(s){if(!(s instanceof this.namespace.elements.Element))throw new TypeError(`Given element \`${s}\` is not an Element instance`);const o={element:s.element};s._meta&&s._meta.length>0&&(o.meta=this.serialiseObject(s.meta)),s._attributes&&s._attributes.length>0&&(o.attributes=this.serialiseObject(s.attributes));const i=this.serialiseContent(s.content);return void 0!==i&&(o.content=i),o}deserialise(s){if(!s.element)throw new Error("Given value is not an object containing an element name");const o=new(this.namespace.getElementClass(s.element));o.element!==s.element&&(o.element=s.element),s.meta&&this.deserialiseObject(s.meta,o.meta),s.attributes&&this.deserialiseObject(s.attributes,o.attributes);const i=this.deserialiseContent(s.content);return void 0===i&&null!==o.content||(o.content=i),o}serialiseContent(s){if(s instanceof this.namespace.elements.Element)return this.serialise(s);if(s instanceof this.namespace.KeyValuePair){const o={key:this.serialise(s.key)};return s.value&&(o.value=this.serialise(s.value)),o}if(s&&s.map){if(0===s.length)return;return s.map(this.serialise,this)}return s}deserialiseContent(s){if(s){if(s.element)return this.deserialise(s);if(s.key){const o=new this.namespace.KeyValuePair(this.deserialise(s.key));return s.value&&(o.value=this.deserialise(s.value)),o}if(s.map)return s.map(this.deserialise,this)}return s}serialiseObject(s){const o={};if(s.forEach(((s,i)=>{s&&(o[i.toValue()]=this.serialise(s))})),0!==Object.keys(o).length)return o}deserialiseObject(s,o){Object.keys(s).forEach((i=>{o.set(i,this.deserialise(s[i]))}))}}},76578(s){"use strict";s.exports=["Float16Array","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"]},65606(s){var o,i,a=s.exports={};function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(s){if(o===setTimeout)return setTimeout(s,0);if((o===defaultSetTimout||!o)&&setTimeout)return o=setTimeout,setTimeout(s,0);try{return o(s,0)}catch(i){try{return o.call(null,s,0)}catch(i){return o.call(this,s,0)}}}!function(){try{o="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(s){o=defaultSetTimout}try{i="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(s){i=defaultClearTimeout}}();var u,_=[],w=!1,x=-1;function cleanUpNextTick(){w&&u&&(w=!1,u.length?_=u.concat(_):x=-1,_.length&&drainQueue())}function drainQueue(){if(!w){var s=runTimeout(cleanUpNextTick);w=!0;for(var o=_.length;o;){for(u=_,_=[];++x1)for(var i=1;i_)throw new RangeError("requested too many random bytes");var i=w.allocUnsafe(s);if(s>0)if(s>u)for(var C=0;C=0||(u[i]=s[i]);return u}(s,o);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(s,i)&&(u[i]=s[i])}return u}function _defineProperties(s,o){for(var i=0;i=0||(u[i]=s[i]);return u}(s,o);if(Object.getOwnPropertySymbols){var _=Object.getOwnPropertySymbols(s);for(a=0;a<_.length;a++)i=_[a],o.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(s,i)&&(u[i]=s[i])}return u}function ownKeys(s,o){var i=Object.keys(s);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(s);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(s,o).enumerable}))),i.push.apply(i,a)}return i}function _objectSpread(s){for(var o=1;o=a?i.notify(s):o.length>u.length&&i.notify(_objectSpread(_objectSpread({},s),{},{target:_objectSpread(_objectSpread({},s.target),{},{value:""})}))}))})),_defineProperty(_assertThisInitialized(i),"onKeyDown",(function(s){"Enter"===s.key&&i.forceNotify(s);var o=i.props.onKeyDown;o&&(s.persist(),o(s))})),_defineProperty(_assertThisInitialized(i),"onBlur",(function(s){i.forceNotify(s);var o=i.props.onBlur;o&&(s.persist(),o(s))})),_defineProperty(_assertThisInitialized(i),"createNotifier",(function(s){if(s<0)i.notify=function(){return null};else if(0===s)i.notify=i.doNotify;else{var o=(0,u.default)((function(s){i.isDebouncing=!1,i.doNotify(s)}),s);i.notify=function(s){i.isDebouncing=!0,o(s)},i.flush=function(){return o.flush()},i.cancel=function(){i.isDebouncing=!1,o.cancel()}}})),_defineProperty(_assertThisInitialized(i),"doNotify",(function(){i.props.onChange.apply(void 0,arguments)})),_defineProperty(_assertThisInitialized(i),"forceNotify",(function(s){var o=i.props.debounceTimeout;if(i.isDebouncing||!(o>0)){i.cancel&&i.cancel();var a=i.state.value,u=i.props.minLength;a.length>=u?i.doNotify(s):i.doNotify(_objectSpread(_objectSpread({},s),{},{target:_objectSpread(_objectSpread({},s.target),{},{value:a})}))}})),i.isDebouncing=!1,i.state={value:void 0===s.value||null===s.value?"":s.value};var a=i.props.debounceTimeout;return i.createNotifier(a),i}return function _createClass(s,o,i){return o&&_defineProperties(s.prototype,o),i&&_defineProperties(s,i),Object.defineProperty(s,"prototype",{writable:!1}),s}(DebounceInput,[{key:"componentDidUpdate",value:function componentDidUpdate(s){if(!this.isDebouncing){var o=this.props,i=o.value,a=o.debounceTimeout,u=s.debounceTimeout,_=s.value,w=this.state.value;void 0!==i&&_!==i&&w!==i&&this.setState({value:i}),a!==u&&this.createNotifier(a)}}},{key:"componentWillUnmount",value:function componentWillUnmount(){this.flush&&this.flush()}},{key:"render",value:function render(){var s,o,i=this.props,u=i.element,w=(i.onChange,i.value,i.minLength,i.debounceTimeout,i.forceNotifyByEnter),x=i.forceNotifyOnBlur,C=i.onKeyDown,j=i.onBlur,L=i.inputRef,B=_objectWithoutProperties(i,_),$=this.state.value;s=w?{onKeyDown:this.onKeyDown}:C?{onKeyDown:C}:{},o=x?{onBlur:this.onBlur}:j?{onBlur:j}:{};var U=L?{ref:L}:{};return a.default.createElement(u,_objectSpread(_objectSpread(_objectSpread(_objectSpread({},B),{},{onChange:this.onChange,value:$},s),o),U))}}]),DebounceInput}(a.default.PureComponent);o.DebounceInput=w,_defineProperty(w,"defaultProps",{element:"input",type:"text",onKeyDown:void 0,onBlur:void 0,value:void 0,minLength:0,debounceTimeout:100,forceNotifyByEnter:!0,forceNotifyOnBlur:!0,inputRef:void 0})},24677(s,o,i){"use strict";var a=i(81214).DebounceInput;a.DebounceInput=a,s.exports=a},22551(s,o,i){"use strict";var a=i(96540),u=i(69982);function p(s){for(var o="https://reactjs.org/docs/error-decoder.html?invariant="+s,i=1;i
'); + } + value() { + return this.buffer; + } + span(s) { + this.buffer += ``; + } + } + class TokenTree { + constructor() { + ((this.rootNode = { children: [] }), (this.stack = [this.rootNode])); + } + get top() { + return this.stack[this.stack.length - 1]; + } + get root() { + return this.rootNode; + } + add(s) { + this.top.children.push(s); + } + openNode(s) { + const o = { kind: s, children: [] }; + (this.add(o), this.stack.push(o)); + } + closeNode() { + if (this.stack.length > 1) return this.stack.pop(); + } + closeAllNodes() { + for (; this.closeNode(); ); + } + toJSON() { + return JSON.stringify(this.rootNode, null, 4); + } + walk(s) { + return this.constructor._walk(s, this.rootNode); + } + static _walk(s, o) { + return ( + 'string' == typeof o + ? s.addText(o) + : o.children && + (s.openNode(o), o.children.forEach((o) => this._walk(s, o)), s.closeNode(o)), + s + ); + } + static _collapse(s) { + 'string' != typeof s && + s.children && + (s.children.every((s) => 'string' == typeof s) + ? (s.children = [s.children.join('')]) + : s.children.forEach((s) => { + TokenTree._collapse(s); + })); + } + } + class TokenTreeEmitter extends TokenTree { + constructor(s) { + (super(), (this.options = s)); + } + addKeyword(s, o) { + '' !== s && (this.openNode(o), this.addText(s), this.closeNode()); + } + addText(s) { + '' !== s && this.add(s); + } + addSublanguage(s, o) { + const i = s.root; + ((i.kind = o), (i.sublanguage = !0), this.add(i)); + } + toHTML() { + return new HTMLRenderer(this, this.options).value(); + } + finalize() { + return !0; + } + } + function source(s) { + return s ? ('string' == typeof s ? s : s.source) : null; + } + const a = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./; + const u = '[a-zA-Z]\\w*', + _ = '[a-zA-Z_]\\w*', + w = '\\b\\d+(\\.\\d+)?', + x = '(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)', + C = '\\b(0b[01]+)', + j = { begin: '\\\\[\\s\\S]', relevance: 0 }, + L = { className: 'string', begin: "'", end: "'", illegal: '\\n', contains: [j] }, + B = { className: 'string', begin: '"', end: '"', illegal: '\\n', contains: [j] }, + $ = { + begin: + /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ + }, + COMMENT = function (s, o, i = {}) { + const a = inherit({ className: 'comment', begin: s, end: o, contains: [] }, i); + return ( + a.contains.push($), + a.contains.push({ + className: 'doctag', + begin: '(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):', + relevance: 0 + }), + a + ); + }, + U = COMMENT('//', '$'), + V = COMMENT('/\\*', '\\*/'), + z = COMMENT('#', '$'), + Y = { className: 'number', begin: w, relevance: 0 }, + Z = { className: 'number', begin: x, relevance: 0 }, + ee = { className: 'number', begin: C, relevance: 0 }, + ie = { + className: 'number', + begin: + w + + '(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?', + relevance: 0 + }, + ae = { + begin: /(?=\/[^/\n]*\/)/, + contains: [ + { + className: 'regexp', + begin: /\//, + end: /\/[gimuy]*/, + illegal: /\n/, + contains: [j, { begin: /\[/, end: /\]/, relevance: 0, contains: [j] }] + } + ] + }, + ce = { className: 'title', begin: u, relevance: 0 }, + le = { className: 'title', begin: _, relevance: 0 }, + pe = { begin: '\\.\\s*' + _, relevance: 0 }; + var de = Object.freeze({ + __proto__: null, + MATCH_NOTHING_RE: /\b\B/, + IDENT_RE: u, + UNDERSCORE_IDENT_RE: _, + NUMBER_RE: w, + C_NUMBER_RE: x, + BINARY_NUMBER_RE: C, + RE_STARTERS_RE: + '!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~', + SHEBANG: (s = {}) => { + const o = /^#![ ]*\//; + return ( + s.binary && + (s.begin = (function concat(...s) { + return s.map((s) => source(s)).join(''); + })(o, /.*\b/, s.binary, /\b.*/)), + inherit( + { + className: 'meta', + begin: o, + end: /$/, + relevance: 0, + 'on:begin': (s, o) => { + 0 !== s.index && o.ignoreMatch(); + } + }, + s + ) + ); + }, + BACKSLASH_ESCAPE: j, + APOS_STRING_MODE: L, + QUOTE_STRING_MODE: B, + PHRASAL_WORDS_MODE: $, + COMMENT, + C_LINE_COMMENT_MODE: U, + C_BLOCK_COMMENT_MODE: V, + HASH_COMMENT_MODE: z, + NUMBER_MODE: Y, + C_NUMBER_MODE: Z, + BINARY_NUMBER_MODE: ee, + CSS_NUMBER_MODE: ie, + REGEXP_MODE: ae, + TITLE_MODE: ce, + UNDERSCORE_TITLE_MODE: le, + METHOD_GUARD: pe, + END_SAME_AS_BEGIN: function (s) { + return Object.assign(s, { + 'on:begin': (s, o) => { + o.data._beginMatch = s[1]; + }, + 'on:end': (s, o) => { + o.data._beginMatch !== s[1] && o.ignoreMatch(); + } + }); + } + }); + function skipIfhasPrecedingDot(s, o) { + '.' === s.input[s.index - 1] && o.ignoreMatch(); + } + function beginKeywords(s, o) { + o && + s.beginKeywords && + ((s.begin = '\\b(' + s.beginKeywords.split(' ').join('|') + ')(?!\\.)(?=\\b|\\s)'), + (s.__beforeBegin = skipIfhasPrecedingDot), + (s.keywords = s.keywords || s.beginKeywords), + delete s.beginKeywords, + void 0 === s.relevance && (s.relevance = 0)); + } + function compileIllegal(s, o) { + Array.isArray(s.illegal) && + (s.illegal = (function either(...s) { + return '(' + s.map((s) => source(s)).join('|') + ')'; + })(...s.illegal)); + } + function compileMatch(s, o) { + if (s.match) { + if (s.begin || s.end) throw new Error('begin & end are not supported with match'); + ((s.begin = s.match), delete s.match); + } + } + function compileRelevance(s, o) { + void 0 === s.relevance && (s.relevance = 1); + } + const fe = [ + 'of', + 'and', + 'for', + 'in', + 'not', + 'or', + 'if', + 'then', + 'parent', + 'list', + 'value' + ]; + function compileKeywords(s, o, i = 'keyword') { + const a = {}; + return ( + 'string' == typeof s + ? compileList(i, s.split(' ')) + : Array.isArray(s) + ? compileList(i, s) + : Object.keys(s).forEach(function (i) { + Object.assign(a, compileKeywords(s[i], o, i)); + }), + a + ); + function compileList(s, i) { + (o && (i = i.map((s) => s.toLowerCase())), + i.forEach(function (o) { + const i = o.split('|'); + a[i[0]] = [s, scoreForKeyword(i[0], i[1])]; + })); + } + } + function scoreForKeyword(s, o) { + return o + ? Number(o) + : (function commonKeyword(s) { + return fe.includes(s.toLowerCase()); + })(s) + ? 0 + : 1; + } + function compileLanguage(s, { plugins: o }) { + function langRe(o, i) { + return new RegExp(source(o), 'm' + (s.case_insensitive ? 'i' : '') + (i ? 'g' : '')); + } + class MultiRegex { + constructor() { + ((this.matchIndexes = {}), + (this.regexes = []), + (this.matchAt = 1), + (this.position = 0)); + } + addRule(s, o) { + ((o.position = this.position++), + (this.matchIndexes[this.matchAt] = o), + this.regexes.push([o, s]), + (this.matchAt += + (function countMatchGroups(s) { + return new RegExp(s.toString() + '|').exec('').length - 1; + })(s) + 1)); + } + compile() { + 0 === this.regexes.length && (this.exec = () => null); + const s = this.regexes.map((s) => s[1]); + ((this.matcherRe = langRe( + (function join(s, o = '|') { + let i = 0; + return s + .map((s) => { + i += 1; + const o = i; + let u = source(s), + _ = ''; + for (; u.length > 0; ) { + const s = a.exec(u); + if (!s) { + _ += u; + break; + } + ((_ += u.substring(0, s.index)), + (u = u.substring(s.index + s[0].length)), + '\\' === s[0][0] && s[1] + ? (_ += '\\' + String(Number(s[1]) + o)) + : ((_ += s[0]), '(' === s[0] && i++)); + } + return _; + }) + .map((s) => `(${s})`) + .join(o); + })(s), + !0 + )), + (this.lastIndex = 0)); + } + exec(s) { + this.matcherRe.lastIndex = this.lastIndex; + const o = this.matcherRe.exec(s); + if (!o) return null; + const i = o.findIndex((s, o) => o > 0 && void 0 !== s), + a = this.matchIndexes[i]; + return (o.splice(0, i), Object.assign(o, a)); + } + } + class ResumableMultiRegex { + constructor() { + ((this.rules = []), + (this.multiRegexes = []), + (this.count = 0), + (this.lastIndex = 0), + (this.regexIndex = 0)); + } + getMatcher(s) { + if (this.multiRegexes[s]) return this.multiRegexes[s]; + const o = new MultiRegex(); + return ( + this.rules.slice(s).forEach(([s, i]) => o.addRule(s, i)), + o.compile(), + (this.multiRegexes[s] = o), + o + ); + } + resumingScanAtSamePosition() { + return 0 !== this.regexIndex; + } + considerAll() { + this.regexIndex = 0; + } + addRule(s, o) { + (this.rules.push([s, o]), 'begin' === o.type && this.count++); + } + exec(s) { + const o = this.getMatcher(this.regexIndex); + o.lastIndex = this.lastIndex; + let i = o.exec(s); + if (this.resumingScanAtSamePosition()) + if (i && i.index === this.lastIndex); + else { + const o = this.getMatcher(0); + ((o.lastIndex = this.lastIndex + 1), (i = o.exec(s))); + } + return ( + i && + ((this.regexIndex += i.position + 1), + this.regexIndex === this.count && this.considerAll()), + i + ); + } + } + if ( + (s.compilerExtensions || (s.compilerExtensions = []), + s.contains && s.contains.includes('self')) + ) + throw new Error( + 'ERR: contains `self` is not supported at the top-level of a language. See documentation.' + ); + return ( + (s.classNameAliases = inherit(s.classNameAliases || {})), + (function compileMode(o, i) { + const a = o; + if (o.isCompiled) return a; + ([compileMatch].forEach((s) => s(o, i)), + s.compilerExtensions.forEach((s) => s(o, i)), + (o.__beforeBegin = null), + [beginKeywords, compileIllegal, compileRelevance].forEach((s) => s(o, i)), + (o.isCompiled = !0)); + let u = null; + if ( + ('object' == typeof o.keywords && + ((u = o.keywords.$pattern), delete o.keywords.$pattern), + o.keywords && (o.keywords = compileKeywords(o.keywords, s.case_insensitive)), + o.lexemes && u) + ) + throw new Error( + 'ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ' + ); + return ( + (u = u || o.lexemes || /\w+/), + (a.keywordPatternRe = langRe(u, !0)), + i && + (o.begin || (o.begin = /\B|\b/), + (a.beginRe = langRe(o.begin)), + o.endSameAsBegin && (o.end = o.begin), + o.end || o.endsWithParent || (o.end = /\B|\b/), + o.end && (a.endRe = langRe(o.end)), + (a.terminatorEnd = source(o.end) || ''), + o.endsWithParent && + i.terminatorEnd && + (a.terminatorEnd += (o.end ? '|' : '') + i.terminatorEnd)), + o.illegal && (a.illegalRe = langRe(o.illegal)), + o.contains || (o.contains = []), + (o.contains = [].concat( + ...o.contains.map(function (s) { + return (function expandOrCloneMode(s) { + s.variants && + !s.cachedVariants && + (s.cachedVariants = s.variants.map(function (o) { + return inherit(s, { variants: null }, o); + })); + if (s.cachedVariants) return s.cachedVariants; + if (dependencyOnParent(s)) + return inherit(s, { starts: s.starts ? inherit(s.starts) : null }); + if (Object.isFrozen(s)) return inherit(s); + return s; + })('self' === s ? o : s); + }) + )), + o.contains.forEach(function (s) { + compileMode(s, a); + }), + o.starts && compileMode(o.starts, i), + (a.matcher = (function buildModeRegex(s) { + const o = new ResumableMultiRegex(); + return ( + s.contains.forEach((s) => o.addRule(s.begin, { rule: s, type: 'begin' })), + s.terminatorEnd && o.addRule(s.terminatorEnd, { type: 'end' }), + s.illegal && o.addRule(s.illegal, { type: 'illegal' }), + o + ); + })(a)), + a + ); + })(s) + ); + } + function dependencyOnParent(s) { + return !!s && (s.endsWithParent || dependencyOnParent(s.starts)); + } + function BuildVuePlugin(s) { + const o = { + props: ['language', 'code', 'autodetect'], + data: function () { + return { detectedLanguage: '', unknownLanguage: !1 }; + }, + computed: { + className() { + return this.unknownLanguage ? '' : 'hljs ' + this.detectedLanguage; + }, + highlighted() { + if (!this.autoDetect && !s.getLanguage(this.language)) + return ( + console.warn( + `The language "${this.language}" you specified could not be found.` + ), + (this.unknownLanguage = !0), + escapeHTML(this.code) + ); + let o = {}; + return ( + this.autoDetect + ? ((o = s.highlightAuto(this.code)), (this.detectedLanguage = o.language)) + : ((o = s.highlight(this.language, this.code, this.ignoreIllegals)), + (this.detectedLanguage = this.language)), + o.value + ); + }, + autoDetect() { + return ( + !this.language || + (function hasValueOrEmptyAttribute(s) { + return Boolean(s || '' === s); + })(this.autodetect) + ); + }, + ignoreIllegals: () => !0 + }, + render(s) { + return s('pre', {}, [ + s('code', { class: this.className, domProps: { innerHTML: this.highlighted } }) + ]); + } + }; + return { + Component: o, + VuePlugin: { + install(s) { + s.component('highlightjs', o); + } + } + }; + } + const ye = { + 'after:highlightElement': ({ el: s, result: o, text: i }) => { + const a = nodeStream(s); + if (!a.length) return; + const u = document.createElement('div'); + ((u.innerHTML = o.value), + (o.value = (function mergeStreams(s, o, i) { + let a = 0, + u = ''; + const _ = []; + function selectStream() { + return s.length && o.length + ? s[0].offset !== o[0].offset + ? s[0].offset < o[0].offset + ? s + : o + : 'start' === o[0].event + ? s + : o + : s.length + ? s + : o; + } + function open(s) { + function attributeString(s) { + return ' ' + s.nodeName + '="' + escapeHTML(s.value) + '"'; + } + u += '<' + tag(s) + [].map.call(s.attributes, attributeString).join('') + '>'; + } + function close(s) { + u += ''; + } + function render(s) { + ('start' === s.event ? open : close)(s.node); + } + for (; s.length || o.length; ) { + let o = selectStream(); + if ( + ((u += escapeHTML(i.substring(a, o[0].offset))), (a = o[0].offset), o === s) + ) { + _.reverse().forEach(close); + do { + (render(o.splice(0, 1)[0]), (o = selectStream())); + } while (o === s && o.length && o[0].offset === a); + _.reverse().forEach(open); + } else + ('start' === o[0].event ? _.push(o[0].node) : _.pop(), + render(o.splice(0, 1)[0])); + } + return u + escapeHTML(i.substr(a)); + })(a, nodeStream(u), i))); + } + }; + function tag(s) { + return s.nodeName.toLowerCase(); + } + function nodeStream(s) { + const o = []; + return ( + (function _nodeStream(s, i) { + for (let a = s.firstChild; a; a = a.nextSibling) + 3 === a.nodeType + ? (i += a.nodeValue.length) + : 1 === a.nodeType && + (o.push({ event: 'start', offset: i, node: a }), + (i = _nodeStream(a, i)), + tag(a).match(/br|hr|img|input/) || + o.push({ event: 'stop', offset: i, node: a })); + return i; + })(s, 0), + o + ); + } + const be = {}, + error = (s) => { + console.error(s); + }, + warn = (s, ...o) => { + console.log(`WARN: ${s}`, ...o); + }, + deprecated = (s, o) => { + be[`${s}/${o}`] || + (console.log(`Deprecated as of ${s}. ${o}`), (be[`${s}/${o}`] = !0)); + }, + Se = escapeHTML, + _e = inherit, + we = Symbol('nomatch'); + var xe = (function (s) { + const i = Object.create(null), + a = Object.create(null), + u = []; + let _ = !0; + const w = /(^(<[^>]+>|\t|)+|\n)/gm, + x = + "Could not find the language '{}', did you forget to load/include a language module?", + C = { disableAutodetect: !0, name: 'Plain text', contains: [] }; + let j = { + noHighlightRe: /^(no-?highlight)$/i, + languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i, + classPrefix: 'hljs-', + tabReplace: null, + useBR: !1, + languages: null, + __emitter: TokenTreeEmitter + }; + function shouldNotHighlight(s) { + return j.noHighlightRe.test(s); + } + function highlight(s, o, i, a) { + let u = '', + _ = ''; + 'object' == typeof o + ? ((u = s), (i = o.ignoreIllegals), (_ = o.language), (a = void 0)) + : (deprecated('10.7.0', 'highlight(lang, code, ...args) has been deprecated.'), + deprecated( + '10.7.0', + 'Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277' + ), + (_ = s), + (u = o)); + const w = { code: u, language: _ }; + fire('before:highlight', w); + const x = w.result ? w.result : _highlight(w.language, w.code, i, a); + return ((x.code = w.code), fire('after:highlight', x), x); + } + function _highlight(s, o, a, w) { + function keywordData(s, o) { + const i = L.case_insensitive ? o[0].toLowerCase() : o[0]; + return Object.prototype.hasOwnProperty.call(s.keywords, i) && s.keywords[i]; + } + function processBuffer() { + (null != U.subLanguage + ? (function processSubLanguage() { + if ('' === Y) return; + let s = null; + if ('string' == typeof U.subLanguage) { + if (!i[U.subLanguage]) return void z.addText(Y); + ((s = _highlight(U.subLanguage, Y, !0, V[U.subLanguage])), + (V[U.subLanguage] = s.top)); + } else s = highlightAuto(Y, U.subLanguage.length ? U.subLanguage : null); + (U.relevance > 0 && (Z += s.relevance), + z.addSublanguage(s.emitter, s.language)); + })() + : (function processKeywords() { + if (!U.keywords) return void z.addText(Y); + let s = 0; + U.keywordPatternRe.lastIndex = 0; + let o = U.keywordPatternRe.exec(Y), + i = ''; + for (; o; ) { + i += Y.substring(s, o.index); + const a = keywordData(U, o); + if (a) { + const [s, u] = a; + if ((z.addText(i), (i = ''), (Z += u), s.startsWith('_'))) i += o[0]; + else { + const i = L.classNameAliases[s] || s; + z.addKeyword(o[0], i); + } + } else i += o[0]; + ((s = U.keywordPatternRe.lastIndex), (o = U.keywordPatternRe.exec(Y))); + } + ((i += Y.substr(s)), z.addText(i)); + })(), + (Y = '')); + } + function startNewMode(s) { + return ( + s.className && z.openNode(L.classNameAliases[s.className] || s.className), + (U = Object.create(s, { parent: { value: U } })), + U + ); + } + function endOfMode(s, o, i) { + let a = (function startsWith(s, o) { + const i = s && s.exec(o); + return i && 0 === i.index; + })(s.endRe, i); + if (a) { + if (s['on:end']) { + const i = new Response(s); + (s['on:end'](o, i), i.isMatchIgnored && (a = !1)); + } + if (a) { + for (; s.endsParent && s.parent; ) s = s.parent; + return s; + } + } + if (s.endsWithParent) return endOfMode(s.parent, o, i); + } + function doIgnore(s) { + return 0 === U.matcher.regexIndex ? ((Y += s[0]), 1) : ((ae = !0), 0); + } + function doBeginMatch(s) { + const o = s[0], + i = s.rule, + a = new Response(i), + u = [i.__beforeBegin, i['on:begin']]; + for (const i of u) if (i && (i(s, a), a.isMatchIgnored)) return doIgnore(o); + return ( + i && + i.endSameAsBegin && + (i.endRe = (function escape(s) { + return new RegExp(s.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&'), 'm'); + })(o)), + i.skip + ? (Y += o) + : (i.excludeBegin && (Y += o), + processBuffer(), + i.returnBegin || i.excludeBegin || (Y = o)), + startNewMode(i), + i.returnBegin ? 0 : o.length + ); + } + function doEndMatch(s) { + const i = s[0], + a = o.substr(s.index), + u = endOfMode(U, s, a); + if (!u) return we; + const _ = U; + _.skip + ? (Y += i) + : (_.returnEnd || _.excludeEnd || (Y += i), + processBuffer(), + _.excludeEnd && (Y = i)); + do { + (U.className && z.closeNode(), + U.skip || U.subLanguage || (Z += U.relevance), + (U = U.parent)); + } while (U !== u.parent); + return ( + u.starts && + (u.endSameAsBegin && (u.starts.endRe = u.endRe), startNewMode(u.starts)), + _.returnEnd ? 0 : i.length + ); + } + let C = {}; + function processLexeme(i, u) { + const w = u && u[0]; + if (((Y += i), null == w)) return (processBuffer(), 0); + if ('begin' === C.type && 'end' === u.type && C.index === u.index && '' === w) { + if (((Y += o.slice(u.index, u.index + 1)), !_)) { + const o = new Error('0 width match regex'); + throw ((o.languageName = s), (o.badRule = C.rule), o); + } + return 1; + } + if (((C = u), 'begin' === u.type)) return doBeginMatch(u); + if ('illegal' === u.type && !a) { + const s = new Error( + 'Illegal lexeme "' + w + '" for mode "' + (U.className || '') + '"' + ); + throw ((s.mode = U), s); + } + if ('end' === u.type) { + const s = doEndMatch(u); + if (s !== we) return s; + } + if ('illegal' === u.type && '' === w) return 1; + if (ie > 1e5 && ie > 3 * u.index) { + throw new Error('potential infinite loop, way more iterations than matches'); + } + return ((Y += w), w.length); + } + const L = getLanguage(s); + if (!L) throw (error(x.replace('{}', s)), new Error('Unknown language: "' + s + '"')); + const B = compileLanguage(L, { plugins: u }); + let $ = '', + U = w || B; + const V = {}, + z = new j.__emitter(j); + !(function processContinuations() { + const s = []; + for (let o = U; o !== L; o = o.parent) o.className && s.unshift(o.className); + s.forEach((s) => z.openNode(s)); + })(); + let Y = '', + Z = 0, + ee = 0, + ie = 0, + ae = !1; + try { + for (U.matcher.considerAll(); ; ) { + (ie++, ae ? (ae = !1) : U.matcher.considerAll(), (U.matcher.lastIndex = ee)); + const s = U.matcher.exec(o); + if (!s) break; + const i = processLexeme(o.substring(ee, s.index), s); + ee = s.index + i; + } + return ( + processLexeme(o.substr(ee)), + z.closeAllNodes(), + z.finalize(), + ($ = z.toHTML()), + { + relevance: Math.floor(Z), + value: $, + language: s, + illegal: !1, + emitter: z, + top: U + } + ); + } catch (i) { + if (i.message && i.message.includes('Illegal')) + return { + illegal: !0, + illegalBy: { + msg: i.message, + context: o.slice(ee - 100, ee + 100), + mode: i.mode + }, + sofar: $, + relevance: 0, + value: Se(o), + emitter: z + }; + if (_) + return { + illegal: !1, + relevance: 0, + value: Se(o), + emitter: z, + language: s, + top: U, + errorRaised: i + }; + throw i; + } + } + function highlightAuto(s, o) { + o = o || j.languages || Object.keys(i); + const a = (function justTextHighlightResult(s) { + const o = { + relevance: 0, + emitter: new j.__emitter(j), + value: Se(s), + illegal: !1, + top: C + }; + return (o.emitter.addText(s), o); + })(s), + u = o + .filter(getLanguage) + .filter(autoDetection) + .map((o) => _highlight(o, s, !1)); + u.unshift(a); + const _ = u.sort((s, o) => { + if (s.relevance !== o.relevance) return o.relevance - s.relevance; + if (s.language && o.language) { + if (getLanguage(s.language).supersetOf === o.language) return 1; + if (getLanguage(o.language).supersetOf === s.language) return -1; + } + return 0; + }), + [w, x] = _, + L = w; + return ((L.second_best = x), L); + } + const L = { + 'before:highlightElement': ({ el: s }) => { + j.useBR && + (s.innerHTML = s.innerHTML.replace(/\n/g, '').replace(//g, '\n')); + }, + 'after:highlightElement': ({ result: s }) => { + j.useBR && (s.value = s.value.replace(/\n/g, '
')); + } + }, + B = /^(<[^>]+>|\t)+/gm, + $ = { + 'after:highlightElement': ({ result: s }) => { + j.tabReplace && + (s.value = s.value.replace(B, (s) => s.replace(/\t/g, j.tabReplace))); + } + }; + function highlightElement(s) { + let o = null; + const i = (function blockLanguage(s) { + let o = s.className + ' '; + o += s.parentNode ? s.parentNode.className : ''; + const i = j.languageDetectRe.exec(o); + if (i) { + const o = getLanguage(i[1]); + return ( + o || + (warn(x.replace('{}', i[1])), + warn('Falling back to no-highlight mode for this block.', s)), + o ? i[1] : 'no-highlight' + ); + } + return o.split(/\s+/).find((s) => shouldNotHighlight(s) || getLanguage(s)); + })(s); + if (shouldNotHighlight(i)) return; + (fire('before:highlightElement', { el: s, language: i }), (o = s)); + const u = o.textContent, + _ = i ? highlight(u, { language: i, ignoreIllegals: !0 }) : highlightAuto(u); + (fire('after:highlightElement', { el: s, result: _, text: u }), + (s.innerHTML = _.value), + (function updateClassName(s, o, i) { + const u = o ? a[o] : i; + (s.classList.add('hljs'), u && s.classList.add(u)); + })(s, i, _.language), + (s.result = { language: _.language, re: _.relevance, relavance: _.relevance }), + _.second_best && + (s.second_best = { + language: _.second_best.language, + re: _.second_best.relevance, + relavance: _.second_best.relevance + })); + } + const initHighlighting = () => { + if (initHighlighting.called) return; + ((initHighlighting.called = !0), + deprecated( + '10.6.0', + 'initHighlighting() is deprecated. Use highlightAll() instead.' + )); + document.querySelectorAll('pre code').forEach(highlightElement); + }; + let U = !1; + function highlightAll() { + if ('loading' === document.readyState) return void (U = !0); + document.querySelectorAll('pre code').forEach(highlightElement); + } + function getLanguage(s) { + return ((s = (s || '').toLowerCase()), i[s] || i[a[s]]); + } + function registerAliases(s, { languageName: o }) { + ('string' == typeof s && (s = [s]), + s.forEach((s) => { + a[s.toLowerCase()] = o; + })); + } + function autoDetection(s) { + const o = getLanguage(s); + return o && !o.disableAutodetect; + } + function fire(s, o) { + const i = s; + u.forEach(function (s) { + s[i] && s[i](o); + }); + } + ('undefined' != typeof window && + window.addEventListener && + window.addEventListener( + 'DOMContentLoaded', + function boot() { + U && highlightAll(); + }, + !1 + ), + Object.assign(s, { + highlight, + highlightAuto, + highlightAll, + fixMarkup: function deprecateFixMarkup(s) { + return ( + deprecated('10.2.0', 'fixMarkup will be removed entirely in v11.0'), + deprecated( + '10.2.0', + 'Please see https://github.com/highlightjs/highlight.js/issues/2534' + ), + (function fixMarkup(s) { + return j.tabReplace || j.useBR + ? s.replace(w, (s) => + '\n' === s + ? j.useBR + ? '
' + : s + : j.tabReplace + ? s.replace(/\t/g, j.tabReplace) + : s + ) + : s; + })(s) + ); + }, + highlightElement, + highlightBlock: function deprecateHighlightBlock(s) { + return ( + deprecated('10.7.0', 'highlightBlock will be removed entirely in v12.0'), + deprecated('10.7.0', 'Please use highlightElement now.'), + highlightElement(s) + ); + }, + configure: function configure(s) { + (s.useBR && + (deprecated('10.3.0', "'useBR' will be removed entirely in v11.0"), + deprecated( + '10.3.0', + 'Please see https://github.com/highlightjs/highlight.js/issues/2559' + )), + (j = _e(j, s))); + }, + initHighlighting, + initHighlightingOnLoad: function initHighlightingOnLoad() { + (deprecated( + '10.6.0', + 'initHighlightingOnLoad() is deprecated. Use highlightAll() instead.' + ), + (U = !0)); + }, + registerLanguage: function registerLanguage(o, a) { + let u = null; + try { + u = a(s); + } catch (s) { + if ( + (error( + "Language definition for '{}' could not be registered.".replace('{}', o) + ), + !_) + ) + throw s; + (error(s), (u = C)); + } + (u.name || (u.name = o), + (i[o] = u), + (u.rawDefinition = a.bind(null, s)), + u.aliases && registerAliases(u.aliases, { languageName: o })); + }, + unregisterLanguage: function unregisterLanguage(s) { + delete i[s]; + for (const o of Object.keys(a)) a[o] === s && delete a[o]; + }, + listLanguages: function listLanguages() { + return Object.keys(i); + }, + getLanguage, + registerAliases, + requireLanguage: function requireLanguage(s) { + (deprecated('10.4.0', 'requireLanguage will be removed entirely in v11.'), + deprecated( + '10.4.0', + 'Please see https://github.com/highlightjs/highlight.js/pull/2844' + )); + const o = getLanguage(s); + if (o) return o; + throw new Error( + "The '{}' language is required, but not loaded.".replace('{}', s) + ); + }, + autoDetection, + inherit: _e, + addPlugin: function addPlugin(s) { + (!(function upgradePluginAPI(s) { + (s['before:highlightBlock'] && + !s['before:highlightElement'] && + (s['before:highlightElement'] = (o) => { + s['before:highlightBlock'](Object.assign({ block: o.el }, o)); + }), + s['after:highlightBlock'] && + !s['after:highlightElement'] && + (s['after:highlightElement'] = (o) => { + s['after:highlightBlock'](Object.assign({ block: o.el }, o)); + })); + })(s), + u.push(s)); + }, + vuePlugin: BuildVuePlugin(s).VuePlugin + }), + (s.debugMode = function () { + _ = !1; + }), + (s.safeMode = function () { + _ = !0; + }), + (s.versionString = '10.7.3')); + for (const s in de) 'object' == typeof de[s] && o(de[s]); + return (Object.assign(s, de), s.addPlugin(L), s.addPlugin(ye), s.addPlugin($), s); + })({}); + s.exports = xe; + }, + 35344(s) { + function concat(...s) { + return s + .map((s) => + (function source(s) { + return s ? ('string' == typeof s ? s : s.source) : null; + })(s) + ) + .join(''); + } + s.exports = function bash(s) { + const o = {}, + i = { begin: /\$\{/, end: /\}/, contains: ['self', { begin: /:-/, contains: [o] }] }; + Object.assign(o, { + className: 'variable', + variants: [{ begin: concat(/\$[\w\d#@][\w\d_]*/, '(?![\\w\\d])(?![$])') }, i] + }); + const a = { + className: 'subst', + begin: /\$\(/, + end: /\)/, + contains: [s.BACKSLASH_ESCAPE] + }, + u = { + begin: /<<-?\s*(?=\w+)/, + starts: { + contains: [ + s.END_SAME_AS_BEGIN({ begin: /(\w+)/, end: /(\w+)/, className: 'string' }) + ] + } + }, + _ = { + className: 'string', + begin: /"/, + end: /"/, + contains: [s.BACKSLASH_ESCAPE, o, a] + }; + a.contains.push(_); + const w = { + begin: /\$\(\(/, + end: /\)\)/, + contains: [{ begin: /\d+#[0-9a-f]+/, className: 'number' }, s.NUMBER_MODE, o] + }, + x = s.SHEBANG({ + binary: `(${['fish', 'bash', 'zsh', 'sh', 'csh', 'ksh', 'tcsh', 'dash', 'scsh'].join('|')})`, + relevance: 10 + }), + C = { + className: 'function', + begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/, + returnBegin: !0, + contains: [s.inherit(s.TITLE_MODE, { begin: /\w[\w\d_]*/ })], + relevance: 0 + }; + return { + name: 'Bash', + aliases: ['sh', 'zsh'], + keywords: { + $pattern: /\b[a-z._-]+\b/, + keyword: 'if then else elif fi for while in do done case esac function', + literal: 'true false', + built_in: + 'break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp' + }, + contains: [ + x, + s.SHEBANG(), + C, + w, + s.HASH_COMMENT_MODE, + u, + _, + { className: '', begin: /\\"/ }, + { className: 'string', begin: /'/, end: /'/ }, + o + ] + }; + }; + }, + 73402(s) { + function concat(...s) { + return s + .map((s) => + (function source(s) { + return s ? ('string' == typeof s ? s : s.source) : null; + })(s) + ) + .join(''); + } + s.exports = function http(s) { + const o = 'HTTP/(2|1\\.[01])', + i = { + className: 'attribute', + begin: concat('^', /[A-Za-z][A-Za-z0-9-]*/, '(?=\\:\\s)'), + starts: { + contains: [ + { + className: 'punctuation', + begin: /: /, + relevance: 0, + starts: { end: '$', relevance: 0 } + } + ] + } + }, + a = [i, { begin: '\\n\\n', starts: { subLanguage: [], endsWithParent: !0 } }]; + return { + name: 'HTTP', + aliases: ['https'], + illegal: /\S/, + contains: [ + { + begin: '^(?=' + o + ' \\d{3})', + end: /$/, + contains: [ + { className: 'meta', begin: o }, + { className: 'number', begin: '\\b\\d{3}\\b' } + ], + starts: { end: /\b\B/, illegal: /\S/, contains: a } + }, + { + begin: '(?=^[A-Z]+ (.*?) ' + o + '$)', + end: /$/, + contains: [ + { className: 'string', begin: ' ', end: ' ', excludeBegin: !0, excludeEnd: !0 }, + { className: 'meta', begin: o }, + { className: 'keyword', begin: '[A-Z]+' } + ], + starts: { end: /\b\B/, illegal: /\S/, contains: a } + }, + s.inherit(i, { relevance: 0 }) + ] + }; + }; + }, + 95089(s) { + const o = '[A-Za-z$_][0-9A-Za-z$_]*', + i = [ + 'as', + 'in', + 'of', + 'if', + 'for', + 'while', + 'finally', + 'var', + 'new', + 'function', + 'do', + 'return', + 'void', + 'else', + 'break', + 'catch', + 'instanceof', + 'with', + 'throw', + 'case', + 'default', + 'try', + 'switch', + 'continue', + 'typeof', + 'delete', + 'let', + 'yield', + 'const', + 'class', + 'debugger', + 'async', + 'await', + 'static', + 'import', + 'from', + 'export', + 'extends' + ], + a = ['true', 'false', 'null', 'undefined', 'NaN', 'Infinity'], + u = [].concat( + [ + 'setInterval', + 'setTimeout', + 'clearInterval', + 'clearTimeout', + 'require', + 'exports', + 'eval', + 'isFinite', + 'isNaN', + 'parseFloat', + 'parseInt', + 'decodeURI', + 'decodeURIComponent', + 'encodeURI', + 'encodeURIComponent', + 'escape', + 'unescape' + ], + [ + 'arguments', + 'this', + 'super', + 'console', + 'window', + 'document', + 'localStorage', + 'module', + 'global' + ], + [ + 'Intl', + 'DataView', + 'Number', + 'Math', + 'Date', + 'String', + 'RegExp', + 'Object', + 'Function', + 'Boolean', + 'Error', + 'Symbol', + 'Set', + 'Map', + 'WeakSet', + 'WeakMap', + 'Proxy', + 'Reflect', + 'JSON', + 'Promise', + 'Float64Array', + 'Int16Array', + 'Int32Array', + 'Int8Array', + 'Uint16Array', + 'Uint32Array', + 'Float32Array', + 'Array', + 'Uint8Array', + 'Uint8ClampedArray', + 'ArrayBuffer', + 'BigInt64Array', + 'BigUint64Array', + 'BigInt' + ], + [ + 'EvalError', + 'InternalError', + 'RangeError', + 'ReferenceError', + 'SyntaxError', + 'TypeError', + 'URIError' + ] + ); + function lookahead(s) { + return concat('(?=', s, ')'); + } + function concat(...s) { + return s + .map((s) => + (function source(s) { + return s ? ('string' == typeof s ? s : s.source) : null; + })(s) + ) + .join(''); + } + s.exports = function javascript(s) { + const _ = o, + w = '<>', + x = '', + C = { + begin: /<[A-Za-z0-9\\._:-]+/, + end: /\/[A-Za-z0-9\\._:-]+>|\/>/, + isTrulyOpeningTag: (s, o) => { + const i = s[0].length + s.index, + a = s.input[i]; + '<' !== a + ? '>' === a && + (((s, { after: o }) => { + const i = '', + returnBegin: !0, + end: '\\s*=>', + contains: [ + { + className: 'params', + variants: [ + { begin: s.UNDERSCORE_IDENT_RE, relevance: 0 }, + { className: null, begin: /\(\s*\)/, skip: !0 }, + { + begin: /\(/, + end: /\)/, + excludeBegin: !0, + excludeEnd: !0, + keywords: j, + contains: ce + } + ] + } + ] + }, + { begin: /,/, relevance: 0 }, + { className: '', begin: /\s/, end: /\s*/, skip: !0 }, + { + variants: [ + { begin: w, end: x }, + { begin: C.begin, 'on:begin': C.isTrulyOpeningTag, end: C.end } + ], + subLanguage: 'xml', + contains: [{ begin: C.begin, end: C.end, skip: !0, contains: ['self'] }] + } + ], + relevance: 0 + }, + { + className: 'function', + beginKeywords: 'function', + end: /[{;]/, + excludeEnd: !0, + keywords: j, + contains: ['self', s.inherit(s.TITLE_MODE, { begin: _ }), le], + illegal: /%/ + }, + { beginKeywords: 'while if switch catch for' }, + { + className: 'function', + begin: + s.UNDERSCORE_IDENT_RE + + '\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{', + returnBegin: !0, + contains: [le, s.inherit(s.TITLE_MODE, { begin: _ })] + }, + { variants: [{ begin: '\\.' + _ }, { begin: '\\$' + _ }], relevance: 0 }, + { + className: 'class', + beginKeywords: 'class', + end: /[{;=]/, + excludeEnd: !0, + illegal: /[:"[\]]/, + contains: [{ beginKeywords: 'extends' }, s.UNDERSCORE_TITLE_MODE] + }, + { + begin: /\b(?=constructor)/, + end: /[{;]/, + excludeEnd: !0, + contains: [s.inherit(s.TITLE_MODE, { begin: _ }), 'self', le] + }, + { + begin: '(get|set)\\s+(?=' + _ + '\\()', + end: /\{/, + keywords: 'get set', + contains: [s.inherit(s.TITLE_MODE, { begin: _ }), { begin: /\(\)/ }, le] + }, + { begin: /\$[(.]/ } + ] + }; + }; + }, + 65772(s) { + s.exports = function json(s) { + const o = { literal: 'true false null' }, + i = [s.C_LINE_COMMENT_MODE, s.C_BLOCK_COMMENT_MODE], + a = [s.QUOTE_STRING_MODE, s.C_NUMBER_MODE], + u = { end: ',', endsWithParent: !0, excludeEnd: !0, contains: a, keywords: o }, + _ = { + begin: /\{/, + end: /\}/, + contains: [ + { + className: 'attr', + begin: /"/, + end: /"/, + contains: [s.BACKSLASH_ESCAPE], + illegal: '\\n' + }, + s.inherit(u, { begin: /:/ }) + ].concat(i), + illegal: '\\S' + }, + w = { begin: '\\[', end: '\\]', contains: [s.inherit(u)], illegal: '\\S' }; + return ( + a.push(_, w), + i.forEach(function (s) { + a.push(s); + }), + { name: 'JSON', contains: a, keywords: o, illegal: '\\S' } + ); + }; + }, + 26571(s) { + s.exports = function powershell(s) { + const o = { + $pattern: /-?[A-z\.\-]+\b/, + keyword: + 'if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter', + built_in: + 'ac asnp cat cd CFS chdir clc clear clhy cli clp cls clv cnsn compare copy cp cpi cpp curl cvpa dbp del diff dir dnsn ebp echo|0 epal epcsv epsn erase etsn exsn fc fhx fl ft fw gal gbp gc gcb gci gcm gcs gdr gerr ghy gi gin gjb gl gm gmo gp gps gpv group gsn gsnp gsv gtz gu gv gwmi h history icm iex ihy ii ipal ipcsv ipmo ipsn irm ise iwmi iwr kill lp ls man md measure mi mount move mp mv nal ndr ni nmo npssc nsn nv ogv oh popd ps pushd pwd r rbp rcjb rcsn rd rdr ren ri rjb rm rmdir rmo rni rnp rp rsn rsnp rujb rv rvpa rwmi sajb sal saps sasv sbp sc scb select set shcm si sl sleep sls sort sp spjb spps spsv start stz sujb sv swmi tee trcm type wget where wjb write' + }, + i = { begin: '`[\\s\\S]', relevance: 0 }, + a = { + className: 'variable', + variants: [ + { begin: /\$\B/ }, + { className: 'keyword', begin: /\$this/ }, + { begin: /\$[\w\d][\w\d_:]*/ } + ] + }, + u = { + className: 'string', + variants: [ + { begin: /"/, end: /"/ }, + { begin: /@"/, end: /^"@/ } + ], + contains: [i, a, { className: 'variable', begin: /\$[A-z]/, end: /[^A-z]/ }] + }, + _ = { + className: 'string', + variants: [ + { begin: /'/, end: /'/ }, + { begin: /@'/, end: /^'@/ } + ] + }, + w = s.inherit(s.COMMENT(null, null), { + variants: [ + { begin: /#/, end: /$/ }, + { begin: /<#/, end: /#>/ } + ], + contains: [ + { + className: 'doctag', + variants: [ + { + begin: + /\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)/ + }, + { + begin: + /\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\s+\S+/ + } + ] + } + ] + }), + x = { + className: 'built_in', + variants: [ + { + begin: '('.concat( + 'Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|Mount|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Build|Complete|Confirm|Deny|Deploy|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where', + ')+(-)[\\w\\d]+' + ) + } + ] + }, + C = { + className: 'class', + beginKeywords: 'class enum', + end: /\s*[{]/, + excludeEnd: !0, + relevance: 0, + contains: [s.TITLE_MODE] + }, + j = { + className: 'function', + begin: /function\s+/, + end: /\s*\{|$/, + excludeEnd: !0, + returnBegin: !0, + relevance: 0, + contains: [ + { begin: 'function', relevance: 0, className: 'keyword' }, + { className: 'title', begin: /\w[\w\d]*((-)[\w\d]+)*/, relevance: 0 }, + { begin: /\(/, end: /\)/, className: 'params', relevance: 0, contains: [a] } + ] + }, + L = { + begin: /using\s/, + end: /$/, + returnBegin: !0, + contains: [ + u, + _, + { className: 'keyword', begin: /(using|assembly|command|module|namespace|type)/ } + ] + }, + B = { + variants: [ + { + className: 'operator', + begin: '('.concat( + '-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor', + ')\\b' + ) + }, + { className: 'literal', begin: /(-)[\w\d]+/, relevance: 0 } + ] + }, + $ = { + className: 'function', + begin: /\[.*\]\s*[\w]+[ ]??\(/, + end: /$/, + returnBegin: !0, + relevance: 0, + contains: [ + { + className: 'keyword', + begin: '('.concat(o.keyword.toString().replace(/\s/g, '|'), ')\\b'), + endsParent: !0, + relevance: 0 + }, + s.inherit(s.TITLE_MODE, { endsParent: !0 }) + ] + }, + U = [ + $, + w, + i, + s.NUMBER_MODE, + u, + _, + x, + a, + { className: 'literal', begin: /\$(null|true|false)\b/ }, + { className: 'selector-tag', begin: /@\B/, relevance: 0 } + ], + V = { + begin: /\[/, + end: /\]/, + excludeBegin: !0, + excludeEnd: !0, + relevance: 0, + contains: [].concat( + 'self', + U, + { + begin: + '(' + + [ + 'string', + 'char', + 'byte', + 'int', + 'long', + 'bool', + 'decimal', + 'single', + 'double', + 'DateTime', + 'xml', + 'array', + 'hashtable', + 'void' + ].join('|') + + ')', + className: 'built_in', + relevance: 0 + }, + { className: 'type', begin: /[\.\w\d]+/, relevance: 0 } + ) + }; + return ( + $.contains.unshift(V), + { + name: 'PowerShell', + aliases: ['ps', 'ps1'], + case_insensitive: !0, + keywords: o, + contains: U.concat(C, j, L, B, V) + } + ); + }; + }, + 17285(s) { + function source(s) { + return s ? ('string' == typeof s ? s : s.source) : null; + } + function lookahead(s) { + return concat('(?=', s, ')'); + } + function concat(...s) { + return s.map((s) => source(s)).join(''); + } + function either(...s) { + return '(' + s.map((s) => source(s)).join('|') + ')'; + } + s.exports = function xml(s) { + const o = concat( + /[A-Z_]/, + (function optional(s) { + return concat('(', s, ')?'); + })(/[A-Z0-9_.-]*:/), + /[A-Z0-9_.-]*/ + ), + i = { className: 'symbol', begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/ }, + a = { + begin: /\s/, + contains: [ + { className: 'meta-keyword', begin: /#?[a-z_][a-z1-9_-]+/, illegal: /\n/ } + ] + }, + u = s.inherit(a, { begin: /\(/, end: /\)/ }), + _ = s.inherit(s.APOS_STRING_MODE, { className: 'meta-string' }), + w = s.inherit(s.QUOTE_STRING_MODE, { className: 'meta-string' }), + x = { + endsWithParent: !0, + illegal: /`]+/ } + ] + } + ] + } + ] + }; + return { + name: 'HTML, XML', + aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist', 'wsf', 'svg'], + case_insensitive: !0, + contains: [ + { + className: 'meta', + begin: //, + relevance: 10, + contains: [ + a, + w, + _, + u, + { + begin: /\[/, + end: /\]/, + contains: [ + { className: 'meta', begin: //, contains: [a, u, w, _] } + ] + } + ] + }, + s.COMMENT(//, { relevance: 10 }), + { begin: //, relevance: 10 }, + i, + { className: 'meta', begin: /<\?xml/, end: /\?>/, relevance: 10 }, + { + className: 'tag', + begin: /)/, + end: />/, + keywords: { name: 'style' }, + contains: [x], + starts: { end: /<\/style>/, returnEnd: !0, subLanguage: ['css', 'xml'] } + }, + { + className: 'tag', + begin: /)/, + end: />/, + keywords: { name: 'script' }, + contains: [x], + starts: { + end: /<\/script>/, + returnEnd: !0, + subLanguage: ['javascript', 'handlebars', 'xml'] + } + }, + { className: 'tag', begin: /<>|<\/>/ }, + { + className: 'tag', + begin: concat(//, />/, /\s/)))), + end: /\/?>/, + contains: [{ className: 'name', begin: o, relevance: 0, starts: x }] + }, + { + className: 'tag', + begin: concat(/<\//, lookahead(concat(o, />/))), + contains: [ + { className: 'name', begin: o, relevance: 0 }, + { begin: />/, relevance: 0, endsParent: !0 } + ] + } + ] + }; + }; + }, + 17533(s) { + s.exports = function yaml(s) { + var o = 'true false yes no null', + i = "[\\w#;/?:@&=+$,.~*'()[\\]]+", + a = { + className: 'string', + relevance: 0, + variants: [{ begin: /'/, end: /'/ }, { begin: /"/, end: /"/ }, { begin: /\S+/ }], + contains: [ + s.BACKSLASH_ESCAPE, + { + className: 'template-variable', + variants: [ + { begin: /\{\{/, end: /\}\}/ }, + { begin: /%\{/, end: /\}/ } + ] + } + ] + }, + u = s.inherit(a, { + variants: [ + { begin: /'/, end: /'/ }, + { begin: /"/, end: /"/ }, + { begin: /[^\s,{}[\]]+/ } + ] + }), + _ = { + className: 'number', + begin: + '\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b' + }, + w = { end: ',', endsWithParent: !0, excludeEnd: !0, keywords: o, relevance: 0 }, + x = { begin: /\{/, end: /\}/, contains: [w], illegal: '\\n', relevance: 0 }, + C = { begin: '\\[', end: '\\]', contains: [w], illegal: '\\n', relevance: 0 }, + j = [ + { + className: 'attr', + variants: [ + { begin: '\\w[\\w :\\/.-]*:(?=[ \t]|$)' }, + { begin: '"\\w[\\w :\\/.-]*":(?=[ \t]|$)' }, + { begin: "'\\w[\\w :\\/.-]*':(?=[ \t]|$)" } + ] + }, + { className: 'meta', begin: '^---\\s*$', relevance: 10 }, + { + className: 'string', + begin: '[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*' + }, + { + begin: '<%[%=-]?', + end: '[%-]?%>', + subLanguage: 'ruby', + excludeBegin: !0, + excludeEnd: !0, + relevance: 0 + }, + { className: 'type', begin: '!\\w+!' + i }, + { className: 'type', begin: '!<' + i + '>' }, + { className: 'type', begin: '!' + i }, + { className: 'type', begin: '!!' + i }, + { className: 'meta', begin: '&' + s.UNDERSCORE_IDENT_RE + '$' }, + { className: 'meta', begin: '\\*' + s.UNDERSCORE_IDENT_RE + '$' }, + { className: 'bullet', begin: '-(?=[ ]|$)', relevance: 0 }, + s.HASH_COMMENT_MODE, + { beginKeywords: o, keywords: { literal: o } }, + _, + { className: 'number', begin: s.C_NUMBER_RE + '\\b', relevance: 0 }, + x, + C, + a + ], + L = [...j]; + return ( + L.pop(), + L.push(u), + (w.contains = L), + { name: 'YAML', case_insensitive: !0, aliases: ['yml'], contains: j } + ); + }; + }, + 251(s, o) { + ((o.read = function (s, o, i, a, u) { + var _, + w, + x = 8 * u - a - 1, + C = (1 << x) - 1, + j = C >> 1, + L = -7, + B = i ? u - 1 : 0, + $ = i ? -1 : 1, + U = s[o + B]; + for ( + B += $, _ = U & ((1 << -L) - 1), U >>= -L, L += x; + L > 0; + _ = 256 * _ + s[o + B], B += $, L -= 8 + ); + for ( + w = _ & ((1 << -L) - 1), _ >>= -L, L += a; + L > 0; + w = 256 * w + s[o + B], B += $, L -= 8 + ); + if (0 === _) _ = 1 - j; + else { + if (_ === C) return w ? NaN : (1 / 0) * (U ? -1 : 1); + ((w += Math.pow(2, a)), (_ -= j)); + } + return (U ? -1 : 1) * w * Math.pow(2, _ - a); + }), + (o.write = function (s, o, i, a, u, _) { + var w, + x, + C, + j = 8 * _ - u - 1, + L = (1 << j) - 1, + B = L >> 1, + $ = 23 === u ? Math.pow(2, -24) - Math.pow(2, -77) : 0, + U = a ? 0 : _ - 1, + V = a ? 1 : -1, + z = o < 0 || (0 === o && 1 / o < 0) ? 1 : 0; + for ( + o = Math.abs(o), + isNaN(o) || o === 1 / 0 + ? ((x = isNaN(o) ? 1 : 0), (w = L)) + : ((w = Math.floor(Math.log(o) / Math.LN2)), + o * (C = Math.pow(2, -w)) < 1 && (w--, (C *= 2)), + (o += w + B >= 1 ? $ / C : $ * Math.pow(2, 1 - B)) * C >= 2 && + (w++, (C /= 2)), + w + B >= L + ? ((x = 0), (w = L)) + : w + B >= 1 + ? ((x = (o * C - 1) * Math.pow(2, u)), (w += B)) + : ((x = o * Math.pow(2, B - 1) * Math.pow(2, u)), (w = 0))); + u >= 8; + s[i + U] = 255 & x, U += V, x /= 256, u -= 8 + ); + for (w = (w << u) | x, j += u; j > 0; s[i + U] = 255 & w, U += V, w /= 256, j -= 8); + s[i + U - V] |= 128 * z; + })); + }, + 9404(s) { + s.exports = (function () { + 'use strict'; + var s = Array.prototype.slice; + function createClass(s, o) { + (o && (s.prototype = Object.create(o.prototype)), (s.prototype.constructor = s)); + } + function Iterable(s) { + return isIterable(s) ? s : Seq(s); + } + function KeyedIterable(s) { + return isKeyed(s) ? s : KeyedSeq(s); + } + function IndexedIterable(s) { + return isIndexed(s) ? s : IndexedSeq(s); + } + function SetIterable(s) { + return isIterable(s) && !isAssociative(s) ? s : SetSeq(s); + } + function isIterable(s) { + return !(!s || !s[o]); + } + function isKeyed(s) { + return !(!s || !s[i]); + } + function isIndexed(s) { + return !(!s || !s[a]); + } + function isAssociative(s) { + return isKeyed(s) || isIndexed(s); + } + function isOrdered(s) { + return !(!s || !s[u]); + } + (createClass(KeyedIterable, Iterable), + createClass(IndexedIterable, Iterable), + createClass(SetIterable, Iterable), + (Iterable.isIterable = isIterable), + (Iterable.isKeyed = isKeyed), + (Iterable.isIndexed = isIndexed), + (Iterable.isAssociative = isAssociative), + (Iterable.isOrdered = isOrdered), + (Iterable.Keyed = KeyedIterable), + (Iterable.Indexed = IndexedIterable), + (Iterable.Set = SetIterable)); + var o = '@@__IMMUTABLE_ITERABLE__@@', + i = '@@__IMMUTABLE_KEYED__@@', + a = '@@__IMMUTABLE_INDEXED__@@', + u = '@@__IMMUTABLE_ORDERED__@@', + _ = 'delete', + w = 5, + x = 1 << w, + C = x - 1, + j = {}, + L = { value: !1 }, + B = { value: !1 }; + function MakeRef(s) { + return ((s.value = !1), s); + } + function SetRef(s) { + s && (s.value = !0); + } + function OwnerID() {} + function arrCopy(s, o) { + o = o || 0; + for (var i = Math.max(0, s.length - o), a = new Array(i), u = 0; u < i; u++) + a[u] = s[u + o]; + return a; + } + function ensureSize(s) { + return (void 0 === s.size && (s.size = s.__iterate(returnTrue)), s.size); + } + function wrapIndex(s, o) { + if ('number' != typeof o) { + var i = o >>> 0; + if ('' + i !== o || 4294967295 === i) return NaN; + o = i; + } + return o < 0 ? ensureSize(s) + o : o; + } + function returnTrue() { + return !0; + } + function wholeSlice(s, o, i) { + return ( + (0 === s || (void 0 !== i && s <= -i)) && (void 0 === o || (void 0 !== i && o >= i)) + ); + } + function resolveBegin(s, o) { + return resolveIndex(s, o, 0); + } + function resolveEnd(s, o) { + return resolveIndex(s, o, o); + } + function resolveIndex(s, o, i) { + return void 0 === s + ? i + : s < 0 + ? Math.max(0, o + s) + : void 0 === o + ? s + : Math.min(o, s); + } + var $ = 0, + U = 1, + V = 2, + z = 'function' == typeof Symbol && Symbol.iterator, + Y = '@@iterator', + Z = z || Y; + function Iterator(s) { + this.next = s; + } + function iteratorValue(s, o, i, a) { + var u = 0 === s ? o : 1 === s ? i : [o, i]; + return (a ? (a.value = u) : (a = { value: u, done: !1 }), a); + } + function iteratorDone() { + return { value: void 0, done: !0 }; + } + function hasIterator(s) { + return !!getIteratorFn(s); + } + function isIterator(s) { + return s && 'function' == typeof s.next; + } + function getIterator(s) { + var o = getIteratorFn(s); + return o && o.call(s); + } + function getIteratorFn(s) { + var o = s && ((z && s[z]) || s[Y]); + if ('function' == typeof o) return o; + } + function isArrayLike(s) { + return s && 'number' == typeof s.length; + } + function Seq(s) { + return null == s ? emptySequence() : isIterable(s) ? s.toSeq() : seqFromValue(s); + } + function KeyedSeq(s) { + return null == s + ? emptySequence().toKeyedSeq() + : isIterable(s) + ? isKeyed(s) + ? s.toSeq() + : s.fromEntrySeq() + : keyedSeqFromValue(s); + } + function IndexedSeq(s) { + return null == s + ? emptySequence() + : isIterable(s) + ? isKeyed(s) + ? s.entrySeq() + : s.toIndexedSeq() + : indexedSeqFromValue(s); + } + function SetSeq(s) { + return ( + null == s + ? emptySequence() + : isIterable(s) + ? isKeyed(s) + ? s.entrySeq() + : s + : indexedSeqFromValue(s) + ).toSetSeq(); + } + ((Iterator.prototype.toString = function () { + return '[Iterator]'; + }), + (Iterator.KEYS = $), + (Iterator.VALUES = U), + (Iterator.ENTRIES = V), + (Iterator.prototype.inspect = Iterator.prototype.toSource = + function () { + return this.toString(); + }), + (Iterator.prototype[Z] = function () { + return this; + }), + createClass(Seq, Iterable), + (Seq.of = function () { + return Seq(arguments); + }), + (Seq.prototype.toSeq = function () { + return this; + }), + (Seq.prototype.toString = function () { + return this.__toString('Seq {', '}'); + }), + (Seq.prototype.cacheResult = function () { + return ( + !this._cache && + this.__iterateUncached && + ((this._cache = this.entrySeq().toArray()), (this.size = this._cache.length)), + this + ); + }), + (Seq.prototype.__iterate = function (s, o) { + return seqIterate(this, s, o, !0); + }), + (Seq.prototype.__iterator = function (s, o) { + return seqIterator(this, s, o, !0); + }), + createClass(KeyedSeq, Seq), + (KeyedSeq.prototype.toKeyedSeq = function () { + return this; + }), + createClass(IndexedSeq, Seq), + (IndexedSeq.of = function () { + return IndexedSeq(arguments); + }), + (IndexedSeq.prototype.toIndexedSeq = function () { + return this; + }), + (IndexedSeq.prototype.toString = function () { + return this.__toString('Seq [', ']'); + }), + (IndexedSeq.prototype.__iterate = function (s, o) { + return seqIterate(this, s, o, !1); + }), + (IndexedSeq.prototype.__iterator = function (s, o) { + return seqIterator(this, s, o, !1); + }), + createClass(SetSeq, Seq), + (SetSeq.of = function () { + return SetSeq(arguments); + }), + (SetSeq.prototype.toSetSeq = function () { + return this; + }), + (Seq.isSeq = isSeq), + (Seq.Keyed = KeyedSeq), + (Seq.Set = SetSeq), + (Seq.Indexed = IndexedSeq)); + var ee, + ie, + ae, + ce = '@@__IMMUTABLE_SEQ__@@'; + function ArraySeq(s) { + ((this._array = s), (this.size = s.length)); + } + function ObjectSeq(s) { + var o = Object.keys(s); + ((this._object = s), (this._keys = o), (this.size = o.length)); + } + function IterableSeq(s) { + ((this._iterable = s), (this.size = s.length || s.size)); + } + function IteratorSeq(s) { + ((this._iterator = s), (this._iteratorCache = [])); + } + function isSeq(s) { + return !(!s || !s[ce]); + } + function emptySequence() { + return ee || (ee = new ArraySeq([])); + } + function keyedSeqFromValue(s) { + var o = Array.isArray(s) + ? new ArraySeq(s).fromEntrySeq() + : isIterator(s) + ? new IteratorSeq(s).fromEntrySeq() + : hasIterator(s) + ? new IterableSeq(s).fromEntrySeq() + : 'object' == typeof s + ? new ObjectSeq(s) + : void 0; + if (!o) + throw new TypeError( + 'Expected Array or iterable object of [k, v] entries, or keyed object: ' + s + ); + return o; + } + function indexedSeqFromValue(s) { + var o = maybeIndexedSeqFromValue(s); + if (!o) throw new TypeError('Expected Array or iterable object of values: ' + s); + return o; + } + function seqFromValue(s) { + var o = maybeIndexedSeqFromValue(s) || ('object' == typeof s && new ObjectSeq(s)); + if (!o) + throw new TypeError( + 'Expected Array or iterable object of values, or keyed object: ' + s + ); + return o; + } + function maybeIndexedSeqFromValue(s) { + return isArrayLike(s) + ? new ArraySeq(s) + : isIterator(s) + ? new IteratorSeq(s) + : hasIterator(s) + ? new IterableSeq(s) + : void 0; + } + function seqIterate(s, o, i, a) { + var u = s._cache; + if (u) { + for (var _ = u.length - 1, w = 0; w <= _; w++) { + var x = u[i ? _ - w : w]; + if (!1 === o(x[1], a ? x[0] : w, s)) return w + 1; + } + return w; + } + return s.__iterateUncached(o, i); + } + function seqIterator(s, o, i, a) { + var u = s._cache; + if (u) { + var _ = u.length - 1, + w = 0; + return new Iterator(function () { + var s = u[i ? _ - w : w]; + return w++ > _ ? iteratorDone() : iteratorValue(o, a ? s[0] : w - 1, s[1]); + }); + } + return s.__iteratorUncached(o, i); + } + function fromJS(s, o) { + return o ? fromJSWith(o, s, '', { '': s }) : fromJSDefault(s); + } + function fromJSWith(s, o, i, a) { + return Array.isArray(o) + ? s.call( + a, + i, + IndexedSeq(o).map(function (i, a) { + return fromJSWith(s, i, a, o); + }) + ) + : isPlainObj(o) + ? s.call( + a, + i, + KeyedSeq(o).map(function (i, a) { + return fromJSWith(s, i, a, o); + }) + ) + : o; + } + function fromJSDefault(s) { + return Array.isArray(s) + ? IndexedSeq(s).map(fromJSDefault).toList() + : isPlainObj(s) + ? KeyedSeq(s).map(fromJSDefault).toMap() + : s; + } + function isPlainObj(s) { + return s && (s.constructor === Object || void 0 === s.constructor); + } + function is(s, o) { + if (s === o || (s != s && o != o)) return !0; + if (!s || !o) return !1; + if ('function' == typeof s.valueOf && 'function' == typeof o.valueOf) { + if ((s = s.valueOf()) === (o = o.valueOf()) || (s != s && o != o)) return !0; + if (!s || !o) return !1; + } + return !( + 'function' != typeof s.equals || + 'function' != typeof o.equals || + !s.equals(o) + ); + } + function deepEqual(s, o) { + if (s === o) return !0; + if ( + !isIterable(o) || + (void 0 !== s.size && void 0 !== o.size && s.size !== o.size) || + (void 0 !== s.__hash && void 0 !== o.__hash && s.__hash !== o.__hash) || + isKeyed(s) !== isKeyed(o) || + isIndexed(s) !== isIndexed(o) || + isOrdered(s) !== isOrdered(o) + ) + return !1; + if (0 === s.size && 0 === o.size) return !0; + var i = !isAssociative(s); + if (isOrdered(s)) { + var a = s.entries(); + return ( + o.every(function (s, o) { + var u = a.next().value; + return u && is(u[1], s) && (i || is(u[0], o)); + }) && a.next().done + ); + } + var u = !1; + if (void 0 === s.size) + if (void 0 === o.size) 'function' == typeof s.cacheResult && s.cacheResult(); + else { + u = !0; + var _ = s; + ((s = o), (o = _)); + } + var w = !0, + x = o.__iterate(function (o, a) { + if (i ? !s.has(o) : u ? !is(o, s.get(a, j)) : !is(s.get(a, j), o)) + return ((w = !1), !1); + }); + return w && s.size === x; + } + function Repeat(s, o) { + if (!(this instanceof Repeat)) return new Repeat(s, o); + if ( + ((this._value = s), + (this.size = void 0 === o ? 1 / 0 : Math.max(0, o)), + 0 === this.size) + ) { + if (ie) return ie; + ie = this; + } + } + function invariant(s, o) { + if (!s) throw new Error(o); + } + function Range(s, o, i) { + if (!(this instanceof Range)) return new Range(s, o, i); + if ( + (invariant(0 !== i, 'Cannot step a Range by 0'), + (s = s || 0), + void 0 === o && (o = 1 / 0), + (i = void 0 === i ? 1 : Math.abs(i)), + o < s && (i = -i), + (this._start = s), + (this._end = o), + (this._step = i), + (this.size = Math.max(0, Math.ceil((o - s) / i - 1) + 1)), + 0 === this.size) + ) { + if (ae) return ae; + ae = this; + } + } + function Collection() { + throw TypeError('Abstract'); + } + function KeyedCollection() {} + function IndexedCollection() {} + function SetCollection() {} + ((Seq.prototype[ce] = !0), + createClass(ArraySeq, IndexedSeq), + (ArraySeq.prototype.get = function (s, o) { + return this.has(s) ? this._array[wrapIndex(this, s)] : o; + }), + (ArraySeq.prototype.__iterate = function (s, o) { + for (var i = this._array, a = i.length - 1, u = 0; u <= a; u++) + if (!1 === s(i[o ? a - u : u], u, this)) return u + 1; + return u; + }), + (ArraySeq.prototype.__iterator = function (s, o) { + var i = this._array, + a = i.length - 1, + u = 0; + return new Iterator(function () { + return u > a ? iteratorDone() : iteratorValue(s, u, i[o ? a - u++ : u++]); + }); + }), + createClass(ObjectSeq, KeyedSeq), + (ObjectSeq.prototype.get = function (s, o) { + return void 0 === o || this.has(s) ? this._object[s] : o; + }), + (ObjectSeq.prototype.has = function (s) { + return this._object.hasOwnProperty(s); + }), + (ObjectSeq.prototype.__iterate = function (s, o) { + for (var i = this._object, a = this._keys, u = a.length - 1, _ = 0; _ <= u; _++) { + var w = a[o ? u - _ : _]; + if (!1 === s(i[w], w, this)) return _ + 1; + } + return _; + }), + (ObjectSeq.prototype.__iterator = function (s, o) { + var i = this._object, + a = this._keys, + u = a.length - 1, + _ = 0; + return new Iterator(function () { + var w = a[o ? u - _ : _]; + return _++ > u ? iteratorDone() : iteratorValue(s, w, i[w]); + }); + }), + (ObjectSeq.prototype[u] = !0), + createClass(IterableSeq, IndexedSeq), + (IterableSeq.prototype.__iterateUncached = function (s, o) { + if (o) return this.cacheResult().__iterate(s, o); + var i = getIterator(this._iterable), + a = 0; + if (isIterator(i)) + for (var u; !(u = i.next()).done && !1 !== s(u.value, a++, this); ); + return a; + }), + (IterableSeq.prototype.__iteratorUncached = function (s, o) { + if (o) return this.cacheResult().__iterator(s, o); + var i = getIterator(this._iterable); + if (!isIterator(i)) return new Iterator(iteratorDone); + var a = 0; + return new Iterator(function () { + var o = i.next(); + return o.done ? o : iteratorValue(s, a++, o.value); + }); + }), + createClass(IteratorSeq, IndexedSeq), + (IteratorSeq.prototype.__iterateUncached = function (s, o) { + if (o) return this.cacheResult().__iterate(s, o); + for (var i, a = this._iterator, u = this._iteratorCache, _ = 0; _ < u.length; ) + if (!1 === s(u[_], _++, this)) return _; + for (; !(i = a.next()).done; ) { + var w = i.value; + if (((u[_] = w), !1 === s(w, _++, this))) break; + } + return _; + }), + (IteratorSeq.prototype.__iteratorUncached = function (s, o) { + if (o) return this.cacheResult().__iterator(s, o); + var i = this._iterator, + a = this._iteratorCache, + u = 0; + return new Iterator(function () { + if (u >= a.length) { + var o = i.next(); + if (o.done) return o; + a[u] = o.value; + } + return iteratorValue(s, u, a[u++]); + }); + }), + createClass(Repeat, IndexedSeq), + (Repeat.prototype.toString = function () { + return 0 === this.size + ? 'Repeat []' + : 'Repeat [ ' + this._value + ' ' + this.size + ' times ]'; + }), + (Repeat.prototype.get = function (s, o) { + return this.has(s) ? this._value : o; + }), + (Repeat.prototype.includes = function (s) { + return is(this._value, s); + }), + (Repeat.prototype.slice = function (s, o) { + var i = this.size; + return wholeSlice(s, o, i) + ? this + : new Repeat(this._value, resolveEnd(o, i) - resolveBegin(s, i)); + }), + (Repeat.prototype.reverse = function () { + return this; + }), + (Repeat.prototype.indexOf = function (s) { + return is(this._value, s) ? 0 : -1; + }), + (Repeat.prototype.lastIndexOf = function (s) { + return is(this._value, s) ? this.size : -1; + }), + (Repeat.prototype.__iterate = function (s, o) { + for (var i = 0; i < this.size; i++) + if (!1 === s(this._value, i, this)) return i + 1; + return i; + }), + (Repeat.prototype.__iterator = function (s, o) { + var i = this, + a = 0; + return new Iterator(function () { + return a < i.size ? iteratorValue(s, a++, i._value) : iteratorDone(); + }); + }), + (Repeat.prototype.equals = function (s) { + return s instanceof Repeat ? is(this._value, s._value) : deepEqual(s); + }), + createClass(Range, IndexedSeq), + (Range.prototype.toString = function () { + return 0 === this.size + ? 'Range []' + : 'Range [ ' + + this._start + + '...' + + this._end + + (1 !== this._step ? ' by ' + this._step : '') + + ' ]'; + }), + (Range.prototype.get = function (s, o) { + return this.has(s) ? this._start + wrapIndex(this, s) * this._step : o; + }), + (Range.prototype.includes = function (s) { + var o = (s - this._start) / this._step; + return o >= 0 && o < this.size && o === Math.floor(o); + }), + (Range.prototype.slice = function (s, o) { + return wholeSlice(s, o, this.size) + ? this + : ((s = resolveBegin(s, this.size)), + (o = resolveEnd(o, this.size)) <= s + ? new Range(0, 0) + : new Range(this.get(s, this._end), this.get(o, this._end), this._step)); + }), + (Range.prototype.indexOf = function (s) { + var o = s - this._start; + if (o % this._step == 0) { + var i = o / this._step; + if (i >= 0 && i < this.size) return i; + } + return -1; + }), + (Range.prototype.lastIndexOf = function (s) { + return this.indexOf(s); + }), + (Range.prototype.__iterate = function (s, o) { + for ( + var i = this.size - 1, + a = this._step, + u = o ? this._start + i * a : this._start, + _ = 0; + _ <= i; + _++ + ) { + if (!1 === s(u, _, this)) return _ + 1; + u += o ? -a : a; + } + return _; + }), + (Range.prototype.__iterator = function (s, o) { + var i = this.size - 1, + a = this._step, + u = o ? this._start + i * a : this._start, + _ = 0; + return new Iterator(function () { + var w = u; + return ((u += o ? -a : a), _ > i ? iteratorDone() : iteratorValue(s, _++, w)); + }); + }), + (Range.prototype.equals = function (s) { + return s instanceof Range + ? this._start === s._start && this._end === s._end && this._step === s._step + : deepEqual(this, s); + }), + createClass(Collection, Iterable), + createClass(KeyedCollection, Collection), + createClass(IndexedCollection, Collection), + createClass(SetCollection, Collection), + (Collection.Keyed = KeyedCollection), + (Collection.Indexed = IndexedCollection), + (Collection.Set = SetCollection)); + var le = + 'function' == typeof Math.imul && -2 === Math.imul(4294967295, 2) + ? Math.imul + : function imul(s, o) { + var i = 65535 & (s |= 0), + a = 65535 & (o |= 0); + return (i * a + ((((s >>> 16) * a + i * (o >>> 16)) << 16) >>> 0)) | 0; + }; + function smi(s) { + return ((s >>> 1) & 1073741824) | (3221225471 & s); + } + function hash(s) { + if (!1 === s || null == s) return 0; + if ('function' == typeof s.valueOf && (!1 === (s = s.valueOf()) || null == s)) + return 0; + if (!0 === s) return 1; + var o = typeof s; + if ('number' === o) { + if (s != s || s === 1 / 0) return 0; + var i = 0 | s; + for (i !== s && (i ^= 4294967295 * s); s > 4294967295; ) i ^= s /= 4294967295; + return smi(i); + } + if ('string' === o) return s.length > _e ? cachedHashString(s) : hashString(s); + if ('function' == typeof s.hashCode) return s.hashCode(); + if ('object' === o) return hashJSObj(s); + if ('function' == typeof s.toString) return hashString(s.toString()); + throw new Error('Value type ' + o + ' cannot be hashed.'); + } + function cachedHashString(s) { + var o = Pe[s]; + return ( + void 0 === o && + ((o = hashString(s)), xe === we && ((xe = 0), (Pe = {})), xe++, (Pe[s] = o)), + o + ); + } + function hashString(s) { + for (var o = 0, i = 0; i < s.length; i++) o = (31 * o + s.charCodeAt(i)) | 0; + return smi(o); + } + function hashJSObj(s) { + var o; + if (ye && void 0 !== (o = fe.get(s))) return o; + if (void 0 !== (o = s[Se])) return o; + if (!de) { + if (void 0 !== (o = s.propertyIsEnumerable && s.propertyIsEnumerable[Se])) return o; + if (void 0 !== (o = getIENodeHash(s))) return o; + } + if (((o = ++be), 1073741824 & be && (be = 0), ye)) fe.set(s, o); + else { + if (void 0 !== pe && !1 === pe(s)) + throw new Error('Non-extensible objects are not allowed as keys.'); + if (de) + Object.defineProperty(s, Se, { + enumerable: !1, + configurable: !1, + writable: !1, + value: o + }); + else if ( + void 0 !== s.propertyIsEnumerable && + s.propertyIsEnumerable === s.constructor.prototype.propertyIsEnumerable + ) + ((s.propertyIsEnumerable = function () { + return this.constructor.prototype.propertyIsEnumerable.apply(this, arguments); + }), + (s.propertyIsEnumerable[Se] = o)); + else { + if (void 0 === s.nodeType) + throw new Error('Unable to set a non-enumerable property on object.'); + s[Se] = o; + } + } + return o; + } + var pe = Object.isExtensible, + de = (function () { + try { + return (Object.defineProperty({}, '@', {}), !0); + } catch (s) { + return !1; + } + })(); + function getIENodeHash(s) { + if (s && s.nodeType > 0) + switch (s.nodeType) { + case 1: + return s.uniqueID; + case 9: + return s.documentElement && s.documentElement.uniqueID; + } + } + var fe, + ye = 'function' == typeof WeakMap; + ye && (fe = new WeakMap()); + var be = 0, + Se = '__immutablehash__'; + 'function' == typeof Symbol && (Se = Symbol(Se)); + var _e = 16, + we = 255, + xe = 0, + Pe = {}; + function assertNotInfinite(s) { + invariant(s !== 1 / 0, 'Cannot perform this action with an infinite size.'); + } + function Map(s) { + return null == s + ? emptyMap() + : isMap(s) && !isOrdered(s) + ? s + : emptyMap().withMutations(function (o) { + var i = KeyedIterable(s); + (assertNotInfinite(i.size), + i.forEach(function (s, i) { + return o.set(i, s); + })); + }); + } + function isMap(s) { + return !(!s || !s[Re]); + } + (createClass(Map, KeyedCollection), + (Map.of = function () { + var o = s.call(arguments, 0); + return emptyMap().withMutations(function (s) { + for (var i = 0; i < o.length; i += 2) { + if (i + 1 >= o.length) throw new Error('Missing value for key: ' + o[i]); + s.set(o[i], o[i + 1]); + } + }); + }), + (Map.prototype.toString = function () { + return this.__toString('Map {', '}'); + }), + (Map.prototype.get = function (s, o) { + return this._root ? this._root.get(0, void 0, s, o) : o; + }), + (Map.prototype.set = function (s, o) { + return updateMap(this, s, o); + }), + (Map.prototype.setIn = function (s, o) { + return this.updateIn(s, j, function () { + return o; + }); + }), + (Map.prototype.remove = function (s) { + return updateMap(this, s, j); + }), + (Map.prototype.deleteIn = function (s) { + return this.updateIn(s, function () { + return j; + }); + }), + (Map.prototype.update = function (s, o, i) { + return 1 === arguments.length ? s(this) : this.updateIn([s], o, i); + }), + (Map.prototype.updateIn = function (s, o, i) { + i || ((i = o), (o = void 0)); + var a = updateInDeepMap(this, forceIterator(s), o, i); + return a === j ? void 0 : a; + }), + (Map.prototype.clear = function () { + return 0 === this.size + ? this + : this.__ownerID + ? ((this.size = 0), + (this._root = null), + (this.__hash = void 0), + (this.__altered = !0), + this) + : emptyMap(); + }), + (Map.prototype.merge = function () { + return mergeIntoMapWith(this, void 0, arguments); + }), + (Map.prototype.mergeWith = function (o) { + return mergeIntoMapWith(this, o, s.call(arguments, 1)); + }), + (Map.prototype.mergeIn = function (o) { + var i = s.call(arguments, 1); + return this.updateIn(o, emptyMap(), function (s) { + return 'function' == typeof s.merge ? s.merge.apply(s, i) : i[i.length - 1]; + }); + }), + (Map.prototype.mergeDeep = function () { + return mergeIntoMapWith(this, deepMerger, arguments); + }), + (Map.prototype.mergeDeepWith = function (o) { + var i = s.call(arguments, 1); + return mergeIntoMapWith(this, deepMergerWith(o), i); + }), + (Map.prototype.mergeDeepIn = function (o) { + var i = s.call(arguments, 1); + return this.updateIn(o, emptyMap(), function (s) { + return 'function' == typeof s.mergeDeep + ? s.mergeDeep.apply(s, i) + : i[i.length - 1]; + }); + }), + (Map.prototype.sort = function (s) { + return OrderedMap(sortFactory(this, s)); + }), + (Map.prototype.sortBy = function (s, o) { + return OrderedMap(sortFactory(this, o, s)); + }), + (Map.prototype.withMutations = function (s) { + var o = this.asMutable(); + return (s(o), o.wasAltered() ? o.__ensureOwner(this.__ownerID) : this); + }), + (Map.prototype.asMutable = function () { + return this.__ownerID ? this : this.__ensureOwner(new OwnerID()); + }), + (Map.prototype.asImmutable = function () { + return this.__ensureOwner(); + }), + (Map.prototype.wasAltered = function () { + return this.__altered; + }), + (Map.prototype.__iterator = function (s, o) { + return new MapIterator(this, s, o); + }), + (Map.prototype.__iterate = function (s, o) { + var i = this, + a = 0; + return ( + this._root && + this._root.iterate(function (o) { + return (a++, s(o[1], o[0], i)); + }, o), + a + ); + }), + (Map.prototype.__ensureOwner = function (s) { + return s === this.__ownerID + ? this + : s + ? makeMap(this.size, this._root, s, this.__hash) + : ((this.__ownerID = s), (this.__altered = !1), this); + }), + (Map.isMap = isMap)); + var Te, + Re = '@@__IMMUTABLE_MAP__@@', + $e = Map.prototype; + function ArrayMapNode(s, o) { + ((this.ownerID = s), (this.entries = o)); + } + function BitmapIndexedNode(s, o, i) { + ((this.ownerID = s), (this.bitmap = o), (this.nodes = i)); + } + function HashArrayMapNode(s, o, i) { + ((this.ownerID = s), (this.count = o), (this.nodes = i)); + } + function HashCollisionNode(s, o, i) { + ((this.ownerID = s), (this.keyHash = o), (this.entries = i)); + } + function ValueNode(s, o, i) { + ((this.ownerID = s), (this.keyHash = o), (this.entry = i)); + } + function MapIterator(s, o, i) { + ((this._type = o), + (this._reverse = i), + (this._stack = s._root && mapIteratorFrame(s._root))); + } + function mapIteratorValue(s, o) { + return iteratorValue(s, o[0], o[1]); + } + function mapIteratorFrame(s, o) { + return { node: s, index: 0, __prev: o }; + } + function makeMap(s, o, i, a) { + var u = Object.create($e); + return ( + (u.size = s), + (u._root = o), + (u.__ownerID = i), + (u.__hash = a), + (u.__altered = !1), + u + ); + } + function emptyMap() { + return Te || (Te = makeMap(0)); + } + function updateMap(s, o, i) { + var a, u; + if (s._root) { + var _ = MakeRef(L), + w = MakeRef(B); + if (((a = updateNode(s._root, s.__ownerID, 0, void 0, o, i, _, w)), !w.value)) + return s; + u = s.size + (_.value ? (i === j ? -1 : 1) : 0); + } else { + if (i === j) return s; + ((u = 1), (a = new ArrayMapNode(s.__ownerID, [[o, i]]))); + } + return s.__ownerID + ? ((s.size = u), (s._root = a), (s.__hash = void 0), (s.__altered = !0), s) + : a + ? makeMap(u, a) + : emptyMap(); + } + function updateNode(s, o, i, a, u, _, w, x) { + return s + ? s.update(o, i, a, u, _, w, x) + : _ === j + ? s + : (SetRef(x), SetRef(w), new ValueNode(o, a, [u, _])); + } + function isLeafNode(s) { + return s.constructor === ValueNode || s.constructor === HashCollisionNode; + } + function mergeIntoNode(s, o, i, a, u) { + if (s.keyHash === a) return new HashCollisionNode(o, a, [s.entry, u]); + var _, + x = (0 === i ? s.keyHash : s.keyHash >>> i) & C, + j = (0 === i ? a : a >>> i) & C; + return new BitmapIndexedNode( + o, + (1 << x) | (1 << j), + x === j + ? [mergeIntoNode(s, o, i + w, a, u)] + : ((_ = new ValueNode(o, a, u)), x < j ? [s, _] : [_, s]) + ); + } + function createNodes(s, o, i, a) { + s || (s = new OwnerID()); + for (var u = new ValueNode(s, hash(i), [i, a]), _ = 0; _ < o.length; _++) { + var w = o[_]; + u = u.update(s, 0, void 0, w[0], w[1]); + } + return u; + } + function packNodes(s, o, i, a) { + for ( + var u = 0, _ = 0, w = new Array(i), x = 0, C = 1, j = o.length; + x < j; + x++, C <<= 1 + ) { + var L = o[x]; + void 0 !== L && x !== a && ((u |= C), (w[_++] = L)); + } + return new BitmapIndexedNode(s, u, w); + } + function expandNodes(s, o, i, a, u) { + for (var _ = 0, w = new Array(x), C = 0; 0 !== i; C++, i >>>= 1) + w[C] = 1 & i ? o[_++] : void 0; + return ((w[a] = u), new HashArrayMapNode(s, _ + 1, w)); + } + function mergeIntoMapWith(s, o, i) { + for (var a = [], u = 0; u < i.length; u++) { + var _ = i[u], + w = KeyedIterable(_); + (isIterable(_) || + (w = w.map(function (s) { + return fromJS(s); + })), + a.push(w)); + } + return mergeIntoCollectionWith(s, o, a); + } + function deepMerger(s, o, i) { + return s && s.mergeDeep && isIterable(o) ? s.mergeDeep(o) : is(s, o) ? s : o; + } + function deepMergerWith(s) { + return function (o, i, a) { + if (o && o.mergeDeepWith && isIterable(i)) return o.mergeDeepWith(s, i); + var u = s(o, i, a); + return is(o, u) ? o : u; + }; + } + function mergeIntoCollectionWith(s, o, i) { + return 0 === + (i = i.filter(function (s) { + return 0 !== s.size; + })).length + ? s + : 0 !== s.size || s.__ownerID || 1 !== i.length + ? s.withMutations(function (s) { + for ( + var a = o + ? function (i, a) { + s.update(a, j, function (s) { + return s === j ? i : o(s, i, a); + }); + } + : function (o, i) { + s.set(i, o); + }, + u = 0; + u < i.length; + u++ + ) + i[u].forEach(a); + }) + : s.constructor(i[0]); + } + function updateInDeepMap(s, o, i, a) { + var u = s === j, + _ = o.next(); + if (_.done) { + var w = u ? i : s, + x = a(w); + return x === w ? s : x; + } + invariant(u || (s && s.set), 'invalid keyPath'); + var C = _.value, + L = u ? j : s.get(C, j), + B = updateInDeepMap(L, o, i, a); + return B === L ? s : B === j ? s.remove(C) : (u ? emptyMap() : s).set(C, B); + } + function popCount(s) { + return ( + (s = + ((s = (858993459 & (s -= (s >> 1) & 1431655765)) + ((s >> 2) & 858993459)) + + (s >> 4)) & + 252645135), + (s += s >> 8), + 127 & (s += s >> 16) + ); + } + function setIn(s, o, i, a) { + var u = a ? s : arrCopy(s); + return ((u[o] = i), u); + } + function spliceIn(s, o, i, a) { + var u = s.length + 1; + if (a && o + 1 === u) return ((s[o] = i), s); + for (var _ = new Array(u), w = 0, x = 0; x < u; x++) + x === o ? ((_[x] = i), (w = -1)) : (_[x] = s[x + w]); + return _; + } + function spliceOut(s, o, i) { + var a = s.length - 1; + if (i && o === a) return (s.pop(), s); + for (var u = new Array(a), _ = 0, w = 0; w < a; w++) + (w === o && (_ = 1), (u[w] = s[w + _])); + return u; + } + (($e[Re] = !0), + ($e[_] = $e.remove), + ($e.removeIn = $e.deleteIn), + (ArrayMapNode.prototype.get = function (s, o, i, a) { + for (var u = this.entries, _ = 0, w = u.length; _ < w; _++) + if (is(i, u[_][0])) return u[_][1]; + return a; + }), + (ArrayMapNode.prototype.update = function (s, o, i, a, u, _, w) { + for ( + var x = u === j, C = this.entries, L = 0, B = C.length; + L < B && !is(a, C[L][0]); + L++ + ); + var $ = L < B; + if ($ ? C[L][1] === u : x) return this; + if ((SetRef(w), (x || !$) && SetRef(_), !x || 1 !== C.length)) { + if (!$ && !x && C.length >= qe) return createNodes(s, C, a, u); + var U = s && s === this.ownerID, + V = U ? C : arrCopy(C); + return ( + $ + ? x + ? L === B - 1 + ? V.pop() + : (V[L] = V.pop()) + : (V[L] = [a, u]) + : V.push([a, u]), + U ? ((this.entries = V), this) : new ArrayMapNode(s, V) + ); + } + }), + (BitmapIndexedNode.prototype.get = function (s, o, i, a) { + void 0 === o && (o = hash(i)); + var u = 1 << ((0 === s ? o : o >>> s) & C), + _ = this.bitmap; + return _ & u ? this.nodes[popCount(_ & (u - 1))].get(s + w, o, i, a) : a; + }), + (BitmapIndexedNode.prototype.update = function (s, o, i, a, u, _, x) { + void 0 === i && (i = hash(a)); + var L = (0 === o ? i : i >>> o) & C, + B = 1 << L, + $ = this.bitmap, + U = !!($ & B); + if (!U && u === j) return this; + var V = popCount($ & (B - 1)), + z = this.nodes, + Y = U ? z[V] : void 0, + Z = updateNode(Y, s, o + w, i, a, u, _, x); + if (Z === Y) return this; + if (!U && Z && z.length >= ze) return expandNodes(s, z, $, L, Z); + if (U && !Z && 2 === z.length && isLeafNode(z[1 ^ V])) return z[1 ^ V]; + if (U && Z && 1 === z.length && isLeafNode(Z)) return Z; + var ee = s && s === this.ownerID, + ie = U ? (Z ? $ : $ ^ B) : $ | B, + ae = U ? (Z ? setIn(z, V, Z, ee) : spliceOut(z, V, ee)) : spliceIn(z, V, Z, ee); + return ee + ? ((this.bitmap = ie), (this.nodes = ae), this) + : new BitmapIndexedNode(s, ie, ae); + }), + (HashArrayMapNode.prototype.get = function (s, o, i, a) { + void 0 === o && (o = hash(i)); + var u = (0 === s ? o : o >>> s) & C, + _ = this.nodes[u]; + return _ ? _.get(s + w, o, i, a) : a; + }), + (HashArrayMapNode.prototype.update = function (s, o, i, a, u, _, x) { + void 0 === i && (i = hash(a)); + var L = (0 === o ? i : i >>> o) & C, + B = u === j, + $ = this.nodes, + U = $[L]; + if (B && !U) return this; + var V = updateNode(U, s, o + w, i, a, u, _, x); + if (V === U) return this; + var z = this.count; + if (U) { + if (!V && --z < We) return packNodes(s, $, z, L); + } else z++; + var Y = s && s === this.ownerID, + Z = setIn($, L, V, Y); + return Y + ? ((this.count = z), (this.nodes = Z), this) + : new HashArrayMapNode(s, z, Z); + }), + (HashCollisionNode.prototype.get = function (s, o, i, a) { + for (var u = this.entries, _ = 0, w = u.length; _ < w; _++) + if (is(i, u[_][0])) return u[_][1]; + return a; + }), + (HashCollisionNode.prototype.update = function (s, o, i, a, u, _, w) { + void 0 === i && (i = hash(a)); + var x = u === j; + if (i !== this.keyHash) + return x ? this : (SetRef(w), SetRef(_), mergeIntoNode(this, s, o, i, [a, u])); + for (var C = this.entries, L = 0, B = C.length; L < B && !is(a, C[L][0]); L++); + var $ = L < B; + if ($ ? C[L][1] === u : x) return this; + if ((SetRef(w), (x || !$) && SetRef(_), x && 2 === B)) + return new ValueNode(s, this.keyHash, C[1 ^ L]); + var U = s && s === this.ownerID, + V = U ? C : arrCopy(C); + return ( + $ + ? x + ? L === B - 1 + ? V.pop() + : (V[L] = V.pop()) + : (V[L] = [a, u]) + : V.push([a, u]), + U ? ((this.entries = V), this) : new HashCollisionNode(s, this.keyHash, V) + ); + }), + (ValueNode.prototype.get = function (s, o, i, a) { + return is(i, this.entry[0]) ? this.entry[1] : a; + }), + (ValueNode.prototype.update = function (s, o, i, a, u, _, w) { + var x = u === j, + C = is(a, this.entry[0]); + return (C ? u === this.entry[1] : x) + ? this + : (SetRef(w), + x + ? void SetRef(_) + : C + ? s && s === this.ownerID + ? ((this.entry[1] = u), this) + : new ValueNode(s, this.keyHash, [a, u]) + : (SetRef(_), mergeIntoNode(this, s, o, hash(a), [a, u]))); + }), + (ArrayMapNode.prototype.iterate = HashCollisionNode.prototype.iterate = + function (s, o) { + for (var i = this.entries, a = 0, u = i.length - 1; a <= u; a++) + if (!1 === s(i[o ? u - a : a])) return !1; + }), + (BitmapIndexedNode.prototype.iterate = HashArrayMapNode.prototype.iterate = + function (s, o) { + for (var i = this.nodes, a = 0, u = i.length - 1; a <= u; a++) { + var _ = i[o ? u - a : a]; + if (_ && !1 === _.iterate(s, o)) return !1; + } + }), + (ValueNode.prototype.iterate = function (s, o) { + return s(this.entry); + }), + createClass(MapIterator, Iterator), + (MapIterator.prototype.next = function () { + for (var s = this._type, o = this._stack; o; ) { + var i, + a = o.node, + u = o.index++; + if (a.entry) { + if (0 === u) return mapIteratorValue(s, a.entry); + } else if (a.entries) { + if (u <= (i = a.entries.length - 1)) + return mapIteratorValue(s, a.entries[this._reverse ? i - u : u]); + } else if (u <= (i = a.nodes.length - 1)) { + var _ = a.nodes[this._reverse ? i - u : u]; + if (_) { + if (_.entry) return mapIteratorValue(s, _.entry); + o = this._stack = mapIteratorFrame(_, o); + } + continue; + } + o = this._stack = this._stack.__prev; + } + return iteratorDone(); + })); + var qe = x / 4, + ze = x / 2, + We = x / 4; + function List(s) { + var o = emptyList(); + if (null == s) return o; + if (isList(s)) return s; + var i = IndexedIterable(s), + a = i.size; + return 0 === a + ? o + : (assertNotInfinite(a), + a > 0 && a < x + ? makeList(0, a, w, null, new VNode(i.toArray())) + : o.withMutations(function (s) { + (s.setSize(a), + i.forEach(function (o, i) { + return s.set(i, o); + })); + })); + } + function isList(s) { + return !(!s || !s[He]); + } + (createClass(List, IndexedCollection), + (List.of = function () { + return this(arguments); + }), + (List.prototype.toString = function () { + return this.__toString('List [', ']'); + }), + (List.prototype.get = function (s, o) { + if ((s = wrapIndex(this, s)) >= 0 && s < this.size) { + var i = listNodeFor(this, (s += this._origin)); + return i && i.array[s & C]; + } + return o; + }), + (List.prototype.set = function (s, o) { + return updateList(this, s, o); + }), + (List.prototype.remove = function (s) { + return this.has(s) + ? 0 === s + ? this.shift() + : s === this.size - 1 + ? this.pop() + : this.splice(s, 1) + : this; + }), + (List.prototype.insert = function (s, o) { + return this.splice(s, 0, o); + }), + (List.prototype.clear = function () { + return 0 === this.size + ? this + : this.__ownerID + ? ((this.size = this._origin = this._capacity = 0), + (this._level = w), + (this._root = this._tail = null), + (this.__hash = void 0), + (this.__altered = !0), + this) + : emptyList(); + }), + (List.prototype.push = function () { + var s = arguments, + o = this.size; + return this.withMutations(function (i) { + setListBounds(i, 0, o + s.length); + for (var a = 0; a < s.length; a++) i.set(o + a, s[a]); + }); + }), + (List.prototype.pop = function () { + return setListBounds(this, 0, -1); + }), + (List.prototype.unshift = function () { + var s = arguments; + return this.withMutations(function (o) { + setListBounds(o, -s.length); + for (var i = 0; i < s.length; i++) o.set(i, s[i]); + }); + }), + (List.prototype.shift = function () { + return setListBounds(this, 1); + }), + (List.prototype.merge = function () { + return mergeIntoListWith(this, void 0, arguments); + }), + (List.prototype.mergeWith = function (o) { + return mergeIntoListWith(this, o, s.call(arguments, 1)); + }), + (List.prototype.mergeDeep = function () { + return mergeIntoListWith(this, deepMerger, arguments); + }), + (List.prototype.mergeDeepWith = function (o) { + var i = s.call(arguments, 1); + return mergeIntoListWith(this, deepMergerWith(o), i); + }), + (List.prototype.setSize = function (s) { + return setListBounds(this, 0, s); + }), + (List.prototype.slice = function (s, o) { + var i = this.size; + return wholeSlice(s, o, i) + ? this + : setListBounds(this, resolveBegin(s, i), resolveEnd(o, i)); + }), + (List.prototype.__iterator = function (s, o) { + var i = 0, + a = iterateList(this, o); + return new Iterator(function () { + var o = a(); + return o === et ? iteratorDone() : iteratorValue(s, i++, o); + }); + }), + (List.prototype.__iterate = function (s, o) { + for ( + var i, a = 0, u = iterateList(this, o); + (i = u()) !== et && !1 !== s(i, a++, this); + ); + return a; + }), + (List.prototype.__ensureOwner = function (s) { + return s === this.__ownerID + ? this + : s + ? makeList( + this._origin, + this._capacity, + this._level, + this._root, + this._tail, + s, + this.__hash + ) + : ((this.__ownerID = s), this); + }), + (List.isList = isList)); + var He = '@@__IMMUTABLE_LIST__@@', + Ye = List.prototype; + function VNode(s, o) { + ((this.array = s), (this.ownerID = o)); + } + ((Ye[He] = !0), + (Ye[_] = Ye.remove), + (Ye.setIn = $e.setIn), + (Ye.deleteIn = Ye.removeIn = $e.removeIn), + (Ye.update = $e.update), + (Ye.updateIn = $e.updateIn), + (Ye.mergeIn = $e.mergeIn), + (Ye.mergeDeepIn = $e.mergeDeepIn), + (Ye.withMutations = $e.withMutations), + (Ye.asMutable = $e.asMutable), + (Ye.asImmutable = $e.asImmutable), + (Ye.wasAltered = $e.wasAltered), + (VNode.prototype.removeBefore = function (s, o, i) { + if (i === o ? 1 << o : 0 === this.array.length) return this; + var a = (i >>> o) & C; + if (a >= this.array.length) return new VNode([], s); + var u, + _ = 0 === a; + if (o > 0) { + var x = this.array[a]; + if ((u = x && x.removeBefore(s, o - w, i)) === x && _) return this; + } + if (_ && !u) return this; + var j = editableVNode(this, s); + if (!_) for (var L = 0; L < a; L++) j.array[L] = void 0; + return (u && (j.array[a] = u), j); + }), + (VNode.prototype.removeAfter = function (s, o, i) { + if (i === (o ? 1 << o : 0) || 0 === this.array.length) return this; + var a, + u = ((i - 1) >>> o) & C; + if (u >= this.array.length) return this; + if (o > 0) { + var _ = this.array[u]; + if ((a = _ && _.removeAfter(s, o - w, i)) === _ && u === this.array.length - 1) + return this; + } + var x = editableVNode(this, s); + return (x.array.splice(u + 1), a && (x.array[u] = a), x); + })); + var Xe, + Qe, + et = {}; + function iterateList(s, o) { + var i = s._origin, + a = s._capacity, + u = getTailOffset(a), + _ = s._tail; + return iterateNodeOrLeaf(s._root, s._level, 0); + function iterateNodeOrLeaf(s, o, i) { + return 0 === o ? iterateLeaf(s, i) : iterateNode(s, o, i); + } + function iterateLeaf(s, w) { + var C = w === u ? _ && _.array : s && s.array, + j = w > i ? 0 : i - w, + L = a - w; + return ( + L > x && (L = x), + function () { + if (j === L) return et; + var s = o ? --L : j++; + return C && C[s]; + } + ); + } + function iterateNode(s, u, _) { + var C, + j = s && s.array, + L = _ > i ? 0 : (i - _) >> u, + B = 1 + ((a - _) >> u); + return ( + B > x && (B = x), + function () { + for (;;) { + if (C) { + var s = C(); + if (s !== et) return s; + C = null; + } + if (L === B) return et; + var i = o ? --B : L++; + C = iterateNodeOrLeaf(j && j[i], u - w, _ + (i << u)); + } + } + ); + } + } + function makeList(s, o, i, a, u, _, w) { + var x = Object.create(Ye); + return ( + (x.size = o - s), + (x._origin = s), + (x._capacity = o), + (x._level = i), + (x._root = a), + (x._tail = u), + (x.__ownerID = _), + (x.__hash = w), + (x.__altered = !1), + x + ); + } + function emptyList() { + return Xe || (Xe = makeList(0, 0, w)); + } + function updateList(s, o, i) { + if ((o = wrapIndex(s, o)) != o) return s; + if (o >= s.size || o < 0) + return s.withMutations(function (s) { + o < 0 ? setListBounds(s, o).set(0, i) : setListBounds(s, 0, o + 1).set(o, i); + }); + o += s._origin; + var a = s._tail, + u = s._root, + _ = MakeRef(B); + return ( + o >= getTailOffset(s._capacity) + ? (a = updateVNode(a, s.__ownerID, 0, o, i, _)) + : (u = updateVNode(u, s.__ownerID, s._level, o, i, _)), + _.value + ? s.__ownerID + ? ((s._root = u), (s._tail = a), (s.__hash = void 0), (s.__altered = !0), s) + : makeList(s._origin, s._capacity, s._level, u, a) + : s + ); + } + function updateVNode(s, o, i, a, u, _) { + var x, + j = (a >>> i) & C, + L = s && j < s.array.length; + if (!L && void 0 === u) return s; + if (i > 0) { + var B = s && s.array[j], + $ = updateVNode(B, o, i - w, a, u, _); + return $ === B ? s : (((x = editableVNode(s, o)).array[j] = $), x); + } + return L && s.array[j] === u + ? s + : (SetRef(_), + (x = editableVNode(s, o)), + void 0 === u && j === x.array.length - 1 ? x.array.pop() : (x.array[j] = u), + x); + } + function editableVNode(s, o) { + return o && s && o === s.ownerID ? s : new VNode(s ? s.array.slice() : [], o); + } + function listNodeFor(s, o) { + if (o >= getTailOffset(s._capacity)) return s._tail; + if (o < 1 << (s._level + w)) { + for (var i = s._root, a = s._level; i && a > 0; ) + ((i = i.array[(o >>> a) & C]), (a -= w)); + return i; + } + } + function setListBounds(s, o, i) { + (void 0 !== o && (o |= 0), void 0 !== i && (i |= 0)); + var a = s.__ownerID || new OwnerID(), + u = s._origin, + _ = s._capacity, + x = u + o, + j = void 0 === i ? _ : i < 0 ? _ + i : u + i; + if (x === u && j === _) return s; + if (x >= j) return s.clear(); + for (var L = s._level, B = s._root, $ = 0; x + $ < 0; ) + ((B = new VNode(B && B.array.length ? [void 0, B] : [], a)), ($ += 1 << (L += w))); + $ && ((x += $), (u += $), (j += $), (_ += $)); + for (var U = getTailOffset(_), V = getTailOffset(j); V >= 1 << (L + w); ) + ((B = new VNode(B && B.array.length ? [B] : [], a)), (L += w)); + var z = s._tail, + Y = V < U ? listNodeFor(s, j - 1) : V > U ? new VNode([], a) : z; + if (z && V > U && x < _ && z.array.length) { + for (var Z = (B = editableVNode(B, a)), ee = L; ee > w; ee -= w) { + var ie = (U >>> ee) & C; + Z = Z.array[ie] = editableVNode(Z.array[ie], a); + } + Z.array[(U >>> w) & C] = z; + } + if ((j < _ && (Y = Y && Y.removeAfter(a, 0, j)), x >= V)) + ((x -= V), (j -= V), (L = w), (B = null), (Y = Y && Y.removeBefore(a, 0, x))); + else if (x > u || V < U) { + for ($ = 0; B; ) { + var ae = (x >>> L) & C; + if ((ae !== V >>> L) & C) break; + (ae && ($ += (1 << L) * ae), (L -= w), (B = B.array[ae])); + } + (B && x > u && (B = B.removeBefore(a, L, x - $)), + B && V < U && (B = B.removeAfter(a, L, V - $)), + $ && ((x -= $), (j -= $))); + } + return s.__ownerID + ? ((s.size = j - x), + (s._origin = x), + (s._capacity = j), + (s._level = L), + (s._root = B), + (s._tail = Y), + (s.__hash = void 0), + (s.__altered = !0), + s) + : makeList(x, j, L, B, Y); + } + function mergeIntoListWith(s, o, i) { + for (var a = [], u = 0, _ = 0; _ < i.length; _++) { + var w = i[_], + x = IndexedIterable(w); + (x.size > u && (u = x.size), + isIterable(w) || + (x = x.map(function (s) { + return fromJS(s); + })), + a.push(x)); + } + return (u > s.size && (s = s.setSize(u)), mergeIntoCollectionWith(s, o, a)); + } + function getTailOffset(s) { + return s < x ? 0 : ((s - 1) >>> w) << w; + } + function OrderedMap(s) { + return null == s + ? emptyOrderedMap() + : isOrderedMap(s) + ? s + : emptyOrderedMap().withMutations(function (o) { + var i = KeyedIterable(s); + (assertNotInfinite(i.size), + i.forEach(function (s, i) { + return o.set(i, s); + })); + }); + } + function isOrderedMap(s) { + return isMap(s) && isOrdered(s); + } + function makeOrderedMap(s, o, i, a) { + var u = Object.create(OrderedMap.prototype); + return ( + (u.size = s ? s.size : 0), + (u._map = s), + (u._list = o), + (u.__ownerID = i), + (u.__hash = a), + u + ); + } + function emptyOrderedMap() { + return Qe || (Qe = makeOrderedMap(emptyMap(), emptyList())); + } + function updateOrderedMap(s, o, i) { + var a, + u, + _ = s._map, + w = s._list, + C = _.get(o), + L = void 0 !== C; + if (i === j) { + if (!L) return s; + w.size >= x && w.size >= 2 * _.size + ? ((a = (u = w.filter(function (s, o) { + return void 0 !== s && C !== o; + })) + .toKeyedSeq() + .map(function (s) { + return s[0]; + }) + .flip() + .toMap()), + s.__ownerID && (a.__ownerID = u.__ownerID = s.__ownerID)) + : ((a = _.remove(o)), (u = C === w.size - 1 ? w.pop() : w.set(C, void 0))); + } else if (L) { + if (i === w.get(C)[1]) return s; + ((a = _), (u = w.set(C, [o, i]))); + } else ((a = _.set(o, w.size)), (u = w.set(w.size, [o, i]))); + return s.__ownerID + ? ((s.size = a.size), (s._map = a), (s._list = u), (s.__hash = void 0), s) + : makeOrderedMap(a, u); + } + function ToKeyedSequence(s, o) { + ((this._iter = s), (this._useKeys = o), (this.size = s.size)); + } + function ToIndexedSequence(s) { + ((this._iter = s), (this.size = s.size)); + } + function ToSetSequence(s) { + ((this._iter = s), (this.size = s.size)); + } + function FromEntriesSequence(s) { + ((this._iter = s), (this.size = s.size)); + } + function flipFactory(s) { + var o = makeSequence(s); + return ( + (o._iter = s), + (o.size = s.size), + (o.flip = function () { + return s; + }), + (o.reverse = function () { + var o = s.reverse.apply(this); + return ( + (o.flip = function () { + return s.reverse(); + }), + o + ); + }), + (o.has = function (o) { + return s.includes(o); + }), + (o.includes = function (o) { + return s.has(o); + }), + (o.cacheResult = cacheResultThrough), + (o.__iterateUncached = function (o, i) { + var a = this; + return s.__iterate(function (s, i) { + return !1 !== o(i, s, a); + }, i); + }), + (o.__iteratorUncached = function (o, i) { + if (o === V) { + var a = s.__iterator(o, i); + return new Iterator(function () { + var s = a.next(); + if (!s.done) { + var o = s.value[0]; + ((s.value[0] = s.value[1]), (s.value[1] = o)); + } + return s; + }); + } + return s.__iterator(o === U ? $ : U, i); + }), + o + ); + } + function mapFactory(s, o, i) { + var a = makeSequence(s); + return ( + (a.size = s.size), + (a.has = function (o) { + return s.has(o); + }), + (a.get = function (a, u) { + var _ = s.get(a, j); + return _ === j ? u : o.call(i, _, a, s); + }), + (a.__iterateUncached = function (a, u) { + var _ = this; + return s.__iterate(function (s, u, w) { + return !1 !== a(o.call(i, s, u, w), u, _); + }, u); + }), + (a.__iteratorUncached = function (a, u) { + var _ = s.__iterator(V, u); + return new Iterator(function () { + var u = _.next(); + if (u.done) return u; + var w = u.value, + x = w[0]; + return iteratorValue(a, x, o.call(i, w[1], x, s), u); + }); + }), + a + ); + } + function reverseFactory(s, o) { + var i = makeSequence(s); + return ( + (i._iter = s), + (i.size = s.size), + (i.reverse = function () { + return s; + }), + s.flip && + (i.flip = function () { + var o = flipFactory(s); + return ( + (o.reverse = function () { + return s.flip(); + }), + o + ); + }), + (i.get = function (i, a) { + return s.get(o ? i : -1 - i, a); + }), + (i.has = function (i) { + return s.has(o ? i : -1 - i); + }), + (i.includes = function (o) { + return s.includes(o); + }), + (i.cacheResult = cacheResultThrough), + (i.__iterate = function (o, i) { + var a = this; + return s.__iterate(function (s, i) { + return o(s, i, a); + }, !i); + }), + (i.__iterator = function (o, i) { + return s.__iterator(o, !i); + }), + i + ); + } + function filterFactory(s, o, i, a) { + var u = makeSequence(s); + return ( + a && + ((u.has = function (a) { + var u = s.get(a, j); + return u !== j && !!o.call(i, u, a, s); + }), + (u.get = function (a, u) { + var _ = s.get(a, j); + return _ !== j && o.call(i, _, a, s) ? _ : u; + })), + (u.__iterateUncached = function (u, _) { + var w = this, + x = 0; + return ( + s.__iterate(function (s, _, C) { + if (o.call(i, s, _, C)) return (x++, u(s, a ? _ : x - 1, w)); + }, _), + x + ); + }), + (u.__iteratorUncached = function (u, _) { + var w = s.__iterator(V, _), + x = 0; + return new Iterator(function () { + for (;;) { + var _ = w.next(); + if (_.done) return _; + var C = _.value, + j = C[0], + L = C[1]; + if (o.call(i, L, j, s)) return iteratorValue(u, a ? j : x++, L, _); + } + }); + }), + u + ); + } + function countByFactory(s, o, i) { + var a = Map().asMutable(); + return ( + s.__iterate(function (u, _) { + a.update(o.call(i, u, _, s), 0, function (s) { + return s + 1; + }); + }), + a.asImmutable() + ); + } + function groupByFactory(s, o, i) { + var a = isKeyed(s), + u = (isOrdered(s) ? OrderedMap() : Map()).asMutable(); + s.__iterate(function (_, w) { + u.update(o.call(i, _, w, s), function (s) { + return ((s = s || []).push(a ? [w, _] : _), s); + }); + }); + var _ = iterableClass(s); + return u.map(function (o) { + return reify(s, _(o)); + }); + } + function sliceFactory(s, o, i, a) { + var u = s.size; + if ( + (void 0 !== o && (o |= 0), + void 0 !== i && (i === 1 / 0 ? (i = u) : (i |= 0)), + wholeSlice(o, i, u)) + ) + return s; + var _ = resolveBegin(o, u), + w = resolveEnd(i, u); + if (_ != _ || w != w) return sliceFactory(s.toSeq().cacheResult(), o, i, a); + var x, + C = w - _; + C == C && (x = C < 0 ? 0 : C); + var j = makeSequence(s); + return ( + (j.size = 0 === x ? x : (s.size && x) || void 0), + !a && + isSeq(s) && + x >= 0 && + (j.get = function (o, i) { + return (o = wrapIndex(this, o)) >= 0 && o < x ? s.get(o + _, i) : i; + }), + (j.__iterateUncached = function (o, i) { + var u = this; + if (0 === x) return 0; + if (i) return this.cacheResult().__iterate(o, i); + var w = 0, + C = !0, + j = 0; + return ( + s.__iterate(function (s, i) { + if (!C || !(C = w++ < _)) + return (j++, !1 !== o(s, a ? i : j - 1, u) && j !== x); + }), + j + ); + }), + (j.__iteratorUncached = function (o, i) { + if (0 !== x && i) return this.cacheResult().__iterator(o, i); + var u = 0 !== x && s.__iterator(o, i), + w = 0, + C = 0; + return new Iterator(function () { + for (; w++ < _; ) u.next(); + if (++C > x) return iteratorDone(); + var s = u.next(); + return a || o === U + ? s + : iteratorValue(o, C - 1, o === $ ? void 0 : s.value[1], s); + }); + }), + j + ); + } + function takeWhileFactory(s, o, i) { + var a = makeSequence(s); + return ( + (a.__iterateUncached = function (a, u) { + var _ = this; + if (u) return this.cacheResult().__iterate(a, u); + var w = 0; + return ( + s.__iterate(function (s, u, x) { + return o.call(i, s, u, x) && ++w && a(s, u, _); + }), + w + ); + }), + (a.__iteratorUncached = function (a, u) { + var _ = this; + if (u) return this.cacheResult().__iterator(a, u); + var w = s.__iterator(V, u), + x = !0; + return new Iterator(function () { + if (!x) return iteratorDone(); + var s = w.next(); + if (s.done) return s; + var u = s.value, + C = u[0], + j = u[1]; + return o.call(i, j, C, _) + ? a === V + ? s + : iteratorValue(a, C, j, s) + : ((x = !1), iteratorDone()); + }); + }), + a + ); + } + function skipWhileFactory(s, o, i, a) { + var u = makeSequence(s); + return ( + (u.__iterateUncached = function (u, _) { + var w = this; + if (_) return this.cacheResult().__iterate(u, _); + var x = !0, + C = 0; + return ( + s.__iterate(function (s, _, j) { + if (!x || !(x = o.call(i, s, _, j))) return (C++, u(s, a ? _ : C - 1, w)); + }), + C + ); + }), + (u.__iteratorUncached = function (u, _) { + var w = this; + if (_) return this.cacheResult().__iterator(u, _); + var x = s.__iterator(V, _), + C = !0, + j = 0; + return new Iterator(function () { + var s, _, L; + do { + if ((s = x.next()).done) + return a || u === U + ? s + : iteratorValue(u, j++, u === $ ? void 0 : s.value[1], s); + var B = s.value; + ((_ = B[0]), (L = B[1]), C && (C = o.call(i, L, _, w))); + } while (C); + return u === V ? s : iteratorValue(u, _, L, s); + }); + }), + u + ); + } + function concatFactory(s, o) { + var i = isKeyed(s), + a = [s] + .concat(o) + .map(function (s) { + return ( + isIterable(s) + ? i && (s = KeyedIterable(s)) + : (s = i + ? keyedSeqFromValue(s) + : indexedSeqFromValue(Array.isArray(s) ? s : [s])), + s + ); + }) + .filter(function (s) { + return 0 !== s.size; + }); + if (0 === a.length) return s; + if (1 === a.length) { + var u = a[0]; + if (u === s || (i && isKeyed(u)) || (isIndexed(s) && isIndexed(u))) return u; + } + var _ = new ArraySeq(a); + return ( + i ? (_ = _.toKeyedSeq()) : isIndexed(s) || (_ = _.toSetSeq()), + ((_ = _.flatten(!0)).size = a.reduce(function (s, o) { + if (void 0 !== s) { + var i = o.size; + if (void 0 !== i) return s + i; + } + }, 0)), + _ + ); + } + function flattenFactory(s, o, i) { + var a = makeSequence(s); + return ( + (a.__iterateUncached = function (a, u) { + var _ = 0, + w = !1; + function flatDeep(s, x) { + var C = this; + s.__iterate(function (s, u) { + return ( + (!o || x < o) && isIterable(s) + ? flatDeep(s, x + 1) + : !1 === a(s, i ? u : _++, C) && (w = !0), + !w + ); + }, u); + } + return (flatDeep(s, 0), _); + }), + (a.__iteratorUncached = function (a, u) { + var _ = s.__iterator(a, u), + w = [], + x = 0; + return new Iterator(function () { + for (; _; ) { + var s = _.next(); + if (!1 === s.done) { + var C = s.value; + if ((a === V && (C = C[1]), (o && !(w.length < o)) || !isIterable(C))) + return i ? s : iteratorValue(a, x++, C, s); + (w.push(_), (_ = C.__iterator(a, u))); + } else _ = w.pop(); + } + return iteratorDone(); + }); + }), + a + ); + } + function flatMapFactory(s, o, i) { + var a = iterableClass(s); + return s + .toSeq() + .map(function (u, _) { + return a(o.call(i, u, _, s)); + }) + .flatten(!0); + } + function interposeFactory(s, o) { + var i = makeSequence(s); + return ( + (i.size = s.size && 2 * s.size - 1), + (i.__iterateUncached = function (i, a) { + var u = this, + _ = 0; + return ( + s.__iterate(function (s, a) { + return (!_ || !1 !== i(o, _++, u)) && !1 !== i(s, _++, u); + }, a), + _ + ); + }), + (i.__iteratorUncached = function (i, a) { + var u, + _ = s.__iterator(U, a), + w = 0; + return new Iterator(function () { + return (!u || w % 2) && (u = _.next()).done + ? u + : w % 2 + ? iteratorValue(i, w++, o) + : iteratorValue(i, w++, u.value, u); + }); + }), + i + ); + } + function sortFactory(s, o, i) { + o || (o = defaultComparator); + var a = isKeyed(s), + u = 0, + _ = s + .toSeq() + .map(function (o, a) { + return [a, o, u++, i ? i(o, a, s) : o]; + }) + .toArray(); + return ( + _.sort(function (s, i) { + return o(s[3], i[3]) || s[2] - i[2]; + }).forEach( + a + ? function (s, o) { + _[o].length = 2; + } + : function (s, o) { + _[o] = s[1]; + } + ), + a ? KeyedSeq(_) : isIndexed(s) ? IndexedSeq(_) : SetSeq(_) + ); + } + function maxFactory(s, o, i) { + if ((o || (o = defaultComparator), i)) { + var a = s + .toSeq() + .map(function (o, a) { + return [o, i(o, a, s)]; + }) + .reduce(function (s, i) { + return maxCompare(o, s[1], i[1]) ? i : s; + }); + return a && a[0]; + } + return s.reduce(function (s, i) { + return maxCompare(o, s, i) ? i : s; + }); + } + function maxCompare(s, o, i) { + var a = s(i, o); + return (0 === a && i !== o && (null == i || i != i)) || a > 0; + } + function zipWithFactory(s, o, i) { + var a = makeSequence(s); + return ( + (a.size = new ArraySeq(i) + .map(function (s) { + return s.size; + }) + .min()), + (a.__iterate = function (s, o) { + for ( + var i, a = this.__iterator(U, o), u = 0; + !(i = a.next()).done && !1 !== s(i.value, u++, this); + ); + return u; + }), + (a.__iteratorUncached = function (s, a) { + var u = i.map(function (s) { + return ((s = Iterable(s)), getIterator(a ? s.reverse() : s)); + }), + _ = 0, + w = !1; + return new Iterator(function () { + var i; + return ( + w || + ((i = u.map(function (s) { + return s.next(); + })), + (w = i.some(function (s) { + return s.done; + }))), + w + ? iteratorDone() + : iteratorValue( + s, + _++, + o.apply( + null, + i.map(function (s) { + return s.value; + }) + ) + ) + ); + }); + }), + a + ); + } + function reify(s, o) { + return isSeq(s) ? o : s.constructor(o); + } + function validateEntry(s) { + if (s !== Object(s)) throw new TypeError('Expected [K, V] tuple: ' + s); + } + function resolveSize(s) { + return (assertNotInfinite(s.size), ensureSize(s)); + } + function iterableClass(s) { + return isKeyed(s) ? KeyedIterable : isIndexed(s) ? IndexedIterable : SetIterable; + } + function makeSequence(s) { + return Object.create( + (isKeyed(s) ? KeyedSeq : isIndexed(s) ? IndexedSeq : SetSeq).prototype + ); + } + function cacheResultThrough() { + return this._iter.cacheResult + ? (this._iter.cacheResult(), (this.size = this._iter.size), this) + : Seq.prototype.cacheResult.call(this); + } + function defaultComparator(s, o) { + return s > o ? 1 : s < o ? -1 : 0; + } + function forceIterator(s) { + var o = getIterator(s); + if (!o) { + if (!isArrayLike(s)) throw new TypeError('Expected iterable or array-like: ' + s); + o = getIterator(Iterable(s)); + } + return o; + } + function Record(s, o) { + var i, + a = function Record(_) { + if (_ instanceof a) return _; + if (!(this instanceof a)) return new a(_); + if (!i) { + i = !0; + var w = Object.keys(s); + (setProps(u, w), + (u.size = w.length), + (u._name = o), + (u._keys = w), + (u._defaultValues = s)); + } + this._map = Map(_); + }, + u = (a.prototype = Object.create(tt)); + return ((u.constructor = a), a); + } + (createClass(OrderedMap, Map), + (OrderedMap.of = function () { + return this(arguments); + }), + (OrderedMap.prototype.toString = function () { + return this.__toString('OrderedMap {', '}'); + }), + (OrderedMap.prototype.get = function (s, o) { + var i = this._map.get(s); + return void 0 !== i ? this._list.get(i)[1] : o; + }), + (OrderedMap.prototype.clear = function () { + return 0 === this.size + ? this + : this.__ownerID + ? ((this.size = 0), this._map.clear(), this._list.clear(), this) + : emptyOrderedMap(); + }), + (OrderedMap.prototype.set = function (s, o) { + return updateOrderedMap(this, s, o); + }), + (OrderedMap.prototype.remove = function (s) { + return updateOrderedMap(this, s, j); + }), + (OrderedMap.prototype.wasAltered = function () { + return this._map.wasAltered() || this._list.wasAltered(); + }), + (OrderedMap.prototype.__iterate = function (s, o) { + var i = this; + return this._list.__iterate(function (o) { + return o && s(o[1], o[0], i); + }, o); + }), + (OrderedMap.prototype.__iterator = function (s, o) { + return this._list.fromEntrySeq().__iterator(s, o); + }), + (OrderedMap.prototype.__ensureOwner = function (s) { + if (s === this.__ownerID) return this; + var o = this._map.__ensureOwner(s), + i = this._list.__ensureOwner(s); + return s + ? makeOrderedMap(o, i, s, this.__hash) + : ((this.__ownerID = s), (this._map = o), (this._list = i), this); + }), + (OrderedMap.isOrderedMap = isOrderedMap), + (OrderedMap.prototype[u] = !0), + (OrderedMap.prototype[_] = OrderedMap.prototype.remove), + createClass(ToKeyedSequence, KeyedSeq), + (ToKeyedSequence.prototype.get = function (s, o) { + return this._iter.get(s, o); + }), + (ToKeyedSequence.prototype.has = function (s) { + return this._iter.has(s); + }), + (ToKeyedSequence.prototype.valueSeq = function () { + return this._iter.valueSeq(); + }), + (ToKeyedSequence.prototype.reverse = function () { + var s = this, + o = reverseFactory(this, !0); + return ( + this._useKeys || + (o.valueSeq = function () { + return s._iter.toSeq().reverse(); + }), + o + ); + }), + (ToKeyedSequence.prototype.map = function (s, o) { + var i = this, + a = mapFactory(this, s, o); + return ( + this._useKeys || + (a.valueSeq = function () { + return i._iter.toSeq().map(s, o); + }), + a + ); + }), + (ToKeyedSequence.prototype.__iterate = function (s, o) { + var i, + a = this; + return this._iter.__iterate( + this._useKeys + ? function (o, i) { + return s(o, i, a); + } + : ((i = o ? resolveSize(this) : 0), + function (u) { + return s(u, o ? --i : i++, a); + }), + o + ); + }), + (ToKeyedSequence.prototype.__iterator = function (s, o) { + if (this._useKeys) return this._iter.__iterator(s, o); + var i = this._iter.__iterator(U, o), + a = o ? resolveSize(this) : 0; + return new Iterator(function () { + var u = i.next(); + return u.done ? u : iteratorValue(s, o ? --a : a++, u.value, u); + }); + }), + (ToKeyedSequence.prototype[u] = !0), + createClass(ToIndexedSequence, IndexedSeq), + (ToIndexedSequence.prototype.includes = function (s) { + return this._iter.includes(s); + }), + (ToIndexedSequence.prototype.__iterate = function (s, o) { + var i = this, + a = 0; + return this._iter.__iterate(function (o) { + return s(o, a++, i); + }, o); + }), + (ToIndexedSequence.prototype.__iterator = function (s, o) { + var i = this._iter.__iterator(U, o), + a = 0; + return new Iterator(function () { + var o = i.next(); + return o.done ? o : iteratorValue(s, a++, o.value, o); + }); + }), + createClass(ToSetSequence, SetSeq), + (ToSetSequence.prototype.has = function (s) { + return this._iter.includes(s); + }), + (ToSetSequence.prototype.__iterate = function (s, o) { + var i = this; + return this._iter.__iterate(function (o) { + return s(o, o, i); + }, o); + }), + (ToSetSequence.prototype.__iterator = function (s, o) { + var i = this._iter.__iterator(U, o); + return new Iterator(function () { + var o = i.next(); + return o.done ? o : iteratorValue(s, o.value, o.value, o); + }); + }), + createClass(FromEntriesSequence, KeyedSeq), + (FromEntriesSequence.prototype.entrySeq = function () { + return this._iter.toSeq(); + }), + (FromEntriesSequence.prototype.__iterate = function (s, o) { + var i = this; + return this._iter.__iterate(function (o) { + if (o) { + validateEntry(o); + var a = isIterable(o); + return s(a ? o.get(1) : o[1], a ? o.get(0) : o[0], i); + } + }, o); + }), + (FromEntriesSequence.prototype.__iterator = function (s, o) { + var i = this._iter.__iterator(U, o); + return new Iterator(function () { + for (;;) { + var o = i.next(); + if (o.done) return o; + var a = o.value; + if (a) { + validateEntry(a); + var u = isIterable(a); + return iteratorValue(s, u ? a.get(0) : a[0], u ? a.get(1) : a[1], o); + } + } + }); + }), + (ToIndexedSequence.prototype.cacheResult = + ToKeyedSequence.prototype.cacheResult = + ToSetSequence.prototype.cacheResult = + FromEntriesSequence.prototype.cacheResult = + cacheResultThrough), + createClass(Record, KeyedCollection), + (Record.prototype.toString = function () { + return this.__toString(recordName(this) + ' {', '}'); + }), + (Record.prototype.has = function (s) { + return this._defaultValues.hasOwnProperty(s); + }), + (Record.prototype.get = function (s, o) { + if (!this.has(s)) return o; + var i = this._defaultValues[s]; + return this._map ? this._map.get(s, i) : i; + }), + (Record.prototype.clear = function () { + if (this.__ownerID) return (this._map && this._map.clear(), this); + var s = this.constructor; + return s._empty || (s._empty = makeRecord(this, emptyMap())); + }), + (Record.prototype.set = function (s, o) { + if (!this.has(s)) + throw new Error('Cannot set unknown key "' + s + '" on ' + recordName(this)); + if (this._map && !this._map.has(s) && o === this._defaultValues[s]) return this; + var i = this._map && this._map.set(s, o); + return this.__ownerID || i === this._map ? this : makeRecord(this, i); + }), + (Record.prototype.remove = function (s) { + if (!this.has(s)) return this; + var o = this._map && this._map.remove(s); + return this.__ownerID || o === this._map ? this : makeRecord(this, o); + }), + (Record.prototype.wasAltered = function () { + return this._map.wasAltered(); + }), + (Record.prototype.__iterator = function (s, o) { + var i = this; + return KeyedIterable(this._defaultValues) + .map(function (s, o) { + return i.get(o); + }) + .__iterator(s, o); + }), + (Record.prototype.__iterate = function (s, o) { + var i = this; + return KeyedIterable(this._defaultValues) + .map(function (s, o) { + return i.get(o); + }) + .__iterate(s, o); + }), + (Record.prototype.__ensureOwner = function (s) { + if (s === this.__ownerID) return this; + var o = this._map && this._map.__ensureOwner(s); + return s ? makeRecord(this, o, s) : ((this.__ownerID = s), (this._map = o), this); + })); + var tt = Record.prototype; + function makeRecord(s, o, i) { + var a = Object.create(Object.getPrototypeOf(s)); + return ((a._map = o), (a.__ownerID = i), a); + } + function recordName(s) { + return s._name || s.constructor.name || 'Record'; + } + function setProps(s, o) { + try { + o.forEach(setProp.bind(void 0, s)); + } catch (s) {} + } + function setProp(s, o) { + Object.defineProperty(s, o, { + get: function () { + return this.get(o); + }, + set: function (s) { + (invariant(this.__ownerID, 'Cannot set on an immutable record.'), this.set(o, s)); + } + }); + } + function Set(s) { + return null == s + ? emptySet() + : isSet(s) && !isOrdered(s) + ? s + : emptySet().withMutations(function (o) { + var i = SetIterable(s); + (assertNotInfinite(i.size), + i.forEach(function (s) { + return o.add(s); + })); + }); + } + function isSet(s) { + return !(!s || !s[nt]); + } + ((tt[_] = tt.remove), + (tt.deleteIn = tt.removeIn = $e.removeIn), + (tt.merge = $e.merge), + (tt.mergeWith = $e.mergeWith), + (tt.mergeIn = $e.mergeIn), + (tt.mergeDeep = $e.mergeDeep), + (tt.mergeDeepWith = $e.mergeDeepWith), + (tt.mergeDeepIn = $e.mergeDeepIn), + (tt.setIn = $e.setIn), + (tt.update = $e.update), + (tt.updateIn = $e.updateIn), + (tt.withMutations = $e.withMutations), + (tt.asMutable = $e.asMutable), + (tt.asImmutable = $e.asImmutable), + createClass(Set, SetCollection), + (Set.of = function () { + return this(arguments); + }), + (Set.fromKeys = function (s) { + return this(KeyedIterable(s).keySeq()); + }), + (Set.prototype.toString = function () { + return this.__toString('Set {', '}'); + }), + (Set.prototype.has = function (s) { + return this._map.has(s); + }), + (Set.prototype.add = function (s) { + return updateSet(this, this._map.set(s, !0)); + }), + (Set.prototype.remove = function (s) { + return updateSet(this, this._map.remove(s)); + }), + (Set.prototype.clear = function () { + return updateSet(this, this._map.clear()); + }), + (Set.prototype.union = function () { + var o = s.call(arguments, 0); + return 0 === + (o = o.filter(function (s) { + return 0 !== s.size; + })).length + ? this + : 0 !== this.size || this.__ownerID || 1 !== o.length + ? this.withMutations(function (s) { + for (var i = 0; i < o.length; i++) + SetIterable(o[i]).forEach(function (o) { + return s.add(o); + }); + }) + : this.constructor(o[0]); + }), + (Set.prototype.intersect = function () { + var o = s.call(arguments, 0); + if (0 === o.length) return this; + o = o.map(function (s) { + return SetIterable(s); + }); + var i = this; + return this.withMutations(function (s) { + i.forEach(function (i) { + o.every(function (s) { + return s.includes(i); + }) || s.remove(i); + }); + }); + }), + (Set.prototype.subtract = function () { + var o = s.call(arguments, 0); + if (0 === o.length) return this; + o = o.map(function (s) { + return SetIterable(s); + }); + var i = this; + return this.withMutations(function (s) { + i.forEach(function (i) { + o.some(function (s) { + return s.includes(i); + }) && s.remove(i); + }); + }); + }), + (Set.prototype.merge = function () { + return this.union.apply(this, arguments); + }), + (Set.prototype.mergeWith = function (o) { + var i = s.call(arguments, 1); + return this.union.apply(this, i); + }), + (Set.prototype.sort = function (s) { + return OrderedSet(sortFactory(this, s)); + }), + (Set.prototype.sortBy = function (s, o) { + return OrderedSet(sortFactory(this, o, s)); + }), + (Set.prototype.wasAltered = function () { + return this._map.wasAltered(); + }), + (Set.prototype.__iterate = function (s, o) { + var i = this; + return this._map.__iterate(function (o, a) { + return s(a, a, i); + }, o); + }), + (Set.prototype.__iterator = function (s, o) { + return this._map + .map(function (s, o) { + return o; + }) + .__iterator(s, o); + }), + (Set.prototype.__ensureOwner = function (s) { + if (s === this.__ownerID) return this; + var o = this._map.__ensureOwner(s); + return s ? this.__make(o, s) : ((this.__ownerID = s), (this._map = o), this); + }), + (Set.isSet = isSet)); + var rt, + nt = '@@__IMMUTABLE_SET__@@', + st = Set.prototype; + function updateSet(s, o) { + return s.__ownerID + ? ((s.size = o.size), (s._map = o), s) + : o === s._map + ? s + : 0 === o.size + ? s.__empty() + : s.__make(o); + } + function makeSet(s, o) { + var i = Object.create(st); + return ((i.size = s ? s.size : 0), (i._map = s), (i.__ownerID = o), i); + } + function emptySet() { + return rt || (rt = makeSet(emptyMap())); + } + function OrderedSet(s) { + return null == s + ? emptyOrderedSet() + : isOrderedSet(s) + ? s + : emptyOrderedSet().withMutations(function (o) { + var i = SetIterable(s); + (assertNotInfinite(i.size), + i.forEach(function (s) { + return o.add(s); + })); + }); + } + function isOrderedSet(s) { + return isSet(s) && isOrdered(s); + } + ((st[nt] = !0), + (st[_] = st.remove), + (st.mergeDeep = st.merge), + (st.mergeDeepWith = st.mergeWith), + (st.withMutations = $e.withMutations), + (st.asMutable = $e.asMutable), + (st.asImmutable = $e.asImmutable), + (st.__empty = emptySet), + (st.__make = makeSet), + createClass(OrderedSet, Set), + (OrderedSet.of = function () { + return this(arguments); + }), + (OrderedSet.fromKeys = function (s) { + return this(KeyedIterable(s).keySeq()); + }), + (OrderedSet.prototype.toString = function () { + return this.__toString('OrderedSet {', '}'); + }), + (OrderedSet.isOrderedSet = isOrderedSet)); + var ot, + it = OrderedSet.prototype; + function makeOrderedSet(s, o) { + var i = Object.create(it); + return ((i.size = s ? s.size : 0), (i._map = s), (i.__ownerID = o), i); + } + function emptyOrderedSet() { + return ot || (ot = makeOrderedSet(emptyOrderedMap())); + } + function Stack(s) { + return null == s ? emptyStack() : isStack(s) ? s : emptyStack().unshiftAll(s); + } + function isStack(s) { + return !(!s || !s[ct]); + } + ((it[u] = !0), + (it.__empty = emptyOrderedSet), + (it.__make = makeOrderedSet), + createClass(Stack, IndexedCollection), + (Stack.of = function () { + return this(arguments); + }), + (Stack.prototype.toString = function () { + return this.__toString('Stack [', ']'); + }), + (Stack.prototype.get = function (s, o) { + var i = this._head; + for (s = wrapIndex(this, s); i && s--; ) i = i.next; + return i ? i.value : o; + }), + (Stack.prototype.peek = function () { + return this._head && this._head.value; + }), + (Stack.prototype.push = function () { + if (0 === arguments.length) return this; + for ( + var s = this.size + arguments.length, o = this._head, i = arguments.length - 1; + i >= 0; + i-- + ) + o = { value: arguments[i], next: o }; + return this.__ownerID + ? ((this.size = s), + (this._head = o), + (this.__hash = void 0), + (this.__altered = !0), + this) + : makeStack(s, o); + }), + (Stack.prototype.pushAll = function (s) { + if (0 === (s = IndexedIterable(s)).size) return this; + assertNotInfinite(s.size); + var o = this.size, + i = this._head; + return ( + s.reverse().forEach(function (s) { + (o++, (i = { value: s, next: i })); + }), + this.__ownerID + ? ((this.size = o), + (this._head = i), + (this.__hash = void 0), + (this.__altered = !0), + this) + : makeStack(o, i) + ); + }), + (Stack.prototype.pop = function () { + return this.slice(1); + }), + (Stack.prototype.unshift = function () { + return this.push.apply(this, arguments); + }), + (Stack.prototype.unshiftAll = function (s) { + return this.pushAll(s); + }), + (Stack.prototype.shift = function () { + return this.pop.apply(this, arguments); + }), + (Stack.prototype.clear = function () { + return 0 === this.size + ? this + : this.__ownerID + ? ((this.size = 0), + (this._head = void 0), + (this.__hash = void 0), + (this.__altered = !0), + this) + : emptyStack(); + }), + (Stack.prototype.slice = function (s, o) { + if (wholeSlice(s, o, this.size)) return this; + var i = resolveBegin(s, this.size); + if (resolveEnd(o, this.size) !== this.size) + return IndexedCollection.prototype.slice.call(this, s, o); + for (var a = this.size - i, u = this._head; i--; ) u = u.next; + return this.__ownerID + ? ((this.size = a), + (this._head = u), + (this.__hash = void 0), + (this.__altered = !0), + this) + : makeStack(a, u); + }), + (Stack.prototype.__ensureOwner = function (s) { + return s === this.__ownerID + ? this + : s + ? makeStack(this.size, this._head, s, this.__hash) + : ((this.__ownerID = s), (this.__altered = !1), this); + }), + (Stack.prototype.__iterate = function (s, o) { + if (o) return this.reverse().__iterate(s); + for (var i = 0, a = this._head; a && !1 !== s(a.value, i++, this); ) a = a.next; + return i; + }), + (Stack.prototype.__iterator = function (s, o) { + if (o) return this.reverse().__iterator(s); + var i = 0, + a = this._head; + return new Iterator(function () { + if (a) { + var o = a.value; + return ((a = a.next), iteratorValue(s, i++, o)); + } + return iteratorDone(); + }); + }), + (Stack.isStack = isStack)); + var at, + ct = '@@__IMMUTABLE_STACK__@@', + lt = Stack.prototype; + function makeStack(s, o, i, a) { + var u = Object.create(lt); + return ( + (u.size = s), + (u._head = o), + (u.__ownerID = i), + (u.__hash = a), + (u.__altered = !1), + u + ); + } + function emptyStack() { + return at || (at = makeStack(0)); + } + function mixin(s, o) { + var keyCopier = function (i) { + s.prototype[i] = o[i]; + }; + return ( + Object.keys(o).forEach(keyCopier), + Object.getOwnPropertySymbols && Object.getOwnPropertySymbols(o).forEach(keyCopier), + s + ); + } + function isProtoKey(s) { + return 'string' == typeof s && ('__proto__' === s || 'constructor' === s); + } + ((lt[ct] = !0), + (lt.withMutations = $e.withMutations), + (lt.asMutable = $e.asMutable), + (lt.asImmutable = $e.asImmutable), + (lt.wasAltered = $e.wasAltered), + (Iterable.Iterator = Iterator), + mixin(Iterable, { + toArray: function () { + assertNotInfinite(this.size); + var s = new Array(this.size || 0); + return ( + this.valueSeq().__iterate(function (o, i) { + s[i] = o; + }), + s + ); + }, + toIndexedSeq: function () { + return new ToIndexedSequence(this); + }, + toJS: function () { + return this.toSeq() + .map(function (s) { + return s && 'function' == typeof s.toJS ? s.toJS() : s; + }) + .__toJS(); + }, + toJSON: function () { + return this.toSeq() + .map(function (s) { + return s && 'function' == typeof s.toJSON ? s.toJSON() : s; + }) + .__toJS(); + }, + toKeyedSeq: function () { + return new ToKeyedSequence(this, !0); + }, + toMap: function () { + return Map(this.toKeyedSeq()); + }, + toObject: function () { + assertNotInfinite(this.size); + var s = {}; + return ( + this.__iterate(function (o, i) { + isProtoKey(i) || (s[i] = o); + }), + s + ); + }, + toOrderedMap: function () { + return OrderedMap(this.toKeyedSeq()); + }, + toOrderedSet: function () { + return OrderedSet(isKeyed(this) ? this.valueSeq() : this); + }, + toSet: function () { + return Set(isKeyed(this) ? this.valueSeq() : this); + }, + toSetSeq: function () { + return new ToSetSequence(this); + }, + toSeq: function () { + return isIndexed(this) + ? this.toIndexedSeq() + : isKeyed(this) + ? this.toKeyedSeq() + : this.toSetSeq(); + }, + toStack: function () { + return Stack(isKeyed(this) ? this.valueSeq() : this); + }, + toList: function () { + return List(isKeyed(this) ? this.valueSeq() : this); + }, + toString: function () { + return '[Iterable]'; + }, + __toString: function (s, o) { + return 0 === this.size + ? s + o + : s + ' ' + this.toSeq().map(this.__toStringMapper).join(', ') + ' ' + o; + }, + concat: function () { + return reify(this, concatFactory(this, s.call(arguments, 0))); + }, + includes: function (s) { + return this.some(function (o) { + return is(o, s); + }); + }, + entries: function () { + return this.__iterator(V); + }, + every: function (s, o) { + assertNotInfinite(this.size); + var i = !0; + return ( + this.__iterate(function (a, u, _) { + if (!s.call(o, a, u, _)) return ((i = !1), !1); + }), + i + ); + }, + filter: function (s, o) { + return reify(this, filterFactory(this, s, o, !0)); + }, + find: function (s, o, i) { + var a = this.findEntry(s, o); + return a ? a[1] : i; + }, + forEach: function (s, o) { + return (assertNotInfinite(this.size), this.__iterate(o ? s.bind(o) : s)); + }, + join: function (s) { + (assertNotInfinite(this.size), (s = void 0 !== s ? '' + s : ',')); + var o = '', + i = !0; + return ( + this.__iterate(function (a) { + (i ? (i = !1) : (o += s), (o += null != a ? a.toString() : '')); + }), + o + ); + }, + keys: function () { + return this.__iterator($); + }, + map: function (s, o) { + return reify(this, mapFactory(this, s, o)); + }, + reduce: function (s, o, i) { + var a, u; + return ( + assertNotInfinite(this.size), + arguments.length < 2 ? (u = !0) : (a = o), + this.__iterate(function (o, _, w) { + u ? ((u = !1), (a = o)) : (a = s.call(i, a, o, _, w)); + }), + a + ); + }, + reduceRight: function (s, o, i) { + var a = this.toKeyedSeq().reverse(); + return a.reduce.apply(a, arguments); + }, + reverse: function () { + return reify(this, reverseFactory(this, !0)); + }, + slice: function (s, o) { + return reify(this, sliceFactory(this, s, o, !0)); + }, + some: function (s, o) { + return !this.every(not(s), o); + }, + sort: function (s) { + return reify(this, sortFactory(this, s)); + }, + values: function () { + return this.__iterator(U); + }, + butLast: function () { + return this.slice(0, -1); + }, + isEmpty: function () { + return void 0 !== this.size + ? 0 === this.size + : !this.some(function () { + return !0; + }); + }, + count: function (s, o) { + return ensureSize(s ? this.toSeq().filter(s, o) : this); + }, + countBy: function (s, o) { + return countByFactory(this, s, o); + }, + equals: function (s) { + return deepEqual(this, s); + }, + entrySeq: function () { + var s = this; + if (s._cache) return new ArraySeq(s._cache); + var o = s.toSeq().map(entryMapper).toIndexedSeq(); + return ( + (o.fromEntrySeq = function () { + return s.toSeq(); + }), + o + ); + }, + filterNot: function (s, o) { + return this.filter(not(s), o); + }, + findEntry: function (s, o, i) { + var a = i; + return ( + this.__iterate(function (i, u, _) { + if (s.call(o, i, u, _)) return ((a = [u, i]), !1); + }), + a + ); + }, + findKey: function (s, o) { + var i = this.findEntry(s, o); + return i && i[0]; + }, + findLast: function (s, o, i) { + return this.toKeyedSeq().reverse().find(s, o, i); + }, + findLastEntry: function (s, o, i) { + return this.toKeyedSeq().reverse().findEntry(s, o, i); + }, + findLastKey: function (s, o) { + return this.toKeyedSeq().reverse().findKey(s, o); + }, + first: function () { + return this.find(returnTrue); + }, + flatMap: function (s, o) { + return reify(this, flatMapFactory(this, s, o)); + }, + flatten: function (s) { + return reify(this, flattenFactory(this, s, !0)); + }, + fromEntrySeq: function () { + return new FromEntriesSequence(this); + }, + get: function (s, o) { + return this.find( + function (o, i) { + return is(i, s); + }, + void 0, + o + ); + }, + getIn: function (s, o) { + for (var i, a = this, u = forceIterator(s); !(i = u.next()).done; ) { + var _ = i.value; + if ((a = a && a.get ? a.get(_, j) : j) === j) return o; + } + return a; + }, + groupBy: function (s, o) { + return groupByFactory(this, s, o); + }, + has: function (s) { + return this.get(s, j) !== j; + }, + hasIn: function (s) { + return this.getIn(s, j) !== j; + }, + isSubset: function (s) { + return ( + (s = 'function' == typeof s.includes ? s : Iterable(s)), + this.every(function (o) { + return s.includes(o); + }) + ); + }, + isSuperset: function (s) { + return (s = 'function' == typeof s.isSubset ? s : Iterable(s)).isSubset(this); + }, + keyOf: function (s) { + return this.findKey(function (o) { + return is(o, s); + }); + }, + keySeq: function () { + return this.toSeq().map(keyMapper).toIndexedSeq(); + }, + last: function () { + return this.toSeq().reverse().first(); + }, + lastKeyOf: function (s) { + return this.toKeyedSeq().reverse().keyOf(s); + }, + max: function (s) { + return maxFactory(this, s); + }, + maxBy: function (s, o) { + return maxFactory(this, o, s); + }, + min: function (s) { + return maxFactory(this, s ? neg(s) : defaultNegComparator); + }, + minBy: function (s, o) { + return maxFactory(this, o ? neg(o) : defaultNegComparator, s); + }, + rest: function () { + return this.slice(1); + }, + skip: function (s) { + return this.slice(Math.max(0, s)); + }, + skipLast: function (s) { + return reify(this, this.toSeq().reverse().skip(s).reverse()); + }, + skipWhile: function (s, o) { + return reify(this, skipWhileFactory(this, s, o, !0)); + }, + skipUntil: function (s, o) { + return this.skipWhile(not(s), o); + }, + sortBy: function (s, o) { + return reify(this, sortFactory(this, o, s)); + }, + take: function (s) { + return this.slice(0, Math.max(0, s)); + }, + takeLast: function (s) { + return reify(this, this.toSeq().reverse().take(s).reverse()); + }, + takeWhile: function (s, o) { + return reify(this, takeWhileFactory(this, s, o)); + }, + takeUntil: function (s, o) { + return this.takeWhile(not(s), o); + }, + valueSeq: function () { + return this.toIndexedSeq(); + }, + hashCode: function () { + return this.__hash || (this.__hash = hashIterable(this)); + } + })); + var ut = Iterable.prototype; + ((ut[o] = !0), + (ut[Z] = ut.values), + (ut.__toJS = ut.toArray), + (ut.__toStringMapper = quoteString), + (ut.inspect = ut.toSource = + function () { + return this.toString(); + }), + (ut.chain = ut.flatMap), + (ut.contains = ut.includes), + mixin(KeyedIterable, { + flip: function () { + return reify(this, flipFactory(this)); + }, + mapEntries: function (s, o) { + var i = this, + a = 0; + return reify( + this, + this.toSeq() + .map(function (u, _) { + return s.call(o, [_, u], a++, i); + }) + .fromEntrySeq() + ); + }, + mapKeys: function (s, o) { + var i = this; + return reify( + this, + this.toSeq() + .flip() + .map(function (a, u) { + return s.call(o, a, u, i); + }) + .flip() + ); + } + })); + var pt = KeyedIterable.prototype; + function keyMapper(s, o) { + return o; + } + function entryMapper(s, o) { + return [o, s]; + } + function not(s) { + return function () { + return !s.apply(this, arguments); + }; + } + function neg(s) { + return function () { + return -s.apply(this, arguments); + }; + } + function quoteString(s) { + return 'string' == typeof s ? JSON.stringify(s) : String(s); + } + function defaultZipper() { + return arrCopy(arguments); + } + function defaultNegComparator(s, o) { + return s < o ? 1 : s > o ? -1 : 0; + } + function hashIterable(s) { + if (s.size === 1 / 0) return 0; + var o = isOrdered(s), + i = isKeyed(s), + a = o ? 1 : 0; + return murmurHashOfSize( + s.__iterate( + i + ? o + ? function (s, o) { + a = (31 * a + hashMerge(hash(s), hash(o))) | 0; + } + : function (s, o) { + a = (a + hashMerge(hash(s), hash(o))) | 0; + } + : o + ? function (s) { + a = (31 * a + hash(s)) | 0; + } + : function (s) { + a = (a + hash(s)) | 0; + } + ), + a + ); + } + function murmurHashOfSize(s, o) { + return ( + (o = le(o, 3432918353)), + (o = le((o << 15) | (o >>> -15), 461845907)), + (o = le((o << 13) | (o >>> -13), 5)), + (o = le((o = (o + 3864292196) ^ s) ^ (o >>> 16), 2246822507)), + (o = smi((o = le(o ^ (o >>> 13), 3266489909)) ^ (o >>> 16))) + ); + } + function hashMerge(s, o) { + return s ^ (o + 2654435769 + (s << 6) + (s >> 2)); + } + return ( + (pt[i] = !0), + (pt[Z] = ut.entries), + (pt.__toJS = ut.toObject), + (pt.__toStringMapper = function (s, o) { + return JSON.stringify(o) + ': ' + quoteString(s); + }), + mixin(IndexedIterable, { + toKeyedSeq: function () { + return new ToKeyedSequence(this, !1); + }, + filter: function (s, o) { + return reify(this, filterFactory(this, s, o, !1)); + }, + findIndex: function (s, o) { + var i = this.findEntry(s, o); + return i ? i[0] : -1; + }, + indexOf: function (s) { + var o = this.keyOf(s); + return void 0 === o ? -1 : o; + }, + lastIndexOf: function (s) { + var o = this.lastKeyOf(s); + return void 0 === o ? -1 : o; + }, + reverse: function () { + return reify(this, reverseFactory(this, !1)); + }, + slice: function (s, o) { + return reify(this, sliceFactory(this, s, o, !1)); + }, + splice: function (s, o) { + var i = arguments.length; + if (((o = Math.max(0 | o, 0)), 0 === i || (2 === i && !o))) return this; + s = resolveBegin(s, s < 0 ? this.count() : this.size); + var a = this.slice(0, s); + return reify( + this, + 1 === i ? a : a.concat(arrCopy(arguments, 2), this.slice(s + o)) + ); + }, + findLastIndex: function (s, o) { + var i = this.findLastEntry(s, o); + return i ? i[0] : -1; + }, + first: function () { + return this.get(0); + }, + flatten: function (s) { + return reify(this, flattenFactory(this, s, !1)); + }, + get: function (s, o) { + return (s = wrapIndex(this, s)) < 0 || + this.size === 1 / 0 || + (void 0 !== this.size && s > this.size) + ? o + : this.find( + function (o, i) { + return i === s; + }, + void 0, + o + ); + }, + has: function (s) { + return ( + (s = wrapIndex(this, s)) >= 0 && + (void 0 !== this.size + ? this.size === 1 / 0 || s < this.size + : -1 !== this.indexOf(s)) + ); + }, + interpose: function (s) { + return reify(this, interposeFactory(this, s)); + }, + interleave: function () { + var s = [this].concat(arrCopy(arguments)), + o = zipWithFactory(this.toSeq(), IndexedSeq.of, s), + i = o.flatten(!0); + return (o.size && (i.size = o.size * s.length), reify(this, i)); + }, + keySeq: function () { + return Range(0, this.size); + }, + last: function () { + return this.get(-1); + }, + skipWhile: function (s, o) { + return reify(this, skipWhileFactory(this, s, o, !1)); + }, + zip: function () { + return reify( + this, + zipWithFactory(this, defaultZipper, [this].concat(arrCopy(arguments))) + ); + }, + zipWith: function (s) { + var o = arrCopy(arguments); + return ((o[0] = this), reify(this, zipWithFactory(this, s, o))); + } + }), + (IndexedIterable.prototype[a] = !0), + (IndexedIterable.prototype[u] = !0), + mixin(SetIterable, { + get: function (s, o) { + return this.has(s) ? s : o; + }, + includes: function (s) { + return this.has(s); + }, + keySeq: function () { + return this.valueSeq(); + } + }), + (SetIterable.prototype.has = ut.includes), + (SetIterable.prototype.contains = SetIterable.prototype.includes), + mixin(KeyedSeq, KeyedIterable.prototype), + mixin(IndexedSeq, IndexedIterable.prototype), + mixin(SetSeq, SetIterable.prototype), + mixin(KeyedCollection, KeyedIterable.prototype), + mixin(IndexedCollection, IndexedIterable.prototype), + mixin(SetCollection, SetIterable.prototype), + { + Iterable, + Seq, + Collection, + Map, + OrderedMap, + List, + Stack, + Set, + OrderedSet, + Record, + Range, + Repeat, + is, + fromJS + } + ); + })(); + }, + 56698(s) { + 'function' == typeof Object.create + ? (s.exports = function inherits(s, o) { + o && + ((s.super_ = o), + (s.prototype = Object.create(o.prototype, { + constructor: { value: s, enumerable: !1, writable: !0, configurable: !0 } + }))); + }) + : (s.exports = function inherits(s, o) { + if (o) { + s.super_ = o; + var TempCtor = function () {}; + ((TempCtor.prototype = o.prototype), + (s.prototype = new TempCtor()), + (s.prototype.constructor = s)); + } + }); + }, + 69600(s) { + 'use strict'; + var o, + i, + a = Function.prototype.toString, + u = 'object' == typeof Reflect && null !== Reflect && Reflect.apply; + if ('function' == typeof u && 'function' == typeof Object.defineProperty) + try { + ((o = Object.defineProperty({}, 'length', { + get: function () { + throw i; + } + })), + (i = {}), + u( + function () { + throw 42; + }, + null, + o + )); + } catch (s) { + s !== i && (u = null); + } + else u = null; + var _ = /^\s*class\b/, + w = function isES6ClassFunction(s) { + try { + var o = a.call(s); + return _.test(o); + } catch (s) { + return !1; + } + }, + x = function tryFunctionToStr(s) { + try { + return !w(s) && (a.call(s), !0); + } catch (s) { + return !1; + } + }, + C = Object.prototype.toString, + j = 'function' == typeof Symbol && !!Symbol.toStringTag, + L = !(0 in [,]), + B = function isDocumentDotAll() { + return !1; + }; + if ('object' == typeof document) { + var $ = document.all; + C.call($) === C.call(document.all) && + (B = function isDocumentDotAll(s) { + if ((L || !s) && (void 0 === s || 'object' == typeof s)) + try { + var o = C.call(s); + return ( + ('[object HTMLAllCollection]' === o || + '[object HTML document.all class]' === o || + '[object HTMLCollection]' === o || + '[object Object]' === o) && + null == s('') + ); + } catch (s) {} + return !1; + }); + } + s.exports = u + ? function isCallable(s) { + if (B(s)) return !0; + if (!s) return !1; + if ('function' != typeof s && 'object' != typeof s) return !1; + try { + u(s, null, o); + } catch (s) { + if (s !== i) return !1; + } + return !w(s) && x(s); + } + : function isCallable(s) { + if (B(s)) return !0; + if (!s) return !1; + if ('function' != typeof s && 'object' != typeof s) return !1; + if (j) return x(s); + if (w(s)) return !1; + var o = C.call(s); + return ( + !( + '[object Function]' !== o && + '[object GeneratorFunction]' !== o && + !/^\[object HTML/.test(o) + ) && x(s) + ); + }; + }, + 35680(s, o, i) { + 'use strict'; + var a = i(25767); + s.exports = function isTypedArray(s) { + return !!a(s); + }; + }, + 64634(s) { + var o = {}.toString; + s.exports = + Array.isArray || + function (s) { + return '[object Array]' == o.call(s); + }; + }, + 5419(s) { + s.exports = function (s, o, i, a) { + var u = new Blob(void 0 !== a ? [a, s] : [s], { + type: i || 'application/octet-stream' + }); + if (void 0 !== window.navigator.msSaveBlob) window.navigator.msSaveBlob(u, o); + else { + var _ = + window.URL && window.URL.createObjectURL + ? window.URL.createObjectURL(u) + : window.webkitURL.createObjectURL(u), + w = document.createElement('a'); + ((w.style.display = 'none'), + (w.href = _), + w.setAttribute('download', o), + void 0 === w.download && w.setAttribute('target', '_blank'), + document.body.appendChild(w), + w.click(), + setTimeout(function () { + (document.body.removeChild(w), window.URL.revokeObjectURL(_)); + }, 200)); + } + }; + }, + 20181(s, o, i) { + var a = /^\s+|\s+$/g, + u = /^[-+]0x[0-9a-f]+$/i, + _ = /^0b[01]+$/i, + w = /^0o[0-7]+$/i, + x = parseInt, + C = 'object' == typeof i.g && i.g && i.g.Object === Object && i.g, + j = 'object' == typeof self && self && self.Object === Object && self, + L = C || j || Function('return this')(), + B = Object.prototype.toString, + $ = Math.max, + U = Math.min, + now = function () { + return L.Date.now(); + }; + function isObject(s) { + var o = typeof s; + return !!s && ('object' == o || 'function' == o); + } + function toNumber(s) { + if ('number' == typeof s) return s; + if ( + (function isSymbol(s) { + return ( + 'symbol' == typeof s || + ((function isObjectLike(s) { + return !!s && 'object' == typeof s; + })(s) && + '[object Symbol]' == B.call(s)) + ); + })(s) + ) + return NaN; + if (isObject(s)) { + var o = 'function' == typeof s.valueOf ? s.valueOf() : s; + s = isObject(o) ? o + '' : o; + } + if ('string' != typeof s) return 0 === s ? s : +s; + s = s.replace(a, ''); + var i = _.test(s); + return i || w.test(s) ? x(s.slice(2), i ? 2 : 8) : u.test(s) ? NaN : +s; + } + s.exports = function debounce(s, o, i) { + var a, + u, + _, + w, + x, + C, + j = 0, + L = !1, + B = !1, + V = !0; + if ('function' != typeof s) throw new TypeError('Expected a function'); + function invokeFunc(o) { + var i = a, + _ = u; + return ((a = u = void 0), (j = o), (w = s.apply(_, i))); + } + function shouldInvoke(s) { + var i = s - C; + return void 0 === C || i >= o || i < 0 || (B && s - j >= _); + } + function timerExpired() { + var s = now(); + if (shouldInvoke(s)) return trailingEdge(s); + x = setTimeout( + timerExpired, + (function remainingWait(s) { + var i = o - (s - C); + return B ? U(i, _ - (s - j)) : i; + })(s) + ); + } + function trailingEdge(s) { + return ((x = void 0), V && a ? invokeFunc(s) : ((a = u = void 0), w)); + } + function debounced() { + var s = now(), + i = shouldInvoke(s); + if (((a = arguments), (u = this), (C = s), i)) { + if (void 0 === x) + return (function leadingEdge(s) { + return ((j = s), (x = setTimeout(timerExpired, o)), L ? invokeFunc(s) : w); + })(C); + if (B) return ((x = setTimeout(timerExpired, o)), invokeFunc(C)); + } + return (void 0 === x && (x = setTimeout(timerExpired, o)), w); + } + return ( + (o = toNumber(o) || 0), + isObject(i) && + ((L = !!i.leading), + (_ = (B = 'maxWait' in i) ? $(toNumber(i.maxWait) || 0, o) : _), + (V = 'trailing' in i ? !!i.trailing : V)), + (debounced.cancel = function cancel() { + (void 0 !== x && clearTimeout(x), (j = 0), (a = C = u = x = void 0)); + }), + (debounced.flush = function flush() { + return void 0 === x ? w : trailingEdge(now()); + }), + debounced + ); + }; + }, + 55580(s, o, i) { + var a = i(56110)(i(9325), 'DataView'); + s.exports = a; + }, + 21549(s, o, i) { + var a = i(22032), + u = i(63862), + _ = i(66721), + w = i(12749), + x = i(35749); + function Hash(s) { + var o = -1, + i = null == s ? 0 : s.length; + for (this.clear(); ++o < i; ) { + var a = s[o]; + this.set(a[0], a[1]); + } + } + ((Hash.prototype.clear = a), + (Hash.prototype.delete = u), + (Hash.prototype.get = _), + (Hash.prototype.has = w), + (Hash.prototype.set = x), + (s.exports = Hash)); + }, + 30980(s, o, i) { + var a = i(39344), + u = i(94033); + function LazyWrapper(s) { + ((this.__wrapped__ = s), + (this.__actions__ = []), + (this.__dir__ = 1), + (this.__filtered__ = !1), + (this.__iteratees__ = []), + (this.__takeCount__ = 4294967295), + (this.__views__ = [])); + } + ((LazyWrapper.prototype = a(u.prototype)), + (LazyWrapper.prototype.constructor = LazyWrapper), + (s.exports = LazyWrapper)); + }, + 80079(s, o, i) { + var a = i(63702), + u = i(70080), + _ = i(24739), + w = i(48655), + x = i(31175); + function ListCache(s) { + var o = -1, + i = null == s ? 0 : s.length; + for (this.clear(); ++o < i; ) { + var a = s[o]; + this.set(a[0], a[1]); + } + } + ((ListCache.prototype.clear = a), + (ListCache.prototype.delete = u), + (ListCache.prototype.get = _), + (ListCache.prototype.has = w), + (ListCache.prototype.set = x), + (s.exports = ListCache)); + }, + 56017(s, o, i) { + var a = i(39344), + u = i(94033); + function LodashWrapper(s, o) { + ((this.__wrapped__ = s), + (this.__actions__ = []), + (this.__chain__ = !!o), + (this.__index__ = 0), + (this.__values__ = void 0)); + } + ((LodashWrapper.prototype = a(u.prototype)), + (LodashWrapper.prototype.constructor = LodashWrapper), + (s.exports = LodashWrapper)); + }, + 68223(s, o, i) { + var a = i(56110)(i(9325), 'Map'); + s.exports = a; + }, + 53661(s, o, i) { + var a = i(63040), + u = i(17670), + _ = i(90289), + w = i(4509), + x = i(72949); + function MapCache(s) { + var o = -1, + i = null == s ? 0 : s.length; + for (this.clear(); ++o < i; ) { + var a = s[o]; + this.set(a[0], a[1]); + } + } + ((MapCache.prototype.clear = a), + (MapCache.prototype.delete = u), + (MapCache.prototype.get = _), + (MapCache.prototype.has = w), + (MapCache.prototype.set = x), + (s.exports = MapCache)); + }, + 32804(s, o, i) { + var a = i(56110)(i(9325), 'Promise'); + s.exports = a; + }, + 76545(s, o, i) { + var a = i(56110)(i(9325), 'Set'); + s.exports = a; + }, + 38859(s, o, i) { + var a = i(53661), + u = i(31380), + _ = i(51459); + function SetCache(s) { + var o = -1, + i = null == s ? 0 : s.length; + for (this.__data__ = new a(); ++o < i; ) this.add(s[o]); + } + ((SetCache.prototype.add = SetCache.prototype.push = u), + (SetCache.prototype.has = _), + (s.exports = SetCache)); + }, + 37217(s, o, i) { + var a = i(80079), + u = i(51420), + _ = i(90938), + w = i(63605), + x = i(29817), + C = i(80945); + function Stack(s) { + var o = (this.__data__ = new a(s)); + this.size = o.size; + } + ((Stack.prototype.clear = u), + (Stack.prototype.delete = _), + (Stack.prototype.get = w), + (Stack.prototype.has = x), + (Stack.prototype.set = C), + (s.exports = Stack)); + }, + 51873(s, o, i) { + var a = i(9325).Symbol; + s.exports = a; + }, + 37828(s, o, i) { + var a = i(9325).Uint8Array; + s.exports = a; + }, + 28303(s, o, i) { + var a = i(56110)(i(9325), 'WeakMap'); + s.exports = a; + }, + 91033(s) { + s.exports = function apply(s, o, i) { + switch (i.length) { + case 0: + return s.call(o); + case 1: + return s.call(o, i[0]); + case 2: + return s.call(o, i[0], i[1]); + case 3: + return s.call(o, i[0], i[1], i[2]); + } + return s.apply(o, i); + }; + }, + 83729(s) { + s.exports = function arrayEach(s, o) { + for (var i = -1, a = null == s ? 0 : s.length; ++i < a && !1 !== o(s[i], i, s); ); + return s; + }; + }, + 79770(s) { + s.exports = function arrayFilter(s, o) { + for (var i = -1, a = null == s ? 0 : s.length, u = 0, _ = []; ++i < a; ) { + var w = s[i]; + o(w, i, s) && (_[u++] = w); + } + return _; + }; + }, + 15325(s, o, i) { + var a = i(96131); + s.exports = function arrayIncludes(s, o) { + return !!(null == s ? 0 : s.length) && a(s, o, 0) > -1; + }; + }, + 70695(s, o, i) { + var a = i(78096), + u = i(72428), + _ = i(56449), + w = i(3656), + x = i(30361), + C = i(37167), + j = Object.prototype.hasOwnProperty; + s.exports = function arrayLikeKeys(s, o) { + var i = _(s), + L = !i && u(s), + B = !i && !L && w(s), + $ = !i && !L && !B && C(s), + U = i || L || B || $, + V = U ? a(s.length, String) : [], + z = V.length; + for (var Y in s) + (!o && !j.call(s, Y)) || + (U && + ('length' == Y || + (B && ('offset' == Y || 'parent' == Y)) || + ($ && ('buffer' == Y || 'byteLength' == Y || 'byteOffset' == Y)) || + x(Y, z))) || + V.push(Y); + return V; + }; + }, + 34932(s) { + s.exports = function arrayMap(s, o) { + for (var i = -1, a = null == s ? 0 : s.length, u = Array(a); ++i < a; ) + u[i] = o(s[i], i, s); + return u; + }; + }, + 14528(s) { + s.exports = function arrayPush(s, o) { + for (var i = -1, a = o.length, u = s.length; ++i < a; ) s[u + i] = o[i]; + return s; + }; + }, + 40882(s) { + s.exports = function arrayReduce(s, o, i, a) { + var u = -1, + _ = null == s ? 0 : s.length; + for (a && _ && (i = s[++u]); ++u < _; ) i = o(i, s[u], u, s); + return i; + }; + }, + 14248(s) { + s.exports = function arraySome(s, o) { + for (var i = -1, a = null == s ? 0 : s.length; ++i < a; ) if (o(s[i], i, s)) return !0; + return !1; + }; + }, + 61074(s) { + s.exports = function asciiToArray(s) { + return s.split(''); + }; + }, + 1733(s) { + var o = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; + s.exports = function asciiWords(s) { + return s.match(o) || []; + }; + }, + 87805(s, o, i) { + var a = i(43360), + u = i(75288); + s.exports = function assignMergeValue(s, o, i) { + ((void 0 !== i && !u(s[o], i)) || (void 0 === i && !(o in s))) && a(s, o, i); + }; + }, + 16547(s, o, i) { + var a = i(43360), + u = i(75288), + _ = Object.prototype.hasOwnProperty; + s.exports = function assignValue(s, o, i) { + var w = s[o]; + (_.call(s, o) && u(w, i) && (void 0 !== i || o in s)) || a(s, o, i); + }; + }, + 26025(s, o, i) { + var a = i(75288); + s.exports = function assocIndexOf(s, o) { + for (var i = s.length; i--; ) if (a(s[i][0], o)) return i; + return -1; + }; + }, + 74733(s, o, i) { + var a = i(21791), + u = i(95950); + s.exports = function baseAssign(s, o) { + return s && a(o, u(o), s); + }; + }, + 43838(s, o, i) { + var a = i(21791), + u = i(37241); + s.exports = function baseAssignIn(s, o) { + return s && a(o, u(o), s); + }; + }, + 43360(s, o, i) { + var a = i(93243); + s.exports = function baseAssignValue(s, o, i) { + '__proto__' == o && a + ? a(s, o, { configurable: !0, enumerable: !0, value: i, writable: !0 }) + : (s[o] = i); + }; + }, + 9999(s, o, i) { + var a = i(37217), + u = i(83729), + _ = i(16547), + w = i(74733), + x = i(43838), + C = i(93290), + j = i(23007), + L = i(92271), + B = i(48948), + $ = i(50002), + U = i(83349), + V = i(5861), + z = i(76189), + Y = i(77199), + Z = i(35529), + ee = i(56449), + ie = i(3656), + ae = i(87730), + ce = i(23805), + le = i(38440), + pe = i(95950), + de = i(37241), + fe = '[object Arguments]', + ye = '[object Function]', + be = '[object Object]', + Se = {}; + ((Se[fe] = + Se['[object Array]'] = + Se['[object ArrayBuffer]'] = + Se['[object DataView]'] = + Se['[object Boolean]'] = + Se['[object Date]'] = + Se['[object Float32Array]'] = + Se['[object Float64Array]'] = + Se['[object Int8Array]'] = + Se['[object Int16Array]'] = + Se['[object Int32Array]'] = + Se['[object Map]'] = + Se['[object Number]'] = + Se[be] = + Se['[object RegExp]'] = + Se['[object Set]'] = + Se['[object String]'] = + Se['[object Symbol]'] = + Se['[object Uint8Array]'] = + Se['[object Uint8ClampedArray]'] = + Se['[object Uint16Array]'] = + Se['[object Uint32Array]'] = + !0), + (Se['[object Error]'] = Se[ye] = Se['[object WeakMap]'] = !1), + (s.exports = function baseClone(s, o, i, _e, we, xe) { + var Pe, + Te = 1 & o, + Re = 2 & o, + $e = 4 & o; + if ((i && (Pe = we ? i(s, _e, we, xe) : i(s)), void 0 !== Pe)) return Pe; + if (!ce(s)) return s; + var qe = ee(s); + if (qe) { + if (((Pe = z(s)), !Te)) return j(s, Pe); + } else { + var ze = V(s), + We = ze == ye || '[object GeneratorFunction]' == ze; + if (ie(s)) return C(s, Te); + if (ze == be || ze == fe || (We && !we)) { + if (((Pe = Re || We ? {} : Z(s)), !Te)) + return Re ? B(s, x(Pe, s)) : L(s, w(Pe, s)); + } else { + if (!Se[ze]) return we ? s : {}; + Pe = Y(s, ze, Te); + } + } + xe || (xe = new a()); + var He = xe.get(s); + if (He) return He; + (xe.set(s, Pe), + le(s) + ? s.forEach(function (a) { + Pe.add(baseClone(a, o, i, a, s, xe)); + }) + : ae(s) && + s.forEach(function (a, u) { + Pe.set(u, baseClone(a, o, i, u, s, xe)); + })); + var Ye = qe ? void 0 : ($e ? (Re ? U : $) : Re ? de : pe)(s); + return ( + u(Ye || s, function (a, u) { + (Ye && (a = s[(u = a)]), _(Pe, u, baseClone(a, o, i, u, s, xe))); + }), + Pe + ); + })); + }, + 39344(s, o, i) { + var a = i(23805), + u = Object.create, + _ = (function () { + function object() {} + return function (s) { + if (!a(s)) return {}; + if (u) return u(s); + object.prototype = s; + var o = new object(); + return ((object.prototype = void 0), o); + }; + })(); + s.exports = _; + }, + 80909(s, o, i) { + var a = i(30641), + u = i(38329)(a); + s.exports = u; + }, + 2523(s) { + s.exports = function baseFindIndex(s, o, i, a) { + for (var u = s.length, _ = i + (a ? 1 : -1); a ? _-- : ++_ < u; ) + if (o(s[_], _, s)) return _; + return -1; + }; + }, + 83120(s, o, i) { + var a = i(14528), + u = i(45891); + s.exports = function baseFlatten(s, o, i, _, w) { + var x = -1, + C = s.length; + for (i || (i = u), w || (w = []); ++x < C; ) { + var j = s[x]; + o > 0 && i(j) + ? o > 1 + ? baseFlatten(j, o - 1, i, _, w) + : a(w, j) + : _ || (w[w.length] = j); + } + return w; + }; + }, + 86649(s, o, i) { + var a = i(83221)(); + s.exports = a; + }, + 30641(s, o, i) { + var a = i(86649), + u = i(95950); + s.exports = function baseForOwn(s, o) { + return s && a(s, o, u); + }; + }, + 47422(s, o, i) { + var a = i(31769), + u = i(77797); + s.exports = function baseGet(s, o) { + for (var i = 0, _ = (o = a(o, s)).length; null != s && i < _; ) s = s[u(o[i++])]; + return i && i == _ ? s : void 0; + }; + }, + 82199(s, o, i) { + var a = i(14528), + u = i(56449); + s.exports = function baseGetAllKeys(s, o, i) { + var _ = o(s); + return u(s) ? _ : a(_, i(s)); + }; + }, + 72552(s, o, i) { + var a = i(51873), + u = i(659), + _ = i(59350), + w = a ? a.toStringTag : void 0; + s.exports = function baseGetTag(s) { + return null == s + ? void 0 === s + ? '[object Undefined]' + : '[object Null]' + : w && w in Object(s) + ? u(s) + : _(s); + }; + }, + 20426(s) { + var o = Object.prototype.hasOwnProperty; + s.exports = function baseHas(s, i) { + return null != s && o.call(s, i); + }; + }, + 28077(s) { + s.exports = function baseHasIn(s, o) { + return null != s && o in Object(s); + }; + }, + 96131(s, o, i) { + var a = i(2523), + u = i(85463), + _ = i(76959); + s.exports = function baseIndexOf(s, o, i) { + return o == o ? _(s, o, i) : a(s, u, i); + }; + }, + 27534(s, o, i) { + var a = i(72552), + u = i(40346); + s.exports = function baseIsArguments(s) { + return u(s) && '[object Arguments]' == a(s); + }; + }, + 60270(s, o, i) { + var a = i(87068), + u = i(40346); + s.exports = function baseIsEqual(s, o, i, _, w) { + return ( + s === o || + (null == s || null == o || (!u(s) && !u(o)) + ? s != s && o != o + : a(s, o, i, _, baseIsEqual, w)) + ); + }; + }, + 87068(s, o, i) { + var a = i(37217), + u = i(25911), + _ = i(21986), + w = i(50689), + x = i(5861), + C = i(56449), + j = i(3656), + L = i(37167), + B = '[object Arguments]', + $ = '[object Array]', + U = '[object Object]', + V = Object.prototype.hasOwnProperty; + s.exports = function baseIsEqualDeep(s, o, i, z, Y, Z) { + var ee = C(s), + ie = C(o), + ae = ee ? $ : x(s), + ce = ie ? $ : x(o), + le = (ae = ae == B ? U : ae) == U, + pe = (ce = ce == B ? U : ce) == U, + de = ae == ce; + if (de && j(s)) { + if (!j(o)) return !1; + ((ee = !0), (le = !1)); + } + if (de && !le) + return ( + Z || (Z = new a()), + ee || L(s) ? u(s, o, i, z, Y, Z) : _(s, o, ae, i, z, Y, Z) + ); + if (!(1 & i)) { + var fe = le && V.call(s, '__wrapped__'), + ye = pe && V.call(o, '__wrapped__'); + if (fe || ye) { + var be = fe ? s.value() : s, + Se = ye ? o.value() : o; + return (Z || (Z = new a()), Y(be, Se, i, z, Z)); + } + } + return !!de && (Z || (Z = new a()), w(s, o, i, z, Y, Z)); + }; + }, + 29172(s, o, i) { + var a = i(5861), + u = i(40346); + s.exports = function baseIsMap(s) { + return u(s) && '[object Map]' == a(s); + }; + }, + 41799(s, o, i) { + var a = i(37217), + u = i(60270); + s.exports = function baseIsMatch(s, o, i, _) { + var w = i.length, + x = w, + C = !_; + if (null == s) return !x; + for (s = Object(s); w--; ) { + var j = i[w]; + if (C && j[2] ? j[1] !== s[j[0]] : !(j[0] in s)) return !1; + } + for (; ++w < x; ) { + var L = (j = i[w])[0], + B = s[L], + $ = j[1]; + if (C && j[2]) { + if (void 0 === B && !(L in s)) return !1; + } else { + var U = new a(); + if (_) var V = _(B, $, L, s, o, U); + if (!(void 0 === V ? u($, B, 3, _, U) : V)) return !1; + } + } + return !0; + }; + }, + 85463(s) { + s.exports = function baseIsNaN(s) { + return s != s; + }; + }, + 45083(s, o, i) { + var a = i(1882), + u = i(87296), + _ = i(23805), + w = i(47473), + x = /^\[object .+?Constructor\]$/, + C = Function.prototype, + j = Object.prototype, + L = C.toString, + B = j.hasOwnProperty, + $ = RegExp( + '^' + + L.call(B) + .replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + + '$' + ); + s.exports = function baseIsNative(s) { + return !(!_(s) || u(s)) && (a(s) ? $ : x).test(w(s)); + }; + }, + 16038(s, o, i) { + var a = i(5861), + u = i(40346); + s.exports = function baseIsSet(s) { + return u(s) && '[object Set]' == a(s); + }; + }, + 4901(s, o, i) { + var a = i(72552), + u = i(30294), + _ = i(40346), + w = {}; + ((w['[object Float32Array]'] = + w['[object Float64Array]'] = + w['[object Int8Array]'] = + w['[object Int16Array]'] = + w['[object Int32Array]'] = + w['[object Uint8Array]'] = + w['[object Uint8ClampedArray]'] = + w['[object Uint16Array]'] = + w['[object Uint32Array]'] = + !0), + (w['[object Arguments]'] = + w['[object Array]'] = + w['[object ArrayBuffer]'] = + w['[object Boolean]'] = + w['[object DataView]'] = + w['[object Date]'] = + w['[object Error]'] = + w['[object Function]'] = + w['[object Map]'] = + w['[object Number]'] = + w['[object Object]'] = + w['[object RegExp]'] = + w['[object Set]'] = + w['[object String]'] = + w['[object WeakMap]'] = + !1), + (s.exports = function baseIsTypedArray(s) { + return _(s) && u(s.length) && !!w[a(s)]; + })); + }, + 15389(s, o, i) { + var a = i(93663), + u = i(87978), + _ = i(83488), + w = i(56449), + x = i(50583); + s.exports = function baseIteratee(s) { + return 'function' == typeof s + ? s + : null == s + ? _ + : 'object' == typeof s + ? w(s) + ? u(s[0], s[1]) + : a(s) + : x(s); + }; + }, + 88984(s, o, i) { + var a = i(55527), + u = i(3650), + _ = Object.prototype.hasOwnProperty; + s.exports = function baseKeys(s) { + if (!a(s)) return u(s); + var o = []; + for (var i in Object(s)) _.call(s, i) && 'constructor' != i && o.push(i); + return o; + }; + }, + 72903(s, o, i) { + var a = i(23805), + u = i(55527), + _ = i(90181), + w = Object.prototype.hasOwnProperty; + s.exports = function baseKeysIn(s) { + if (!a(s)) return _(s); + var o = u(s), + i = []; + for (var x in s) ('constructor' != x || (!o && w.call(s, x))) && i.push(x); + return i; + }; + }, + 94033(s) { + s.exports = function baseLodash() {}; + }, + 93663(s, o, i) { + var a = i(41799), + u = i(10776), + _ = i(67197); + s.exports = function baseMatches(s) { + var o = u(s); + return 1 == o.length && o[0][2] + ? _(o[0][0], o[0][1]) + : function (i) { + return i === s || a(i, s, o); + }; + }; + }, + 87978(s, o, i) { + var a = i(60270), + u = i(58156), + _ = i(80631), + w = i(28586), + x = i(30756), + C = i(67197), + j = i(77797); + s.exports = function baseMatchesProperty(s, o) { + return w(s) && x(o) + ? C(j(s), o) + : function (i) { + var w = u(i, s); + return void 0 === w && w === o ? _(i, s) : a(o, w, 3); + }; + }; + }, + 85250(s, o, i) { + var a = i(37217), + u = i(87805), + _ = i(86649), + w = i(42824), + x = i(23805), + C = i(37241), + j = i(14974); + s.exports = function baseMerge(s, o, i, L, B) { + s !== o && + _( + o, + function (_, C) { + if ((B || (B = new a()), x(_))) w(s, o, C, i, baseMerge, L, B); + else { + var $ = L ? L(j(s, C), _, C + '', s, o, B) : void 0; + (void 0 === $ && ($ = _), u(s, C, $)); + } + }, + C + ); + }; + }, + 42824(s, o, i) { + var a = i(87805), + u = i(93290), + _ = i(71961), + w = i(23007), + x = i(35529), + C = i(72428), + j = i(56449), + L = i(83693), + B = i(3656), + $ = i(1882), + U = i(23805), + V = i(11331), + z = i(37167), + Y = i(14974), + Z = i(69884); + s.exports = function baseMergeDeep(s, o, i, ee, ie, ae, ce) { + var le = Y(s, i), + pe = Y(o, i), + de = ce.get(pe); + if (de) a(s, i, de); + else { + var fe = ae ? ae(le, pe, i + '', s, o, ce) : void 0, + ye = void 0 === fe; + if (ye) { + var be = j(pe), + Se = !be && B(pe), + _e = !be && !Se && z(pe); + ((fe = pe), + be || Se || _e + ? j(le) + ? (fe = le) + : L(le) + ? (fe = w(le)) + : Se + ? ((ye = !1), (fe = u(pe, !0))) + : _e + ? ((ye = !1), (fe = _(pe, !0))) + : (fe = []) + : V(pe) || C(pe) + ? ((fe = le), C(le) ? (fe = Z(le)) : (U(le) && !$(le)) || (fe = x(pe))) + : (ye = !1)); + } + (ye && (ce.set(pe, fe), ie(fe, pe, ee, ae, ce), ce.delete(pe)), a(s, i, fe)); + } + }; + }, + 47237(s) { + s.exports = function baseProperty(s) { + return function (o) { + return null == o ? void 0 : o[s]; + }; + }; + }, + 17255(s, o, i) { + var a = i(47422); + s.exports = function basePropertyDeep(s) { + return function (o) { + return a(o, s); + }; + }; + }, + 54552(s) { + s.exports = function basePropertyOf(s) { + return function (o) { + return null == s ? void 0 : s[o]; + }; + }; + }, + 85558(s) { + s.exports = function baseReduce(s, o, i, a, u) { + return ( + u(s, function (s, u, _) { + i = a ? ((a = !1), s) : o(i, s, u, _); + }), + i + ); + }; + }, + 69302(s, o, i) { + var a = i(83488), + u = i(56757), + _ = i(32865); + s.exports = function baseRest(s, o) { + return _(u(s, o, a), s + ''); + }; + }, + 73170(s, o, i) { + var a = i(16547), + u = i(31769), + _ = i(30361), + w = i(23805), + x = i(77797); + s.exports = function baseSet(s, o, i, C) { + if (!w(s)) return s; + for (var j = -1, L = (o = u(o, s)).length, B = L - 1, $ = s; null != $ && ++j < L; ) { + var U = x(o[j]), + V = i; + if ('__proto__' === U || 'constructor' === U || 'prototype' === U) return s; + if (j != B) { + var z = $[U]; + void 0 === (V = C ? C(z, U, $) : void 0) && (V = w(z) ? z : _(o[j + 1]) ? [] : {}); + } + (a($, U, V), ($ = $[U])); + } + return s; + }; + }, + 68882(s, o, i) { + var a = i(83488), + u = i(48152), + _ = u + ? function (s, o) { + return (u.set(s, o), s); + } + : a; + s.exports = _; + }, + 19570(s, o, i) { + var a = i(37334), + u = i(93243), + _ = i(83488), + w = u + ? function (s, o) { + return u(s, 'toString', { + configurable: !0, + enumerable: !1, + value: a(o), + writable: !0 + }); + } + : _; + s.exports = w; + }, + 25160(s) { + s.exports = function baseSlice(s, o, i) { + var a = -1, + u = s.length; + (o < 0 && (o = -o > u ? 0 : u + o), + (i = i > u ? u : i) < 0 && (i += u), + (u = o > i ? 0 : (i - o) >>> 0), + (o >>>= 0)); + for (var _ = Array(u); ++a < u; ) _[a] = s[a + o]; + return _; + }; + }, + 90916(s, o, i) { + var a = i(80909); + s.exports = function baseSome(s, o) { + var i; + return ( + a(s, function (s, a, u) { + return !(i = o(s, a, u)); + }), + !!i + ); + }; + }, + 78096(s) { + s.exports = function baseTimes(s, o) { + for (var i = -1, a = Array(s); ++i < s; ) a[i] = o(i); + return a; + }; + }, + 77556(s, o, i) { + var a = i(51873), + u = i(34932), + _ = i(56449), + w = i(44394), + x = a ? a.prototype : void 0, + C = x ? x.toString : void 0; + s.exports = function baseToString(s) { + if ('string' == typeof s) return s; + if (_(s)) return u(s, baseToString) + ''; + if (w(s)) return C ? C.call(s) : ''; + var o = s + ''; + return '0' == o && 1 / s == -1 / 0 ? '-0' : o; + }; + }, + 54128(s, o, i) { + var a = i(31800), + u = /^\s+/; + s.exports = function baseTrim(s) { + return s ? s.slice(0, a(s) + 1).replace(u, '') : s; + }; + }, + 27301(s) { + s.exports = function baseUnary(s) { + return function (o) { + return s(o); + }; + }; + }, + 19931(s, o, i) { + var a = i(31769), + u = i(68090), + _ = i(68969), + w = i(77797), + x = Object.prototype.hasOwnProperty; + s.exports = function baseUnset(s, o) { + var i = -1, + C = (o = a(o, s)).length; + if (!C) return !0; + for (; ++i < C; ) { + var j = w(o[i]); + if ('__proto__' === j && !x.call(s, '__proto__')) return !1; + if (('constructor' === j || 'prototype' === j) && i < C - 1) return !1; + } + var L = _(s, o); + return null == L || delete L[w(u(o))]; + }; + }, + 51234(s) { + s.exports = function baseZipObject(s, o, i) { + for (var a = -1, u = s.length, _ = o.length, w = {}; ++a < u; ) { + var x = a < _ ? o[a] : void 0; + i(w, s[a], x); + } + return w; + }; + }, + 19219(s) { + s.exports = function cacheHas(s, o) { + return s.has(o); + }; + }, + 31769(s, o, i) { + var a = i(56449), + u = i(28586), + _ = i(61802), + w = i(13222); + s.exports = function castPath(s, o) { + return a(s) ? s : u(s, o) ? [s] : _(w(s)); + }; + }, + 28754(s, o, i) { + var a = i(25160); + s.exports = function castSlice(s, o, i) { + var u = s.length; + return ((i = void 0 === i ? u : i), !o && i >= u ? s : a(s, o, i)); + }; + }, + 49653(s, o, i) { + var a = i(37828); + s.exports = function cloneArrayBuffer(s) { + var o = new s.constructor(s.byteLength); + return (new a(o).set(new a(s)), o); + }; + }, + 93290(s, o, i) { + s = i.nmd(s); + var a = i(9325), + u = o && !o.nodeType && o, + _ = u && s && !s.nodeType && s, + w = _ && _.exports === u ? a.Buffer : void 0, + x = w ? w.allocUnsafe : void 0; + s.exports = function cloneBuffer(s, o) { + if (o) return s.slice(); + var i = s.length, + a = x ? x(i) : new s.constructor(i); + return (s.copy(a), a); + }; + }, + 76169(s, o, i) { + var a = i(49653); + s.exports = function cloneDataView(s, o) { + var i = o ? a(s.buffer) : s.buffer; + return new s.constructor(i, s.byteOffset, s.byteLength); + }; + }, + 73201(s) { + var o = /\w*$/; + s.exports = function cloneRegExp(s) { + var i = new s.constructor(s.source, o.exec(s)); + return ((i.lastIndex = s.lastIndex), i); + }; + }, + 93736(s, o, i) { + var a = i(51873), + u = a ? a.prototype : void 0, + _ = u ? u.valueOf : void 0; + s.exports = function cloneSymbol(s) { + return _ ? Object(_.call(s)) : {}; + }; + }, + 71961(s, o, i) { + var a = i(49653); + s.exports = function cloneTypedArray(s, o) { + var i = o ? a(s.buffer) : s.buffer; + return new s.constructor(i, s.byteOffset, s.length); + }; + }, + 91596(s) { + var o = Math.max; + s.exports = function composeArgs(s, i, a, u) { + for ( + var _ = -1, + w = s.length, + x = a.length, + C = -1, + j = i.length, + L = o(w - x, 0), + B = Array(j + L), + $ = !u; + ++C < j; + ) + B[C] = i[C]; + for (; ++_ < x; ) ($ || _ < w) && (B[a[_]] = s[_]); + for (; L--; ) B[C++] = s[_++]; + return B; + }; + }, + 53320(s) { + var o = Math.max; + s.exports = function composeArgsRight(s, i, a, u) { + for ( + var _ = -1, + w = s.length, + x = -1, + C = a.length, + j = -1, + L = i.length, + B = o(w - C, 0), + $ = Array(B + L), + U = !u; + ++_ < B; + ) + $[_] = s[_]; + for (var V = _; ++j < L; ) $[V + j] = i[j]; + for (; ++x < C; ) (U || _ < w) && ($[V + a[x]] = s[_++]); + return $; + }; + }, + 23007(s) { + s.exports = function copyArray(s, o) { + var i = -1, + a = s.length; + for (o || (o = Array(a)); ++i < a; ) o[i] = s[i]; + return o; + }; + }, + 21791(s, o, i) { + var a = i(16547), + u = i(43360); + s.exports = function copyObject(s, o, i, _) { + var w = !i; + i || (i = {}); + for (var x = -1, C = o.length; ++x < C; ) { + var j = o[x], + L = _ ? _(i[j], s[j], j, i, s) : void 0; + (void 0 === L && (L = s[j]), w ? u(i, j, L) : a(i, j, L)); + } + return i; + }; + }, + 92271(s, o, i) { + var a = i(21791), + u = i(4664); + s.exports = function copySymbols(s, o) { + return a(s, u(s), o); + }; + }, + 48948(s, o, i) { + var a = i(21791), + u = i(86375); + s.exports = function copySymbolsIn(s, o) { + return a(s, u(s), o); + }; + }, + 55481(s, o, i) { + var a = i(9325)['__core-js_shared__']; + s.exports = a; + }, + 58523(s) { + s.exports = function countHolders(s, o) { + for (var i = s.length, a = 0; i--; ) s[i] === o && ++a; + return a; + }; + }, + 20999(s, o, i) { + var a = i(69302), + u = i(36800); + s.exports = function createAssigner(s) { + return a(function (o, i) { + var a = -1, + _ = i.length, + w = _ > 1 ? i[_ - 1] : void 0, + x = _ > 2 ? i[2] : void 0; + for ( + w = s.length > 3 && 'function' == typeof w ? (_--, w) : void 0, + x && u(i[0], i[1], x) && ((w = _ < 3 ? void 0 : w), (_ = 1)), + o = Object(o); + ++a < _; + ) { + var C = i[a]; + C && s(o, C, a, w); + } + return o; + }); + }; + }, + 38329(s, o, i) { + var a = i(64894); + s.exports = function createBaseEach(s, o) { + return function (i, u) { + if (null == i) return i; + if (!a(i)) return s(i, u); + for ( + var _ = i.length, w = o ? _ : -1, x = Object(i); + (o ? w-- : ++w < _) && !1 !== u(x[w], w, x); + ); + return i; + }; + }; + }, + 83221(s) { + s.exports = function createBaseFor(s) { + return function (o, i, a) { + for (var u = -1, _ = Object(o), w = a(o), x = w.length; x--; ) { + var C = w[s ? x : ++u]; + if (!1 === i(_[C], C, _)) break; + } + return o; + }; + }; + }, + 11842(s, o, i) { + var a = i(82819), + u = i(9325); + s.exports = function createBind(s, o, i) { + var _ = 1 & o, + w = a(s); + return function wrapper() { + return (this && this !== u && this instanceof wrapper ? w : s).apply( + _ ? i : this, + arguments + ); + }; + }; + }, + 12507(s, o, i) { + var a = i(28754), + u = i(49698), + _ = i(63912), + w = i(13222); + s.exports = function createCaseFirst(s) { + return function (o) { + o = w(o); + var i = u(o) ? _(o) : void 0, + x = i ? i[0] : o.charAt(0), + C = i ? a(i, 1).join('') : o.slice(1); + return x[s]() + C; + }; + }; + }, + 45539(s, o, i) { + var a = i(40882), + u = i(50828), + _ = i(66645), + w = RegExp("['’]", 'g'); + s.exports = function createCompounder(s) { + return function (o) { + return a(_(u(o).replace(w, '')), s, ''); + }; + }; + }, + 82819(s, o, i) { + var a = i(39344), + u = i(23805); + s.exports = function createCtor(s) { + return function () { + var o = arguments; + switch (o.length) { + case 0: + return new s(); + case 1: + return new s(o[0]); + case 2: + return new s(o[0], o[1]); + case 3: + return new s(o[0], o[1], o[2]); + case 4: + return new s(o[0], o[1], o[2], o[3]); + case 5: + return new s(o[0], o[1], o[2], o[3], o[4]); + case 6: + return new s(o[0], o[1], o[2], o[3], o[4], o[5]); + case 7: + return new s(o[0], o[1], o[2], o[3], o[4], o[5], o[6]); + } + var i = a(s.prototype), + _ = s.apply(i, o); + return u(_) ? _ : i; + }; + }; + }, + 77078(s, o, i) { + var a = i(91033), + u = i(82819), + _ = i(37471), + w = i(18073), + x = i(11287), + C = i(36306), + j = i(9325); + s.exports = function createCurry(s, o, i) { + var L = u(s); + return function wrapper() { + for (var u = arguments.length, B = Array(u), $ = u, U = x(wrapper); $--; ) + B[$] = arguments[$]; + var V = u < 3 && B[0] !== U && B[u - 1] !== U ? [] : C(B, U); + return (u -= V.length) < i + ? w(s, o, _, wrapper.placeholder, void 0, B, V, void 0, void 0, i - u) + : a(this && this !== j && this instanceof wrapper ? L : s, this, B); + }; + }; + }, + 62006(s, o, i) { + var a = i(15389), + u = i(64894), + _ = i(95950); + s.exports = function createFind(s) { + return function (o, i, w) { + var x = Object(o); + if (!u(o)) { + var C = a(i, 3); + ((o = _(o)), + (i = function (s) { + return C(x[s], s, x); + })); + } + var j = s(o, i, w); + return j > -1 ? x[C ? o[j] : j] : void 0; + }; + }; + }, + 37471(s, o, i) { + var a = i(91596), + u = i(53320), + _ = i(58523), + w = i(82819), + x = i(18073), + C = i(11287), + j = i(68294), + L = i(36306), + B = i(9325); + s.exports = function createHybrid(s, o, i, $, U, V, z, Y, Z, ee) { + var ie = 128 & o, + ae = 1 & o, + ce = 2 & o, + le = 24 & o, + pe = 512 & o, + de = ce ? void 0 : w(s); + return function wrapper() { + for (var fe = arguments.length, ye = Array(fe), be = fe; be--; ) + ye[be] = arguments[be]; + if (le) + var Se = C(wrapper), + _e = _(ye, Se); + if ( + ($ && (ye = a(ye, $, U, le)), + V && (ye = u(ye, V, z, le)), + (fe -= _e), + le && fe < ee) + ) { + var we = L(ye, Se); + return x(s, o, createHybrid, wrapper.placeholder, i, ye, we, Y, Z, ee - fe); + } + var xe = ae ? i : this, + Pe = ce ? xe[s] : s; + return ( + (fe = ye.length), + Y ? (ye = j(ye, Y)) : pe && fe > 1 && ye.reverse(), + ie && Z < fe && (ye.length = Z), + this && this !== B && this instanceof wrapper && (Pe = de || w(Pe)), + Pe.apply(xe, ye) + ); + }; + }; + }, + 24168(s, o, i) { + var a = i(91033), + u = i(82819), + _ = i(9325); + s.exports = function createPartial(s, o, i, w) { + var x = 1 & o, + C = u(s); + return function wrapper() { + for ( + var o = -1, + u = arguments.length, + j = -1, + L = w.length, + B = Array(L + u), + $ = this && this !== _ && this instanceof wrapper ? C : s; + ++j < L; + ) + B[j] = w[j]; + for (; u--; ) B[j++] = arguments[++o]; + return a($, x ? i : this, B); + }; + }; + }, + 18073(s, o, i) { + var a = i(85087), + u = i(54641), + _ = i(70981); + s.exports = function createRecurry(s, o, i, w, x, C, j, L, B, $) { + var U = 8 & o; + ((o |= U ? 32 : 64), 4 & (o &= ~(U ? 64 : 32)) || (o &= -4)); + var V = [ + s, + o, + x, + U ? C : void 0, + U ? j : void 0, + U ? void 0 : C, + U ? void 0 : j, + L, + B, + $ + ], + z = i.apply(void 0, V); + return (a(s) && u(z, V), (z.placeholder = w), _(z, s, o)); + }; + }, + 66977(s, o, i) { + var a = i(68882), + u = i(11842), + _ = i(77078), + w = i(37471), + x = i(24168), + C = i(37381), + j = i(3209), + L = i(54641), + B = i(70981), + $ = i(61489), + U = Math.max; + s.exports = function createWrap(s, o, i, V, z, Y, Z, ee) { + var ie = 2 & o; + if (!ie && 'function' != typeof s) throw new TypeError('Expected a function'); + var ae = V ? V.length : 0; + if ( + (ae || ((o &= -97), (V = z = void 0)), + (Z = void 0 === Z ? Z : U($(Z), 0)), + (ee = void 0 === ee ? ee : $(ee)), + (ae -= z ? z.length : 0), + 64 & o) + ) { + var ce = V, + le = z; + V = z = void 0; + } + var pe = ie ? void 0 : C(s), + de = [s, o, i, V, z, ce, le, Y, Z, ee]; + if ( + (pe && j(de, pe), + (s = de[0]), + (o = de[1]), + (i = de[2]), + (V = de[3]), + (z = de[4]), + !(ee = de[9] = void 0 === de[9] ? (ie ? 0 : s.length) : U(de[9] - ae, 0)) && + 24 & o && + (o &= -25), + o && 1 != o) + ) + fe = + 8 == o || 16 == o + ? _(s, o, ee) + : (32 != o && 33 != o) || z.length + ? w.apply(void 0, de) + : x(s, o, i, V); + else var fe = u(s, o, i); + return B((pe ? a : L)(fe, de), s, o); + }; + }, + 53138(s, o, i) { + var a = i(11331); + s.exports = function customOmitClone(s) { + return a(s) ? void 0 : s; + }; + }, + 24647(s, o, i) { + var a = i(54552)({ + À: 'A', + Á: 'A', + Â: 'A', + Ã: 'A', + Ä: 'A', + Å: 'A', + à: 'a', + á: 'a', + â: 'a', + ã: 'a', + ä: 'a', + å: 'a', + Ç: 'C', + ç: 'c', + Ð: 'D', + ð: 'd', + È: 'E', + É: 'E', + Ê: 'E', + Ë: 'E', + è: 'e', + é: 'e', + ê: 'e', + ë: 'e', + Ì: 'I', + Í: 'I', + Î: 'I', + Ï: 'I', + ì: 'i', + í: 'i', + î: 'i', + ï: 'i', + Ñ: 'N', + ñ: 'n', + Ò: 'O', + Ó: 'O', + Ô: 'O', + Õ: 'O', + Ö: 'O', + Ø: 'O', + ò: 'o', + ó: 'o', + ô: 'o', + õ: 'o', + ö: 'o', + ø: 'o', + Ù: 'U', + Ú: 'U', + Û: 'U', + Ü: 'U', + ù: 'u', + ú: 'u', + û: 'u', + ü: 'u', + Ý: 'Y', + ý: 'y', + ÿ: 'y', + Æ: 'Ae', + æ: 'ae', + Þ: 'Th', + þ: 'th', + ß: 'ss', + Ā: 'A', + Ă: 'A', + Ą: 'A', + ā: 'a', + ă: 'a', + ą: 'a', + Ć: 'C', + Ĉ: 'C', + Ċ: 'C', + Č: 'C', + ć: 'c', + ĉ: 'c', + ċ: 'c', + č: 'c', + Ď: 'D', + Đ: 'D', + ď: 'd', + đ: 'd', + Ē: 'E', + Ĕ: 'E', + Ė: 'E', + Ę: 'E', + Ě: 'E', + ē: 'e', + ĕ: 'e', + ė: 'e', + ę: 'e', + ě: 'e', + Ĝ: 'G', + Ğ: 'G', + Ġ: 'G', + Ģ: 'G', + ĝ: 'g', + ğ: 'g', + ġ: 'g', + ģ: 'g', + Ĥ: 'H', + Ħ: 'H', + ĥ: 'h', + ħ: 'h', + Ĩ: 'I', + Ī: 'I', + Ĭ: 'I', + Į: 'I', + İ: 'I', + ĩ: 'i', + ī: 'i', + ĭ: 'i', + į: 'i', + ı: 'i', + Ĵ: 'J', + ĵ: 'j', + Ķ: 'K', + ķ: 'k', + ĸ: 'k', + Ĺ: 'L', + Ļ: 'L', + Ľ: 'L', + Ŀ: 'L', + Ł: 'L', + ĺ: 'l', + ļ: 'l', + ľ: 'l', + ŀ: 'l', + ł: 'l', + Ń: 'N', + Ņ: 'N', + Ň: 'N', + Ŋ: 'N', + ń: 'n', + ņ: 'n', + ň: 'n', + ŋ: 'n', + Ō: 'O', + Ŏ: 'O', + Ő: 'O', + ō: 'o', + ŏ: 'o', + ő: 'o', + Ŕ: 'R', + Ŗ: 'R', + Ř: 'R', + ŕ: 'r', + ŗ: 'r', + ř: 'r', + Ś: 'S', + Ŝ: 'S', + Ş: 'S', + Š: 'S', + ś: 's', + ŝ: 's', + ş: 's', + š: 's', + Ţ: 'T', + Ť: 'T', + Ŧ: 'T', + ţ: 't', + ť: 't', + ŧ: 't', + Ũ: 'U', + Ū: 'U', + Ŭ: 'U', + Ů: 'U', + Ű: 'U', + Ų: 'U', + ũ: 'u', + ū: 'u', + ŭ: 'u', + ů: 'u', + ű: 'u', + ų: 'u', + Ŵ: 'W', + ŵ: 'w', + Ŷ: 'Y', + ŷ: 'y', + Ÿ: 'Y', + Ź: 'Z', + Ż: 'Z', + Ž: 'Z', + ź: 'z', + ż: 'z', + ž: 'z', + IJ: 'IJ', + ij: 'ij', + Œ: 'Oe', + œ: 'oe', + ʼn: "'n", + ſ: 's' + }); + s.exports = a; + }, + 93243(s, o, i) { + var a = i(56110), + u = (function () { + try { + var s = a(Object, 'defineProperty'); + return (s({}, '', {}), s); + } catch (s) {} + })(); + s.exports = u; + }, + 25911(s, o, i) { + var a = i(38859), + u = i(14248), + _ = i(19219); + s.exports = function equalArrays(s, o, i, w, x, C) { + var j = 1 & i, + L = s.length, + B = o.length; + if (L != B && !(j && B > L)) return !1; + var $ = C.get(s), + U = C.get(o); + if ($ && U) return $ == o && U == s; + var V = -1, + z = !0, + Y = 2 & i ? new a() : void 0; + for (C.set(s, o), C.set(o, s); ++V < L; ) { + var Z = s[V], + ee = o[V]; + if (w) var ie = j ? w(ee, Z, V, o, s, C) : w(Z, ee, V, s, o, C); + if (void 0 !== ie) { + if (ie) continue; + z = !1; + break; + } + if (Y) { + if ( + !u(o, function (s, o) { + if (!_(Y, o) && (Z === s || x(Z, s, i, w, C))) return Y.push(o); + }) + ) { + z = !1; + break; + } + } else if (Z !== ee && !x(Z, ee, i, w, C)) { + z = !1; + break; + } + } + return (C.delete(s), C.delete(o), z); + }; + }, + 21986(s, o, i) { + var a = i(51873), + u = i(37828), + _ = i(75288), + w = i(25911), + x = i(20317), + C = i(84247), + j = a ? a.prototype : void 0, + L = j ? j.valueOf : void 0; + s.exports = function equalByTag(s, o, i, a, j, B, $) { + switch (i) { + case '[object DataView]': + if (s.byteLength != o.byteLength || s.byteOffset != o.byteOffset) return !1; + ((s = s.buffer), (o = o.buffer)); + case '[object ArrayBuffer]': + return !(s.byteLength != o.byteLength || !B(new u(s), new u(o))); + case '[object Boolean]': + case '[object Date]': + case '[object Number]': + return _(+s, +o); + case '[object Error]': + return s.name == o.name && s.message == o.message; + case '[object RegExp]': + case '[object String]': + return s == o + ''; + case '[object Map]': + var U = x; + case '[object Set]': + var V = 1 & a; + if ((U || (U = C), s.size != o.size && !V)) return !1; + var z = $.get(s); + if (z) return z == o; + ((a |= 2), $.set(s, o)); + var Y = w(U(s), U(o), a, j, B, $); + return ($.delete(s), Y); + case '[object Symbol]': + if (L) return L.call(s) == L.call(o); + } + return !1; + }; + }, + 50689(s, o, i) { + var a = i(50002), + u = Object.prototype.hasOwnProperty; + s.exports = function equalObjects(s, o, i, _, w, x) { + var C = 1 & i, + j = a(s), + L = j.length; + if (L != a(o).length && !C) return !1; + for (var B = L; B--; ) { + var $ = j[B]; + if (!(C ? $ in o : u.call(o, $))) return !1; + } + var U = x.get(s), + V = x.get(o); + if (U && V) return U == o && V == s; + var z = !0; + (x.set(s, o), x.set(o, s)); + for (var Y = C; ++B < L; ) { + var Z = s[($ = j[B])], + ee = o[$]; + if (_) var ie = C ? _(ee, Z, $, o, s, x) : _(Z, ee, $, s, o, x); + if (!(void 0 === ie ? Z === ee || w(Z, ee, i, _, x) : ie)) { + z = !1; + break; + } + Y || (Y = 'constructor' == $); + } + if (z && !Y) { + var ae = s.constructor, + ce = o.constructor; + ae == ce || + !('constructor' in s) || + !('constructor' in o) || + ('function' == typeof ae && + ae instanceof ae && + 'function' == typeof ce && + ce instanceof ce) || + (z = !1); + } + return (x.delete(s), x.delete(o), z); + }; + }, + 38816(s, o, i) { + var a = i(35970), + u = i(56757), + _ = i(32865); + s.exports = function flatRest(s) { + return _(u(s, void 0, a), s + ''); + }; + }, + 34840(s, o, i) { + var a = 'object' == typeof i.g && i.g && i.g.Object === Object && i.g; + s.exports = a; + }, + 50002(s, o, i) { + var a = i(82199), + u = i(4664), + _ = i(95950); + s.exports = function getAllKeys(s) { + return a(s, _, u); + }; + }, + 83349(s, o, i) { + var a = i(82199), + u = i(86375), + _ = i(37241); + s.exports = function getAllKeysIn(s) { + return a(s, _, u); + }; + }, + 37381(s, o, i) { + var a = i(48152), + u = i(63950), + _ = a + ? function (s) { + return a.get(s); + } + : u; + s.exports = _; + }, + 62284(s, o, i) { + var a = i(84629), + u = Object.prototype.hasOwnProperty; + s.exports = function getFuncName(s) { + for (var o = s.name + '', i = a[o], _ = u.call(a, o) ? i.length : 0; _--; ) { + var w = i[_], + x = w.func; + if (null == x || x == s) return w.name; + } + return o; + }; + }, + 11287(s) { + s.exports = function getHolder(s) { + return s.placeholder; + }; + }, + 12651(s, o, i) { + var a = i(74218); + s.exports = function getMapData(s, o) { + var i = s.__data__; + return a(o) ? i['string' == typeof o ? 'string' : 'hash'] : i.map; + }; + }, + 10776(s, o, i) { + var a = i(30756), + u = i(95950); + s.exports = function getMatchData(s) { + for (var o = u(s), i = o.length; i--; ) { + var _ = o[i], + w = s[_]; + o[i] = [_, w, a(w)]; + } + return o; + }; + }, + 56110(s, o, i) { + var a = i(45083), + u = i(10392); + s.exports = function getNative(s, o) { + var i = u(s, o); + return a(i) ? i : void 0; + }; + }, + 28879(s, o, i) { + var a = i(74335)(Object.getPrototypeOf, Object); + s.exports = a; + }, + 659(s, o, i) { + var a = i(51873), + u = Object.prototype, + _ = u.hasOwnProperty, + w = u.toString, + x = a ? a.toStringTag : void 0; + s.exports = function getRawTag(s) { + var o = _.call(s, x), + i = s[x]; + try { + s[x] = void 0; + var a = !0; + } catch (s) {} + var u = w.call(s); + return (a && (o ? (s[x] = i) : delete s[x]), u); + }; + }, + 4664(s, o, i) { + var a = i(79770), + u = i(63345), + _ = Object.prototype.propertyIsEnumerable, + w = Object.getOwnPropertySymbols, + x = w + ? function (s) { + return null == s + ? [] + : ((s = Object(s)), + a(w(s), function (o) { + return _.call(s, o); + })); + } + : u; + s.exports = x; + }, + 86375(s, o, i) { + var a = i(14528), + u = i(28879), + _ = i(4664), + w = i(63345), + x = Object.getOwnPropertySymbols + ? function (s) { + for (var o = []; s; ) (a(o, _(s)), (s = u(s))); + return o; + } + : w; + s.exports = x; + }, + 5861(s, o, i) { + var a = i(55580), + u = i(68223), + _ = i(32804), + w = i(76545), + x = i(28303), + C = i(72552), + j = i(47473), + L = '[object Map]', + B = '[object Promise]', + $ = '[object Set]', + U = '[object WeakMap]', + V = '[object DataView]', + z = j(a), + Y = j(u), + Z = j(_), + ee = j(w), + ie = j(x), + ae = C; + (((a && ae(new a(new ArrayBuffer(1))) != V) || + (u && ae(new u()) != L) || + (_ && ae(_.resolve()) != B) || + (w && ae(new w()) != $) || + (x && ae(new x()) != U)) && + (ae = function (s) { + var o = C(s), + i = '[object Object]' == o ? s.constructor : void 0, + a = i ? j(i) : ''; + if (a) + switch (a) { + case z: + return V; + case Y: + return L; + case Z: + return B; + case ee: + return $; + case ie: + return U; + } + return o; + }), + (s.exports = ae)); + }, + 10392(s) { + s.exports = function getValue(s, o) { + return null == s ? void 0 : s[o]; + }; + }, + 75251(s) { + var o = /\{\n\/\* \[wrapped with (.+)\] \*/, + i = /,? & /; + s.exports = function getWrapDetails(s) { + var a = s.match(o); + return a ? a[1].split(i) : []; + }; + }, + 49326(s, o, i) { + var a = i(31769), + u = i(72428), + _ = i(56449), + w = i(30361), + x = i(30294), + C = i(77797); + s.exports = function hasPath(s, o, i) { + for (var j = -1, L = (o = a(o, s)).length, B = !1; ++j < L; ) { + var $ = C(o[j]); + if (!(B = null != s && i(s, $))) break; + s = s[$]; + } + return B || ++j != L + ? B + : !!(L = null == s ? 0 : s.length) && x(L) && w($, L) && (_(s) || u(s)); + }; + }, + 49698(s) { + var o = RegExp( + '[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]' + ); + s.exports = function hasUnicode(s) { + return o.test(s); + }; + }, + 45434(s) { + var o = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; + s.exports = function hasUnicodeWord(s) { + return o.test(s); + }; + }, + 22032(s, o, i) { + var a = i(81042); + s.exports = function hashClear() { + ((this.__data__ = a ? a(null) : {}), (this.size = 0)); + }; + }, + 63862(s) { + s.exports = function hashDelete(s) { + var o = this.has(s) && delete this.__data__[s]; + return ((this.size -= o ? 1 : 0), o); + }; + }, + 66721(s, o, i) { + var a = i(81042), + u = Object.prototype.hasOwnProperty; + s.exports = function hashGet(s) { + var o = this.__data__; + if (a) { + var i = o[s]; + return '__lodash_hash_undefined__' === i ? void 0 : i; + } + return u.call(o, s) ? o[s] : void 0; + }; + }, + 12749(s, o, i) { + var a = i(81042), + u = Object.prototype.hasOwnProperty; + s.exports = function hashHas(s) { + var o = this.__data__; + return a ? void 0 !== o[s] : u.call(o, s); + }; + }, + 35749(s, o, i) { + var a = i(81042); + s.exports = function hashSet(s, o) { + var i = this.__data__; + return ( + (this.size += this.has(s) ? 0 : 1), + (i[s] = a && void 0 === o ? '__lodash_hash_undefined__' : o), + this + ); + }; + }, + 76189(s) { + var o = Object.prototype.hasOwnProperty; + s.exports = function initCloneArray(s) { + var i = s.length, + a = new s.constructor(i); + return ( + i && + 'string' == typeof s[0] && + o.call(s, 'index') && + ((a.index = s.index), (a.input = s.input)), + a + ); + }; + }, + 77199(s, o, i) { + var a = i(49653), + u = i(76169), + _ = i(73201), + w = i(93736), + x = i(71961); + s.exports = function initCloneByTag(s, o, i) { + var C = s.constructor; + switch (o) { + case '[object ArrayBuffer]': + return a(s); + case '[object Boolean]': + case '[object Date]': + return new C(+s); + case '[object DataView]': + return u(s, i); + case '[object Float32Array]': + case '[object Float64Array]': + case '[object Int8Array]': + case '[object Int16Array]': + case '[object Int32Array]': + case '[object Uint8Array]': + case '[object Uint8ClampedArray]': + case '[object Uint16Array]': + case '[object Uint32Array]': + return x(s, i); + case '[object Map]': + case '[object Set]': + return new C(); + case '[object Number]': + case '[object String]': + return new C(s); + case '[object RegExp]': + return _(s); + case '[object Symbol]': + return w(s); + } + }; + }, + 35529(s, o, i) { + var a = i(39344), + u = i(28879), + _ = i(55527); + s.exports = function initCloneObject(s) { + return 'function' != typeof s.constructor || _(s) ? {} : a(u(s)); + }; + }, + 62060(s) { + var o = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/; + s.exports = function insertWrapDetails(s, i) { + var a = i.length; + if (!a) return s; + var u = a - 1; + return ( + (i[u] = (a > 1 ? '& ' : '') + i[u]), + (i = i.join(a > 2 ? ', ' : ' ')), + s.replace(o, '{\n/* [wrapped with ' + i + '] */\n') + ); + }; + }, + 45891(s, o, i) { + var a = i(51873), + u = i(72428), + _ = i(56449), + w = a ? a.isConcatSpreadable : void 0; + s.exports = function isFlattenable(s) { + return _(s) || u(s) || !!(w && s && s[w]); + }; + }, + 30361(s) { + var o = /^(?:0|[1-9]\d*)$/; + s.exports = function isIndex(s, i) { + var a = typeof s; + return ( + !!(i = null == i ? 9007199254740991 : i) && + ('number' == a || ('symbol' != a && o.test(s))) && + s > -1 && + s % 1 == 0 && + s < i + ); + }; + }, + 36800(s, o, i) { + var a = i(75288), + u = i(64894), + _ = i(30361), + w = i(23805); + s.exports = function isIterateeCall(s, o, i) { + if (!w(i)) return !1; + var x = typeof o; + return ( + !!('number' == x ? u(i) && _(o, i.length) : 'string' == x && o in i) && a(i[o], s) + ); + }; + }, + 28586(s, o, i) { + var a = i(56449), + u = i(44394), + _ = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + w = /^\w*$/; + s.exports = function isKey(s, o) { + if (a(s)) return !1; + var i = typeof s; + return ( + !('number' != i && 'symbol' != i && 'boolean' != i && null != s && !u(s)) || + w.test(s) || + !_.test(s) || + (null != o && s in Object(o)) + ); + }; + }, + 74218(s) { + s.exports = function isKeyable(s) { + var o = typeof s; + return 'string' == o || 'number' == o || 'symbol' == o || 'boolean' == o + ? '__proto__' !== s + : null === s; + }; + }, + 85087(s, o, i) { + var a = i(30980), + u = i(37381), + _ = i(62284), + w = i(53758); + s.exports = function isLaziable(s) { + var o = _(s), + i = w[o]; + if ('function' != typeof i || !(o in a.prototype)) return !1; + if (s === i) return !0; + var x = u(i); + return !!x && s === x[0]; + }; + }, + 87296(s, o, i) { + var a, + u = i(55481), + _ = (a = /[^.]+$/.exec((u && u.keys && u.keys.IE_PROTO) || '')) + ? 'Symbol(src)_1.' + a + : ''; + s.exports = function isMasked(s) { + return !!_ && _ in s; + }; + }, + 55527(s) { + var o = Object.prototype; + s.exports = function isPrototype(s) { + var i = s && s.constructor; + return s === (('function' == typeof i && i.prototype) || o); + }; + }, + 30756(s, o, i) { + var a = i(23805); + s.exports = function isStrictComparable(s) { + return s == s && !a(s); + }; + }, + 63702(s) { + s.exports = function listCacheClear() { + ((this.__data__ = []), (this.size = 0)); + }; + }, + 70080(s, o, i) { + var a = i(26025), + u = Array.prototype.splice; + s.exports = function listCacheDelete(s) { + var o = this.__data__, + i = a(o, s); + return !(i < 0) && (i == o.length - 1 ? o.pop() : u.call(o, i, 1), --this.size, !0); + }; + }, + 24739(s, o, i) { + var a = i(26025); + s.exports = function listCacheGet(s) { + var o = this.__data__, + i = a(o, s); + return i < 0 ? void 0 : o[i][1]; + }; + }, + 48655(s, o, i) { + var a = i(26025); + s.exports = function listCacheHas(s) { + return a(this.__data__, s) > -1; + }; + }, + 31175(s, o, i) { + var a = i(26025); + s.exports = function listCacheSet(s, o) { + var i = this.__data__, + u = a(i, s); + return (u < 0 ? (++this.size, i.push([s, o])) : (i[u][1] = o), this); + }; + }, + 63040(s, o, i) { + var a = i(21549), + u = i(80079), + _ = i(68223); + s.exports = function mapCacheClear() { + ((this.size = 0), + (this.__data__ = { hash: new a(), map: new (_ || u)(), string: new a() })); + }; + }, + 17670(s, o, i) { + var a = i(12651); + s.exports = function mapCacheDelete(s) { + var o = a(this, s).delete(s); + return ((this.size -= o ? 1 : 0), o); + }; + }, + 90289(s, o, i) { + var a = i(12651); + s.exports = function mapCacheGet(s) { + return a(this, s).get(s); + }; + }, + 4509(s, o, i) { + var a = i(12651); + s.exports = function mapCacheHas(s) { + return a(this, s).has(s); + }; + }, + 72949(s, o, i) { + var a = i(12651); + s.exports = function mapCacheSet(s, o) { + var i = a(this, s), + u = i.size; + return (i.set(s, o), (this.size += i.size == u ? 0 : 1), this); + }; + }, + 20317(s) { + s.exports = function mapToArray(s) { + var o = -1, + i = Array(s.size); + return ( + s.forEach(function (s, a) { + i[++o] = [a, s]; + }), + i + ); + }; + }, + 67197(s) { + s.exports = function matchesStrictComparable(s, o) { + return function (i) { + return null != i && i[s] === o && (void 0 !== o || s in Object(i)); + }; + }; + }, + 62224(s, o, i) { + var a = i(50104); + s.exports = function memoizeCapped(s) { + var o = a(s, function (s) { + return (500 === i.size && i.clear(), s); + }), + i = o.cache; + return o; + }; + }, + 3209(s, o, i) { + var a = i(91596), + u = i(53320), + _ = i(36306), + w = '__lodash_placeholder__', + x = 128, + C = Math.min; + s.exports = function mergeData(s, o) { + var i = s[1], + j = o[1], + L = i | j, + B = L < 131, + $ = + (j == x && 8 == i) || + (j == x && 256 == i && s[7].length <= o[8]) || + (384 == j && o[7].length <= o[8] && 8 == i); + if (!B && !$) return s; + 1 & j && ((s[2] = o[2]), (L |= 1 & i ? 0 : 4)); + var U = o[3]; + if (U) { + var V = s[3]; + ((s[3] = V ? a(V, U, o[4]) : U), (s[4] = V ? _(s[3], w) : o[4])); + } + return ( + (U = o[5]) && + ((V = s[5]), (s[5] = V ? u(V, U, o[6]) : U), (s[6] = V ? _(s[5], w) : o[6])), + (U = o[7]) && (s[7] = U), + j & x && (s[8] = null == s[8] ? o[8] : C(s[8], o[8])), + null == s[9] && (s[9] = o[9]), + (s[0] = o[0]), + (s[1] = L), + s + ); + }; + }, + 48152(s, o, i) { + var a = i(28303), + u = a && new a(); + s.exports = u; + }, + 81042(s, o, i) { + var a = i(56110)(Object, 'create'); + s.exports = a; + }, + 3650(s, o, i) { + var a = i(74335)(Object.keys, Object); + s.exports = a; + }, + 90181(s) { + s.exports = function nativeKeysIn(s) { + var o = []; + if (null != s) for (var i in Object(s)) o.push(i); + return o; + }; + }, + 86009(s, o, i) { + s = i.nmd(s); + var a = i(34840), + u = o && !o.nodeType && o, + _ = u && s && !s.nodeType && s, + w = _ && _.exports === u && a.process, + x = (function () { + try { + var s = _ && _.require && _.require('util').types; + return s || (w && w.binding && w.binding('util')); + } catch (s) {} + })(); + s.exports = x; + }, + 59350(s) { + var o = Object.prototype.toString; + s.exports = function objectToString(s) { + return o.call(s); + }; + }, + 74335(s) { + s.exports = function overArg(s, o) { + return function (i) { + return s(o(i)); + }; + }; + }, + 56757(s, o, i) { + var a = i(91033), + u = Math.max; + s.exports = function overRest(s, o, i) { + return ( + (o = u(void 0 === o ? s.length - 1 : o, 0)), + function () { + for (var _ = arguments, w = -1, x = u(_.length - o, 0), C = Array(x); ++w < x; ) + C[w] = _[o + w]; + w = -1; + for (var j = Array(o + 1); ++w < o; ) j[w] = _[w]; + return ((j[o] = i(C)), a(s, this, j)); + } + ); + }; + }, + 68969(s, o, i) { + var a = i(47422), + u = i(25160); + s.exports = function parent(s, o) { + return o.length < 2 ? s : a(s, u(o, 0, -1)); + }; + }, + 84629(s) { + s.exports = {}; + }, + 68294(s, o, i) { + var a = i(23007), + u = i(30361), + _ = Math.min; + s.exports = function reorder(s, o) { + for (var i = s.length, w = _(o.length, i), x = a(s); w--; ) { + var C = o[w]; + s[w] = u(C, i) ? x[C] : void 0; + } + return s; + }; + }, + 36306(s) { + var o = '__lodash_placeholder__'; + s.exports = function replaceHolders(s, i) { + for (var a = -1, u = s.length, _ = 0, w = []; ++a < u; ) { + var x = s[a]; + (x !== i && x !== o) || ((s[a] = o), (w[_++] = a)); + } + return w; + }; + }, + 9325(s, o, i) { + var a = i(34840), + u = 'object' == typeof self && self && self.Object === Object && self, + _ = a || u || Function('return this')(); + s.exports = _; + }, + 14974(s) { + s.exports = function safeGet(s, o) { + if (('constructor' !== o || 'function' != typeof s[o]) && '__proto__' != o) return s[o]; + }; + }, + 31380(s) { + s.exports = function setCacheAdd(s) { + return (this.__data__.set(s, '__lodash_hash_undefined__'), this); + }; + }, + 51459(s) { + s.exports = function setCacheHas(s) { + return this.__data__.has(s); + }; + }, + 54641(s, o, i) { + var a = i(68882), + u = i(51811)(a); + s.exports = u; + }, + 84247(s) { + s.exports = function setToArray(s) { + var o = -1, + i = Array(s.size); + return ( + s.forEach(function (s) { + i[++o] = s; + }), + i + ); + }; + }, + 32865(s, o, i) { + var a = i(19570), + u = i(51811)(a); + s.exports = u; + }, + 70981(s, o, i) { + var a = i(75251), + u = i(62060), + _ = i(32865), + w = i(75948); + s.exports = function setWrapToString(s, o, i) { + var x = o + ''; + return _(s, u(x, w(a(x), i))); + }; + }, + 51811(s) { + var o = Date.now; + s.exports = function shortOut(s) { + var i = 0, + a = 0; + return function () { + var u = o(), + _ = 16 - (u - a); + if (((a = u), _ > 0)) { + if (++i >= 800) return arguments[0]; + } else i = 0; + return s.apply(void 0, arguments); + }; + }; + }, + 51420(s, o, i) { + var a = i(80079); + s.exports = function stackClear() { + ((this.__data__ = new a()), (this.size = 0)); + }; + }, + 90938(s) { + s.exports = function stackDelete(s) { + var o = this.__data__, + i = o.delete(s); + return ((this.size = o.size), i); + }; + }, + 63605(s) { + s.exports = function stackGet(s) { + return this.__data__.get(s); + }; + }, + 29817(s) { + s.exports = function stackHas(s) { + return this.__data__.has(s); + }; + }, + 80945(s, o, i) { + var a = i(80079), + u = i(68223), + _ = i(53661); + s.exports = function stackSet(s, o) { + var i = this.__data__; + if (i instanceof a) { + var w = i.__data__; + if (!u || w.length < 199) return (w.push([s, o]), (this.size = ++i.size), this); + i = this.__data__ = new _(w); + } + return (i.set(s, o), (this.size = i.size), this); + }; + }, + 76959(s) { + s.exports = function strictIndexOf(s, o, i) { + for (var a = i - 1, u = s.length; ++a < u; ) if (s[a] === o) return a; + return -1; + }; + }, + 63912(s, o, i) { + var a = i(61074), + u = i(49698), + _ = i(42054); + s.exports = function stringToArray(s) { + return u(s) ? _(s) : a(s); + }; + }, + 61802(s, o, i) { + var a = i(62224), + u = + /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g, + _ = /\\(\\)?/g, + w = a(function (s) { + var o = []; + return ( + 46 === s.charCodeAt(0) && o.push(''), + s.replace(u, function (s, i, a, u) { + o.push(a ? u.replace(_, '$1') : i || s); + }), + o + ); + }); + s.exports = w; + }, + 77797(s, o, i) { + var a = i(44394); + s.exports = function toKey(s) { + if ('string' == typeof s || a(s)) return s; + var o = s + ''; + return '0' == o && 1 / s == -1 / 0 ? '-0' : o; + }; + }, + 47473(s) { + var o = Function.prototype.toString; + s.exports = function toSource(s) { + if (null != s) { + try { + return o.call(s); + } catch (s) {} + try { + return s + ''; + } catch (s) {} + } + return ''; + }; + }, + 31800(s) { + var o = /\s/; + s.exports = function trimmedEndIndex(s) { + for (var i = s.length; i-- && o.test(s.charAt(i)); ); + return i; + }; + }, + 42054(s) { + var o = '\\ud800-\\udfff', + i = '[' + o + ']', + a = '[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]', + u = '\\ud83c[\\udffb-\\udfff]', + _ = '[^' + o + ']', + w = '(?:\\ud83c[\\udde6-\\uddff]){2}', + x = '[\\ud800-\\udbff][\\udc00-\\udfff]', + C = '(?:' + a + '|' + u + ')' + '?', + j = '[\\ufe0e\\ufe0f]?', + L = j + C + ('(?:\\u200d(?:' + [_, w, x].join('|') + ')' + j + C + ')*'), + B = '(?:' + [_ + a + '?', a, w, x, i].join('|') + ')', + $ = RegExp(u + '(?=' + u + ')|' + B + L, 'g'); + s.exports = function unicodeToArray(s) { + return s.match($) || []; + }; + }, + 22225(s) { + var o = '\\ud800-\\udfff', + i = '\\u2700-\\u27bf', + a = 'a-z\\xdf-\\xf6\\xf8-\\xff', + u = 'A-Z\\xc0-\\xd6\\xd8-\\xde', + _ = + '\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', + w = '[' + _ + ']', + x = '\\d+', + C = '[' + i + ']', + j = '[' + a + ']', + L = '[^' + o + _ + x + i + a + u + ']', + B = '(?:\\ud83c[\\udde6-\\uddff]){2}', + $ = '[\\ud800-\\udbff][\\udc00-\\udfff]', + U = '[' + u + ']', + V = '(?:' + j + '|' + L + ')', + z = '(?:' + U + '|' + L + ')', + Y = "(?:['’](?:d|ll|m|re|s|t|ve))?", + Z = "(?:['’](?:D|LL|M|RE|S|T|VE))?", + ee = '(?:[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]|\\ud83c[\\udffb-\\udfff])?', + ie = '[\\ufe0e\\ufe0f]?', + ae = + ie + ee + ('(?:\\u200d(?:' + ['[^' + o + ']', B, $].join('|') + ')' + ie + ee + ')*'), + ce = '(?:' + [C, B, $].join('|') + ')' + ae, + le = RegExp( + [ + U + '?' + j + '+' + Y + '(?=' + [w, U, '$'].join('|') + ')', + z + '+' + Z + '(?=' + [w, U + V, '$'].join('|') + ')', + U + '?' + V + '+' + Y, + U + '+' + Z, + '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', + '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', + x, + ce + ].join('|'), + 'g' + ); + s.exports = function unicodeWords(s) { + return s.match(le) || []; + }; + }, + 75948(s, o, i) { + var a = i(83729), + u = i(15325), + _ = [ + ['ary', 128], + ['bind', 1], + ['bindKey', 2], + ['curry', 8], + ['curryRight', 16], + ['flip', 512], + ['partial', 32], + ['partialRight', 64], + ['rearg', 256] + ]; + s.exports = function updateWrapDetails(s, o) { + return ( + a(_, function (i) { + var a = '_.' + i[0]; + o & i[1] && !u(s, a) && s.push(a); + }), + s.sort() + ); + }; + }, + 80257(s, o, i) { + var a = i(30980), + u = i(56017), + _ = i(23007); + s.exports = function wrapperClone(s) { + if (s instanceof a) return s.clone(); + var o = new u(s.__wrapped__, s.__chain__); + return ( + (o.__actions__ = _(s.__actions__)), + (o.__index__ = s.__index__), + (o.__values__ = s.__values__), + o + ); + }; + }, + 64626(s, o, i) { + var a = i(66977); + s.exports = function ary(s, o, i) { + return ( + (o = i ? void 0 : o), + (o = s && null == o ? s.length : o), + a(s, 128, void 0, void 0, void 0, void 0, o) + ); + }; + }, + 84058(s, o, i) { + var a = i(14792), + u = i(45539)(function (s, o, i) { + return ((o = o.toLowerCase()), s + (i ? a(o) : o)); + }); + s.exports = u; + }, + 14792(s, o, i) { + var a = i(13222), + u = i(55808); + s.exports = function capitalize(s) { + return u(a(s).toLowerCase()); + }; + }, + 32629(s, o, i) { + var a = i(9999); + s.exports = function clone(s) { + return a(s, 4); + }; + }, + 37334(s) { + s.exports = function constant(s) { + return function () { + return s; + }; + }; + }, + 49747(s, o, i) { + var a = i(66977); + function curry(s, o, i) { + var u = a(s, 8, void 0, void 0, void 0, void 0, void 0, (o = i ? void 0 : o)); + return ((u.placeholder = curry.placeholder), u); + } + ((curry.placeholder = {}), (s.exports = curry)); + }, + 38221(s, o, i) { + var a = i(23805), + u = i(10124), + _ = i(99374), + w = Math.max, + x = Math.min; + s.exports = function debounce(s, o, i) { + var C, + j, + L, + B, + $, + U, + V = 0, + z = !1, + Y = !1, + Z = !0; + if ('function' != typeof s) throw new TypeError('Expected a function'); + function invokeFunc(o) { + var i = C, + a = j; + return ((C = j = void 0), (V = o), (B = s.apply(a, i))); + } + function shouldInvoke(s) { + var i = s - U; + return void 0 === U || i >= o || i < 0 || (Y && s - V >= L); + } + function timerExpired() { + var s = u(); + if (shouldInvoke(s)) return trailingEdge(s); + $ = setTimeout( + timerExpired, + (function remainingWait(s) { + var i = o - (s - U); + return Y ? x(i, L - (s - V)) : i; + })(s) + ); + } + function trailingEdge(s) { + return (($ = void 0), Z && C ? invokeFunc(s) : ((C = j = void 0), B)); + } + function debounced() { + var s = u(), + i = shouldInvoke(s); + if (((C = arguments), (j = this), (U = s), i)) { + if (void 0 === $) + return (function leadingEdge(s) { + return ((V = s), ($ = setTimeout(timerExpired, o)), z ? invokeFunc(s) : B); + })(U); + if (Y) return (clearTimeout($), ($ = setTimeout(timerExpired, o)), invokeFunc(U)); + } + return (void 0 === $ && ($ = setTimeout(timerExpired, o)), B); + } + return ( + (o = _(o) || 0), + a(i) && + ((z = !!i.leading), + (L = (Y = 'maxWait' in i) ? w(_(i.maxWait) || 0, o) : L), + (Z = 'trailing' in i ? !!i.trailing : Z)), + (debounced.cancel = function cancel() { + (void 0 !== $ && clearTimeout($), (V = 0), (C = U = j = $ = void 0)); + }), + (debounced.flush = function flush() { + return void 0 === $ ? B : trailingEdge(u()); + }), + debounced + ); + }; + }, + 50828(s, o, i) { + var a = i(24647), + u = i(13222), + _ = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g, + w = RegExp('[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]', 'g'); + s.exports = function deburr(s) { + return (s = u(s)) && s.replace(_, a).replace(w, ''); + }; + }, + 75288(s) { + s.exports = function eq(s, o) { + return s === o || (s != s && o != o); + }; + }, + 60680(s, o, i) { + var a = i(13222), + u = /[\\^$.*+?()[\]{}|]/g, + _ = RegExp(u.source); + s.exports = function escapeRegExp(s) { + return (s = a(s)) && _.test(s) ? s.replace(u, '\\$&') : s; + }; + }, + 7309(s, o, i) { + var a = i(62006)(i(24713)); + s.exports = a; + }, + 24713(s, o, i) { + var a = i(2523), + u = i(15389), + _ = i(61489), + w = Math.max; + s.exports = function findIndex(s, o, i) { + var x = null == s ? 0 : s.length; + if (!x) return -1; + var C = null == i ? 0 : _(i); + return (C < 0 && (C = w(x + C, 0)), a(s, u(o, 3), C)); + }; + }, + 35970(s, o, i) { + var a = i(83120); + s.exports = function flatten(s) { + return (null == s ? 0 : s.length) ? a(s, 1) : []; + }; + }, + 73424(s, o, i) { + var a = i(16962), + u = i(2874), + _ = Array.prototype.push; + function baseAry(s, o) { + return 2 == o + ? function (o, i) { + return s(o, i); + } + : function (o) { + return s(o); + }; + } + function cloneArray(s) { + for (var o = s ? s.length : 0, i = Array(o); o--; ) i[o] = s[o]; + return i; + } + function wrapImmutable(s, o) { + return function () { + var i = arguments.length; + if (i) { + for (var a = Array(i); i--; ) a[i] = arguments[i]; + var u = (a[0] = o.apply(void 0, a)); + return (s.apply(void 0, a), u); + } + }; + } + s.exports = function baseConvert(s, o, i, w) { + var x = 'function' == typeof o, + C = o === Object(o); + if ((C && ((w = i), (i = o), (o = void 0)), null == i)) throw new TypeError(); + w || (w = {}); + var j = !('cap' in w) || w.cap, + L = !('curry' in w) || w.curry, + B = !('fixed' in w) || w.fixed, + $ = !('immutable' in w) || w.immutable, + U = !('rearg' in w) || w.rearg, + V = x ? i : u, + z = 'curry' in w && w.curry, + Y = 'fixed' in w && w.fixed, + Z = 'rearg' in w && w.rearg, + ee = x ? i.runInContext() : void 0, + ie = x + ? i + : { + ary: s.ary, + assign: s.assign, + clone: s.clone, + curry: s.curry, + forEach: s.forEach, + isArray: s.isArray, + isError: s.isError, + isFunction: s.isFunction, + isWeakMap: s.isWeakMap, + iteratee: s.iteratee, + keys: s.keys, + rearg: s.rearg, + toInteger: s.toInteger, + toPath: s.toPath + }, + ae = ie.ary, + ce = ie.assign, + le = ie.clone, + pe = ie.curry, + de = ie.forEach, + fe = ie.isArray, + ye = ie.isError, + be = ie.isFunction, + Se = ie.isWeakMap, + _e = ie.keys, + we = ie.rearg, + xe = ie.toInteger, + Pe = ie.toPath, + Te = _e(a.aryMethod), + Re = { + castArray: function (s) { + return function () { + var o = arguments[0]; + return fe(o) ? s(cloneArray(o)) : s.apply(void 0, arguments); + }; + }, + iteratee: function (s) { + return function () { + var o = arguments[1], + i = s(arguments[0], o), + a = i.length; + return j && 'number' == typeof o + ? ((o = o > 2 ? o - 2 : 1), a && a <= o ? i : baseAry(i, o)) + : i; + }; + }, + mixin: function (s) { + return function (o) { + var i = this; + if (!be(i)) return s(i, Object(o)); + var a = []; + return ( + de(_e(o), function (s) { + be(o[s]) && a.push([s, i.prototype[s]]); + }), + s(i, Object(o)), + de(a, function (s) { + var o = s[1]; + be(o) ? (i.prototype[s[0]] = o) : delete i.prototype[s[0]]; + }), + i + ); + }; + }, + nthArg: function (s) { + return function (o) { + var i = o < 0 ? 1 : xe(o) + 1; + return pe(s(o), i); + }; + }, + rearg: function (s) { + return function (o, i) { + var a = i ? i.length : 0; + return pe(s(o, i), a); + }; + }, + runInContext: function (o) { + return function (i) { + return baseConvert(s, o(i), w); + }; + } + }; + function castCap(s, o) { + if (j) { + var i = a.iterateeRearg[s]; + if (i) + return (function iterateeRearg(s, o) { + return overArg(s, function (s) { + var i = o.length; + return (function baseArity(s, o) { + return 2 == o + ? function (o, i) { + return s.apply(void 0, arguments); + } + : function (o) { + return s.apply(void 0, arguments); + }; + })(we(baseAry(s, i), o), i); + }); + })(o, i); + var u = !x && a.iterateeAry[s]; + if (u) + return (function iterateeAry(s, o) { + return overArg(s, function (s) { + return 'function' == typeof s ? baseAry(s, o) : s; + }); + })(o, u); + } + return o; + } + function castFixed(s, o, i) { + if (B && (Y || !a.skipFixed[s])) { + var u = a.methodSpread[s], + w = u && u.start; + return void 0 === w + ? ae(o, i) + : (function flatSpread(s, o) { + return function () { + for (var i = arguments.length, a = i - 1, u = Array(i); i--; ) + u[i] = arguments[i]; + var w = u[o], + x = u.slice(0, o); + return ( + w && _.apply(x, w), + o != a && _.apply(x, u.slice(o + 1)), + s.apply(this, x) + ); + }; + })(o, w); + } + return o; + } + function castRearg(s, o, i) { + return U && i > 1 && (Z || !a.skipRearg[s]) + ? we(o, a.methodRearg[s] || a.aryRearg[i]) + : o; + } + function cloneByPath(s, o) { + for ( + var i = -1, a = (o = Pe(o)).length, u = a - 1, _ = le(Object(s)), w = _; + null != w && ++i < a; + ) { + var x = o[i], + C = w[x]; + (null == C || be(C) || ye(C) || Se(C) || (w[x] = le(i == u ? C : Object(C))), + (w = w[x])); + } + return _; + } + function createConverter(s, o) { + var i = a.aliasToReal[s] || s, + u = a.remap[i] || i, + _ = w; + return function (s) { + var a = x ? ee : ie, + w = x ? ee[u] : o, + C = ce(ce({}, _), s); + return baseConvert(a, i, w, C); + }; + } + function overArg(s, o) { + return function () { + var i = arguments.length; + if (!i) return s(); + for (var a = Array(i); i--; ) a[i] = arguments[i]; + var u = U ? 0 : i - 1; + return ((a[u] = o(a[u])), s.apply(void 0, a)); + }; + } + function wrap(s, o, i) { + var u, + _ = a.aliasToReal[s] || s, + w = o, + x = Re[_]; + return ( + x + ? (w = x(o)) + : $ && + (a.mutate.array[_] + ? (w = wrapImmutable(o, cloneArray)) + : a.mutate.object[_] + ? (w = wrapImmutable( + o, + (function createCloner(s) { + return function (o) { + return s({}, o); + }; + })(o) + )) + : a.mutate.set[_] && (w = wrapImmutable(o, cloneByPath))), + de(Te, function (s) { + return ( + de(a.aryMethod[s], function (o) { + if (_ == o) { + var i = a.methodSpread[_], + x = i && i.afterRearg; + return ( + (u = x + ? castFixed(_, castRearg(_, w, s), s) + : castRearg(_, castFixed(_, w, s), s)), + (u = (function castCurry(s, o, i) { + return z || (L && i > 1) ? pe(o, i) : o; + })(0, (u = castCap(_, u)), s)), + !1 + ); + } + }), + !u + ); + }), + u || (u = w), + u == o && + (u = z + ? pe(u, 1) + : function () { + return o.apply(this, arguments); + }), + (u.convert = createConverter(_, o)), + (u.placeholder = o.placeholder = i), + u + ); + } + if (!C) return wrap(o, i, V); + var $e = i, + qe = []; + return ( + de(Te, function (s) { + de(a.aryMethod[s], function (s) { + var o = $e[a.remap[s] || s]; + o && qe.push([s, wrap(s, o, $e)]); + }); + }), + de(_e($e), function (s) { + var o = $e[s]; + if ('function' == typeof o) { + for (var i = qe.length; i--; ) if (qe[i][0] == s) return; + ((o.convert = createConverter(s, o)), qe.push([s, o])); + } + }), + de(qe, function (s) { + $e[s[0]] = s[1]; + }), + ($e.convert = function convertLib(s) { + return $e.runInContext.convert(s)(void 0); + }), + ($e.placeholder = $e), + de(_e($e), function (s) { + de(a.realToAlias[s] || [], function (o) { + $e[o] = $e[s]; + }); + }), + $e + ); + }; + }, + 16962(s, o) { + ((o.aliasToReal = { + each: 'forEach', + eachRight: 'forEachRight', + entries: 'toPairs', + entriesIn: 'toPairsIn', + extend: 'assignIn', + extendAll: 'assignInAll', + extendAllWith: 'assignInAllWith', + extendWith: 'assignInWith', + first: 'head', + conforms: 'conformsTo', + matches: 'isMatch', + property: 'get', + __: 'placeholder', + F: 'stubFalse', + T: 'stubTrue', + all: 'every', + allPass: 'overEvery', + always: 'constant', + any: 'some', + anyPass: 'overSome', + apply: 'spread', + assoc: 'set', + assocPath: 'set', + complement: 'negate', + compose: 'flowRight', + contains: 'includes', + dissoc: 'unset', + dissocPath: 'unset', + dropLast: 'dropRight', + dropLastWhile: 'dropRightWhile', + equals: 'isEqual', + identical: 'eq', + indexBy: 'keyBy', + init: 'initial', + invertObj: 'invert', + juxt: 'over', + omitAll: 'omit', + nAry: 'ary', + path: 'get', + pathEq: 'matchesProperty', + pathOr: 'getOr', + paths: 'at', + pickAll: 'pick', + pipe: 'flow', + pluck: 'map', + prop: 'get', + propEq: 'matchesProperty', + propOr: 'getOr', + props: 'at', + symmetricDifference: 'xor', + symmetricDifferenceBy: 'xorBy', + symmetricDifferenceWith: 'xorWith', + takeLast: 'takeRight', + takeLastWhile: 'takeRightWhile', + unapply: 'rest', + unnest: 'flatten', + useWith: 'overArgs', + where: 'conformsTo', + whereEq: 'isMatch', + zipObj: 'zipObject' + }), + (o.aryMethod = { + 1: [ + 'assignAll', + 'assignInAll', + 'attempt', + 'castArray', + 'ceil', + 'create', + 'curry', + 'curryRight', + 'defaultsAll', + 'defaultsDeepAll', + 'floor', + 'flow', + 'flowRight', + 'fromPairs', + 'invert', + 'iteratee', + 'memoize', + 'method', + 'mergeAll', + 'methodOf', + 'mixin', + 'nthArg', + 'over', + 'overEvery', + 'overSome', + 'rest', + 'reverse', + 'round', + 'runInContext', + 'spread', + 'template', + 'trim', + 'trimEnd', + 'trimStart', + 'uniqueId', + 'words', + 'zipAll' + ], + 2: [ + 'add', + 'after', + 'ary', + 'assign', + 'assignAllWith', + 'assignIn', + 'assignInAllWith', + 'at', + 'before', + 'bind', + 'bindAll', + 'bindKey', + 'chunk', + 'cloneDeepWith', + 'cloneWith', + 'concat', + 'conformsTo', + 'countBy', + 'curryN', + 'curryRightN', + 'debounce', + 'defaults', + 'defaultsDeep', + 'defaultTo', + 'delay', + 'difference', + 'divide', + 'drop', + 'dropRight', + 'dropRightWhile', + 'dropWhile', + 'endsWith', + 'eq', + 'every', + 'filter', + 'find', + 'findIndex', + 'findKey', + 'findLast', + 'findLastIndex', + 'findLastKey', + 'flatMap', + 'flatMapDeep', + 'flattenDepth', + 'forEach', + 'forEachRight', + 'forIn', + 'forInRight', + 'forOwn', + 'forOwnRight', + 'get', + 'groupBy', + 'gt', + 'gte', + 'has', + 'hasIn', + 'includes', + 'indexOf', + 'intersection', + 'invertBy', + 'invoke', + 'invokeMap', + 'isEqual', + 'isMatch', + 'join', + 'keyBy', + 'lastIndexOf', + 'lt', + 'lte', + 'map', + 'mapKeys', + 'mapValues', + 'matchesProperty', + 'maxBy', + 'meanBy', + 'merge', + 'mergeAllWith', + 'minBy', + 'multiply', + 'nth', + 'omit', + 'omitBy', + 'overArgs', + 'pad', + 'padEnd', + 'padStart', + 'parseInt', + 'partial', + 'partialRight', + 'partition', + 'pick', + 'pickBy', + 'propertyOf', + 'pull', + 'pullAll', + 'pullAt', + 'random', + 'range', + 'rangeRight', + 'rearg', + 'reject', + 'remove', + 'repeat', + 'restFrom', + 'result', + 'sampleSize', + 'some', + 'sortBy', + 'sortedIndex', + 'sortedIndexOf', + 'sortedLastIndex', + 'sortedLastIndexOf', + 'sortedUniqBy', + 'split', + 'spreadFrom', + 'startsWith', + 'subtract', + 'sumBy', + 'take', + 'takeRight', + 'takeRightWhile', + 'takeWhile', + 'tap', + 'throttle', + 'thru', + 'times', + 'trimChars', + 'trimCharsEnd', + 'trimCharsStart', + 'truncate', + 'union', + 'uniqBy', + 'uniqWith', + 'unset', + 'unzipWith', + 'without', + 'wrap', + 'xor', + 'zip', + 'zipObject', + 'zipObjectDeep' + ], + 3: [ + 'assignInWith', + 'assignWith', + 'clamp', + 'differenceBy', + 'differenceWith', + 'findFrom', + 'findIndexFrom', + 'findLastFrom', + 'findLastIndexFrom', + 'getOr', + 'includesFrom', + 'indexOfFrom', + 'inRange', + 'intersectionBy', + 'intersectionWith', + 'invokeArgs', + 'invokeArgsMap', + 'isEqualWith', + 'isMatchWith', + 'flatMapDepth', + 'lastIndexOfFrom', + 'mergeWith', + 'orderBy', + 'padChars', + 'padCharsEnd', + 'padCharsStart', + 'pullAllBy', + 'pullAllWith', + 'rangeStep', + 'rangeStepRight', + 'reduce', + 'reduceRight', + 'replace', + 'set', + 'slice', + 'sortedIndexBy', + 'sortedLastIndexBy', + 'transform', + 'unionBy', + 'unionWith', + 'update', + 'xorBy', + 'xorWith', + 'zipWith' + ], + 4: ['fill', 'setWith', 'updateWith'] + }), + (o.aryRearg = { 2: [1, 0], 3: [2, 0, 1], 4: [3, 2, 0, 1] }), + (o.iterateeAry = { + dropRightWhile: 1, + dropWhile: 1, + every: 1, + filter: 1, + find: 1, + findFrom: 1, + findIndex: 1, + findIndexFrom: 1, + findKey: 1, + findLast: 1, + findLastFrom: 1, + findLastIndex: 1, + findLastIndexFrom: 1, + findLastKey: 1, + flatMap: 1, + flatMapDeep: 1, + flatMapDepth: 1, + forEach: 1, + forEachRight: 1, + forIn: 1, + forInRight: 1, + forOwn: 1, + forOwnRight: 1, + map: 1, + mapKeys: 1, + mapValues: 1, + partition: 1, + reduce: 2, + reduceRight: 2, + reject: 1, + remove: 1, + some: 1, + takeRightWhile: 1, + takeWhile: 1, + times: 1, + transform: 2 + }), + (o.iterateeRearg = { mapKeys: [1], reduceRight: [1, 0] }), + (o.methodRearg = { + assignInAllWith: [1, 0], + assignInWith: [1, 2, 0], + assignAllWith: [1, 0], + assignWith: [1, 2, 0], + differenceBy: [1, 2, 0], + differenceWith: [1, 2, 0], + getOr: [2, 1, 0], + intersectionBy: [1, 2, 0], + intersectionWith: [1, 2, 0], + isEqualWith: [1, 2, 0], + isMatchWith: [2, 1, 0], + mergeAllWith: [1, 0], + mergeWith: [1, 2, 0], + padChars: [2, 1, 0], + padCharsEnd: [2, 1, 0], + padCharsStart: [2, 1, 0], + pullAllBy: [2, 1, 0], + pullAllWith: [2, 1, 0], + rangeStep: [1, 2, 0], + rangeStepRight: [1, 2, 0], + setWith: [3, 1, 2, 0], + sortedIndexBy: [2, 1, 0], + sortedLastIndexBy: [2, 1, 0], + unionBy: [1, 2, 0], + unionWith: [1, 2, 0], + updateWith: [3, 1, 2, 0], + xorBy: [1, 2, 0], + xorWith: [1, 2, 0], + zipWith: [1, 2, 0] + }), + (o.methodSpread = { + assignAll: { start: 0 }, + assignAllWith: { start: 0 }, + assignInAll: { start: 0 }, + assignInAllWith: { start: 0 }, + defaultsAll: { start: 0 }, + defaultsDeepAll: { start: 0 }, + invokeArgs: { start: 2 }, + invokeArgsMap: { start: 2 }, + mergeAll: { start: 0 }, + mergeAllWith: { start: 0 }, + partial: { start: 1 }, + partialRight: { start: 1 }, + without: { start: 1 }, + zipAll: { start: 0 } + }), + (o.mutate = { + array: { + fill: !0, + pull: !0, + pullAll: !0, + pullAllBy: !0, + pullAllWith: !0, + pullAt: !0, + remove: !0, + reverse: !0 + }, + object: { + assign: !0, + assignAll: !0, + assignAllWith: !0, + assignIn: !0, + assignInAll: !0, + assignInAllWith: !0, + assignInWith: !0, + assignWith: !0, + defaults: !0, + defaultsAll: !0, + defaultsDeep: !0, + defaultsDeepAll: !0, + merge: !0, + mergeAll: !0, + mergeAllWith: !0, + mergeWith: !0 + }, + set: { set: !0, setWith: !0, unset: !0, update: !0, updateWith: !0 } + }), + (o.realToAlias = (function () { + var s = Object.prototype.hasOwnProperty, + i = o.aliasToReal, + a = {}; + for (var u in i) { + var _ = i[u]; + s.call(a, _) ? a[_].push(u) : (a[_] = [u]); + } + return a; + })()), + (o.remap = { + assignAll: 'assign', + assignAllWith: 'assignWith', + assignInAll: 'assignIn', + assignInAllWith: 'assignInWith', + curryN: 'curry', + curryRightN: 'curryRight', + defaultsAll: 'defaults', + defaultsDeepAll: 'defaultsDeep', + findFrom: 'find', + findIndexFrom: 'findIndex', + findLastFrom: 'findLast', + findLastIndexFrom: 'findLastIndex', + getOr: 'get', + includesFrom: 'includes', + indexOfFrom: 'indexOf', + invokeArgs: 'invoke', + invokeArgsMap: 'invokeMap', + lastIndexOfFrom: 'lastIndexOf', + mergeAll: 'merge', + mergeAllWith: 'mergeWith', + padChars: 'pad', + padCharsEnd: 'padEnd', + padCharsStart: 'padStart', + propertyOf: 'get', + rangeStep: 'range', + rangeStepRight: 'rangeRight', + restFrom: 'rest', + spreadFrom: 'spread', + trimChars: 'trim', + trimCharsEnd: 'trimEnd', + trimCharsStart: 'trimStart', + zipAll: 'zip' + }), + (o.skipFixed = { + castArray: !0, + flow: !0, + flowRight: !0, + iteratee: !0, + mixin: !0, + rearg: !0, + runInContext: !0 + }), + (o.skipRearg = { + add: !0, + assign: !0, + assignIn: !0, + bind: !0, + bindKey: !0, + concat: !0, + difference: !0, + divide: !0, + eq: !0, + gt: !0, + gte: !0, + isEqual: !0, + lt: !0, + lte: !0, + matchesProperty: !0, + merge: !0, + multiply: !0, + overArgs: !0, + partial: !0, + partialRight: !0, + propertyOf: !0, + random: !0, + range: !0, + rangeRight: !0, + subtract: !0, + zip: !0, + zipObject: !0, + zipObjectDeep: !0 + })); + }, + 47934(s, o, i) { + s.exports = { + ary: i(64626), + assign: i(74733), + clone: i(32629), + curry: i(49747), + forEach: i(83729), + isArray: i(56449), + isError: i(23546), + isFunction: i(1882), + isWeakMap: i(47886), + iteratee: i(33855), + keys: i(88984), + rearg: i(84195), + toInteger: i(61489), + toPath: i(42072) + }; + }, + 56367(s, o, i) { + s.exports = i(77731); + }, + 79920(s, o, i) { + var a = i(73424), + u = i(47934); + s.exports = function convert(s, o, i) { + return a(u, s, o, i); + }; + }, + 2874(s) { + s.exports = {}; + }, + 77731(s, o, i) { + var a = i(79920)('set', i(63560)); + ((a.placeholder = i(2874)), (s.exports = a)); + }, + 58156(s, o, i) { + var a = i(47422); + s.exports = function get(s, o, i) { + var u = null == s ? void 0 : a(s, o); + return void 0 === u ? i : u; + }; + }, + 61448(s, o, i) { + var a = i(20426), + u = i(49326); + s.exports = function has(s, o) { + return null != s && u(s, o, a); + }; + }, + 80631(s, o, i) { + var a = i(28077), + u = i(49326); + s.exports = function hasIn(s, o) { + return null != s && u(s, o, a); + }; + }, + 83488(s) { + s.exports = function identity(s) { + return s; + }; + }, + 72428(s, o, i) { + var a = i(27534), + u = i(40346), + _ = Object.prototype, + w = _.hasOwnProperty, + x = _.propertyIsEnumerable, + C = a( + (function () { + return arguments; + })() + ) + ? a + : function (s) { + return u(s) && w.call(s, 'callee') && !x.call(s, 'callee'); + }; + s.exports = C; + }, + 56449(s) { + var o = Array.isArray; + s.exports = o; + }, + 64894(s, o, i) { + var a = i(1882), + u = i(30294); + s.exports = function isArrayLike(s) { + return null != s && u(s.length) && !a(s); + }; + }, + 83693(s, o, i) { + var a = i(64894), + u = i(40346); + s.exports = function isArrayLikeObject(s) { + return u(s) && a(s); + }; + }, + 53812(s, o, i) { + var a = i(72552), + u = i(40346); + s.exports = function isBoolean(s) { + return !0 === s || !1 === s || (u(s) && '[object Boolean]' == a(s)); + }; + }, + 3656(s, o, i) { + s = i.nmd(s); + var a = i(9325), + u = i(89935), + _ = o && !o.nodeType && o, + w = _ && s && !s.nodeType && s, + x = w && w.exports === _ ? a.Buffer : void 0, + C = (x ? x.isBuffer : void 0) || u; + s.exports = C; + }, + 62193(s, o, i) { + var a = i(88984), + u = i(5861), + _ = i(72428), + w = i(56449), + x = i(64894), + C = i(3656), + j = i(55527), + L = i(37167), + B = Object.prototype.hasOwnProperty; + s.exports = function isEmpty(s) { + if (null == s) return !0; + if ( + x(s) && + (w(s) || + 'string' == typeof s || + 'function' == typeof s.splice || + C(s) || + L(s) || + _(s)) + ) + return !s.length; + var o = u(s); + if ('[object Map]' == o || '[object Set]' == o) return !s.size; + if (j(s)) return !a(s).length; + for (var i in s) if (B.call(s, i)) return !1; + return !0; + }; + }, + 2404(s, o, i) { + var a = i(60270); + s.exports = function isEqual(s, o) { + return a(s, o); + }; + }, + 23546(s, o, i) { + var a = i(72552), + u = i(40346), + _ = i(11331); + s.exports = function isError(s) { + if (!u(s)) return !1; + var o = a(s); + return ( + '[object Error]' == o || + '[object DOMException]' == o || + ('string' == typeof s.message && 'string' == typeof s.name && !_(s)) + ); + }; + }, + 1882(s, o, i) { + var a = i(72552), + u = i(23805); + s.exports = function isFunction(s) { + if (!u(s)) return !1; + var o = a(s); + return ( + '[object Function]' == o || + '[object GeneratorFunction]' == o || + '[object AsyncFunction]' == o || + '[object Proxy]' == o + ); + }; + }, + 30294(s) { + s.exports = function isLength(s) { + return 'number' == typeof s && s > -1 && s % 1 == 0 && s <= 9007199254740991; + }; + }, + 87730(s, o, i) { + var a = i(29172), + u = i(27301), + _ = i(86009), + w = _ && _.isMap, + x = w ? u(w) : a; + s.exports = x; + }, + 5187(s) { + s.exports = function isNull(s) { + return null === s; + }; + }, + 98023(s, o, i) { + var a = i(72552), + u = i(40346); + s.exports = function isNumber(s) { + return 'number' == typeof s || (u(s) && '[object Number]' == a(s)); + }; + }, + 23805(s) { + s.exports = function isObject(s) { + var o = typeof s; + return null != s && ('object' == o || 'function' == o); + }; + }, + 40346(s) { + s.exports = function isObjectLike(s) { + return null != s && 'object' == typeof s; + }; + }, + 11331(s, o, i) { + var a = i(72552), + u = i(28879), + _ = i(40346), + w = Function.prototype, + x = Object.prototype, + C = w.toString, + j = x.hasOwnProperty, + L = C.call(Object); + s.exports = function isPlainObject(s) { + if (!_(s) || '[object Object]' != a(s)) return !1; + var o = u(s); + if (null === o) return !0; + var i = j.call(o, 'constructor') && o.constructor; + return 'function' == typeof i && i instanceof i && C.call(i) == L; + }; + }, + 38440(s, o, i) { + var a = i(16038), + u = i(27301), + _ = i(86009), + w = _ && _.isSet, + x = w ? u(w) : a; + s.exports = x; + }, + 85015(s, o, i) { + var a = i(72552), + u = i(56449), + _ = i(40346); + s.exports = function isString(s) { + return 'string' == typeof s || (!u(s) && _(s) && '[object String]' == a(s)); + }; + }, + 44394(s, o, i) { + var a = i(72552), + u = i(40346); + s.exports = function isSymbol(s) { + return 'symbol' == typeof s || (u(s) && '[object Symbol]' == a(s)); + }; + }, + 37167(s, o, i) { + var a = i(4901), + u = i(27301), + _ = i(86009), + w = _ && _.isTypedArray, + x = w ? u(w) : a; + s.exports = x; + }, + 47886(s, o, i) { + var a = i(5861), + u = i(40346); + s.exports = function isWeakMap(s) { + return u(s) && '[object WeakMap]' == a(s); + }; + }, + 33855(s, o, i) { + var a = i(9999), + u = i(15389); + s.exports = function iteratee(s) { + return u('function' == typeof s ? s : a(s, 1)); + }; + }, + 95950(s, o, i) { + var a = i(70695), + u = i(88984), + _ = i(64894); + s.exports = function keys(s) { + return _(s) ? a(s) : u(s); + }; + }, + 37241(s, o, i) { + var a = i(70695), + u = i(72903), + _ = i(64894); + s.exports = function keysIn(s) { + return _(s) ? a(s, !0) : u(s); + }; + }, + 68090(s) { + s.exports = function last(s) { + var o = null == s ? 0 : s.length; + return o ? s[o - 1] : void 0; + }; + }, + 50104(s, o, i) { + var a = i(53661); + function memoize(s, o) { + if ('function' != typeof s || (null != o && 'function' != typeof o)) + throw new TypeError('Expected a function'); + var memoized = function () { + var i = arguments, + a = o ? o.apply(this, i) : i[0], + u = memoized.cache; + if (u.has(a)) return u.get(a); + var _ = s.apply(this, i); + return ((memoized.cache = u.set(a, _) || u), _); + }; + return ((memoized.cache = new (memoize.Cache || a)()), memoized); + } + ((memoize.Cache = a), (s.exports = memoize)); + }, + 55364(s, o, i) { + var a = i(85250), + u = i(20999)(function (s, o, i) { + a(s, o, i); + }); + s.exports = u; + }, + 6048(s) { + s.exports = function negate(s) { + if ('function' != typeof s) throw new TypeError('Expected a function'); + return function () { + var o = arguments; + switch (o.length) { + case 0: + return !s.call(this); + case 1: + return !s.call(this, o[0]); + case 2: + return !s.call(this, o[0], o[1]); + case 3: + return !s.call(this, o[0], o[1], o[2]); + } + return !s.apply(this, o); + }; + }; + }, + 63950(s) { + s.exports = function noop() {}; + }, + 10124(s, o, i) { + var a = i(9325); + s.exports = function () { + return a.Date.now(); + }; + }, + 90179(s, o, i) { + var a = i(34932), + u = i(9999), + _ = i(19931), + w = i(31769), + x = i(21791), + C = i(53138), + j = i(38816), + L = i(83349), + B = j(function (s, o) { + var i = {}; + if (null == s) return i; + var j = !1; + ((o = a(o, function (o) { + return ((o = w(o, s)), j || (j = o.length > 1), o); + })), + x(s, L(s), i), + j && (i = u(i, 7, C))); + for (var B = o.length; B--; ) _(i, o[B]); + return i; + }); + s.exports = B; + }, + 50583(s, o, i) { + var a = i(47237), + u = i(17255), + _ = i(28586), + w = i(77797); + s.exports = function property(s) { + return _(s) ? a(w(s)) : u(s); + }; + }, + 84195(s, o, i) { + var a = i(66977), + u = i(38816), + _ = u(function (s, o) { + return a(s, 256, void 0, void 0, void 0, o); + }); + s.exports = _; + }, + 40860(s, o, i) { + var a = i(40882), + u = i(80909), + _ = i(15389), + w = i(85558), + x = i(56449); + s.exports = function reduce(s, o, i) { + var C = x(s) ? a : w, + j = arguments.length < 3; + return C(s, _(o, 4), i, j, u); + }; + }, + 63560(s, o, i) { + var a = i(73170); + s.exports = function set(s, o, i) { + return null == s ? s : a(s, o, i); + }; + }, + 42426(s, o, i) { + var a = i(14248), + u = i(15389), + _ = i(90916), + w = i(56449), + x = i(36800); + s.exports = function some(s, o, i) { + var C = w(s) ? a : _; + return (i && x(s, o, i) && (o = void 0), C(s, u(o, 3))); + }; + }, + 63345(s) { + s.exports = function stubArray() { + return []; + }; + }, + 89935(s) { + s.exports = function stubFalse() { + return !1; + }; + }, + 17400(s, o, i) { + var a = i(99374), + u = 1 / 0; + s.exports = function toFinite(s) { + return s + ? (s = a(s)) === u || s === -1 / 0 + ? 17976931348623157e292 * (s < 0 ? -1 : 1) + : s == s + ? s + : 0 + : 0 === s + ? s + : 0; + }; + }, + 61489(s, o, i) { + var a = i(17400); + s.exports = function toInteger(s) { + var o = a(s), + i = o % 1; + return o == o ? (i ? o - i : o) : 0; + }; + }, + 80218(s, o, i) { + var a = i(13222); + s.exports = function toLower(s) { + return a(s).toLowerCase(); + }; + }, + 99374(s, o, i) { + var a = i(54128), + u = i(23805), + _ = i(44394), + w = /^[-+]0x[0-9a-f]+$/i, + x = /^0b[01]+$/i, + C = /^0o[0-7]+$/i, + j = parseInt; + s.exports = function toNumber(s) { + if ('number' == typeof s) return s; + if (_(s)) return NaN; + if (u(s)) { + var o = 'function' == typeof s.valueOf ? s.valueOf() : s; + s = u(o) ? o + '' : o; + } + if ('string' != typeof s) return 0 === s ? s : +s; + s = a(s); + var i = x.test(s); + return i || C.test(s) ? j(s.slice(2), i ? 2 : 8) : w.test(s) ? NaN : +s; + }; + }, + 42072(s, o, i) { + var a = i(34932), + u = i(23007), + _ = i(56449), + w = i(44394), + x = i(61802), + C = i(77797), + j = i(13222); + s.exports = function toPath(s) { + return _(s) ? a(s, C) : w(s) ? [s] : u(x(j(s))); + }; + }, + 69884(s, o, i) { + var a = i(21791), + u = i(37241); + s.exports = function toPlainObject(s) { + return a(s, u(s)); + }; + }, + 13222(s, o, i) { + var a = i(77556); + s.exports = function toString(s) { + return null == s ? '' : a(s); + }; + }, + 55808(s, o, i) { + var a = i(12507)('toUpperCase'); + s.exports = a; + }, + 66645(s, o, i) { + var a = i(1733), + u = i(45434), + _ = i(13222), + w = i(22225); + s.exports = function words(s, o, i) { + return ( + (s = _(s)), + void 0 === (o = i ? void 0 : o) ? (u(s) ? w(s) : a(s)) : s.match(o) || [] + ); + }; + }, + 53758(s, o, i) { + var a = i(30980), + u = i(56017), + _ = i(94033), + w = i(56449), + x = i(40346), + C = i(80257), + j = Object.prototype.hasOwnProperty; + function lodash(s) { + if (x(s) && !w(s) && !(s instanceof a)) { + if (s instanceof u) return s; + if (j.call(s, '__wrapped__')) return C(s); + } + return new u(s); + } + ((lodash.prototype = _.prototype), + (lodash.prototype.constructor = lodash), + (s.exports = lodash)); + }, + 47248(s, o, i) { + var a = i(16547), + u = i(51234); + s.exports = function zipObject(s, o) { + return u(s || [], o || [], a); + }; + }, + 43768(s, o, i) { + 'use strict'; + var a = i(45981), + u = i(85587); + ((o.highlight = highlight), + (o.highlightAuto = function highlightAuto(s, o) { + var i, + w, + x, + C, + j = o || {}, + L = j.subset || a.listLanguages(), + B = j.prefix, + $ = L.length, + U = -1; + null == B && (B = _); + if ('string' != typeof s) throw u('Expected `string` for value, got `%s`', s); + ((w = { relevance: 0, language: null, value: [] }), + (i = { relevance: 0, language: null, value: [] })); + for (; ++U < $; ) + ((C = L[U]), + a.getLanguage(C) && + (((x = highlight(C, s, o)).language = C), + x.relevance > w.relevance && (w = x), + x.relevance > i.relevance && ((w = i), (i = x)))); + w.language && (i.secondBest = w); + return i; + }), + (o.registerLanguage = function registerLanguage(s, o) { + a.registerLanguage(s, o); + }), + (o.listLanguages = function listLanguages() { + return a.listLanguages(); + }), + (o.registerAlias = function registerAlias(s, o) { + var i, + u = s; + o && ((u = {})[s] = o); + for (i in u) a.registerAliases(u[i], { languageName: i }); + }), + (Emitter.prototype.addText = function text(s) { + var o, + i, + a = this.stack; + if ('' === s) return; + ((o = a[a.length - 1]), + (i = o.children[o.children.length - 1]) && 'text' === i.type + ? (i.value += s) + : o.children.push({ type: 'text', value: s })); + }), + (Emitter.prototype.addKeyword = function addKeyword(s, o) { + (this.openNode(o), this.addText(s), this.closeNode()); + }), + (Emitter.prototype.addSublanguage = function addSublanguage(s, o) { + var i = this.stack, + a = i[i.length - 1], + u = s.rootNode.children, + _ = o + ? { + type: 'element', + tagName: 'span', + properties: { className: [o] }, + children: u + } + : u; + a.children = a.children.concat(_); + }), + (Emitter.prototype.openNode = function open(s) { + var o = this.stack, + i = this.options.classPrefix + s, + a = o[o.length - 1], + u = { + type: 'element', + tagName: 'span', + properties: { className: [i] }, + children: [] + }; + (a.children.push(u), o.push(u)); + }), + (Emitter.prototype.closeNode = function close() { + this.stack.pop(); + }), + (Emitter.prototype.closeAllNodes = noop), + (Emitter.prototype.finalize = noop), + (Emitter.prototype.toHTML = function toHtmlNoop() { + return ''; + })); + var _ = 'hljs-'; + function highlight(s, o, i) { + var w, + x = a.configure({}), + C = (i || {}).prefix; + if ('string' != typeof s) throw u('Expected `string` for name, got `%s`', s); + if (!a.getLanguage(s)) throw u('Unknown language: `%s` is not registered', s); + if ('string' != typeof o) throw u('Expected `string` for value, got `%s`', o); + if ( + (null == C && (C = _), + a.configure({ __emitter: Emitter, classPrefix: C }), + (w = a.highlight(o, { language: s, ignoreIllegals: !0 })), + a.configure(x || {}), + w.errorRaised) + ) + throw w.errorRaised; + return { + relevance: w.relevance, + language: w.language, + value: w.emitter.rootNode.children + }; + } + function Emitter(s) { + ((this.options = s), + (this.rootNode = { children: [] }), + (this.stack = [this.rootNode])); + } + function noop() {} + }, + 71514(s) { + 'use strict'; + s.exports = Math.abs; + }, + 58968(s) { + 'use strict'; + s.exports = Math.floor; + }, + 94459(s) { + 'use strict'; + s.exports = + Number.isNaN || + function isNaN(s) { + return s != s; + }; + }, + 6188(s) { + 'use strict'; + s.exports = Math.max; + }, + 68002(s) { + 'use strict'; + s.exports = Math.min; + }, + 75880(s) { + 'use strict'; + s.exports = Math.pow; + }, + 70414(s) { + 'use strict'; + s.exports = Math.round; + }, + 73093(s, o, i) { + 'use strict'; + var a = i(94459); + s.exports = function sign(s) { + return a(s) || 0 === s ? s : s < 0 ? -1 : 1; + }; + }, + 92340(s, o, i) { + const a = i(6048); + function coerceElementMatchingCallback(s) { + return 'string' == typeof s + ? (o) => o.element === s + : s.constructor && s.extend + ? (o) => o instanceof s + : s; + } + class ArraySlice { + constructor(s) { + this.elements = s || []; + } + toValue() { + return this.elements.map((s) => s.toValue()); + } + map(s, o) { + return this.elements.map(s, o); + } + flatMap(s, o) { + return this.map(s, o).reduce((s, o) => s.concat(o), []); + } + compactMap(s, o) { + const i = []; + return ( + this.forEach((a) => { + const u = s.bind(o)(a); + u && i.push(u); + }), + i + ); + } + filter(s, o) { + return ( + (s = coerceElementMatchingCallback(s)), + new ArraySlice(this.elements.filter(s, o)) + ); + } + reject(s, o) { + return ( + (s = coerceElementMatchingCallback(s)), + new ArraySlice(this.elements.filter(a(s), o)) + ); + } + find(s, o) { + return ((s = coerceElementMatchingCallback(s)), this.elements.find(s, o)); + } + forEach(s, o) { + this.elements.forEach(s, o); + } + reduce(s, o) { + return this.elements.reduce(s, o); + } + includes(s) { + return this.elements.some((o) => o.equals(s)); + } + shift() { + return this.elements.shift(); + } + unshift(s) { + this.elements.unshift(this.refract(s)); + } + push(s) { + return (this.elements.push(this.refract(s)), this); + } + add(s) { + this.push(s); + } + get(s) { + return this.elements[s]; + } + getValue(s) { + const o = this.elements[s]; + if (o) return o.toValue(); + } + get length() { + return this.elements.length; + } + get isEmpty() { + return 0 === this.elements.length; + } + get first() { + return this.elements[0]; + } + } + ('undefined' != typeof Symbol && + (ArraySlice.prototype[Symbol.iterator] = function symbol() { + return this.elements[Symbol.iterator](); + }), + (s.exports = ArraySlice)); + }, + 55973(s) { + class KeyValuePair { + constructor(s, o) { + ((this.key = s), (this.value = o)); + } + clone() { + const s = new KeyValuePair(); + return ( + this.key && (s.key = this.key.clone()), + this.value && (s.value = this.value.clone()), + s + ); + } + } + s.exports = KeyValuePair; + }, + 3110(s, o, i) { + const a = i(5187), + u = i(85015), + _ = i(98023), + w = i(53812), + x = i(23805), + C = i(85105), + j = i(86804); + class Namespace { + constructor(s) { + ((this.elementMap = {}), + (this.elementDetection = []), + (this.Element = j.Element), + (this.KeyValuePair = j.KeyValuePair), + (s && s.noDefault) || this.useDefault(), + (this._attributeElementKeys = []), + (this._attributeElementArrayKeys = [])); + } + use(s) { + return ( + s.namespace && s.namespace({ base: this }), + s.load && s.load({ base: this }), + this + ); + } + useDefault() { + return ( + this.register('null', j.NullElement) + .register('string', j.StringElement) + .register('number', j.NumberElement) + .register('boolean', j.BooleanElement) + .register('array', j.ArrayElement) + .register('object', j.ObjectElement) + .register('member', j.MemberElement) + .register('ref', j.RefElement) + .register('link', j.LinkElement), + this.detect(a, j.NullElement, !1) + .detect(u, j.StringElement, !1) + .detect(_, j.NumberElement, !1) + .detect(w, j.BooleanElement, !1) + .detect(Array.isArray, j.ArrayElement, !1) + .detect(x, j.ObjectElement, !1), + this + ); + } + register(s, o) { + return ((this._elements = void 0), (this.elementMap[s] = o), this); + } + unregister(s) { + return ((this._elements = void 0), delete this.elementMap[s], this); + } + detect(s, o, i) { + return ( + void 0 === i || i + ? this.elementDetection.unshift([s, o]) + : this.elementDetection.push([s, o]), + this + ); + } + toElement(s) { + if (s instanceof this.Element) return s; + let o; + for (let i = 0; i < this.elementDetection.length; i += 1) { + const a = this.elementDetection[i][0], + u = this.elementDetection[i][1]; + if (a(s)) { + o = new u(s); + break; + } + } + return o; + } + getElementClass(s) { + const o = this.elementMap[s]; + return void 0 === o ? this.Element : o; + } + fromRefract(s) { + return this.serialiser.deserialise(s); + } + toRefract(s) { + return this.serialiser.serialise(s); + } + get elements() { + return ( + void 0 === this._elements && + ((this._elements = { Element: this.Element }), + Object.keys(this.elementMap).forEach((s) => { + const o = s[0].toUpperCase() + s.substr(1); + this._elements[o] = this.elementMap[s]; + })), + this._elements + ); + } + get serialiser() { + return new C(this); + } + } + ((C.prototype.Namespace = Namespace), (s.exports = Namespace)); + }, + 10866(s, o, i) { + const a = i(6048), + u = i(92340); + class ObjectSlice extends u { + map(s, o) { + return this.elements.map((i) => s.bind(o)(i.value, i.key, i)); + } + filter(s, o) { + return new ObjectSlice(this.elements.filter((i) => s.bind(o)(i.value, i.key, i))); + } + reject(s, o) { + return this.filter(a(s.bind(o))); + } + forEach(s, o) { + return this.elements.forEach((i, a) => { + s.bind(o)(i.value, i.key, i, a); + }); + } + keys() { + return this.map((s, o) => o.toValue()); + } + values() { + return this.map((s) => s.toValue()); + } + } + s.exports = ObjectSlice; + }, + 86804(s, o, i) { + const a = i(10316), + u = i(41067), + _ = i(71167), + w = i(40239), + x = i(12242), + C = i(6233), + j = i(87726), + L = i(61045), + B = i(86303), + $ = i(14540), + U = i(92340), + V = i(10866), + z = i(55973); + function refract(s) { + if (s instanceof a) return s; + if ('string' == typeof s) return new _(s); + if ('number' == typeof s) return new w(s); + if ('boolean' == typeof s) return new x(s); + if (null === s) return new u(); + if (Array.isArray(s)) return new C(s.map(refract)); + if ('object' == typeof s) { + return new L(s); + } + return s; + } + ((a.prototype.ObjectElement = L), + (a.prototype.RefElement = $), + (a.prototype.MemberElement = j), + (a.prototype.refract = refract), + (U.prototype.refract = refract), + (s.exports = { + Element: a, + NullElement: u, + StringElement: _, + NumberElement: w, + BooleanElement: x, + ArrayElement: C, + MemberElement: j, + ObjectElement: L, + LinkElement: B, + RefElement: $, + refract, + ArraySlice: U, + ObjectSlice: V, + KeyValuePair: z + })); + }, + 86303(s, o, i) { + const a = i(10316); + s.exports = class LinkElement extends a { + constructor(s, o, i) { + (super(s || [], o, i), (this.element = 'link')); + } + get relation() { + return this.attributes.get('relation'); + } + set relation(s) { + this.attributes.set('relation', s); + } + get href() { + return this.attributes.get('href'); + } + set href(s) { + this.attributes.set('href', s); + } + }; + }, + 14540(s, o, i) { + const a = i(10316); + s.exports = class RefElement extends a { + constructor(s, o, i) { + (super(s || [], o, i), (this.element = 'ref'), this.path || (this.path = 'element')); + } + get path() { + return this.attributes.get('path'); + } + set path(s) { + this.attributes.set('path', s); + } + }; + }, + 34035(s, o, i) { + const a = i(3110), + u = i(86804); + ((o.g$ = a), + (o.KeyValuePair = i(55973)), + (o.G6 = u.ArraySlice), + (o.ot = u.ObjectSlice), + (o.Hg = u.Element), + (o.Om = u.StringElement), + (o.kT = u.NumberElement), + (o.bd = u.BooleanElement), + (o.Os = u.NullElement), + (o.wE = u.ArrayElement), + (o.Sh = u.ObjectElement), + (o.Pr = u.MemberElement), + (o.sI = u.RefElement), + (o.Ft = u.LinkElement), + (o.e = u.refract), + i(85105), + i(75147)); + }, + 6233(s, o, i) { + const a = i(6048), + u = i(10316), + _ = i(92340); + class ArrayElement extends u { + constructor(s, o, i) { + (super(s || [], o, i), (this.element = 'array')); + } + primitive() { + return 'array'; + } + get(s) { + return this.content[s]; + } + getValue(s) { + const o = this.get(s); + if (o) return o.toValue(); + } + getIndex(s) { + return this.content[s]; + } + set(s, o) { + return ((this.content[s] = this.refract(o)), this); + } + remove(s) { + const o = this.content.splice(s, 1); + return o.length ? o[0] : null; + } + map(s, o) { + return this.content.map(s, o); + } + flatMap(s, o) { + return this.map(s, o).reduce((s, o) => s.concat(o), []); + } + compactMap(s, o) { + const i = []; + return ( + this.forEach((a) => { + const u = s.bind(o)(a); + u && i.push(u); + }), + i + ); + } + filter(s, o) { + return new _(this.content.filter(s, o)); + } + reject(s, o) { + return this.filter(a(s), o); + } + reduce(s, o) { + let i, a; + void 0 !== o + ? ((i = 0), (a = this.refract(o))) + : ((i = 1), (a = 'object' === this.primitive() ? this.first.value : this.first)); + for (let o = i; o < this.length; o += 1) { + const i = this.content[o]; + a = + 'object' === this.primitive() + ? this.refract(s(a, i.value, i.key, i, this)) + : this.refract(s(a, i, o, this)); + } + return a; + } + forEach(s, o) { + this.content.forEach((i, a) => { + s.bind(o)(i, this.refract(a)); + }); + } + shift() { + return this.content.shift(); + } + unshift(s) { + this.content.unshift(this.refract(s)); + } + push(s) { + return (this.content.push(this.refract(s)), this); + } + add(s) { + this.push(s); + } + findElements(s, o) { + const i = o || {}, + a = !!i.recursive, + u = void 0 === i.results ? [] : i.results; + return ( + this.forEach((o, i, _) => { + (a && + void 0 !== o.findElements && + o.findElements(s, { results: u, recursive: a }), + s(o, i, _) && u.push(o)); + }), + u + ); + } + find(s) { + return new _(this.findElements(s, { recursive: !0 })); + } + findByElement(s) { + return this.find((o) => o.element === s); + } + findByClass(s) { + return this.find((o) => o.classes.includes(s)); + } + getById(s) { + return this.find((o) => o.id.toValue() === s).first; + } + includes(s) { + return this.content.some((o) => o.equals(s)); + } + contains(s) { + return this.includes(s); + } + empty() { + return new this.constructor([]); + } + 'fantasy-land/empty'() { + return this.empty(); + } + concat(s) { + return new this.constructor(this.content.concat(s.content)); + } + 'fantasy-land/concat'(s) { + return this.concat(s); + } + 'fantasy-land/map'(s) { + return new this.constructor(this.map(s)); + } + 'fantasy-land/chain'(s) { + return this.map((o) => s(o), this).reduce((s, o) => s.concat(o), this.empty()); + } + 'fantasy-land/filter'(s) { + return new this.constructor(this.content.filter(s)); + } + 'fantasy-land/reduce'(s, o) { + return this.content.reduce(s, o); + } + get length() { + return this.content.length; + } + get isEmpty() { + return 0 === this.content.length; + } + get first() { + return this.getIndex(0); + } + get second() { + return this.getIndex(1); + } + get last() { + return this.getIndex(this.length - 1); + } + } + ((ArrayElement.empty = function empty() { + return new this(); + }), + (ArrayElement['fantasy-land/empty'] = ArrayElement.empty), + 'undefined' != typeof Symbol && + (ArrayElement.prototype[Symbol.iterator] = function symbol() { + return this.content[Symbol.iterator](); + }), + (s.exports = ArrayElement)); + }, + 12242(s, o, i) { + const a = i(10316); + s.exports = class BooleanElement extends a { + constructor(s, o, i) { + (super(s, o, i), (this.element = 'boolean')); + } + primitive() { + return 'boolean'; + } + }; + }, + 10316(s, o, i) { + const a = i(2404), + u = i(55973), + _ = i(92340); + class Element { + constructor(s, o, i) { + (o && (this.meta = o), i && (this.attributes = i), (this.content = s)); + } + freeze() { + Object.isFrozen(this) || + (this._meta && ((this.meta.parent = this), this.meta.freeze()), + this._attributes && ((this.attributes.parent = this), this.attributes.freeze()), + this.children.forEach((s) => { + ((s.parent = this), s.freeze()); + }, this), + this.content && Array.isArray(this.content) && Object.freeze(this.content), + Object.freeze(this)); + } + primitive() {} + clone() { + const s = new this.constructor(); + return ( + (s.element = this.element), + this.meta.length && (s._meta = this.meta.clone()), + this.attributes.length && (s._attributes = this.attributes.clone()), + this.content + ? this.content.clone + ? (s.content = this.content.clone()) + : Array.isArray(this.content) + ? (s.content = this.content.map((s) => s.clone())) + : (s.content = this.content) + : (s.content = this.content), + s + ); + } + toValue() { + return this.content instanceof Element + ? this.content.toValue() + : this.content instanceof u + ? { + key: this.content.key.toValue(), + value: this.content.value ? this.content.value.toValue() : void 0 + } + : this.content && this.content.map + ? this.content.map((s) => s.toValue(), this) + : this.content; + } + toRef(s) { + if ('' === this.id.toValue()) + throw Error('Cannot create reference to an element that does not contain an ID'); + const o = new this.RefElement(this.id.toValue()); + return (s && (o.path = s), o); + } + findRecursive(...s) { + if (arguments.length > 1 && !this.isFrozen) + throw new Error( + 'Cannot find recursive with multiple element names without first freezing the element. Call `element.freeze()`' + ); + const o = s.pop(); + let i = new _(); + const append = (s, o) => (s.push(o), s), + checkElement = (s, i) => { + i.element === o && s.push(i); + const a = i.findRecursive(o); + return ( + a && a.reduce(append, s), + i.content instanceof u && + (i.content.key && checkElement(s, i.content.key), + i.content.value && checkElement(s, i.content.value)), + s + ); + }; + return ( + this.content && + (this.content.element && checkElement(i, this.content), + Array.isArray(this.content) && this.content.reduce(checkElement, i)), + s.isEmpty || + (i = i.filter((o) => { + let i = o.parents.map((s) => s.element); + for (const o in s) { + const a = s[o], + u = i.indexOf(a); + if (-1 === u) return !1; + i = i.splice(0, u); + } + return !0; + })), + i + ); + } + set(s) { + return ((this.content = s), this); + } + equals(s) { + return a(this.toValue(), s); + } + getMetaProperty(s, o) { + if (!this.meta.hasKey(s)) { + if (this.isFrozen) { + const s = this.refract(o); + return (s.freeze(), s); + } + this.meta.set(s, o); + } + return this.meta.get(s); + } + setMetaProperty(s, o) { + this.meta.set(s, o); + } + get element() { + return this._storedElement || 'element'; + } + set element(s) { + this._storedElement = s; + } + get content() { + return this._content; + } + set content(s) { + if (s instanceof Element) this._content = s; + else if (s instanceof _) this.content = s.elements; + else if ( + 'string' == typeof s || + 'number' == typeof s || + 'boolean' == typeof s || + 'null' === s || + null == s + ) + this._content = s; + else if (s instanceof u) this._content = s; + else if (Array.isArray(s)) this._content = s.map(this.refract); + else { + if ('object' != typeof s) throw new Error('Cannot set content to given value'); + this._content = Object.keys(s).map((o) => new this.MemberElement(o, s[o])); + } + } + get meta() { + if (!this._meta) { + if (this.isFrozen) { + const s = new this.ObjectElement(); + return (s.freeze(), s); + } + this._meta = new this.ObjectElement(); + } + return this._meta; + } + set meta(s) { + s instanceof this.ObjectElement ? (this._meta = s) : this.meta.set(s || {}); + } + get attributes() { + if (!this._attributes) { + if (this.isFrozen) { + const s = new this.ObjectElement(); + return (s.freeze(), s); + } + this._attributes = new this.ObjectElement(); + } + return this._attributes; + } + set attributes(s) { + s instanceof this.ObjectElement + ? (this._attributes = s) + : this.attributes.set(s || {}); + } + get id() { + return this.getMetaProperty('id', ''); + } + set id(s) { + this.setMetaProperty('id', s); + } + get classes() { + return this.getMetaProperty('classes', []); + } + set classes(s) { + this.setMetaProperty('classes', s); + } + get title() { + return this.getMetaProperty('title', ''); + } + set title(s) { + this.setMetaProperty('title', s); + } + get description() { + return this.getMetaProperty('description', ''); + } + set description(s) { + this.setMetaProperty('description', s); + } + get links() { + return this.getMetaProperty('links', []); + } + set links(s) { + this.setMetaProperty('links', s); + } + get isFrozen() { + return Object.isFrozen(this); + } + get parents() { + let { parent: s } = this; + const o = new _(); + for (; s; ) (o.push(s), (s = s.parent)); + return o; + } + get children() { + if (Array.isArray(this.content)) return new _(this.content); + if (this.content instanceof u) { + const s = new _([this.content.key]); + return (this.content.value && s.push(this.content.value), s); + } + return this.content instanceof Element ? new _([this.content]) : new _(); + } + get recursiveChildren() { + const s = new _(); + return ( + this.children.forEach((o) => { + (s.push(o), + o.recursiveChildren.forEach((o) => { + s.push(o); + })); + }), + s + ); + } + } + s.exports = Element; + }, + 87726(s, o, i) { + const a = i(55973), + u = i(10316); + s.exports = class MemberElement extends u { + constructor(s, o, i, u) { + (super(new a(), i, u), (this.element = 'member'), (this.key = s), (this.value = o)); + } + get key() { + return this.content.key; + } + set key(s) { + this.content.key = this.refract(s); + } + get value() { + return this.content.value; + } + set value(s) { + this.content.value = this.refract(s); + } + }; + }, + 41067(s, o, i) { + const a = i(10316); + s.exports = class NullElement extends a { + constructor(s, o, i) { + (super(s || null, o, i), (this.element = 'null')); + } + primitive() { + return 'null'; + } + set() { + return new Error('Cannot set the value of null'); + } + }; + }, + 40239(s, o, i) { + const a = i(10316); + s.exports = class NumberElement extends a { + constructor(s, o, i) { + (super(s, o, i), (this.element = 'number')); + } + primitive() { + return 'number'; + } + }; + }, + 61045(s, o, i) { + const a = i(6048), + u = i(23805), + _ = i(6233), + w = i(87726), + x = i(10866); + s.exports = class ObjectElement extends _ { + constructor(s, o, i) { + (super(s || [], o, i), (this.element = 'object')); + } + primitive() { + return 'object'; + } + toValue() { + return this.content.reduce( + (s, o) => ((s[o.key.toValue()] = o.value ? o.value.toValue() : void 0), s), + {} + ); + } + get(s) { + const o = this.getMember(s); + if (o) return o.value; + } + getMember(s) { + if (void 0 !== s) return this.content.find((o) => o.key.toValue() === s); + } + remove(s) { + let o = null; + return ( + (this.content = this.content.filter((i) => i.key.toValue() !== s || ((o = i), !1))), + o + ); + } + getKey(s) { + const o = this.getMember(s); + if (o) return o.key; + } + set(s, o) { + if (u(s)) + return ( + Object.keys(s).forEach((o) => { + this.set(o, s[o]); + }), + this + ); + const i = s, + a = this.getMember(i); + return (a ? (a.value = o) : this.content.push(new w(i, o)), this); + } + keys() { + return this.content.map((s) => s.key.toValue()); + } + values() { + return this.content.map((s) => s.value.toValue()); + } + hasKey(s) { + return this.content.some((o) => o.key.equals(s)); + } + items() { + return this.content.map((s) => [s.key.toValue(), s.value.toValue()]); + } + map(s, o) { + return this.content.map((i) => s.bind(o)(i.value, i.key, i)); + } + compactMap(s, o) { + const i = []; + return ( + this.forEach((a, u, _) => { + const w = s.bind(o)(a, u, _); + w && i.push(w); + }), + i + ); + } + filter(s, o) { + return new x(this.content).filter(s, o); + } + reject(s, o) { + return this.filter(a(s), o); + } + forEach(s, o) { + return this.content.forEach((i) => s.bind(o)(i.value, i.key, i)); + } + }; + }, + 71167(s, o, i) { + const a = i(10316); + s.exports = class StringElement extends a { + constructor(s, o, i) { + (super(s, o, i), (this.element = 'string')); + } + primitive() { + return 'string'; + } + get length() { + return this.content.length; + } + }; + }, + 75147(s, o, i) { + const a = i(85105); + s.exports = class JSON06Serialiser extends a { + serialise(s) { + if (!(s instanceof this.namespace.elements.Element)) + throw new TypeError(`Given element \`${s}\` is not an Element instance`); + let o; + s._attributes && s.attributes.get('variable') && (o = s.attributes.get('variable')); + const i = { element: s.element }; + s._meta && s._meta.length > 0 && (i.meta = this.serialiseObject(s.meta)); + const a = 'enum' === s.element || -1 !== s.attributes.keys().indexOf('enumerations'); + if (a) { + const o = this.enumSerialiseAttributes(s); + o && (i.attributes = o); + } else if (s._attributes && s._attributes.length > 0) { + let { attributes: a } = s; + (a.get('metadata') && + ((a = a.clone()), a.set('meta', a.get('metadata')), a.remove('metadata')), + 'member' === s.element && o && ((a = a.clone()), a.remove('variable')), + a.length > 0 && (i.attributes = this.serialiseObject(a))); + } + if (a) i.content = this.enumSerialiseContent(s, i); + else if (this[`${s.element}SerialiseContent`]) + i.content = this[`${s.element}SerialiseContent`](s, i); + else if (void 0 !== s.content) { + let a; + (o && s.content.key + ? ((a = s.content.clone()), + a.key.attributes.set('variable', o), + (a = this.serialiseContent(a))) + : (a = this.serialiseContent(s.content)), + this.shouldSerialiseContent(s, a) && (i.content = a)); + } else + this.shouldSerialiseContent(s, s.content) && + s instanceof this.namespace.elements.Array && + (i.content = []); + return i; + } + shouldSerialiseContent(s, o) { + return ( + 'parseResult' === s.element || + 'httpRequest' === s.element || + 'httpResponse' === s.element || + 'category' === s.element || + 'link' === s.element || + (void 0 !== o && (!Array.isArray(o) || 0 !== o.length)) + ); + } + refSerialiseContent(s, o) { + return (delete o.attributes, { href: s.toValue(), path: s.path.toValue() }); + } + sourceMapSerialiseContent(s) { + return s.toValue(); + } + dataStructureSerialiseContent(s) { + return [this.serialiseContent(s.content)]; + } + enumSerialiseAttributes(s) { + const o = s.attributes.clone(), + i = o.remove('enumerations') || new this.namespace.elements.Array([]), + a = o.get('default'); + let u = o.get('samples') || new this.namespace.elements.Array([]); + if ( + (a && + a.content && + (a.content.attributes && a.content.attributes.remove('typeAttributes'), + o.set('default', new this.namespace.elements.Array([a.content]))), + u.forEach((s) => { + s.content && s.content.element && s.content.attributes.remove('typeAttributes'); + }), + s.content && 0 !== i.length && u.unshift(s.content), + (u = u.map((s) => + s instanceof this.namespace.elements.Array + ? [s] + : new this.namespace.elements.Array([s.content]) + )), + u.length && o.set('samples', u), + o.length > 0) + ) + return this.serialiseObject(o); + } + enumSerialiseContent(s) { + if (s._attributes) { + const o = s.attributes.get('enumerations'); + if (o && o.length > 0) + return o.content.map((s) => { + const o = s.clone(); + return (o.attributes.remove('typeAttributes'), this.serialise(o)); + }); + } + if (s.content) { + const o = s.content.clone(); + return (o.attributes.remove('typeAttributes'), [this.serialise(o)]); + } + return []; + } + deserialise(s) { + if ('string' == typeof s) return new this.namespace.elements.String(s); + if ('number' == typeof s) return new this.namespace.elements.Number(s); + if ('boolean' == typeof s) return new this.namespace.elements.Boolean(s); + if (null === s) return new this.namespace.elements.Null(); + if (Array.isArray(s)) + return new this.namespace.elements.Array(s.map(this.deserialise, this)); + const o = this.namespace.getElementClass(s.element), + i = new o(); + (i.element !== s.element && (i.element = s.element), + s.meta && this.deserialiseObject(s.meta, i.meta), + s.attributes && this.deserialiseObject(s.attributes, i.attributes)); + const a = this.deserialiseContent(s.content); + if (((void 0 === a && null !== i.content) || (i.content = a), 'enum' === i.element)) { + i.content && i.attributes.set('enumerations', i.content); + let s = i.attributes.get('samples'); + if ((i.attributes.remove('samples'), s)) { + const a = s; + ((s = new this.namespace.elements.Array()), + a.forEach((a) => { + a.forEach((a) => { + const u = new o(a); + ((u.element = i.element), s.push(u)); + }); + })); + const u = s.shift(); + ((i.content = u ? u.content : void 0), i.attributes.set('samples', s)); + } else i.content = void 0; + let a = i.attributes.get('default'); + if (a && a.length > 0) { + a = a.get(0); + const s = new o(a); + ((s.element = i.element), i.attributes.set('default', s)); + } + } else if ('dataStructure' === i.element && Array.isArray(i.content)) + [i.content] = i.content; + else if ('category' === i.element) { + const s = i.attributes.get('meta'); + s && (i.attributes.set('metadata', s), i.attributes.remove('meta')); + } else + 'member' === i.element && + i.key && + i.key._attributes && + i.key._attributes.getValue('variable') && + (i.attributes.set('variable', i.key.attributes.get('variable')), + i.key.attributes.remove('variable')); + return i; + } + serialiseContent(s) { + if (s instanceof this.namespace.elements.Element) return this.serialise(s); + if (s instanceof this.namespace.KeyValuePair) { + const o = { key: this.serialise(s.key) }; + return (s.value && (o.value = this.serialise(s.value)), o); + } + return s && s.map ? s.map(this.serialise, this) : s; + } + deserialiseContent(s) { + if (s) { + if (s.element) return this.deserialise(s); + if (s.key) { + const o = new this.namespace.KeyValuePair(this.deserialise(s.key)); + return (s.value && (o.value = this.deserialise(s.value)), o); + } + if (s.map) return s.map(this.deserialise, this); + } + return s; + } + shouldRefract(s) { + return ( + !!( + (s._attributes && s.attributes.keys().length) || + (s._meta && s.meta.keys().length) + ) || + ('enum' !== s.element && (s.element !== s.primitive() || 'member' === s.element)) + ); + } + convertKeyToRefract(s, o) { + return this.shouldRefract(o) + ? this.serialise(o) + : 'enum' === o.element + ? this.serialiseEnum(o) + : 'array' === o.element + ? o.map((o) => + this.shouldRefract(o) || 'default' === s + ? this.serialise(o) + : 'array' === o.element || 'object' === o.element || 'enum' === o.element + ? o.children.map((s) => this.serialise(s)) + : o.toValue() + ) + : 'object' === o.element + ? (o.content || []).map(this.serialise, this) + : o.toValue(); + } + serialiseEnum(s) { + return s.children.map((s) => this.serialise(s)); + } + serialiseObject(s) { + const o = {}; + return ( + s.forEach((s, i) => { + if (s) { + const a = i.toValue(); + o[a] = this.convertKeyToRefract(a, s); + } + }), + o + ); + } + deserialiseObject(s, o) { + Object.keys(s).forEach((i) => { + o.set(i, this.deserialise(s[i])); + }); + } + }; + }, + 85105(s) { + s.exports = class JSONSerialiser { + constructor(s) { + this.namespace = s || new this.Namespace(); + } + serialise(s) { + if (!(s instanceof this.namespace.elements.Element)) + throw new TypeError(`Given element \`${s}\` is not an Element instance`); + const o = { element: s.element }; + (s._meta && s._meta.length > 0 && (o.meta = this.serialiseObject(s.meta)), + s._attributes && + s._attributes.length > 0 && + (o.attributes = this.serialiseObject(s.attributes))); + const i = this.serialiseContent(s.content); + return (void 0 !== i && (o.content = i), o); + } + deserialise(s) { + if (!s.element) + throw new Error('Given value is not an object containing an element name'); + const o = new (this.namespace.getElementClass(s.element))(); + (o.element !== s.element && (o.element = s.element), + s.meta && this.deserialiseObject(s.meta, o.meta), + s.attributes && this.deserialiseObject(s.attributes, o.attributes)); + const i = this.deserialiseContent(s.content); + return ((void 0 === i && null !== o.content) || (o.content = i), o); + } + serialiseContent(s) { + if (s instanceof this.namespace.elements.Element) return this.serialise(s); + if (s instanceof this.namespace.KeyValuePair) { + const o = { key: this.serialise(s.key) }; + return (s.value && (o.value = this.serialise(s.value)), o); + } + if (s && s.map) { + if (0 === s.length) return; + return s.map(this.serialise, this); + } + return s; + } + deserialiseContent(s) { + if (s) { + if (s.element) return this.deserialise(s); + if (s.key) { + const o = new this.namespace.KeyValuePair(this.deserialise(s.key)); + return (s.value && (o.value = this.deserialise(s.value)), o); + } + if (s.map) return s.map(this.deserialise, this); + } + return s; + } + serialiseObject(s) { + const o = {}; + if ( + (s.forEach((s, i) => { + s && (o[i.toValue()] = this.serialise(s)); + }), + 0 !== Object.keys(o).length) + ) + return o; + } + deserialiseObject(s, o) { + Object.keys(s).forEach((i) => { + o.set(i, this.deserialise(s[i])); + }); + } + }; + }, + 76578(s) { + 'use strict'; + s.exports = [ + 'Float16Array', + 'Float32Array', + 'Float64Array', + 'Int8Array', + 'Int16Array', + 'Int32Array', + 'Uint8Array', + 'Uint8ClampedArray', + 'Uint16Array', + 'Uint32Array', + 'BigInt64Array', + 'BigUint64Array' + ]; + }, + 65606(s) { + var o, + i, + a = (s.exports = {}); + function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); + } + function defaultClearTimeout() { + throw new Error('clearTimeout has not been defined'); + } + function runTimeout(s) { + if (o === setTimeout) return setTimeout(s, 0); + if ((o === defaultSetTimout || !o) && setTimeout) + return ((o = setTimeout), setTimeout(s, 0)); + try { + return o(s, 0); + } catch (i) { + try { + return o.call(null, s, 0); + } catch (i) { + return o.call(this, s, 0); + } + } + } + !(function () { + try { + o = 'function' == typeof setTimeout ? setTimeout : defaultSetTimout; + } catch (s) { + o = defaultSetTimout; + } + try { + i = 'function' == typeof clearTimeout ? clearTimeout : defaultClearTimeout; + } catch (s) { + i = defaultClearTimeout; + } + })(); + var u, + _ = [], + w = !1, + x = -1; + function cleanUpNextTick() { + w && u && ((w = !1), u.length ? (_ = u.concat(_)) : (x = -1), _.length && drainQueue()); + } + function drainQueue() { + if (!w) { + var s = runTimeout(cleanUpNextTick); + w = !0; + for (var o = _.length; o; ) { + for (u = _, _ = []; ++x < o; ) u && u[x].run(); + ((x = -1), (o = _.length)); + } + ((u = null), + (w = !1), + (function runClearTimeout(s) { + if (i === clearTimeout) return clearTimeout(s); + if ((i === defaultClearTimeout || !i) && clearTimeout) + return ((i = clearTimeout), clearTimeout(s)); + try { + return i(s); + } catch (o) { + try { + return i.call(null, s); + } catch (o) { + return i.call(this, s); + } + } + })(s)); + } + } + function Item(s, o) { + ((this.fun = s), (this.array = o)); + } + function noop() {} + ((a.nextTick = function (s) { + var o = new Array(arguments.length - 1); + if (arguments.length > 1) + for (var i = 1; i < arguments.length; i++) o[i - 1] = arguments[i]; + (_.push(new Item(s, o)), 1 !== _.length || w || runTimeout(drainQueue)); + }), + (Item.prototype.run = function () { + this.fun.apply(null, this.array); + }), + (a.title = 'browser'), + (a.browser = !0), + (a.env = {}), + (a.argv = []), + (a.version = ''), + (a.versions = {}), + (a.on = noop), + (a.addListener = noop), + (a.once = noop), + (a.off = noop), + (a.removeListener = noop), + (a.removeAllListeners = noop), + (a.emit = noop), + (a.prependListener = noop), + (a.prependOnceListener = noop), + (a.listeners = function (s) { + return []; + }), + (a.binding = function (s) { + throw new Error('process.binding is not supported'); + }), + (a.cwd = function () { + return '/'; + }), + (a.chdir = function (s) { + throw new Error('process.chdir is not supported'); + }), + (a.umask = function () { + return 0; + })); + }, + 2694(s, o, i) { + 'use strict'; + var a = i(6925); + function emptyFunction() {} + function emptyFunctionWithReset() {} + ((emptyFunctionWithReset.resetWarningCache = emptyFunction), + (s.exports = function () { + function shim(s, o, i, u, _, w) { + if (w !== a) { + var x = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types' + ); + throw ((x.name = 'Invariant Violation'), x); + } + } + function getShim() { + return shim; + } + shim.isRequired = shim; + var s = { + array: shim, + bigint: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, + any: shim, + arrayOf: getShim, + element: shim, + elementType: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim, + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction + }; + return ((s.PropTypes = s), s); + })); + }, + 5556(s, o, i) { + s.exports = i(2694)(); + }, + 6925(s) { + 'use strict'; + s.exports = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + }, + 73992(s, o) { + 'use strict'; + var i = Object.prototype.hasOwnProperty; + function decode(s) { + try { + return decodeURIComponent(s.replace(/\+/g, ' ')); + } catch (s) { + return null; + } + } + function encode(s) { + try { + return encodeURIComponent(s); + } catch (s) { + return null; + } + } + ((o.stringify = function querystringify(s, o) { + o = o || ''; + var a, + u, + _ = []; + for (u in ('string' != typeof o && (o = '?'), s)) + if (i.call(s, u)) { + if ( + ((a = s[u]) || (null != a && !isNaN(a)) || (a = ''), + (u = encode(u)), + (a = encode(a)), + null === u || null === a) + ) + continue; + _.push(u + '=' + a); + } + return _.length ? o + _.join('&') : ''; + }), + (o.parse = function querystring(s) { + for (var o, i = /([^=?#&]+)=?([^&]*)/g, a = {}; (o = i.exec(s)); ) { + var u = decode(o[1]), + _ = decode(o[2]); + null === u || null === _ || u in a || (a[u] = _); + } + return a; + })); + }, + 41859(s, o, i) { + const a = i(27096), + u = i(78004), + _ = a.types; + s.exports = class RandExp { + constructor(s, o) { + if ((this._setDefaults(s), s instanceof RegExp)) + ((this.ignoreCase = s.ignoreCase), (this.multiline = s.multiline), (s = s.source)); + else { + if ('string' != typeof s) throw new Error('Expected a regexp or string'); + ((this.ignoreCase = o && -1 !== o.indexOf('i')), + (this.multiline = o && -1 !== o.indexOf('m'))); + } + this.tokens = a(s); + } + _setDefaults(s) { + ((this.max = + null != s.max + ? s.max + : null != RandExp.prototype.max + ? RandExp.prototype.max + : 100), + (this.defaultRange = s.defaultRange ? s.defaultRange : this.defaultRange.clone()), + s.randInt && (this.randInt = s.randInt)); + } + gen() { + return this._gen(this.tokens, []); + } + _gen(s, o) { + var i, a, u, w, x; + switch (s.type) { + case _.ROOT: + case _.GROUP: + if (s.followedBy || s.notFollowedBy) return ''; + for ( + s.remember && void 0 === s.groupNumber && (s.groupNumber = o.push(null) - 1), + a = '', + w = 0, + x = (i = s.options ? this._randSelect(s.options) : s.stack).length; + w < x; + w++ + ) + a += this._gen(i[w], o); + return (s.remember && (o[s.groupNumber] = a), a); + case _.POSITION: + return ''; + case _.SET: + var C = this._expand(s); + return C.length ? String.fromCharCode(this._randSelect(C)) : ''; + case _.REPETITION: + for ( + u = this.randInt(s.min, s.max === 1 / 0 ? s.min + this.max : s.max), + a = '', + w = 0; + w < u; + w++ + ) + a += this._gen(s.value, o); + return a; + case _.REFERENCE: + return o[s.value - 1] || ''; + case _.CHAR: + var j = + this.ignoreCase && this._randBool() ? this._toOtherCase(s.value) : s.value; + return String.fromCharCode(j); + } + } + _toOtherCase(s) { + return s + (97 <= s && s <= 122 ? -32 : 65 <= s && s <= 90 ? 32 : 0); + } + _randBool() { + return !this.randInt(0, 1); + } + _randSelect(s) { + return s instanceof u + ? s.index(this.randInt(0, s.length - 1)) + : s[this.randInt(0, s.length - 1)]; + } + _expand(s) { + if (s.type === a.types.CHAR) return new u(s.value); + if (s.type === a.types.RANGE) return new u(s.from, s.to); + { + let o = new u(); + for (let i = 0; i < s.set.length; i++) { + let a = this._expand(s.set[i]); + if ((o.add(a), this.ignoreCase)) + for (let s = 0; s < a.length; s++) { + let i = a.index(s), + u = this._toOtherCase(i); + i !== u && o.add(u); + } + } + return s.not + ? this.defaultRange.clone().subtract(o) + : this.defaultRange.clone().intersect(o); + } + } + randInt(s, o) { + return s + Math.floor(Math.random() * (1 + o - s)); + } + get defaultRange() { + return (this._range = this._range || new u(32, 126)); + } + set defaultRange(s) { + this._range = s; + } + static randexp(s, o) { + var i; + return ( + 'string' == typeof s && (s = new RegExp(s, o)), + void 0 === s._randexp + ? ((i = new RandExp(s, o)), (s._randexp = i)) + : (i = s._randexp)._setDefaults(s), + i.gen() + ); + } + static sugar() { + RegExp.prototype.gen = function () { + return RandExp.randexp(this); + }; + } + }; + }, + 53209(s, o, i) { + 'use strict'; + var a = i(65606), + u = 65536, + _ = 4294967295; + var w = i(92861).Buffer, + x = i.g.crypto || i.g.msCrypto; + x && x.getRandomValues + ? (s.exports = function randomBytes(s, o) { + if (s > _) throw new RangeError('requested too many random bytes'); + var i = w.allocUnsafe(s); + if (s > 0) + if (s > u) for (var C = 0; C < s; C += u) x.getRandomValues(i.slice(C, C + u)); + else x.getRandomValues(i); + if ('function' == typeof o) + return a.nextTick(function () { + o(null, i); + }); + return i; + }) + : (s.exports = function oldBrowser() { + throw new Error( + 'Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11' + ); + }); + }, + 25264(s, o, i) { + 'use strict'; + function _typeof(s) { + return ( + (_typeof = + 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator + ? function (s) { + return typeof s; + } + : function (s) { + return s && + 'function' == typeof Symbol && + s.constructor === Symbol && + s !== Symbol.prototype + ? 'symbol' + : typeof s; + }), + _typeof(s) + ); + } + (Object.defineProperty(o, '__esModule', { value: !0 }), (o.CopyToClipboard = void 0)); + var a = _interopRequireDefault(i(96540)), + u = _interopRequireDefault(i(17965)), + _ = ['text', 'onCopy', 'options', 'children']; + function _interopRequireDefault(s) { + return s && s.__esModule ? s : { default: s }; + } + function ownKeys(s, o) { + var i = Object.keys(s); + if (Object.getOwnPropertySymbols) { + var a = Object.getOwnPropertySymbols(s); + (o && + (a = a.filter(function (o) { + return Object.getOwnPropertyDescriptor(s, o).enumerable; + })), + i.push.apply(i, a)); + } + return i; + } + function _objectSpread(s) { + for (var o = 1; o < arguments.length; o++) { + var i = null != arguments[o] ? arguments[o] : {}; + o % 2 + ? ownKeys(Object(i), !0).forEach(function (o) { + _defineProperty(s, o, i[o]); + }) + : Object.getOwnPropertyDescriptors + ? Object.defineProperties(s, Object.getOwnPropertyDescriptors(i)) + : ownKeys(Object(i)).forEach(function (o) { + Object.defineProperty(s, o, Object.getOwnPropertyDescriptor(i, o)); + }); + } + return s; + } + function _objectWithoutProperties(s, o) { + if (null == s) return {}; + var i, + a, + u = (function _objectWithoutPropertiesLoose(s, o) { + if (null == s) return {}; + var i, + a, + u = {}, + _ = Object.keys(s); + for (a = 0; a < _.length; a++) ((i = _[a]), o.indexOf(i) >= 0 || (u[i] = s[i])); + return u; + })(s, o); + if (Object.getOwnPropertySymbols) { + var _ = Object.getOwnPropertySymbols(s); + for (a = 0; a < _.length; a++) + ((i = _[a]), + o.indexOf(i) >= 0 || + (Object.prototype.propertyIsEnumerable.call(s, i) && (u[i] = s[i]))); + } + return u; + } + function _defineProperties(s, o) { + for (var i = 0; i < o.length; i++) { + var a = o[i]; + ((a.enumerable = a.enumerable || !1), + (a.configurable = !0), + 'value' in a && (a.writable = !0), + Object.defineProperty(s, a.key, a)); + } + } + function _setPrototypeOf(s, o) { + return ( + (_setPrototypeOf = + Object.setPrototypeOf || + function _setPrototypeOf(s, o) { + return ((s.__proto__ = o), s); + }), + _setPrototypeOf(s, o) + ); + } + function _createSuper(s) { + var o = (function _isNativeReflectConstruct() { + if ('undefined' == typeof Reflect || !Reflect.construct) return !1; + if (Reflect.construct.sham) return !1; + if ('function' == typeof Proxy) return !0; + try { + return ( + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), + !0 + ); + } catch (s) { + return !1; + } + })(); + return function _createSuperInternal() { + var i, + a = _getPrototypeOf(s); + if (o) { + var u = _getPrototypeOf(this).constructor; + i = Reflect.construct(a, arguments, u); + } else i = a.apply(this, arguments); + return (function _possibleConstructorReturn(s, o) { + if (o && ('object' === _typeof(o) || 'function' == typeof o)) return o; + if (void 0 !== o) + throw new TypeError('Derived constructors may only return object or undefined'); + return _assertThisInitialized(s); + })(this, i); + }; + } + function _assertThisInitialized(s) { + if (void 0 === s) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return s; + } + function _getPrototypeOf(s) { + return ( + (_getPrototypeOf = Object.setPrototypeOf + ? Object.getPrototypeOf + : function _getPrototypeOf(s) { + return s.__proto__ || Object.getPrototypeOf(s); + }), + _getPrototypeOf(s) + ); + } + function _defineProperty(s, o, i) { + return ( + o in s + ? Object.defineProperty(s, o, { + value: i, + enumerable: !0, + configurable: !0, + writable: !0 + }) + : (s[o] = i), + s + ); + } + var w = (function (s) { + !(function _inherits(s, o) { + if ('function' != typeof o && null !== o) + throw new TypeError('Super expression must either be null or a function'); + ((s.prototype = Object.create(o && o.prototype, { + constructor: { value: s, writable: !0, configurable: !0 } + })), + Object.defineProperty(s, 'prototype', { writable: !1 }), + o && _setPrototypeOf(s, o)); + })(CopyToClipboard, s); + var o = _createSuper(CopyToClipboard); + function CopyToClipboard() { + var s; + !(function _classCallCheck(s, o) { + if (!(s instanceof o)) throw new TypeError('Cannot call a class as a function'); + })(this, CopyToClipboard); + for (var i = arguments.length, _ = new Array(i), w = 0; w < i; w++) + _[w] = arguments[w]; + return ( + _defineProperty( + _assertThisInitialized((s = o.call.apply(o, [this].concat(_)))), + 'onClick', + function (o) { + var i = s.props, + _ = i.text, + w = i.onCopy, + x = i.children, + C = i.options, + j = a.default.Children.only(x), + L = (0, u.default)(_, C); + (w && w(_, L), + j && j.props && 'function' == typeof j.props.onClick && j.props.onClick(o)); + } + ), + s + ); + } + return ( + (function _createClass(s, o, i) { + return ( + o && _defineProperties(s.prototype, o), + i && _defineProperties(s, i), + Object.defineProperty(s, 'prototype', { writable: !1 }), + s + ); + })(CopyToClipboard, [ + { + key: 'render', + value: function render() { + var s = this.props, + o = (s.text, s.onCopy, s.options, s.children), + i = _objectWithoutProperties(s, _), + u = a.default.Children.only(o); + return a.default.cloneElement( + u, + _objectSpread(_objectSpread({}, i), {}, { onClick: this.onClick }) + ); + } + } + ]), + CopyToClipboard + ); + })(a.default.PureComponent); + ((o.CopyToClipboard = w), + _defineProperty(w, 'defaultProps', { onCopy: void 0, options: void 0 })); + }, + 59399(s, o, i) { + 'use strict'; + var a = i(25264).CopyToClipboard; + ((a.CopyToClipboard = a), (s.exports = a)); + }, + 81214(s, o, i) { + 'use strict'; + function _typeof(s) { + return ( + (_typeof = + 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator + ? function (s) { + return typeof s; + } + : function (s) { + return s && + 'function' == typeof Symbol && + s.constructor === Symbol && + s !== Symbol.prototype + ? 'symbol' + : typeof s; + }), + _typeof(s) + ); + } + (Object.defineProperty(o, '__esModule', { value: !0 }), (o.DebounceInput = void 0)); + var a = _interopRequireDefault(i(96540)), + u = _interopRequireDefault(i(20181)), + _ = [ + 'element', + 'onChange', + 'value', + 'minLength', + 'debounceTimeout', + 'forceNotifyByEnter', + 'forceNotifyOnBlur', + 'onKeyDown', + 'onBlur', + 'inputRef' + ]; + function _interopRequireDefault(s) { + return s && s.__esModule ? s : { default: s }; + } + function _objectWithoutProperties(s, o) { + if (null == s) return {}; + var i, + a, + u = (function _objectWithoutPropertiesLoose(s, o) { + if (null == s) return {}; + var i, + a, + u = {}, + _ = Object.keys(s); + for (a = 0; a < _.length; a++) ((i = _[a]), o.indexOf(i) >= 0 || (u[i] = s[i])); + return u; + })(s, o); + if (Object.getOwnPropertySymbols) { + var _ = Object.getOwnPropertySymbols(s); + for (a = 0; a < _.length; a++) + ((i = _[a]), + o.indexOf(i) >= 0 || + (Object.prototype.propertyIsEnumerable.call(s, i) && (u[i] = s[i]))); + } + return u; + } + function ownKeys(s, o) { + var i = Object.keys(s); + if (Object.getOwnPropertySymbols) { + var a = Object.getOwnPropertySymbols(s); + (o && + (a = a.filter(function (o) { + return Object.getOwnPropertyDescriptor(s, o).enumerable; + })), + i.push.apply(i, a)); + } + return i; + } + function _objectSpread(s) { + for (var o = 1; o < arguments.length; o++) { + var i = null != arguments[o] ? arguments[o] : {}; + o % 2 + ? ownKeys(Object(i), !0).forEach(function (o) { + _defineProperty(s, o, i[o]); + }) + : Object.getOwnPropertyDescriptors + ? Object.defineProperties(s, Object.getOwnPropertyDescriptors(i)) + : ownKeys(Object(i)).forEach(function (o) { + Object.defineProperty(s, o, Object.getOwnPropertyDescriptor(i, o)); + }); + } + return s; + } + function _defineProperties(s, o) { + for (var i = 0; i < o.length; i++) { + var a = o[i]; + ((a.enumerable = a.enumerable || !1), + (a.configurable = !0), + 'value' in a && (a.writable = !0), + Object.defineProperty(s, a.key, a)); + } + } + function _setPrototypeOf(s, o) { + return ( + (_setPrototypeOf = + Object.setPrototypeOf || + function _setPrototypeOf(s, o) { + return ((s.__proto__ = o), s); + }), + _setPrototypeOf(s, o) + ); + } + function _createSuper(s) { + var o = (function _isNativeReflectConstruct() { + if ('undefined' == typeof Reflect || !Reflect.construct) return !1; + if (Reflect.construct.sham) return !1; + if ('function' == typeof Proxy) return !0; + try { + return ( + Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), + !0 + ); + } catch (s) { + return !1; + } + })(); + return function _createSuperInternal() { + var i, + a = _getPrototypeOf(s); + if (o) { + var u = _getPrototypeOf(this).constructor; + i = Reflect.construct(a, arguments, u); + } else i = a.apply(this, arguments); + return (function _possibleConstructorReturn(s, o) { + if (o && ('object' === _typeof(o) || 'function' == typeof o)) return o; + if (void 0 !== o) + throw new TypeError('Derived constructors may only return object or undefined'); + return _assertThisInitialized(s); + })(this, i); + }; + } + function _assertThisInitialized(s) { + if (void 0 === s) + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return s; + } + function _getPrototypeOf(s) { + return ( + (_getPrototypeOf = Object.setPrototypeOf + ? Object.getPrototypeOf + : function _getPrototypeOf(s) { + return s.__proto__ || Object.getPrototypeOf(s); + }), + _getPrototypeOf(s) + ); + } + function _defineProperty(s, o, i) { + return ( + o in s + ? Object.defineProperty(s, o, { + value: i, + enumerable: !0, + configurable: !0, + writable: !0 + }) + : (s[o] = i), + s + ); + } + var w = (function (s) { + !(function _inherits(s, o) { + if ('function' != typeof o && null !== o) + throw new TypeError('Super expression must either be null or a function'); + ((s.prototype = Object.create(o && o.prototype, { + constructor: { value: s, writable: !0, configurable: !0 } + })), + Object.defineProperty(s, 'prototype', { writable: !1 }), + o && _setPrototypeOf(s, o)); + })(DebounceInput, s); + var o = _createSuper(DebounceInput); + function DebounceInput(s) { + var i; + (!(function _classCallCheck(s, o) { + if (!(s instanceof o)) throw new TypeError('Cannot call a class as a function'); + })(this, DebounceInput), + _defineProperty( + _assertThisInitialized((i = o.call(this, s))), + 'onChange', + function (s) { + s.persist(); + var o = i.state.value, + a = i.props.minLength; + i.setState({ value: s.target.value }, function () { + var u = i.state.value; + u.length >= a + ? i.notify(s) + : o.length > u.length && + i.notify( + _objectSpread( + _objectSpread({}, s), + {}, + { + target: _objectSpread( + _objectSpread({}, s.target), + {}, + { value: '' } + ) + } + ) + ); + }); + } + ), + _defineProperty(_assertThisInitialized(i), 'onKeyDown', function (s) { + 'Enter' === s.key && i.forceNotify(s); + var o = i.props.onKeyDown; + o && (s.persist(), o(s)); + }), + _defineProperty(_assertThisInitialized(i), 'onBlur', function (s) { + i.forceNotify(s); + var o = i.props.onBlur; + o && (s.persist(), o(s)); + }), + _defineProperty(_assertThisInitialized(i), 'createNotifier', function (s) { + if (s < 0) + i.notify = function () { + return null; + }; + else if (0 === s) i.notify = i.doNotify; + else { + var o = (0, u.default)(function (s) { + ((i.isDebouncing = !1), i.doNotify(s)); + }, s); + ((i.notify = function (s) { + ((i.isDebouncing = !0), o(s)); + }), + (i.flush = function () { + return o.flush(); + }), + (i.cancel = function () { + ((i.isDebouncing = !1), o.cancel()); + })); + } + }), + _defineProperty(_assertThisInitialized(i), 'doNotify', function () { + i.props.onChange.apply(void 0, arguments); + }), + _defineProperty(_assertThisInitialized(i), 'forceNotify', function (s) { + var o = i.props.debounceTimeout; + if (i.isDebouncing || !(o > 0)) { + i.cancel && i.cancel(); + var a = i.state.value, + u = i.props.minLength; + a.length >= u + ? i.doNotify(s) + : i.doNotify( + _objectSpread( + _objectSpread({}, s), + {}, + { target: _objectSpread(_objectSpread({}, s.target), {}, { value: a }) } + ) + ); + } + }), + (i.isDebouncing = !1), + (i.state = { value: void 0 === s.value || null === s.value ? '' : s.value })); + var a = i.props.debounceTimeout; + return (i.createNotifier(a), i); + } + return ( + (function _createClass(s, o, i) { + return ( + o && _defineProperties(s.prototype, o), + i && _defineProperties(s, i), + Object.defineProperty(s, 'prototype', { writable: !1 }), + s + ); + })(DebounceInput, [ + { + key: 'componentDidUpdate', + value: function componentDidUpdate(s) { + if (!this.isDebouncing) { + var o = this.props, + i = o.value, + a = o.debounceTimeout, + u = s.debounceTimeout, + _ = s.value, + w = this.state.value; + (void 0 !== i && _ !== i && w !== i && this.setState({ value: i }), + a !== u && this.createNotifier(a)); + } + } + }, + { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + this.flush && this.flush(); + } + }, + { + key: 'render', + value: function render() { + var s, + o, + i = this.props, + u = i.element, + w = + (i.onChange, i.value, i.minLength, i.debounceTimeout, i.forceNotifyByEnter), + x = i.forceNotifyOnBlur, + C = i.onKeyDown, + j = i.onBlur, + L = i.inputRef, + B = _objectWithoutProperties(i, _), + $ = this.state.value; + ((s = w ? { onKeyDown: this.onKeyDown } : C ? { onKeyDown: C } : {}), + (o = x ? { onBlur: this.onBlur } : j ? { onBlur: j } : {})); + var U = L ? { ref: L } : {}; + return a.default.createElement( + u, + _objectSpread( + _objectSpread( + _objectSpread( + _objectSpread({}, B), + {}, + { onChange: this.onChange, value: $ }, + s + ), + o + ), + U + ) + ); + } + } + ]), + DebounceInput + ); + })(a.default.PureComponent); + ((o.DebounceInput = w), + _defineProperty(w, 'defaultProps', { + element: 'input', + type: 'text', + onKeyDown: void 0, + onBlur: void 0, + value: void 0, + minLength: 0, + debounceTimeout: 100, + forceNotifyByEnter: !0, + forceNotifyOnBlur: !0, + inputRef: void 0 + })); + }, + 24677(s, o, i) { + 'use strict'; + var a = i(81214).DebounceInput; + ((a.DebounceInput = a), (s.exports = a)); + }, + 22551(s, o, i) { + 'use strict'; + var a = i(96540), + u = i(69982); + function p(s) { + for ( + var o = 'https://reactjs.org/docs/error-decoder.html?invariant=' + s, i = 1; + i < arguments.length; + i++ + ) + o += '&args[]=' + encodeURIComponent(arguments[i]); + return ( + 'Minified React error #' + + s + + '; visit ' + + o + + ' for the full message or use the non-minified dev environment for full errors and additional helpful warnings.' + ); + } + var _ = new Set(), + w = {}; + function fa(s, o) { + (ha(s, o), ha(s + 'Capture', o)); + } + function ha(s, o) { + for (w[s] = o, s = 0; s < o.length; s++) _.add(o[s]); + } + var x = !( + 'undefined' == typeof window || + void 0 === window.document || + void 0 === window.document.createElement + ), + C = Object.prototype.hasOwnProperty, + j = + /^[: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]*$/, + L = {}, + B = {}; + function v(s, o, i, a, u, _, w) { + ((this.acceptsBooleans = 2 === o || 3 === o || 4 === o), + (this.attributeName = a), + (this.attributeNamespace = u), + (this.mustUseProperty = i), + (this.propertyName = s), + (this.type = o), + (this.sanitizeURL = _), + (this.removeEmptyString = w)); + } + var $ = {}; + ('children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style' + .split(' ') + .forEach(function (s) { + $[s] = new v(s, 0, !1, s, null, !1, !1); + }), + [ + ['acceptCharset', 'accept-charset'], + ['className', 'class'], + ['htmlFor', 'for'], + ['httpEquiv', 'http-equiv'] + ].forEach(function (s) { + var o = s[0]; + $[o] = new v(o, 1, !1, s[1], null, !1, !1); + }), + ['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (s) { + $[s] = new v(s, 2, !1, s.toLowerCase(), null, !1, !1); + }), + ['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach( + function (s) { + $[s] = new v(s, 2, !1, s, 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 (s) { + $[s] = new v(s, 3, !1, s.toLowerCase(), null, !1, !1); + }), + ['checked', 'multiple', 'muted', 'selected'].forEach(function (s) { + $[s] = new v(s, 3, !0, s, null, !1, !1); + }), + ['capture', 'download'].forEach(function (s) { + $[s] = new v(s, 4, !1, s, null, !1, !1); + }), + ['cols', 'rows', 'size', 'span'].forEach(function (s) { + $[s] = new v(s, 6, !1, s, null, !1, !1); + }), + ['rowSpan', 'start'].forEach(function (s) { + $[s] = new v(s, 5, !1, s.toLowerCase(), null, !1, !1); + })); + var U = /[\-:]([a-z])/g; + function sa(s) { + return s[1].toUpperCase(); + } + function ta(s, o, i, a) { + var u = $.hasOwnProperty(o) ? $[o] : null; + (null !== u + ? 0 !== u.type + : a || + !(2 < o.length) || + ('o' !== o[0] && 'O' !== o[0]) || + ('n' !== o[1] && 'N' !== o[1])) && + ((function qa(s, o, i, a) { + if ( + null == o || + (function pa(s, o, i, a) { + if (null !== i && 0 === i.type) return !1; + switch (typeof o) { + case 'function': + case 'symbol': + return !0; + case 'boolean': + return ( + !a && + (null !== i + ? !i.acceptsBooleans + : 'data-' !== (s = s.toLowerCase().slice(0, 5)) && 'aria-' !== s) + ); + default: + return !1; + } + })(s, o, i, a) + ) + return !0; + if (a) return !1; + if (null !== i) + switch (i.type) { + case 3: + return !o; + case 4: + return !1 === o; + case 5: + return isNaN(o); + case 6: + return isNaN(o) || 1 > o; + } + return !1; + })(o, i, u, a) && (i = null), + a || null === u + ? (function oa(s) { + return ( + !!C.call(B, s) || + (!C.call(L, s) && (j.test(s) ? (B[s] = !0) : ((L[s] = !0), !1))) + ); + })(o) && (null === i ? s.removeAttribute(o) : s.setAttribute(o, '' + i)) + : u.mustUseProperty + ? (s[u.propertyName] = null === i ? 3 !== u.type && '' : i) + : ((o = u.attributeName), + (a = u.attributeNamespace), + null === i + ? s.removeAttribute(o) + : ((i = 3 === (u = u.type) || (4 === u && !0 === i) ? '' : '' + i), + a ? s.setAttributeNS(a, o, i) : s.setAttribute(o, i)))); + } + ('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 (s) { + var o = s.replace(U, sa); + $[o] = new v(o, 1, !1, s, null, !1, !1); + }), + 'xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type' + .split(' ') + .forEach(function (s) { + var o = s.replace(U, sa); + $[o] = new v(o, 1, !1, s, 'http://www.w3.org/1999/xlink', !1, !1); + }), + ['xml:base', 'xml:lang', 'xml:space'].forEach(function (s) { + var o = s.replace(U, sa); + $[o] = new v(o, 1, !1, s, 'http://www.w3.org/XML/1998/namespace', !1, !1); + }), + ['tabIndex', 'crossOrigin'].forEach(function (s) { + $[s] = new v(s, 1, !1, s.toLowerCase(), null, !1, !1); + }), + ($.xlinkHref = new v( + 'xlinkHref', + 1, + !1, + 'xlink:href', + 'http://www.w3.org/1999/xlink', + !0, + !1 + )), + ['src', 'href', 'action', 'formAction'].forEach(function (s) { + $[s] = new v(s, 1, !1, s.toLowerCase(), null, !0, !0); + })); + var V = a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, + z = Symbol.for('react.element'), + Y = Symbol.for('react.portal'), + Z = Symbol.for('react.fragment'), + ee = Symbol.for('react.strict_mode'), + ie = Symbol.for('react.profiler'), + ae = Symbol.for('react.provider'), + ce = Symbol.for('react.context'), + le = Symbol.for('react.forward_ref'), + pe = Symbol.for('react.suspense'), + de = Symbol.for('react.suspense_list'), + fe = Symbol.for('react.memo'), + ye = Symbol.for('react.lazy'); + (Symbol.for('react.scope'), Symbol.for('react.debug_trace_mode')); + var be = Symbol.for('react.offscreen'); + (Symbol.for('react.legacy_hidden'), + Symbol.for('react.cache'), + Symbol.for('react.tracing_marker')); + var Se = Symbol.iterator; + function Ka(s) { + return null === s || 'object' != typeof s + ? null + : 'function' == typeof (s = (Se && s[Se]) || s['@@iterator']) + ? s + : null; + } + var _e, + we = Object.assign; + function Ma(s) { + if (void 0 === _e) + try { + throw Error(); + } catch (s) { + var o = s.stack.trim().match(/\n( *(at )?)/); + _e = (o && o[1]) || ''; + } + return '\n' + _e + s; + } + var xe = !1; + function Oa(s, o) { + if (!s || xe) return ''; + xe = !0; + var i = Error.prepareStackTrace; + Error.prepareStackTrace = void 0; + try { + if (o) + if ( + ((o = function () { + throw Error(); + }), + Object.defineProperty(o.prototype, 'props', { + set: function () { + throw Error(); + } + }), + 'object' == typeof Reflect && Reflect.construct) + ) { + try { + Reflect.construct(o, []); + } catch (s) { + var a = s; + } + Reflect.construct(s, [], o); + } else { + try { + o.call(); + } catch (s) { + a = s; + } + s.call(o.prototype); + } + else { + try { + throw Error(); + } catch (s) { + a = s; + } + s(); + } + } catch (o) { + if (o && a && 'string' == typeof o.stack) { + for ( + var u = o.stack.split('\n'), + _ = a.stack.split('\n'), + w = u.length - 1, + x = _.length - 1; + 1 <= w && 0 <= x && u[w] !== _[x]; + ) + x--; + for (; 1 <= w && 0 <= x; w--, x--) + if (u[w] !== _[x]) { + if (1 !== w || 1 !== x) + do { + if ((w--, 0 > --x || u[w] !== _[x])) { + var C = '\n' + u[w].replace(' at new ', ' at '); + return ( + s.displayName && + C.includes('') && + (C = C.replace('', s.displayName)), + C + ); + } + } while (1 <= w && 0 <= x); + break; + } + } + } finally { + ((xe = !1), (Error.prepareStackTrace = i)); + } + return (s = s ? s.displayName || s.name : '') ? Ma(s) : ''; + } + function Pa(s) { + switch (s.tag) { + case 5: + return Ma(s.type); + case 16: + return Ma('Lazy'); + case 13: + return Ma('Suspense'); + case 19: + return Ma('SuspenseList'); + case 0: + case 2: + case 15: + return (s = Oa(s.type, !1)); + case 11: + return (s = Oa(s.type.render, !1)); + case 1: + return (s = Oa(s.type, !0)); + default: + return ''; + } + } + function Qa(s) { + if (null == s) return null; + if ('function' == typeof s) return s.displayName || s.name || null; + if ('string' == typeof s) return s; + switch (s) { + case Z: + return 'Fragment'; + case Y: + return 'Portal'; + case ie: + return 'Profiler'; + case ee: + return 'StrictMode'; + case pe: + return 'Suspense'; + case de: + return 'SuspenseList'; + } + if ('object' == typeof s) + switch (s.$$typeof) { + case ce: + return (s.displayName || 'Context') + '.Consumer'; + case ae: + return (s._context.displayName || 'Context') + '.Provider'; + case le: + var o = s.render; + return ( + (s = s.displayName) || + (s = + '' !== (s = o.displayName || o.name || '') + ? 'ForwardRef(' + s + ')' + : 'ForwardRef'), + s + ); + case fe: + return null !== (o = s.displayName || null) ? o : Qa(s.type) || 'Memo'; + case ye: + ((o = s._payload), (s = s._init)); + try { + return Qa(s(o)); + } catch (s) {} + } + return null; + } + function Ra(s) { + var o = s.type; + switch (s.tag) { + case 24: + return 'Cache'; + case 9: + return (o.displayName || 'Context') + '.Consumer'; + case 10: + return (o._context.displayName || 'Context') + '.Provider'; + case 18: + return 'DehydratedFragment'; + case 11: + return ( + (s = (s = o.render).displayName || s.name || ''), + o.displayName || ('' !== s ? 'ForwardRef(' + s + ')' : 'ForwardRef') + ); + case 7: + return 'Fragment'; + case 5: + return o; + case 4: + return 'Portal'; + case 3: + return 'Root'; + case 6: + return 'Text'; + case 16: + return Qa(o); + case 8: + return o === ee ? '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 ('function' == typeof o) return o.displayName || o.name || null; + if ('string' == typeof o) return o; + } + return null; + } + function Sa(s) { + switch (typeof s) { + case 'boolean': + case 'number': + case 'string': + case 'undefined': + case 'object': + return s; + default: + return ''; + } + } + function Ta(s) { + var o = s.type; + return ( + (s = s.nodeName) && 'input' === s.toLowerCase() && ('checkbox' === o || 'radio' === o) + ); + } + function Va(s) { + s._valueTracker || + (s._valueTracker = (function Ua(s) { + var o = Ta(s) ? 'checked' : 'value', + i = Object.getOwnPropertyDescriptor(s.constructor.prototype, o), + a = '' + s[o]; + if ( + !s.hasOwnProperty(o) && + void 0 !== i && + 'function' == typeof i.get && + 'function' == typeof i.set + ) { + var u = i.get, + _ = i.set; + return ( + Object.defineProperty(s, o, { + configurable: !0, + get: function () { + return u.call(this); + }, + set: function (s) { + ((a = '' + s), _.call(this, s)); + } + }), + Object.defineProperty(s, o, { enumerable: i.enumerable }), + { + getValue: function () { + return a; + }, + setValue: function (s) { + a = '' + s; + }, + stopTracking: function () { + ((s._valueTracker = null), delete s[o]); + } + } + ); + } + })(s)); + } + function Wa(s) { + if (!s) return !1; + var o = s._valueTracker; + if (!o) return !0; + var i = o.getValue(), + a = ''; + return ( + s && (a = Ta(s) ? (s.checked ? 'true' : 'false') : s.value), + (s = a) !== i && (o.setValue(s), !0) + ); + } + function Xa(s) { + if (void 0 === (s = s || ('undefined' != typeof document ? document : void 0))) + return null; + try { + return s.activeElement || s.body; + } catch (o) { + return s.body; + } + } + function Ya(s, o) { + var i = o.checked; + return we({}, o, { + defaultChecked: void 0, + defaultValue: void 0, + value: void 0, + checked: null != i ? i : s._wrapperState.initialChecked + }); + } + function Za(s, o) { + var i = null == o.defaultValue ? '' : o.defaultValue, + a = null != o.checked ? o.checked : o.defaultChecked; + ((i = Sa(null != o.value ? o.value : i)), + (s._wrapperState = { + initialChecked: a, + initialValue: i, + controlled: + 'checkbox' === o.type || 'radio' === o.type ? null != o.checked : null != o.value + })); + } + function ab(s, o) { + null != (o = o.checked) && ta(s, 'checked', o, !1); + } + function bb(s, o) { + ab(s, o); + var i = Sa(o.value), + a = o.type; + if (null != i) + 'number' === a + ? ((0 === i && '' === s.value) || s.value != i) && (s.value = '' + i) + : s.value !== '' + i && (s.value = '' + i); + else if ('submit' === a || 'reset' === a) return void s.removeAttribute('value'); + (o.hasOwnProperty('value') + ? cb(s, o.type, i) + : o.hasOwnProperty('defaultValue') && cb(s, o.type, Sa(o.defaultValue)), + null == o.checked && + null != o.defaultChecked && + (s.defaultChecked = !!o.defaultChecked)); + } + function db(s, o, i) { + if (o.hasOwnProperty('value') || o.hasOwnProperty('defaultValue')) { + var a = o.type; + if (!(('submit' !== a && 'reset' !== a) || (void 0 !== o.value && null !== o.value))) + return; + ((o = '' + s._wrapperState.initialValue), + i || o === s.value || (s.value = o), + (s.defaultValue = o)); + } + ('' !== (i = s.name) && (s.name = ''), + (s.defaultChecked = !!s._wrapperState.initialChecked), + '' !== i && (s.name = i)); + } + function cb(s, o, i) { + ('number' === o && Xa(s.ownerDocument) === s) || + (null == i + ? (s.defaultValue = '' + s._wrapperState.initialValue) + : s.defaultValue !== '' + i && (s.defaultValue = '' + i)); + } + var Pe = Array.isArray; + function fb(s, o, i, a) { + if (((s = s.options), o)) { + o = {}; + for (var u = 0; u < i.length; u++) o['$' + i[u]] = !0; + for (i = 0; i < s.length; i++) + ((u = o.hasOwnProperty('$' + s[i].value)), + s[i].selected !== u && (s[i].selected = u), + u && a && (s[i].defaultSelected = !0)); + } else { + for (i = '' + Sa(i), o = null, u = 0; u < s.length; u++) { + if (s[u].value === i) + return ((s[u].selected = !0), void (a && (s[u].defaultSelected = !0))); + null !== o || s[u].disabled || (o = s[u]); + } + null !== o && (o.selected = !0); + } + } + function gb(s, o) { + if (null != o.dangerouslySetInnerHTML) throw Error(p(91)); + return we({}, o, { + value: void 0, + defaultValue: void 0, + children: '' + s._wrapperState.initialValue + }); + } + function hb(s, o) { + var i = o.value; + if (null == i) { + if (((i = o.children), (o = o.defaultValue), null != i)) { + if (null != o) throw Error(p(92)); + if (Pe(i)) { + if (1 < i.length) throw Error(p(93)); + i = i[0]; + } + o = i; + } + (null == o && (o = ''), (i = o)); + } + s._wrapperState = { initialValue: Sa(i) }; + } + function ib(s, o) { + var i = Sa(o.value), + a = Sa(o.defaultValue); + (null != i && + ((i = '' + i) !== s.value && (s.value = i), + null == o.defaultValue && s.defaultValue !== i && (s.defaultValue = i)), + null != a && (s.defaultValue = '' + a)); + } + function jb(s) { + var o = s.textContent; + o === s._wrapperState.initialValue && '' !== o && null !== o && (s.value = o); + } + function kb(s) { + switch (s) { + case 'svg': + return 'http://www.w3.org/2000/svg'; + case 'math': + return 'http://www.w3.org/1998/Math/MathML'; + default: + return 'http://www.w3.org/1999/xhtml'; + } + } + function lb(s, o) { + return null == s || 'http://www.w3.org/1999/xhtml' === s + ? kb(o) + : 'http://www.w3.org/2000/svg' === s && 'foreignObject' === o + ? 'http://www.w3.org/1999/xhtml' + : s; + } + var Te, + Re, + $e = + ((Re = function (s, o) { + if ('http://www.w3.org/2000/svg' !== s.namespaceURI || 'innerHTML' in s) + s.innerHTML = o; + else { + for ( + (Te = Te || document.createElement('div')).innerHTML = + '' + o.valueOf().toString() + '', + o = Te.firstChild; + s.firstChild; + ) + s.removeChild(s.firstChild); + for (; o.firstChild; ) s.appendChild(o.firstChild); + } + }), + 'undefined' != typeof MSApp && MSApp.execUnsafeLocalFunction + ? function (s, o, i, a) { + MSApp.execUnsafeLocalFunction(function () { + return Re(s, o); + }); + } + : Re); + function ob(s, o) { + if (o) { + var i = s.firstChild; + if (i && i === s.lastChild && 3 === i.nodeType) return void (i.nodeValue = o); + } + s.textContent = o; + } + var qe = { + 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 + }, + ze = ['Webkit', 'ms', 'Moz', 'O']; + function rb(s, o, i) { + return null == o || 'boolean' == typeof o || '' === o + ? '' + : i || 'number' != typeof o || 0 === o || (qe.hasOwnProperty(s) && qe[s]) + ? ('' + o).trim() + : o + 'px'; + } + function sb(s, o) { + for (var i in ((s = s.style), o)) + if (o.hasOwnProperty(i)) { + var a = 0 === i.indexOf('--'), + u = rb(i, o[i], a); + ('float' === i && (i = 'cssFloat'), a ? s.setProperty(i, u) : (s[i] = u)); + } + } + Object.keys(qe).forEach(function (s) { + ze.forEach(function (o) { + ((o = o + s.charAt(0).toUpperCase() + s.substring(1)), (qe[o] = qe[s])); + }); + }); + var We = we( + { 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 ub(s, o) { + if (o) { + if (We[s] && (null != o.children || null != o.dangerouslySetInnerHTML)) + throw Error(p(137, s)); + if (null != o.dangerouslySetInnerHTML) { + if (null != o.children) throw Error(p(60)); + if ( + 'object' != typeof o.dangerouslySetInnerHTML || + !('__html' in o.dangerouslySetInnerHTML) + ) + throw Error(p(61)); + } + if (null != o.style && 'object' != typeof o.style) throw Error(p(62)); + } + } + function vb(s, o) { + if (-1 === s.indexOf('-')) return 'string' == typeof o.is; + switch (s) { + 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 He = null; + function xb(s) { + return ( + (s = s.target || s.srcElement || window).correspondingUseElement && + (s = s.correspondingUseElement), + 3 === s.nodeType ? s.parentNode : s + ); + } + var Ye = null, + Xe = null, + Qe = null; + function Bb(s) { + if ((s = Cb(s))) { + if ('function' != typeof Ye) throw Error(p(280)); + var o = s.stateNode; + o && ((o = Db(o)), Ye(s.stateNode, s.type, o)); + } + } + function Eb(s) { + Xe ? (Qe ? Qe.push(s) : (Qe = [s])) : (Xe = s); + } + function Fb() { + if (Xe) { + var s = Xe, + o = Qe; + if (((Qe = Xe = null), Bb(s), o)) for (s = 0; s < o.length; s++) Bb(o[s]); + } + } + function Gb(s, o) { + return s(o); + } + function Hb() {} + var et = !1; + function Jb(s, o, i) { + if (et) return s(o, i); + et = !0; + try { + return Gb(s, o, i); + } finally { + ((et = !1), (null !== Xe || null !== Qe) && (Hb(), Fb())); + } + } + function Kb(s, o) { + var i = s.stateNode; + if (null === i) return null; + var a = Db(i); + if (null === a) return null; + i = a[o]; + e: switch (o) { + case 'onClick': + case 'onClickCapture': + case 'onDoubleClick': + case 'onDoubleClickCapture': + case 'onMouseDown': + case 'onMouseDownCapture': + case 'onMouseMove': + case 'onMouseMoveCapture': + case 'onMouseUp': + case 'onMouseUpCapture': + case 'onMouseEnter': + ((a = !a.disabled) || + (a = !( + 'button' === (s = s.type) || + 'input' === s || + 'select' === s || + 'textarea' === s + )), + (s = !a)); + break e; + default: + s = !1; + } + if (s) return null; + if (i && 'function' != typeof i) throw Error(p(231, o, typeof i)); + return i; + } + var tt = !1; + if (x) + try { + var rt = {}; + (Object.defineProperty(rt, 'passive', { + get: function () { + tt = !0; + } + }), + window.addEventListener('test', rt, rt), + window.removeEventListener('test', rt, rt)); + } catch (Re) { + tt = !1; + } + function Nb(s, o, i, a, u, _, w, x, C) { + var j = Array.prototype.slice.call(arguments, 3); + try { + o.apply(i, j); + } catch (s) { + this.onError(s); + } + } + var nt = !1, + st = null, + ot = !1, + it = null, + at = { + onError: function (s) { + ((nt = !0), (st = s)); + } + }; + function Tb(s, o, i, a, u, _, w, x, C) { + ((nt = !1), (st = null), Nb.apply(at, arguments)); + } + function Vb(s) { + var o = s, + i = s; + if (s.alternate) for (; o.return; ) o = o.return; + else { + s = o; + do { + (!!(4098 & (o = s).flags) && (i = o.return), (s = o.return)); + } while (s); + } + return 3 === o.tag ? i : null; + } + function Wb(s) { + if (13 === s.tag) { + var o = s.memoizedState; + if ((null === o && null !== (s = s.alternate) && (o = s.memoizedState), null !== o)) + return o.dehydrated; + } + return null; + } + function Xb(s) { + if (Vb(s) !== s) throw Error(p(188)); + } + function Zb(s) { + return null !== + (s = (function Yb(s) { + var o = s.alternate; + if (!o) { + if (null === (o = Vb(s))) throw Error(p(188)); + return o !== s ? null : s; + } + for (var i = s, a = o; ; ) { + var u = i.return; + if (null === u) break; + var _ = u.alternate; + if (null === _) { + if (null !== (a = u.return)) { + i = a; + continue; + } + break; + } + if (u.child === _.child) { + for (_ = u.child; _; ) { + if (_ === i) return (Xb(u), s); + if (_ === a) return (Xb(u), o); + _ = _.sibling; + } + throw Error(p(188)); + } + if (i.return !== a.return) ((i = u), (a = _)); + else { + for (var w = !1, x = u.child; x; ) { + if (x === i) { + ((w = !0), (i = u), (a = _)); + break; + } + if (x === a) { + ((w = !0), (a = u), (i = _)); + break; + } + x = x.sibling; + } + if (!w) { + for (x = _.child; x; ) { + if (x === i) { + ((w = !0), (i = _), (a = u)); + break; + } + if (x === a) { + ((w = !0), (a = _), (i = u)); + break; + } + x = x.sibling; + } + if (!w) throw Error(p(189)); + } + } + if (i.alternate !== a) throw Error(p(190)); + } + if (3 !== i.tag) throw Error(p(188)); + return i.stateNode.current === i ? s : o; + })(s)) + ? $b(s) + : null; + } + function $b(s) { + if (5 === s.tag || 6 === s.tag) return s; + for (s = s.child; null !== s; ) { + var o = $b(s); + if (null !== o) return o; + s = s.sibling; + } + return null; + } + var ct = u.unstable_scheduleCallback, + lt = u.unstable_cancelCallback, + ut = u.unstable_shouldYield, + pt = u.unstable_requestPaint, + ht = u.unstable_now, + dt = u.unstable_getCurrentPriorityLevel, + mt = u.unstable_ImmediatePriority, + gt = u.unstable_UserBlockingPriority, + yt = u.unstable_NormalPriority, + vt = u.unstable_LowPriority, + bt = u.unstable_IdlePriority, + St = null, + _t = null; + var Et = Math.clz32 + ? Math.clz32 + : function nc(s) { + return ((s >>>= 0), 0 === s ? 32 : (31 - ((wt(s) / xt) | 0)) | 0); + }, + wt = Math.log, + xt = Math.LN2; + var kt = 64, + Ot = 4194304; + function tc(s) { + switch (s & -s) { + 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 4194240 & s; + case 4194304: + case 8388608: + case 16777216: + case 33554432: + case 67108864: + return 130023424 & s; + case 134217728: + return 134217728; + case 268435456: + return 268435456; + case 536870912: + return 536870912; + case 1073741824: + return 1073741824; + default: + return s; + } + } + function uc(s, o) { + var i = s.pendingLanes; + if (0 === i) return 0; + var a = 0, + u = s.suspendedLanes, + _ = s.pingedLanes, + w = 268435455 & i; + if (0 !== w) { + var x = w & ~u; + 0 !== x ? (a = tc(x)) : 0 !== (_ &= w) && (a = tc(_)); + } else 0 !== (w = i & ~u) ? (a = tc(w)) : 0 !== _ && (a = tc(_)); + if (0 === a) return 0; + if ( + 0 !== o && + o !== a && + !(o & u) && + ((u = a & -a) >= (_ = o & -o) || (16 === u && 4194240 & _)) + ) + return o; + if ((4 & a && (a |= 16 & i), 0 !== (o = s.entangledLanes))) + for (s = s.entanglements, o &= a; 0 < o; ) + ((u = 1 << (i = 31 - Et(o))), (a |= s[i]), (o &= ~u)); + return a; + } + function vc(s, o) { + switch (s) { + case 1: + case 2: + case 4: + return o + 250; + case 8: + case 16: + case 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 o + 5e3; + default: + return -1; + } + } + function xc(s) { + return 0 !== (s = -1073741825 & s.pendingLanes) ? s : 1073741824 & s ? 1073741824 : 0; + } + function yc() { + var s = kt; + return (!(4194240 & (kt <<= 1)) && (kt = 64), s); + } + function zc(s) { + for (var o = [], i = 0; 31 > i; i++) o.push(s); + return o; + } + function Ac(s, o, i) { + ((s.pendingLanes |= o), + 536870912 !== o && ((s.suspendedLanes = 0), (s.pingedLanes = 0)), + ((s = s.eventTimes)[(o = 31 - Et(o))] = i)); + } + function Cc(s, o) { + var i = (s.entangledLanes |= o); + for (s = s.entanglements; i; ) { + var a = 31 - Et(i), + u = 1 << a; + ((u & o) | (s[a] & o) && (s[a] |= o), (i &= ~u)); + } + } + var At = 0; + function Dc(s) { + return 1 < (s &= -s) ? (4 < s ? (268435455 & s ? 16 : 536870912) : 4) : 1; + } + var Ct, + jt, + Pt, + It, + Tt, + Nt = !1, + Mt = [], + Rt = null, + Dt = null, + Lt = null, + Ft = new Map(), + Bt = new Map(), + $t = [], + qt = + 'mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit'.split( + ' ' + ); + function Sc(s, o) { + switch (s) { + case 'focusin': + case 'focusout': + Rt = null; + break; + case 'dragenter': + case 'dragleave': + Dt = null; + break; + case 'mouseover': + case 'mouseout': + Lt = null; + break; + case 'pointerover': + case 'pointerout': + Ft.delete(o.pointerId); + break; + case 'gotpointercapture': + case 'lostpointercapture': + Bt.delete(o.pointerId); + } + } + function Tc(s, o, i, a, u, _) { + return null === s || s.nativeEvent !== _ + ? ((s = { + blockedOn: o, + domEventName: i, + eventSystemFlags: a, + nativeEvent: _, + targetContainers: [u] + }), + null !== o && null !== (o = Cb(o)) && jt(o), + s) + : ((s.eventSystemFlags |= a), + (o = s.targetContainers), + null !== u && -1 === o.indexOf(u) && o.push(u), + s); + } + function Vc(s) { + var o = Wc(s.target); + if (null !== o) { + var i = Vb(o); + if (null !== i) + if (13 === (o = i.tag)) { + if (null !== (o = Wb(i))) + return ( + (s.blockedOn = o), + void Tt(s.priority, function () { + Pt(i); + }) + ); + } else if (3 === o && i.stateNode.current.memoizedState.isDehydrated) + return void (s.blockedOn = 3 === i.tag ? i.stateNode.containerInfo : null); + } + s.blockedOn = null; + } + function Xc(s) { + if (null !== s.blockedOn) return !1; + for (var o = s.targetContainers; 0 < o.length; ) { + var i = Yc(s.domEventName, s.eventSystemFlags, o[0], s.nativeEvent); + if (null !== i) return (null !== (o = Cb(i)) && jt(o), (s.blockedOn = i), !1); + var a = new (i = s.nativeEvent).constructor(i.type, i); + ((He = a), i.target.dispatchEvent(a), (He = null), o.shift()); + } + return !0; + } + function Zc(s, o, i) { + Xc(s) && i.delete(o); + } + function $c() { + ((Nt = !1), + null !== Rt && Xc(Rt) && (Rt = null), + null !== Dt && Xc(Dt) && (Dt = null), + null !== Lt && Xc(Lt) && (Lt = null), + Ft.forEach(Zc), + Bt.forEach(Zc)); + } + function ad(s, o) { + s.blockedOn === o && + ((s.blockedOn = null), + Nt || ((Nt = !0), u.unstable_scheduleCallback(u.unstable_NormalPriority, $c))); + } + function bd(s) { + function b(o) { + return ad(o, s); + } + if (0 < Mt.length) { + ad(Mt[0], s); + for (var o = 1; o < Mt.length; o++) { + var i = Mt[o]; + i.blockedOn === s && (i.blockedOn = null); + } + } + for ( + null !== Rt && ad(Rt, s), + null !== Dt && ad(Dt, s), + null !== Lt && ad(Lt, s), + Ft.forEach(b), + Bt.forEach(b), + o = 0; + o < $t.length; + o++ + ) + (i = $t[o]).blockedOn === s && (i.blockedOn = null); + for (; 0 < $t.length && null === (o = $t[0]).blockedOn; ) + (Vc(o), null === o.blockedOn && $t.shift()); + } + var Ut = V.ReactCurrentBatchConfig, + Vt = !0; + function ed(s, o, i, a) { + var u = At, + _ = Ut.transition; + Ut.transition = null; + try { + ((At = 1), fd(s, o, i, a)); + } finally { + ((At = u), (Ut.transition = _)); + } + } + function gd(s, o, i, a) { + var u = At, + _ = Ut.transition; + Ut.transition = null; + try { + ((At = 4), fd(s, o, i, a)); + } finally { + ((At = u), (Ut.transition = _)); + } + } + function fd(s, o, i, a) { + if (Vt) { + var u = Yc(s, o, i, a); + if (null === u) (hd(s, o, a, zt, i), Sc(s, a)); + else if ( + (function Uc(s, o, i, a, u) { + switch (o) { + case 'focusin': + return ((Rt = Tc(Rt, s, o, i, a, u)), !0); + case 'dragenter': + return ((Dt = Tc(Dt, s, o, i, a, u)), !0); + case 'mouseover': + return ((Lt = Tc(Lt, s, o, i, a, u)), !0); + case 'pointerover': + var _ = u.pointerId; + return (Ft.set(_, Tc(Ft.get(_) || null, s, o, i, a, u)), !0); + case 'gotpointercapture': + return ( + (_ = u.pointerId), + Bt.set(_, Tc(Bt.get(_) || null, s, o, i, a, u)), + !0 + ); + } + return !1; + })(u, s, o, i, a) + ) + a.stopPropagation(); + else if ((Sc(s, a), 4 & o && -1 < qt.indexOf(s))) { + for (; null !== u; ) { + var _ = Cb(u); + if ( + (null !== _ && Ct(_), + null === (_ = Yc(s, o, i, a)) && hd(s, o, a, zt, i), + _ === u) + ) + break; + u = _; + } + null !== u && a.stopPropagation(); + } else hd(s, o, a, null, i); + } + } + var zt = null; + function Yc(s, o, i, a) { + if (((zt = null), null !== (s = Wc((s = xb(a)))))) + if (null === (o = Vb(s))) s = null; + else if (13 === (i = o.tag)) { + if (null !== (s = Wb(o))) return s; + s = null; + } else if (3 === i) { + if (o.stateNode.current.memoizedState.isDehydrated) + return 3 === o.tag ? o.stateNode.containerInfo : null; + s = null; + } else o !== s && (s = null); + return ((zt = s), null); + } + function jd(s) { + switch (s) { + case 'cancel': + case 'click': + case 'close': + case 'contextmenu': + case 'copy': + case 'cut': + case 'auxclick': + case 'dblclick': + case 'dragend': + case 'dragstart': + case 'drop': + case 'focusin': + case 'focusout': + case 'input': + case 'invalid': + case 'keydown': + case 'keypress': + case 'keyup': + case 'mousedown': + case 'mouseup': + case 'paste': + case 'pause': + case 'play': + case 'pointercancel': + case 'pointerdown': + case 'pointerup': + case 'ratechange': + case 'reset': + case 'resize': + case 'seeked': + case 'submit': + case 'touchcancel': + case 'touchend': + case 'touchstart': + case 'volumechange': + case 'change': + case 'selectionchange': + case 'textInput': + case 'compositionstart': + case 'compositionend': + case 'compositionupdate': + case 'beforeblur': + case 'afterblur': + case 'beforeinput': + case 'blur': + case 'fullscreenchange': + case 'focus': + case 'hashchange': + case 'popstate': + case 'select': + case 'selectstart': + return 1; + case 'drag': + case 'dragenter': + case 'dragexit': + case 'dragleave': + case 'dragover': + case 'mousemove': + case 'mouseout': + case 'mouseover': + case 'pointermove': + case 'pointerout': + case 'pointerover': + case 'scroll': + case 'toggle': + case 'touchmove': + case 'wheel': + case 'mouseenter': + case 'mouseleave': + case 'pointerenter': + case 'pointerleave': + return 4; + case 'message': + switch (dt()) { + case mt: + return 1; + case gt: + return 4; + case yt: + case vt: + return 16; + case bt: + return 536870912; + default: + return 16; + } + default: + return 16; + } + } + var Wt = null, + Jt = null, + Ht = null; + function nd() { + if (Ht) return Ht; + var s, + o, + i = Jt, + a = i.length, + u = 'value' in Wt ? Wt.value : Wt.textContent, + _ = u.length; + for (s = 0; s < a && i[s] === u[s]; s++); + var w = a - s; + for (o = 1; o <= w && i[a - o] === u[_ - o]; o++); + return (Ht = u.slice(s, 1 < o ? 1 - o : void 0)); + } + function od(s) { + var o = s.keyCode; + return ( + 'charCode' in s ? 0 === (s = s.charCode) && 13 === o && (s = 13) : (s = o), + 10 === s && (s = 13), + 32 <= s || 13 === s ? s : 0 + ); + } + function pd() { + return !0; + } + function qd() { + return !1; + } + function rd(s) { + function b(o, i, a, u, _) { + for (var w in ((this._reactName = o), + (this._targetInst = a), + (this.type = i), + (this.nativeEvent = u), + (this.target = _), + (this.currentTarget = null), + s)) + s.hasOwnProperty(w) && ((o = s[w]), (this[w] = o ? o(u) : u[w])); + return ( + (this.isDefaultPrevented = ( + null != u.defaultPrevented ? u.defaultPrevented : !1 === u.returnValue + ) + ? pd + : qd), + (this.isPropagationStopped = qd), + this + ); + } + return ( + we(b.prototype, { + preventDefault: function () { + this.defaultPrevented = !0; + var s = this.nativeEvent; + s && + (s.preventDefault + ? s.preventDefault() + : 'unknown' != typeof s.returnValue && (s.returnValue = !1), + (this.isDefaultPrevented = pd)); + }, + stopPropagation: function () { + var s = this.nativeEvent; + s && + (s.stopPropagation + ? s.stopPropagation() + : 'unknown' != typeof s.cancelBubble && (s.cancelBubble = !0), + (this.isPropagationStopped = pd)); + }, + persist: function () {}, + isPersistent: pd + }), + b + ); + } + var Kt, + Gt, + Yt, + Xt = { + eventPhase: 0, + bubbles: 0, + cancelable: 0, + timeStamp: function (s) { + return s.timeStamp || Date.now(); + }, + defaultPrevented: 0, + isTrusted: 0 + }, + Qt = rd(Xt), + Zt = we({}, Xt, { view: 0, detail: 0 }), + er = rd(Zt), + tr = we({}, Zt, { + screenX: 0, + screenY: 0, + clientX: 0, + clientY: 0, + pageX: 0, + pageY: 0, + ctrlKey: 0, + shiftKey: 0, + altKey: 0, + metaKey: 0, + getModifierState: zd, + button: 0, + buttons: 0, + relatedTarget: function (s) { + return void 0 === s.relatedTarget + ? s.fromElement === s.srcElement + ? s.toElement + : s.fromElement + : s.relatedTarget; + }, + movementX: function (s) { + return 'movementX' in s + ? s.movementX + : (s !== Yt && + (Yt && 'mousemove' === s.type + ? ((Kt = s.screenX - Yt.screenX), (Gt = s.screenY - Yt.screenY)) + : (Gt = Kt = 0), + (Yt = s)), + Kt); + }, + movementY: function (s) { + return 'movementY' in s ? s.movementY : Gt; + } + }), + rr = rd(tr), + nr = rd(we({}, tr, { dataTransfer: 0 })), + sr = rd(we({}, Zt, { relatedTarget: 0 })), + ir = rd(we({}, Xt, { animationName: 0, elapsedTime: 0, pseudoElement: 0 })), + ar = we({}, Xt, { + clipboardData: function (s) { + return 'clipboardData' in s ? s.clipboardData : window.clipboardData; + } + }), + cr = rd(ar), + lr = rd(we({}, Xt, { data: 0 })), + ur = { + Esc: 'Escape', + Spacebar: ' ', + Left: 'ArrowLeft', + Up: 'ArrowUp', + Right: 'ArrowRight', + Down: 'ArrowDown', + Del: 'Delete', + Win: 'OS', + Menu: 'ContextMenu', + Apps: 'ContextMenu', + Scroll: 'ScrollLock', + MozPrintableKey: 'Unidentified' + }, + pr = { + 8: 'Backspace', + 9: 'Tab', + 12: 'Clear', + 13: 'Enter', + 16: 'Shift', + 17: 'Control', + 18: 'Alt', + 19: 'Pause', + 20: 'CapsLock', + 27: 'Escape', + 32: ' ', + 33: 'PageUp', + 34: 'PageDown', + 35: 'End', + 36: 'Home', + 37: 'ArrowLeft', + 38: 'ArrowUp', + 39: 'ArrowRight', + 40: 'ArrowDown', + 45: 'Insert', + 46: 'Delete', + 112: 'F1', + 113: 'F2', + 114: 'F3', + 115: 'F4', + 116: 'F5', + 117: 'F6', + 118: 'F7', + 119: 'F8', + 120: 'F9', + 121: 'F10', + 122: 'F11', + 123: 'F12', + 144: 'NumLock', + 145: 'ScrollLock', + 224: 'Meta' + }, + dr = { Alt: 'altKey', Control: 'ctrlKey', Meta: 'metaKey', Shift: 'shiftKey' }; + function Pd(s) { + var o = this.nativeEvent; + return o.getModifierState ? o.getModifierState(s) : !!(s = dr[s]) && !!o[s]; + } + function zd() { + return Pd; + } + var fr = we({}, Zt, { + key: function (s) { + if (s.key) { + var o = ur[s.key] || s.key; + if ('Unidentified' !== o) return o; + } + return 'keypress' === s.type + ? 13 === (s = od(s)) + ? 'Enter' + : String.fromCharCode(s) + : 'keydown' === s.type || 'keyup' === s.type + ? pr[s.keyCode] || 'Unidentified' + : ''; + }, + code: 0, + location: 0, + ctrlKey: 0, + shiftKey: 0, + altKey: 0, + metaKey: 0, + repeat: 0, + locale: 0, + getModifierState: zd, + charCode: function (s) { + return 'keypress' === s.type ? od(s) : 0; + }, + keyCode: function (s) { + return 'keydown' === s.type || 'keyup' === s.type ? s.keyCode : 0; + }, + which: function (s) { + return 'keypress' === s.type + ? od(s) + : 'keydown' === s.type || 'keyup' === s.type + ? s.keyCode + : 0; + } + }), + mr = rd(fr), + gr = rd( + we({}, tr, { + pointerId: 0, + width: 0, + height: 0, + pressure: 0, + tangentialPressure: 0, + tiltX: 0, + tiltY: 0, + twist: 0, + pointerType: 0, + isPrimary: 0 + }) + ), + yr = rd( + we({}, Zt, { + touches: 0, + targetTouches: 0, + changedTouches: 0, + altKey: 0, + metaKey: 0, + ctrlKey: 0, + shiftKey: 0, + getModifierState: zd + }) + ), + vr = rd(we({}, Xt, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 })), + br = we({}, tr, { + deltaX: function (s) { + return 'deltaX' in s ? s.deltaX : 'wheelDeltaX' in s ? -s.wheelDeltaX : 0; + }, + deltaY: function (s) { + return 'deltaY' in s + ? s.deltaY + : 'wheelDeltaY' in s + ? -s.wheelDeltaY + : 'wheelDelta' in s + ? -s.wheelDelta + : 0; + }, + deltaZ: 0, + deltaMode: 0 + }), + Sr = rd(br), + _r = [9, 13, 27, 32], + Er = x && 'CompositionEvent' in window, + wr = null; + x && 'documentMode' in document && (wr = document.documentMode); + var xr = x && 'TextEvent' in window && !wr, + kr = x && (!Er || (wr && 8 < wr && 11 >= wr)), + Or = String.fromCharCode(32), + Ar = !1; + function ge(s, o) { + switch (s) { + case 'keyup': + return -1 !== _r.indexOf(o.keyCode); + case 'keydown': + return 229 !== o.keyCode; + case 'keypress': + case 'mousedown': + case 'focusout': + return !0; + default: + return !1; + } + } + function he(s) { + return 'object' == typeof (s = s.detail) && 'data' in s ? s.data : null; + } + var Cr = !1; + var jr = { + color: !0, + date: !0, + datetime: !0, + 'datetime-local': !0, + email: !0, + month: !0, + number: !0, + password: !0, + range: !0, + search: !0, + tel: !0, + text: !0, + time: !0, + url: !0, + week: !0 + }; + function me(s) { + var o = s && s.nodeName && s.nodeName.toLowerCase(); + return 'input' === o ? !!jr[s.type] : 'textarea' === o; + } + function ne(s, o, i, a) { + (Eb(a), + 0 < (o = oe(o, 'onChange')).length && + ((i = new Qt('onChange', 'change', null, i, a)), + s.push({ event: i, listeners: o }))); + } + var Pr = null, + Ir = null; + function re(s) { + se(s, 0); + } + function te(s) { + if (Wa(ue(s))) return s; + } + function ve(s, o) { + if ('change' === s) return o; + } + var Tr = !1; + if (x) { + var Nr; + if (x) { + var Mr = 'oninput' in document; + if (!Mr) { + var Rr = document.createElement('div'); + (Rr.setAttribute('oninput', 'return;'), (Mr = 'function' == typeof Rr.oninput)); + } + Nr = Mr; + } else Nr = !1; + Tr = Nr && (!document.documentMode || 9 < document.documentMode); + } + function Ae() { + Pr && (Pr.detachEvent('onpropertychange', Be), (Ir = Pr = null)); + } + function Be(s) { + if ('value' === s.propertyName && te(Ir)) { + var o = []; + (ne(o, Ir, s, xb(s)), Jb(re, o)); + } + } + function Ce(s, o, i) { + 'focusin' === s + ? (Ae(), (Ir = i), (Pr = o).attachEvent('onpropertychange', Be)) + : 'focusout' === s && Ae(); + } + function De(s) { + if ('selectionchange' === s || 'keyup' === s || 'keydown' === s) return te(Ir); + } + function Ee(s, o) { + if ('click' === s) return te(o); + } + function Fe(s, o) { + if ('input' === s || 'change' === s) return te(o); + } + var Dr = + 'function' == typeof Object.is + ? Object.is + : function Ge(s, o) { + return (s === o && (0 !== s || 1 / s == 1 / o)) || (s != s && o != o); + }; + function Ie(s, o) { + if (Dr(s, o)) return !0; + if ('object' != typeof s || null === s || 'object' != typeof o || null === o) return !1; + var i = Object.keys(s), + a = Object.keys(o); + if (i.length !== a.length) return !1; + for (a = 0; a < i.length; a++) { + var u = i[a]; + if (!C.call(o, u) || !Dr(s[u], o[u])) return !1; + } + return !0; + } + function Je(s) { + for (; s && s.firstChild; ) s = s.firstChild; + return s; + } + function Ke(s, o) { + var i, + a = Je(s); + for (s = 0; a; ) { + if (3 === a.nodeType) { + if (((i = s + a.textContent.length), s <= o && i >= o)) + return { node: a, offset: o - s }; + s = i; + } + e: { + for (; a; ) { + if (a.nextSibling) { + a = a.nextSibling; + break e; + } + a = a.parentNode; + } + a = void 0; + } + a = Je(a); + } + } + function Le(s, o) { + return ( + !(!s || !o) && + (s === o || + ((!s || 3 !== s.nodeType) && + (o && 3 === o.nodeType + ? Le(s, o.parentNode) + : 'contains' in s + ? s.contains(o) + : !!s.compareDocumentPosition && !!(16 & s.compareDocumentPosition(o))))) + ); + } + function Me() { + for (var s = window, o = Xa(); o instanceof s.HTMLIFrameElement; ) { + try { + var i = 'string' == typeof o.contentWindow.location.href; + } catch (s) { + i = !1; + } + if (!i) break; + o = Xa((s = o.contentWindow).document); + } + return o; + } + function Ne(s) { + var o = s && s.nodeName && s.nodeName.toLowerCase(); + return ( + o && + (('input' === o && + ('text' === s.type || + 'search' === s.type || + 'tel' === s.type || + 'url' === s.type || + 'password' === s.type)) || + 'textarea' === o || + 'true' === s.contentEditable) + ); + } + function Oe(s) { + var o = Me(), + i = s.focusedElem, + a = s.selectionRange; + if (o !== i && i && i.ownerDocument && Le(i.ownerDocument.documentElement, i)) { + if (null !== a && Ne(i)) + if (((o = a.start), void 0 === (s = a.end) && (s = o), 'selectionStart' in i)) + ((i.selectionStart = o), (i.selectionEnd = Math.min(s, i.value.length))); + else if ( + (s = ((o = i.ownerDocument || document) && o.defaultView) || window).getSelection + ) { + s = s.getSelection(); + var u = i.textContent.length, + _ = Math.min(a.start, u); + ((a = void 0 === a.end ? _ : Math.min(a.end, u)), + !s.extend && _ > a && ((u = a), (a = _), (_ = u)), + (u = Ke(i, _))); + var w = Ke(i, a); + u && + w && + (1 !== s.rangeCount || + s.anchorNode !== u.node || + s.anchorOffset !== u.offset || + s.focusNode !== w.node || + s.focusOffset !== w.offset) && + ((o = o.createRange()).setStart(u.node, u.offset), + s.removeAllRanges(), + _ > a + ? (s.addRange(o), s.extend(w.node, w.offset)) + : (o.setEnd(w.node, w.offset), s.addRange(o))); + } + for (o = [], s = i; (s = s.parentNode); ) + 1 === s.nodeType && o.push({ element: s, left: s.scrollLeft, top: s.scrollTop }); + for ('function' == typeof i.focus && i.focus(), i = 0; i < o.length; i++) + (((s = o[i]).element.scrollLeft = s.left), (s.element.scrollTop = s.top)); + } + } + var Lr = x && 'documentMode' in document && 11 >= document.documentMode, + Fr = null, + Br = null, + $r = null, + qr = !1; + function Ue(s, o, i) { + var a = i.window === i ? i.document : 9 === i.nodeType ? i : i.ownerDocument; + qr || + null == Fr || + Fr !== Xa(a) || + ('selectionStart' in (a = Fr) && Ne(a) + ? (a = { start: a.selectionStart, end: a.selectionEnd }) + : (a = { + anchorNode: (a = ( + (a.ownerDocument && a.ownerDocument.defaultView) || + window + ).getSelection()).anchorNode, + anchorOffset: a.anchorOffset, + focusNode: a.focusNode, + focusOffset: a.focusOffset + }), + ($r && Ie($r, a)) || + (($r = a), + 0 < (a = oe(Br, 'onSelect')).length && + ((o = new Qt('onSelect', 'select', null, o, i)), + s.push({ event: o, listeners: a }), + (o.target = Fr)))); + } + function Ve(s, o) { + var i = {}; + return ( + (i[s.toLowerCase()] = o.toLowerCase()), + (i['Webkit' + s] = 'webkit' + o), + (i['Moz' + s] = 'moz' + o), + i + ); + } + var Ur = { + animationend: Ve('Animation', 'AnimationEnd'), + animationiteration: Ve('Animation', 'AnimationIteration'), + animationstart: Ve('Animation', 'AnimationStart'), + transitionend: Ve('Transition', 'TransitionEnd') + }, + Vr = {}, + zr = {}; + function Ze(s) { + if (Vr[s]) return Vr[s]; + if (!Ur[s]) return s; + var o, + i = Ur[s]; + for (o in i) if (i.hasOwnProperty(o) && o in zr) return (Vr[s] = i[o]); + return s; + } + x && + ((zr = document.createElement('div').style), + 'AnimationEvent' in window || + (delete Ur.animationend.animation, + delete Ur.animationiteration.animation, + delete Ur.animationstart.animation), + 'TransitionEvent' in window || delete Ur.transitionend.transition); + var Wr = Ze('animationend'), + Jr = Ze('animationiteration'), + Hr = Ze('animationstart'), + Kr = Ze('transitionend'), + Gr = new Map(), + Yr = + 'abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel'.split( + ' ' + ); + function ff(s, o) { + (Gr.set(s, o), fa(o, [s])); + } + for (var Xr = 0; Xr < Yr.length; Xr++) { + var Qr = Yr[Xr]; + ff(Qr.toLowerCase(), 'on' + (Qr[0].toUpperCase() + Qr.slice(1))); + } + (ff(Wr, 'onAnimationEnd'), + ff(Jr, 'onAnimationIteration'), + ff(Hr, 'onAnimationStart'), + ff('dblclick', 'onDoubleClick'), + ff('focusin', 'onFocus'), + ff('focusout', 'onBlur'), + ff(Kr, 'onTransitionEnd'), + ha('onMouseEnter', ['mouseout', 'mouseover']), + ha('onMouseLeave', ['mouseout', 'mouseover']), + ha('onPointerEnter', ['pointerout', 'pointerover']), + ha('onPointerLeave', ['pointerout', 'pointerover']), + fa( + 'onChange', + 'change click focusin focusout input keydown keyup selectionchange'.split(' ') + ), + fa( + 'onSelect', + 'focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange'.split( + ' ' + ) + ), + fa('onBeforeInput', ['compositionend', 'keypress', 'textInput', 'paste']), + fa( + 'onCompositionEnd', + 'compositionend focusout keydown keypress keyup mousedown'.split(' ') + ), + fa( + 'onCompositionStart', + 'compositionstart focusout keydown keypress keyup mousedown'.split(' ') + ), + fa( + 'onCompositionUpdate', + 'compositionupdate focusout keydown keypress keyup mousedown'.split(' ') + )); + var Zr = + 'abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting'.split( + ' ' + ), + en = new Set('cancel close invalid load scroll toggle'.split(' ').concat(Zr)); + function nf(s, o, i) { + var a = s.type || 'unknown-event'; + ((s.currentTarget = i), + (function Ub(s, o, i, a, u, _, w, x, C) { + if ((Tb.apply(this, arguments), nt)) { + if (!nt) throw Error(p(198)); + var j = st; + ((nt = !1), (st = null), ot || ((ot = !0), (it = j))); + } + })(a, o, void 0, s), + (s.currentTarget = null)); + } + function se(s, o) { + o = !!(4 & o); + for (var i = 0; i < s.length; i++) { + var a = s[i], + u = a.event; + a = a.listeners; + e: { + var _ = void 0; + if (o) + for (var w = a.length - 1; 0 <= w; w--) { + var x = a[w], + C = x.instance, + j = x.currentTarget; + if (((x = x.listener), C !== _ && u.isPropagationStopped())) break e; + (nf(u, x, j), (_ = C)); + } + else + for (w = 0; w < a.length; w++) { + if ( + ((C = (x = a[w]).instance), + (j = x.currentTarget), + (x = x.listener), + C !== _ && u.isPropagationStopped()) + ) + break e; + (nf(u, x, j), (_ = C)); + } + } + } + if (ot) throw ((s = it), (ot = !1), (it = null), s); + } + function D(s, o) { + var i = o[mn]; + void 0 === i && (i = o[mn] = new Set()); + var a = s + '__bubble'; + i.has(a) || (pf(o, s, 2, !1), i.add(a)); + } + function qf(s, o, i) { + var a = 0; + (o && (a |= 4), pf(i, s, a, o)); + } + var tn = '_reactListening' + Math.random().toString(36).slice(2); + function sf(s) { + if (!s[tn]) { + ((s[tn] = !0), + _.forEach(function (o) { + 'selectionchange' !== o && (en.has(o) || qf(o, !1, s), qf(o, !0, s)); + })); + var o = 9 === s.nodeType ? s : s.ownerDocument; + null === o || o[tn] || ((o[tn] = !0), qf('selectionchange', !1, o)); + } + } + function pf(s, o, i, a) { + switch (jd(o)) { + case 1: + var u = ed; + break; + case 4: + u = gd; + break; + default: + u = fd; + } + ((i = u.bind(null, o, i, s)), + (u = void 0), + !tt || ('touchstart' !== o && 'touchmove' !== o && 'wheel' !== o) || (u = !0), + a + ? void 0 !== u + ? s.addEventListener(o, i, { capture: !0, passive: u }) + : s.addEventListener(o, i, !0) + : void 0 !== u + ? s.addEventListener(o, i, { passive: u }) + : s.addEventListener(o, i, !1)); + } + function hd(s, o, i, a, u) { + var _ = a; + if (!(1 & o || 2 & o || null === a)) + e: for (;;) { + if (null === a) return; + var w = a.tag; + if (3 === w || 4 === w) { + var x = a.stateNode.containerInfo; + if (x === u || (8 === x.nodeType && x.parentNode === u)) break; + if (4 === w) + for (w = a.return; null !== w; ) { + var C = w.tag; + if ( + (3 === C || 4 === C) && + ((C = w.stateNode.containerInfo) === u || + (8 === C.nodeType && C.parentNode === u)) + ) + return; + w = w.return; + } + for (; null !== x; ) { + if (null === (w = Wc(x))) return; + if (5 === (C = w.tag) || 6 === C) { + a = _ = w; + continue e; + } + x = x.parentNode; + } + } + a = a.return; + } + Jb(function () { + var a = _, + u = xb(i), + w = []; + e: { + var x = Gr.get(s); + if (void 0 !== x) { + var C = Qt, + j = s; + switch (s) { + case 'keypress': + if (0 === od(i)) break e; + case 'keydown': + case 'keyup': + C = mr; + break; + case 'focusin': + ((j = 'focus'), (C = sr)); + break; + case 'focusout': + ((j = 'blur'), (C = sr)); + break; + case 'beforeblur': + case 'afterblur': + C = sr; + break; + case 'click': + if (2 === i.button) break e; + case 'auxclick': + case 'dblclick': + case 'mousedown': + case 'mousemove': + case 'mouseup': + case 'mouseout': + case 'mouseover': + case 'contextmenu': + C = rr; + break; + case 'drag': + case 'dragend': + case 'dragenter': + case 'dragexit': + case 'dragleave': + case 'dragover': + case 'dragstart': + case 'drop': + C = nr; + break; + case 'touchcancel': + case 'touchend': + case 'touchmove': + case 'touchstart': + C = yr; + break; + case Wr: + case Jr: + case Hr: + C = ir; + break; + case Kr: + C = vr; + break; + case 'scroll': + C = er; + break; + case 'wheel': + C = Sr; + break; + case 'copy': + case 'cut': + case 'paste': + C = cr; + break; + case 'gotpointercapture': + case 'lostpointercapture': + case 'pointercancel': + case 'pointerdown': + case 'pointermove': + case 'pointerout': + case 'pointerover': + case 'pointerup': + C = gr; + } + var L = !!(4 & o), + B = !L && 'scroll' === s, + $ = L ? (null !== x ? x + 'Capture' : null) : x; + L = []; + for (var U, V = a; null !== V; ) { + var z = (U = V).stateNode; + if ( + (5 === U.tag && + null !== z && + ((U = z), null !== $ && null != (z = Kb(V, $)) && L.push(tf(V, z, U))), + B) + ) + break; + V = V.return; + } + 0 < L.length && + ((x = new C(x, j, null, i, u)), w.push({ event: x, listeners: L })); + } + } + if (!(7 & o)) { + if ( + ((C = 'mouseout' === s || 'pointerout' === s), + (!(x = 'mouseover' === s || 'pointerover' === s) || + i === He || + !(j = i.relatedTarget || i.fromElement) || + (!Wc(j) && !j[fn])) && + (C || x) && + ((x = + u.window === u + ? u + : (x = u.ownerDocument) + ? x.defaultView || x.parentWindow + : window), + C + ? ((C = a), + null !== (j = (j = i.relatedTarget || i.toElement) ? Wc(j) : null) && + (j !== (B = Vb(j)) || (5 !== j.tag && 6 !== j.tag)) && + (j = null)) + : ((C = null), (j = a)), + C !== j)) + ) { + if ( + ((L = rr), + (z = 'onMouseLeave'), + ($ = 'onMouseEnter'), + (V = 'mouse'), + ('pointerout' !== s && 'pointerover' !== s) || + ((L = gr), (z = 'onPointerLeave'), ($ = 'onPointerEnter'), (V = 'pointer')), + (B = null == C ? x : ue(C)), + (U = null == j ? x : ue(j)), + ((x = new L(z, V + 'leave', C, i, u)).target = B), + (x.relatedTarget = U), + (z = null), + Wc(u) === a && + (((L = new L($, V + 'enter', j, i, u)).target = U), + (L.relatedTarget = B), + (z = L)), + (B = z), + C && j) + ) + e: { + for ($ = j, V = 0, U = L = C; U; U = vf(U)) V++; + for (U = 0, z = $; z; z = vf(z)) U++; + for (; 0 < V - U; ) ((L = vf(L)), V--); + for (; 0 < U - V; ) (($ = vf($)), U--); + for (; V--; ) { + if (L === $ || (null !== $ && L === $.alternate)) break e; + ((L = vf(L)), ($ = vf($))); + } + L = null; + } + else L = null; + (null !== C && wf(w, x, C, L, !1), + null !== j && null !== B && wf(w, B, j, L, !0)); + } + if ( + 'select' === + (C = (x = a ? ue(a) : window).nodeName && x.nodeName.toLowerCase()) || + ('input' === C && 'file' === x.type) + ) + var Y = ve; + else if (me(x)) + if (Tr) Y = Fe; + else { + Y = De; + var Z = Ce; + } + else + (C = x.nodeName) && + 'input' === C.toLowerCase() && + ('checkbox' === x.type || 'radio' === x.type) && + (Y = Ee); + switch ( + (Y && (Y = Y(s, a)) + ? ne(w, Y, i, u) + : (Z && Z(s, x, a), + 'focusout' === s && + (Z = x._wrapperState) && + Z.controlled && + 'number' === x.type && + cb(x, 'number', x.value)), + (Z = a ? ue(a) : window), + s) + ) { + case 'focusin': + (me(Z) || 'true' === Z.contentEditable) && ((Fr = Z), (Br = a), ($r = null)); + break; + case 'focusout': + $r = Br = Fr = null; + break; + case 'mousedown': + qr = !0; + break; + case 'contextmenu': + case 'mouseup': + case 'dragend': + ((qr = !1), Ue(w, i, u)); + break; + case 'selectionchange': + if (Lr) break; + case 'keydown': + case 'keyup': + Ue(w, i, u); + } + var ee; + if (Er) + e: { + switch (s) { + case 'compositionstart': + var ie = 'onCompositionStart'; + break e; + case 'compositionend': + ie = 'onCompositionEnd'; + break e; + case 'compositionupdate': + ie = 'onCompositionUpdate'; + break e; + } + ie = void 0; + } + else + Cr + ? ge(s, i) && (ie = 'onCompositionEnd') + : 'keydown' === s && 229 === i.keyCode && (ie = 'onCompositionStart'); + (ie && + (kr && + 'ko' !== i.locale && + (Cr || 'onCompositionStart' !== ie + ? 'onCompositionEnd' === ie && Cr && (ee = nd()) + : ((Jt = 'value' in (Wt = u) ? Wt.value : Wt.textContent), (Cr = !0))), + 0 < (Z = oe(a, ie)).length && + ((ie = new lr(ie, s, null, i, u)), + w.push({ event: ie, listeners: Z }), + ee ? (ie.data = ee) : null !== (ee = he(i)) && (ie.data = ee))), + (ee = xr + ? (function je(s, o) { + switch (s) { + case 'compositionend': + return he(o); + case 'keypress': + return 32 !== o.which ? null : ((Ar = !0), Or); + case 'textInput': + return (s = o.data) === Or && Ar ? null : s; + default: + return null; + } + })(s, i) + : (function ke(s, o) { + if (Cr) + return 'compositionend' === s || (!Er && ge(s, o)) + ? ((s = nd()), (Ht = Jt = Wt = null), (Cr = !1), s) + : null; + switch (s) { + case 'paste': + default: + return null; + case 'keypress': + if (!(o.ctrlKey || o.altKey || o.metaKey) || (o.ctrlKey && o.altKey)) { + if (o.char && 1 < o.char.length) return o.char; + if (o.which) return String.fromCharCode(o.which); + } + return null; + case 'compositionend': + return kr && 'ko' !== o.locale ? null : o.data; + } + })(s, i)) && + 0 < (a = oe(a, 'onBeforeInput')).length && + ((u = new lr('onBeforeInput', 'beforeinput', null, i, u)), + w.push({ event: u, listeners: a }), + (u.data = ee))); + } + se(w, o); + }); + } + function tf(s, o, i) { + return { instance: s, listener: o, currentTarget: i }; + } + function oe(s, o) { + for (var i = o + 'Capture', a = []; null !== s; ) { + var u = s, + _ = u.stateNode; + (5 === u.tag && + null !== _ && + ((u = _), + null != (_ = Kb(s, i)) && a.unshift(tf(s, _, u)), + null != (_ = Kb(s, o)) && a.push(tf(s, _, u))), + (s = s.return)); + } + return a; + } + function vf(s) { + if (null === s) return null; + do { + s = s.return; + } while (s && 5 !== s.tag); + return s || null; + } + function wf(s, o, i, a, u) { + for (var _ = o._reactName, w = []; null !== i && i !== a; ) { + var x = i, + C = x.alternate, + j = x.stateNode; + if (null !== C && C === a) break; + (5 === x.tag && + null !== j && + ((x = j), + u + ? null != (C = Kb(i, _)) && w.unshift(tf(i, C, x)) + : u || (null != (C = Kb(i, _)) && w.push(tf(i, C, x)))), + (i = i.return)); + } + 0 !== w.length && s.push({ event: o, listeners: w }); + } + var rn = /\r\n?/g, + nn = /\u0000|\uFFFD/g; + function zf(s) { + return ('string' == typeof s ? s : '' + s).replace(rn, '\n').replace(nn, ''); + } + function Af(s, o, i) { + if (((o = zf(o)), zf(s) !== o && i)) throw Error(p(425)); + } + function Bf() {} + var sn = null, + on = null; + function Ef(s, o) { + return ( + 'textarea' === s || + 'noscript' === s || + 'string' == typeof o.children || + 'number' == typeof o.children || + ('object' == typeof o.dangerouslySetInnerHTML && + null !== o.dangerouslySetInnerHTML && + null != o.dangerouslySetInnerHTML.__html) + ); + } + var an = 'function' == typeof setTimeout ? setTimeout : void 0, + cn = 'function' == typeof clearTimeout ? clearTimeout : void 0, + ln = 'function' == typeof Promise ? Promise : void 0, + un = + 'function' == typeof queueMicrotask + ? queueMicrotask + : void 0 !== ln + ? function (s) { + return ln.resolve(null).then(s).catch(If); + } + : an; + function If(s) { + setTimeout(function () { + throw s; + }); + } + function Kf(s, o) { + var i = o, + a = 0; + do { + var u = i.nextSibling; + if ((s.removeChild(i), u && 8 === u.nodeType)) + if ('/$' === (i = u.data)) { + if (0 === a) return (s.removeChild(u), void bd(o)); + a--; + } else ('$' !== i && '$?' !== i && '$!' !== i) || a++; + i = u; + } while (i); + bd(o); + } + function Lf(s) { + for (; null != s; s = s.nextSibling) { + var o = s.nodeType; + if (1 === o || 3 === o) break; + if (8 === o) { + if ('$' === (o = s.data) || '$!' === o || '$?' === o) break; + if ('/$' === o) return null; + } + } + return s; + } + function Mf(s) { + s = s.previousSibling; + for (var o = 0; s; ) { + if (8 === s.nodeType) { + var i = s.data; + if ('$' === i || '$!' === i || '$?' === i) { + if (0 === o) return s; + o--; + } else '/$' === i && o++; + } + s = s.previousSibling; + } + return null; + } + var pn = Math.random().toString(36).slice(2), + hn = '__reactFiber$' + pn, + dn = '__reactProps$' + pn, + fn = '__reactContainer$' + pn, + mn = '__reactEvents$' + pn, + gn = '__reactListeners$' + pn, + yn = '__reactHandles$' + pn; + function Wc(s) { + var o = s[hn]; + if (o) return o; + for (var i = s.parentNode; i; ) { + if ((o = i[fn] || i[hn])) { + if (((i = o.alternate), null !== o.child || (null !== i && null !== i.child))) + for (s = Mf(s); null !== s; ) { + if ((i = s[hn])) return i; + s = Mf(s); + } + return o; + } + i = (s = i).parentNode; + } + return null; + } + function Cb(s) { + return !(s = s[hn] || s[fn]) || + (5 !== s.tag && 6 !== s.tag && 13 !== s.tag && 3 !== s.tag) + ? null + : s; + } + function ue(s) { + if (5 === s.tag || 6 === s.tag) return s.stateNode; + throw Error(p(33)); + } + function Db(s) { + return s[dn] || null; + } + var vn = [], + bn = -1; + function Uf(s) { + return { current: s }; + } + function E(s) { + 0 > bn || ((s.current = vn[bn]), (vn[bn] = null), bn--); + } + function G(s, o) { + (bn++, (vn[bn] = s.current), (s.current = o)); + } + var Sn = {}, + _n = Uf(Sn), + En = Uf(!1), + wn = Sn; + function Yf(s, o) { + var i = s.type.contextTypes; + if (!i) return Sn; + var a = s.stateNode; + if (a && a.__reactInternalMemoizedUnmaskedChildContext === o) + return a.__reactInternalMemoizedMaskedChildContext; + var u, + _ = {}; + for (u in i) _[u] = o[u]; + return ( + a && + (((s = s.stateNode).__reactInternalMemoizedUnmaskedChildContext = o), + (s.__reactInternalMemoizedMaskedChildContext = _)), + _ + ); + } + function Zf(s) { + return null != (s = s.childContextTypes); + } + function $f() { + (E(En), E(_n)); + } + function ag(s, o, i) { + if (_n.current !== Sn) throw Error(p(168)); + (G(_n, o), G(En, i)); + } + function bg(s, o, i) { + var a = s.stateNode; + if (((o = o.childContextTypes), 'function' != typeof a.getChildContext)) return i; + for (var u in (a = a.getChildContext())) + if (!(u in o)) throw Error(p(108, Ra(s) || 'Unknown', u)); + return we({}, i, a); + } + function cg(s) { + return ( + (s = ((s = s.stateNode) && s.__reactInternalMemoizedMergedChildContext) || Sn), + (wn = _n.current), + G(_n, s), + G(En, En.current), + !0 + ); + } + function dg(s, o, i) { + var a = s.stateNode; + if (!a) throw Error(p(169)); + (i + ? ((s = bg(s, o, wn)), + (a.__reactInternalMemoizedMergedChildContext = s), + E(En), + E(_n), + G(_n, s)) + : E(En), + G(En, i)); + } + var xn = null, + kn = !1, + On = !1; + function hg(s) { + null === xn ? (xn = [s]) : xn.push(s); + } + function jg() { + if (!On && null !== xn) { + On = !0; + var s = 0, + o = At; + try { + var i = xn; + for (At = 1; s < i.length; s++) { + var a = i[s]; + do { + a = a(!0); + } while (null !== a); + } + ((xn = null), (kn = !1)); + } catch (o) { + throw (null !== xn && (xn = xn.slice(s + 1)), ct(mt, jg), o); + } finally { + ((At = o), (On = !1)); + } + } + return null; + } + var An = [], + Cn = 0, + jn = null, + Pn = 0, + In = [], + Tn = 0, + Nn = null, + Mn = 1, + Rn = ''; + function tg(s, o) { + ((An[Cn++] = Pn), (An[Cn++] = jn), (jn = s), (Pn = o)); + } + function ug(s, o, i) { + ((In[Tn++] = Mn), (In[Tn++] = Rn), (In[Tn++] = Nn), (Nn = s)); + var a = Mn; + s = Rn; + var u = 32 - Et(a) - 1; + ((a &= ~(1 << u)), (i += 1)); + var _ = 32 - Et(o) + u; + if (30 < _) { + var w = u - (u % 5); + ((_ = (a & ((1 << w) - 1)).toString(32)), + (a >>= w), + (u -= w), + (Mn = (1 << (32 - Et(o) + u)) | (i << u) | a), + (Rn = _ + s)); + } else ((Mn = (1 << _) | (i << u) | a), (Rn = s)); + } + function vg(s) { + null !== s.return && (tg(s, 1), ug(s, 1, 0)); + } + function wg(s) { + for (; s === jn; ) ((jn = An[--Cn]), (An[Cn] = null), (Pn = An[--Cn]), (An[Cn] = null)); + for (; s === Nn; ) + ((Nn = In[--Tn]), + (In[Tn] = null), + (Rn = In[--Tn]), + (In[Tn] = null), + (Mn = In[--Tn]), + (In[Tn] = null)); + } + var Dn = null, + Ln = null, + Fn = !1, + Bn = null; + function Ag(s, o) { + var i = Bg(5, null, null, 0); + ((i.elementType = 'DELETED'), + (i.stateNode = o), + (i.return = s), + null === (o = s.deletions) ? ((s.deletions = [i]), (s.flags |= 16)) : o.push(i)); + } + function Cg(s, o) { + switch (s.tag) { + case 5: + var i = s.type; + return ( + null !== + (o = + 1 !== o.nodeType || i.toLowerCase() !== o.nodeName.toLowerCase() + ? null + : o) && ((s.stateNode = o), (Dn = s), (Ln = Lf(o.firstChild)), !0) + ); + case 6: + return ( + null !== (o = '' === s.pendingProps || 3 !== o.nodeType ? null : o) && + ((s.stateNode = o), (Dn = s), (Ln = null), !0) + ); + case 13: + return ( + null !== (o = 8 !== o.nodeType ? null : o) && + ((i = null !== Nn ? { id: Mn, overflow: Rn } : null), + (s.memoizedState = { dehydrated: o, treeContext: i, retryLane: 1073741824 }), + ((i = Bg(18, null, null, 0)).stateNode = o), + (i.return = s), + (s.child = i), + (Dn = s), + (Ln = null), + !0) + ); + default: + return !1; + } + } + function Dg(s) { + return !(!(1 & s.mode) || 128 & s.flags); + } + function Eg(s) { + if (Fn) { + var o = Ln; + if (o) { + var i = o; + if (!Cg(s, o)) { + if (Dg(s)) throw Error(p(418)); + o = Lf(i.nextSibling); + var a = Dn; + o && Cg(s, o) + ? Ag(a, i) + : ((s.flags = (-4097 & s.flags) | 2), (Fn = !1), (Dn = s)); + } + } else { + if (Dg(s)) throw Error(p(418)); + ((s.flags = (-4097 & s.flags) | 2), (Fn = !1), (Dn = s)); + } + } + } + function Fg(s) { + for (s = s.return; null !== s && 5 !== s.tag && 3 !== s.tag && 13 !== s.tag; ) + s = s.return; + Dn = s; + } + function Gg(s) { + if (s !== Dn) return !1; + if (!Fn) return (Fg(s), (Fn = !0), !1); + var o; + if ( + ((o = 3 !== s.tag) && + !(o = 5 !== s.tag) && + (o = 'head' !== (o = s.type) && 'body' !== o && !Ef(s.type, s.memoizedProps)), + o && (o = Ln)) + ) { + if (Dg(s)) throw (Hg(), Error(p(418))); + for (; o; ) (Ag(s, o), (o = Lf(o.nextSibling))); + } + if ((Fg(s), 13 === s.tag)) { + if (!(s = null !== (s = s.memoizedState) ? s.dehydrated : null)) throw Error(p(317)); + e: { + for (s = s.nextSibling, o = 0; s; ) { + if (8 === s.nodeType) { + var i = s.data; + if ('/$' === i) { + if (0 === o) { + Ln = Lf(s.nextSibling); + break e; + } + o--; + } else ('$' !== i && '$!' !== i && '$?' !== i) || o++; + } + s = s.nextSibling; + } + Ln = null; + } + } else Ln = Dn ? Lf(s.stateNode.nextSibling) : null; + return !0; + } + function Hg() { + for (var s = Ln; s; ) s = Lf(s.nextSibling); + } + function Ig() { + ((Ln = Dn = null), (Fn = !1)); + } + function Jg(s) { + null === Bn ? (Bn = [s]) : Bn.push(s); + } + var $n = V.ReactCurrentBatchConfig; + function Lg(s, o, i) { + if (null !== (s = i.ref) && 'function' != typeof s && 'object' != typeof s) { + if (i._owner) { + if ((i = i._owner)) { + if (1 !== i.tag) throw Error(p(309)); + var a = i.stateNode; + } + if (!a) throw Error(p(147, s)); + var u = a, + _ = '' + s; + return null !== o && + null !== o.ref && + 'function' == typeof o.ref && + o.ref._stringRef === _ + ? o.ref + : ((o = function (s) { + var o = u.refs; + null === s ? delete o[_] : (o[_] = s); + }), + (o._stringRef = _), + o); + } + if ('string' != typeof s) throw Error(p(284)); + if (!i._owner) throw Error(p(290, s)); + } + return s; + } + function Mg(s, o) { + throw ( + (s = Object.prototype.toString.call(o)), + Error( + p( + 31, + '[object Object]' === s + ? 'object with keys {' + Object.keys(o).join(', ') + '}' + : s + ) + ) + ); + } + function Ng(s) { + return (0, s._init)(s._payload); + } + function Og(s) { + function b(o, i) { + if (s) { + var a = o.deletions; + null === a ? ((o.deletions = [i]), (o.flags |= 16)) : a.push(i); + } + } + function c(o, i) { + if (!s) return null; + for (; null !== i; ) (b(o, i), (i = i.sibling)); + return null; + } + function d(s, o) { + for (s = new Map(); null !== o; ) + (null !== o.key ? s.set(o.key, o) : s.set(o.index, o), (o = o.sibling)); + return s; + } + function e(s, o) { + return (((s = Pg(s, o)).index = 0), (s.sibling = null), s); + } + function f(o, i, a) { + return ( + (o.index = a), + s + ? null !== (a = o.alternate) + ? (a = a.index) < i + ? ((o.flags |= 2), i) + : a + : ((o.flags |= 2), i) + : ((o.flags |= 1048576), i) + ); + } + function g(o) { + return (s && null === o.alternate && (o.flags |= 2), o); + } + function h(s, o, i, a) { + return null === o || 6 !== o.tag + ? (((o = Qg(i, s.mode, a)).return = s), o) + : (((o = e(o, i)).return = s), o); + } + function k(s, o, i, a) { + var u = i.type; + return u === Z + ? m(s, o, i.props.children, a, i.key) + : null !== o && + (o.elementType === u || + ('object' == typeof u && null !== u && u.$$typeof === ye && Ng(u) === o.type)) + ? (((a = e(o, i.props)).ref = Lg(s, o, i)), (a.return = s), a) + : (((a = Rg(i.type, i.key, i.props, null, s.mode, a)).ref = Lg(s, o, i)), + (a.return = s), + a); + } + function l(s, o, i, a) { + return null === o || + 4 !== o.tag || + o.stateNode.containerInfo !== i.containerInfo || + o.stateNode.implementation !== i.implementation + ? (((o = Sg(i, s.mode, a)).return = s), o) + : (((o = e(o, i.children || [])).return = s), o); + } + function m(s, o, i, a, u) { + return null === o || 7 !== o.tag + ? (((o = Tg(i, s.mode, a, u)).return = s), o) + : (((o = e(o, i)).return = s), o); + } + function q(s, o, i) { + if (('string' == typeof o && '' !== o) || 'number' == typeof o) + return (((o = Qg('' + o, s.mode, i)).return = s), o); + if ('object' == typeof o && null !== o) { + switch (o.$$typeof) { + case z: + return ( + ((i = Rg(o.type, o.key, o.props, null, s.mode, i)).ref = Lg(s, null, o)), + (i.return = s), + i + ); + case Y: + return (((o = Sg(o, s.mode, i)).return = s), o); + case ye: + return q(s, (0, o._init)(o._payload), i); + } + if (Pe(o) || Ka(o)) return (((o = Tg(o, s.mode, i, null)).return = s), o); + Mg(s, o); + } + return null; + } + function r(s, o, i, a) { + var u = null !== o ? o.key : null; + if (('string' == typeof i && '' !== i) || 'number' == typeof i) + return null !== u ? null : h(s, o, '' + i, a); + if ('object' == typeof i && null !== i) { + switch (i.$$typeof) { + case z: + return i.key === u ? k(s, o, i, a) : null; + case Y: + return i.key === u ? l(s, o, i, a) : null; + case ye: + return r(s, o, (u = i._init)(i._payload), a); + } + if (Pe(i) || Ka(i)) return null !== u ? null : m(s, o, i, a, null); + Mg(s, i); + } + return null; + } + function y(s, o, i, a, u) { + if (('string' == typeof a && '' !== a) || 'number' == typeof a) + return h(o, (s = s.get(i) || null), '' + a, u); + if ('object' == typeof a && null !== a) { + switch (a.$$typeof) { + case z: + return k(o, (s = s.get(null === a.key ? i : a.key) || null), a, u); + case Y: + return l(o, (s = s.get(null === a.key ? i : a.key) || null), a, u); + case ye: + return y(s, o, i, (0, a._init)(a._payload), u); + } + if (Pe(a) || Ka(a)) return m(o, (s = s.get(i) || null), a, u, null); + Mg(o, a); + } + return null; + } + function n(o, i, a, u) { + for ( + var _ = null, w = null, x = i, C = (i = 0), j = null; + null !== x && C < a.length; + C++ + ) { + x.index > C ? ((j = x), (x = null)) : (j = x.sibling); + var L = r(o, x, a[C], u); + if (null === L) { + null === x && (x = j); + break; + } + (s && x && null === L.alternate && b(o, x), + (i = f(L, i, C)), + null === w ? (_ = L) : (w.sibling = L), + (w = L), + (x = j)); + } + if (C === a.length) return (c(o, x), Fn && tg(o, C), _); + if (null === x) { + for (; C < a.length; C++) + null !== (x = q(o, a[C], u)) && + ((i = f(x, i, C)), null === w ? (_ = x) : (w.sibling = x), (w = x)); + return (Fn && tg(o, C), _); + } + for (x = d(o, x); C < a.length; C++) + null !== (j = y(x, o, C, a[C], u)) && + (s && null !== j.alternate && x.delete(null === j.key ? C : j.key), + (i = f(j, i, C)), + null === w ? (_ = j) : (w.sibling = j), + (w = j)); + return ( + s && + x.forEach(function (s) { + return b(o, s); + }), + Fn && tg(o, C), + _ + ); + } + function t(o, i, a, u) { + var _ = Ka(a); + if ('function' != typeof _) throw Error(p(150)); + if (null == (a = _.call(a))) throw Error(p(151)); + for ( + var w = (_ = null), x = i, C = (i = 0), j = null, L = a.next(); + null !== x && !L.done; + C++, L = a.next() + ) { + x.index > C ? ((j = x), (x = null)) : (j = x.sibling); + var B = r(o, x, L.value, u); + if (null === B) { + null === x && (x = j); + break; + } + (s && x && null === B.alternate && b(o, x), + (i = f(B, i, C)), + null === w ? (_ = B) : (w.sibling = B), + (w = B), + (x = j)); + } + if (L.done) return (c(o, x), Fn && tg(o, C), _); + if (null === x) { + for (; !L.done; C++, L = a.next()) + null !== (L = q(o, L.value, u)) && + ((i = f(L, i, C)), null === w ? (_ = L) : (w.sibling = L), (w = L)); + return (Fn && tg(o, C), _); + } + for (x = d(o, x); !L.done; C++, L = a.next()) + null !== (L = y(x, o, C, L.value, u)) && + (s && null !== L.alternate && x.delete(null === L.key ? C : L.key), + (i = f(L, i, C)), + null === w ? (_ = L) : (w.sibling = L), + (w = L)); + return ( + s && + x.forEach(function (s) { + return b(o, s); + }), + Fn && tg(o, C), + _ + ); + } + return function J(s, o, i, a) { + if ( + ('object' == typeof i && + null !== i && + i.type === Z && + null === i.key && + (i = i.props.children), + 'object' == typeof i && null !== i) + ) { + switch (i.$$typeof) { + case z: + e: { + for (var u = i.key, _ = o; null !== _; ) { + if (_.key === u) { + if ((u = i.type) === Z) { + if (7 === _.tag) { + (c(s, _.sibling), ((o = e(_, i.props.children)).return = s), (s = o)); + break e; + } + } else if ( + _.elementType === u || + ('object' == typeof u && + null !== u && + u.$$typeof === ye && + Ng(u) === _.type) + ) { + (c(s, _.sibling), + ((o = e(_, i.props)).ref = Lg(s, _, i)), + (o.return = s), + (s = o)); + break e; + } + c(s, _); + break; + } + (b(s, _), (_ = _.sibling)); + } + i.type === Z + ? (((o = Tg(i.props.children, s.mode, a, i.key)).return = s), (s = o)) + : (((a = Rg(i.type, i.key, i.props, null, s.mode, a)).ref = Lg(s, o, i)), + (a.return = s), + (s = a)); + } + return g(s); + case Y: + e: { + for (_ = i.key; null !== o; ) { + if (o.key === _) { + if ( + 4 === o.tag && + o.stateNode.containerInfo === i.containerInfo && + o.stateNode.implementation === i.implementation + ) { + (c(s, o.sibling), ((o = e(o, i.children || [])).return = s), (s = o)); + break e; + } + c(s, o); + break; + } + (b(s, o), (o = o.sibling)); + } + (((o = Sg(i, s.mode, a)).return = s), (s = o)); + } + return g(s); + case ye: + return J(s, o, (_ = i._init)(i._payload), a); + } + if (Pe(i)) return n(s, o, i, a); + if (Ka(i)) return t(s, o, i, a); + Mg(s, i); + } + return ('string' == typeof i && '' !== i) || 'number' == typeof i + ? ((i = '' + i), + null !== o && 6 === o.tag + ? (c(s, o.sibling), ((o = e(o, i)).return = s), (s = o)) + : (c(s, o), ((o = Qg(i, s.mode, a)).return = s), (s = o)), + g(s)) + : c(s, o); + }; + } + var qn = Og(!0), + Un = Og(!1), + Vn = Uf(null), + zn = null, + Wn = null, + Jn = null; + function $g() { + Jn = Wn = zn = null; + } + function ah(s) { + var o = Vn.current; + (E(Vn), (s._currentValue = o)); + } + function bh(s, o, i) { + for (; null !== s; ) { + var a = s.alternate; + if ( + ((s.childLanes & o) !== o + ? ((s.childLanes |= o), null !== a && (a.childLanes |= o)) + : null !== a && (a.childLanes & o) !== o && (a.childLanes |= o), + s === i) + ) + break; + s = s.return; + } + } + function ch(s, o) { + ((zn = s), + (Jn = Wn = null), + null !== (s = s.dependencies) && + null !== s.firstContext && + (!!(s.lanes & o) && (bs = !0), (s.firstContext = null))); + } + function eh(s) { + var o = s._currentValue; + if (Jn !== s) + if (((s = { context: s, memoizedValue: o, next: null }), null === Wn)) { + if (null === zn) throw Error(p(308)); + ((Wn = s), (zn.dependencies = { lanes: 0, firstContext: s })); + } else Wn = Wn.next = s; + return o; + } + var Hn = null; + function gh(s) { + null === Hn ? (Hn = [s]) : Hn.push(s); + } + function hh(s, o, i, a) { + var u = o.interleaved; + return ( + null === u ? ((i.next = i), gh(o)) : ((i.next = u.next), (u.next = i)), + (o.interleaved = i), + ih(s, a) + ); + } + function ih(s, o) { + s.lanes |= o; + var i = s.alternate; + for (null !== i && (i.lanes |= o), i = s, s = s.return; null !== s; ) + ((s.childLanes |= o), + null !== (i = s.alternate) && (i.childLanes |= o), + (i = s), + (s = s.return)); + return 3 === i.tag ? i.stateNode : null; + } + var Kn = !1; + function kh(s) { + s.updateQueue = { + baseState: s.memoizedState, + firstBaseUpdate: null, + lastBaseUpdate: null, + shared: { pending: null, interleaved: null, lanes: 0 }, + effects: null + }; + } + function lh(s, o) { + ((s = s.updateQueue), + o.updateQueue === s && + (o.updateQueue = { + baseState: s.baseState, + firstBaseUpdate: s.firstBaseUpdate, + lastBaseUpdate: s.lastBaseUpdate, + shared: s.shared, + effects: s.effects + })); + } + function mh(s, o) { + return { eventTime: s, lane: o, tag: 0, payload: null, callback: null, next: null }; + } + function nh(s, o, i) { + var a = s.updateQueue; + if (null === a) return null; + if (((a = a.shared), 2 & Ds)) { + var u = a.pending; + return ( + null === u ? (o.next = o) : ((o.next = u.next), (u.next = o)), + (a.pending = o), + ih(s, i) + ); + } + return ( + null === (u = a.interleaved) + ? ((o.next = o), gh(a)) + : ((o.next = u.next), (u.next = o)), + (a.interleaved = o), + ih(s, i) + ); + } + function oh(s, o, i) { + if (null !== (o = o.updateQueue) && ((o = o.shared), 4194240 & i)) { + var a = o.lanes; + ((i |= a &= s.pendingLanes), (o.lanes = i), Cc(s, i)); + } + } + function ph(s, o) { + var i = s.updateQueue, + a = s.alternate; + if (null !== a && i === (a = a.updateQueue)) { + var u = null, + _ = null; + if (null !== (i = i.firstBaseUpdate)) { + do { + var w = { + eventTime: i.eventTime, + lane: i.lane, + tag: i.tag, + payload: i.payload, + callback: i.callback, + next: null + }; + (null === _ ? (u = _ = w) : (_ = _.next = w), (i = i.next)); + } while (null !== i); + null === _ ? (u = _ = o) : (_ = _.next = o); + } else u = _ = o; + return ( + (i = { + baseState: a.baseState, + firstBaseUpdate: u, + lastBaseUpdate: _, + shared: a.shared, + effects: a.effects + }), + void (s.updateQueue = i) + ); + } + (null === (s = i.lastBaseUpdate) ? (i.firstBaseUpdate = o) : (s.next = o), + (i.lastBaseUpdate = o)); + } + function qh(s, o, i, a) { + var u = s.updateQueue; + Kn = !1; + var _ = u.firstBaseUpdate, + w = u.lastBaseUpdate, + x = u.shared.pending; + if (null !== x) { + u.shared.pending = null; + var C = x, + j = C.next; + ((C.next = null), null === w ? (_ = j) : (w.next = j), (w = C)); + var L = s.alternate; + null !== L && + (x = (L = L.updateQueue).lastBaseUpdate) !== w && + (null === x ? (L.firstBaseUpdate = j) : (x.next = j), (L.lastBaseUpdate = C)); + } + if (null !== _) { + var B = u.baseState; + for (w = 0, L = j = C = null, x = _; ; ) { + var $ = x.lane, + U = x.eventTime; + if ((a & $) === $) { + null !== L && + (L = L.next = + { + eventTime: U, + lane: 0, + tag: x.tag, + payload: x.payload, + callback: x.callback, + next: null + }); + e: { + var V = s, + z = x; + switch ((($ = o), (U = i), z.tag)) { + case 1: + if ('function' == typeof (V = z.payload)) { + B = V.call(U, B, $); + break e; + } + B = V; + break e; + case 3: + V.flags = (-65537 & V.flags) | 128; + case 0: + if ( + null == ($ = 'function' == typeof (V = z.payload) ? V.call(U, B, $) : V) + ) + break e; + B = we({}, B, $); + break e; + case 2: + Kn = !0; + } + } + null !== x.callback && + 0 !== x.lane && + ((s.flags |= 64), null === ($ = u.effects) ? (u.effects = [x]) : $.push(x)); + } else + ((U = { + eventTime: U, + lane: $, + tag: x.tag, + payload: x.payload, + callback: x.callback, + next: null + }), + null === L ? ((j = L = U), (C = B)) : (L = L.next = U), + (w |= $)); + if (null === (x = x.next)) { + if (null === (x = u.shared.pending)) break; + ((x = ($ = x).next), + ($.next = null), + (u.lastBaseUpdate = $), + (u.shared.pending = null)); + } + } + if ( + (null === L && (C = B), + (u.baseState = C), + (u.firstBaseUpdate = j), + (u.lastBaseUpdate = L), + null !== (o = u.shared.interleaved)) + ) { + u = o; + do { + ((w |= u.lane), (u = u.next)); + } while (u !== o); + } else null === _ && (u.shared.lanes = 0); + ((zs |= w), (s.lanes = w), (s.memoizedState = B)); + } + } + function sh(s, o, i) { + if (((s = o.effects), (o.effects = null), null !== s)) + for (o = 0; o < s.length; o++) { + var a = s[o], + u = a.callback; + if (null !== u) { + if (((a.callback = null), (a = i), 'function' != typeof u)) + throw Error(p(191, u)); + u.call(a); + } + } + } + var Gn = {}, + Yn = Uf(Gn), + Xn = Uf(Gn), + Qn = Uf(Gn); + function xh(s) { + if (s === Gn) throw Error(p(174)); + return s; + } + function yh(s, o) { + switch ((G(Qn, o), G(Xn, s), G(Yn, Gn), (s = o.nodeType))) { + case 9: + case 11: + o = (o = o.documentElement) ? o.namespaceURI : lb(null, ''); + break; + default: + o = lb( + (o = (s = 8 === s ? o.parentNode : o).namespaceURI || null), + (s = s.tagName) + ); + } + (E(Yn), G(Yn, o)); + } + function zh() { + (E(Yn), E(Xn), E(Qn)); + } + function Ah(s) { + xh(Qn.current); + var o = xh(Yn.current), + i = lb(o, s.type); + o !== i && (G(Xn, s), G(Yn, i)); + } + function Bh(s) { + Xn.current === s && (E(Yn), E(Xn)); + } + var Zn = Uf(0); + function Ch(s) { + for (var o = s; null !== o; ) { + if (13 === o.tag) { + var i = o.memoizedState; + if ( + null !== i && + (null === (i = i.dehydrated) || '$?' === i.data || '$!' === i.data) + ) + return o; + } else if (19 === o.tag && void 0 !== o.memoizedProps.revealOrder) { + if (128 & o.flags) return o; + } else if (null !== o.child) { + ((o.child.return = o), (o = o.child)); + continue; + } + if (o === s) break; + for (; null === o.sibling; ) { + if (null === o.return || o.return === s) return null; + o = o.return; + } + ((o.sibling.return = o.return), (o = o.sibling)); + } + return null; + } + var es = []; + function Eh() { + for (var s = 0; s < es.length; s++) es[s]._workInProgressVersionPrimary = null; + es.length = 0; + } + var ts = V.ReactCurrentDispatcher, + rs = V.ReactCurrentBatchConfig, + ns = 0, + ss = null, + os = null, + as = null, + cs = !1, + ls = !1, + us = 0, + ps = 0; + function P() { + throw Error(p(321)); + } + function Mh(s, o) { + if (null === o) return !1; + for (var i = 0; i < o.length && i < s.length; i++) if (!Dr(s[i], o[i])) return !1; + return !0; + } + function Nh(s, o, i, a, u, _) { + if ( + ((ns = _), + (ss = o), + (o.memoizedState = null), + (o.updateQueue = null), + (o.lanes = 0), + (ts.current = null === s || null === s.memoizedState ? ds : fs), + (s = i(a, u)), + ls) + ) { + _ = 0; + do { + if (((ls = !1), (us = 0), 25 <= _)) throw Error(p(301)); + ((_ += 1), + (as = os = null), + (o.updateQueue = null), + (ts.current = ms), + (s = i(a, u))); + } while (ls); + } + if ( + ((ts.current = hs), + (o = null !== os && null !== os.next), + (ns = 0), + (as = os = ss = null), + (cs = !1), + o) + ) + throw Error(p(300)); + return s; + } + function Sh() { + var s = 0 !== us; + return ((us = 0), s); + } + function Th() { + var s = { + memoizedState: null, + baseState: null, + baseQueue: null, + queue: null, + next: null + }; + return (null === as ? (ss.memoizedState = as = s) : (as = as.next = s), as); + } + function Uh() { + if (null === os) { + var s = ss.alternate; + s = null !== s ? s.memoizedState : null; + } else s = os.next; + var o = null === as ? ss.memoizedState : as.next; + if (null !== o) ((as = o), (os = s)); + else { + if (null === s) throw Error(p(310)); + ((s = { + memoizedState: (os = s).memoizedState, + baseState: os.baseState, + baseQueue: os.baseQueue, + queue: os.queue, + next: null + }), + null === as ? (ss.memoizedState = as = s) : (as = as.next = s)); + } + return as; + } + function Vh(s, o) { + return 'function' == typeof o ? o(s) : o; + } + function Wh(s) { + var o = Uh(), + i = o.queue; + if (null === i) throw Error(p(311)); + i.lastRenderedReducer = s; + var a = os, + u = a.baseQueue, + _ = i.pending; + if (null !== _) { + if (null !== u) { + var w = u.next; + ((u.next = _.next), (_.next = w)); + } + ((a.baseQueue = u = _), (i.pending = null)); + } + if (null !== u) { + ((_ = u.next), (a = a.baseState)); + var x = (w = null), + C = null, + j = _; + do { + var L = j.lane; + if ((ns & L) === L) + (null !== C && + (C = C.next = + { + lane: 0, + action: j.action, + hasEagerState: j.hasEagerState, + eagerState: j.eagerState, + next: null + }), + (a = j.hasEagerState ? j.eagerState : s(a, j.action))); + else { + var B = { + lane: L, + action: j.action, + hasEagerState: j.hasEagerState, + eagerState: j.eagerState, + next: null + }; + (null === C ? ((x = C = B), (w = a)) : (C = C.next = B), + (ss.lanes |= L), + (zs |= L)); + } + j = j.next; + } while (null !== j && j !== _); + (null === C ? (w = a) : (C.next = x), + Dr(a, o.memoizedState) || (bs = !0), + (o.memoizedState = a), + (o.baseState = w), + (o.baseQueue = C), + (i.lastRenderedState = a)); + } + if (null !== (s = i.interleaved)) { + u = s; + do { + ((_ = u.lane), (ss.lanes |= _), (zs |= _), (u = u.next)); + } while (u !== s); + } else null === u && (i.lanes = 0); + return [o.memoizedState, i.dispatch]; + } + function Xh(s) { + var o = Uh(), + i = o.queue; + if (null === i) throw Error(p(311)); + i.lastRenderedReducer = s; + var a = i.dispatch, + u = i.pending, + _ = o.memoizedState; + if (null !== u) { + i.pending = null; + var w = (u = u.next); + do { + ((_ = s(_, w.action)), (w = w.next)); + } while (w !== u); + (Dr(_, o.memoizedState) || (bs = !0), + (o.memoizedState = _), + null === o.baseQueue && (o.baseState = _), + (i.lastRenderedState = _)); + } + return [_, a]; + } + function Yh() {} + function Zh(s, o) { + var i = ss, + a = Uh(), + u = o(), + _ = !Dr(a.memoizedState, u); + if ( + (_ && ((a.memoizedState = u), (bs = !0)), + (a = a.queue), + $h(ai.bind(null, i, a, s), [s]), + a.getSnapshot !== o || _ || (null !== as && 1 & as.memoizedState.tag)) + ) { + if (((i.flags |= 2048), bi(9, ci.bind(null, i, a, u, o), void 0, null), null === Ls)) + throw Error(p(349)); + 30 & ns || di(i, o, u); + } + return u; + } + function di(s, o, i) { + ((s.flags |= 16384), + (s = { getSnapshot: o, value: i }), + null === (o = ss.updateQueue) + ? ((o = { lastEffect: null, stores: null }), (ss.updateQueue = o), (o.stores = [s])) + : null === (i = o.stores) + ? (o.stores = [s]) + : i.push(s)); + } + function ci(s, o, i, a) { + ((o.value = i), (o.getSnapshot = a), ei(o) && fi(s)); + } + function ai(s, o, i) { + return i(function () { + ei(o) && fi(s); + }); + } + function ei(s) { + var o = s.getSnapshot; + s = s.value; + try { + var i = o(); + return !Dr(s, i); + } catch (s) { + return !0; + } + } + function fi(s) { + var o = ih(s, 1); + null !== o && gi(o, s, 1, -1); + } + function hi(s) { + var o = Th(); + return ( + 'function' == typeof s && (s = s()), + (o.memoizedState = o.baseState = s), + (s = { + pending: null, + interleaved: null, + lanes: 0, + dispatch: null, + lastRenderedReducer: Vh, + lastRenderedState: s + }), + (o.queue = s), + (s = s.dispatch = ii.bind(null, ss, s)), + [o.memoizedState, s] + ); + } + function bi(s, o, i, a) { + return ( + (s = { tag: s, create: o, destroy: i, deps: a, next: null }), + null === (o = ss.updateQueue) + ? ((o = { lastEffect: null, stores: null }), + (ss.updateQueue = o), + (o.lastEffect = s.next = s)) + : null === (i = o.lastEffect) + ? (o.lastEffect = s.next = s) + : ((a = i.next), (i.next = s), (s.next = a), (o.lastEffect = s)), + s + ); + } + function ji() { + return Uh().memoizedState; + } + function ki(s, o, i, a) { + var u = Th(); + ((ss.flags |= s), (u.memoizedState = bi(1 | o, i, void 0, void 0 === a ? null : a))); + } + function li(s, o, i, a) { + var u = Uh(); + a = void 0 === a ? null : a; + var _ = void 0; + if (null !== os) { + var w = os.memoizedState; + if (((_ = w.destroy), null !== a && Mh(a, w.deps))) + return void (u.memoizedState = bi(o, i, _, a)); + } + ((ss.flags |= s), (u.memoizedState = bi(1 | o, i, _, a))); + } + function mi(s, o) { + return ki(8390656, 8, s, o); + } + function $h(s, o) { + return li(2048, 8, s, o); + } + function ni(s, o) { + return li(4, 2, s, o); + } + function oi(s, o) { + return li(4, 4, s, o); + } + function pi(s, o) { + return 'function' == typeof o + ? ((s = s()), + o(s), + function () { + o(null); + }) + : null != o + ? ((s = s()), + (o.current = s), + function () { + o.current = null; + }) + : void 0; + } + function qi(s, o, i) { + return ((i = null != i ? i.concat([s]) : null), li(4, 4, pi.bind(null, o, s), i)); + } + function ri() {} + function si(s, o) { + var i = Uh(); + o = void 0 === o ? null : o; + var a = i.memoizedState; + return null !== a && null !== o && Mh(o, a[1]) ? a[0] : ((i.memoizedState = [s, o]), s); + } + function ti(s, o) { + var i = Uh(); + o = void 0 === o ? null : o; + var a = i.memoizedState; + return null !== a && null !== o && Mh(o, a[1]) + ? a[0] + : ((s = s()), (i.memoizedState = [s, o]), s); + } + function ui(s, o, i) { + return 21 & ns + ? (Dr(i, o) || ((i = yc()), (ss.lanes |= i), (zs |= i), (s.baseState = !0)), o) + : (s.baseState && ((s.baseState = !1), (bs = !0)), (s.memoizedState = i)); + } + function vi(s, o) { + var i = At; + ((At = 0 !== i && 4 > i ? i : 4), s(!0)); + var a = rs.transition; + rs.transition = {}; + try { + (s(!1), o()); + } finally { + ((At = i), (rs.transition = a)); + } + } + function wi() { + return Uh().memoizedState; + } + function xi(s, o, i) { + var a = yi(s); + if ( + ((i = { lane: a, action: i, hasEagerState: !1, eagerState: null, next: null }), zi(s)) + ) + Ai(o, i); + else if (null !== (i = hh(s, o, i, a))) { + (gi(i, s, a, R()), Bi(i, o, a)); + } + } + function ii(s, o, i) { + var a = yi(s), + u = { lane: a, action: i, hasEagerState: !1, eagerState: null, next: null }; + if (zi(s)) Ai(o, u); + else { + var _ = s.alternate; + if ( + 0 === s.lanes && + (null === _ || 0 === _.lanes) && + null !== (_ = o.lastRenderedReducer) + ) + try { + var w = o.lastRenderedState, + x = _(w, i); + if (((u.hasEagerState = !0), (u.eagerState = x), Dr(x, w))) { + var C = o.interleaved; + return ( + null === C ? ((u.next = u), gh(o)) : ((u.next = C.next), (C.next = u)), + void (o.interleaved = u) + ); + } + } catch (s) {} + null !== (i = hh(s, o, u, a)) && (gi(i, s, a, (u = R())), Bi(i, o, a)); + } + } + function zi(s) { + var o = s.alternate; + return s === ss || (null !== o && o === ss); + } + function Ai(s, o) { + ls = cs = !0; + var i = s.pending; + (null === i ? (o.next = o) : ((o.next = i.next), (i.next = o)), (s.pending = o)); + } + function Bi(s, o, i) { + if (4194240 & i) { + var a = o.lanes; + ((i |= a &= s.pendingLanes), (o.lanes = i), Cc(s, i)); + } + } + var hs = { + readContext: eh, + useCallback: P, + useContext: P, + useEffect: P, + useImperativeHandle: P, + useInsertionEffect: P, + useLayoutEffect: P, + useMemo: P, + useReducer: P, + useRef: P, + useState: P, + useDebugValue: P, + useDeferredValue: P, + useTransition: P, + useMutableSource: P, + useSyncExternalStore: P, + useId: P, + unstable_isNewReconciler: !1 + }, + ds = { + readContext: eh, + useCallback: function (s, o) { + return ((Th().memoizedState = [s, void 0 === o ? null : o]), s); + }, + useContext: eh, + useEffect: mi, + useImperativeHandle: function (s, o, i) { + return ( + (i = null != i ? i.concat([s]) : null), + ki(4194308, 4, pi.bind(null, o, s), i) + ); + }, + useLayoutEffect: function (s, o) { + return ki(4194308, 4, s, o); + }, + useInsertionEffect: function (s, o) { + return ki(4, 2, s, o); + }, + useMemo: function (s, o) { + var i = Th(); + return ((o = void 0 === o ? null : o), (s = s()), (i.memoizedState = [s, o]), s); + }, + useReducer: function (s, o, i) { + var a = Th(); + return ( + (o = void 0 !== i ? i(o) : o), + (a.memoizedState = a.baseState = o), + (s = { + pending: null, + interleaved: null, + lanes: 0, + dispatch: null, + lastRenderedReducer: s, + lastRenderedState: o + }), + (a.queue = s), + (s = s.dispatch = xi.bind(null, ss, s)), + [a.memoizedState, s] + ); + }, + useRef: function (s) { + return ((s = { current: s }), (Th().memoizedState = s)); + }, + useState: hi, + useDebugValue: ri, + useDeferredValue: function (s) { + return (Th().memoizedState = s); + }, + useTransition: function () { + var s = hi(!1), + o = s[0]; + return ((s = vi.bind(null, s[1])), (Th().memoizedState = s), [o, s]); + }, + useMutableSource: function () {}, + useSyncExternalStore: function (s, o, i) { + var a = ss, + u = Th(); + if (Fn) { + if (void 0 === i) throw Error(p(407)); + i = i(); + } else { + if (((i = o()), null === Ls)) throw Error(p(349)); + 30 & ns || di(a, o, i); + } + u.memoizedState = i; + var _ = { value: i, getSnapshot: o }; + return ( + (u.queue = _), + mi(ai.bind(null, a, _, s), [s]), + (a.flags |= 2048), + bi(9, ci.bind(null, a, _, i, o), void 0, null), + i + ); + }, + useId: function () { + var s = Th(), + o = Ls.identifierPrefix; + if (Fn) { + var i = Rn; + ((o = ':' + o + 'R' + (i = (Mn & ~(1 << (32 - Et(Mn) - 1))).toString(32) + i)), + 0 < (i = us++) && (o += 'H' + i.toString(32)), + (o += ':')); + } else o = ':' + o + 'r' + (i = ps++).toString(32) + ':'; + return (s.memoizedState = o); + }, + unstable_isNewReconciler: !1 + }, + fs = { + readContext: eh, + useCallback: si, + useContext: eh, + useEffect: $h, + useImperativeHandle: qi, + useInsertionEffect: ni, + useLayoutEffect: oi, + useMemo: ti, + useReducer: Wh, + useRef: ji, + useState: function () { + return Wh(Vh); + }, + useDebugValue: ri, + useDeferredValue: function (s) { + return ui(Uh(), os.memoizedState, s); + }, + useTransition: function () { + return [Wh(Vh)[0], Uh().memoizedState]; + }, + useMutableSource: Yh, + useSyncExternalStore: Zh, + useId: wi, + unstable_isNewReconciler: !1 + }, + ms = { + readContext: eh, + useCallback: si, + useContext: eh, + useEffect: $h, + useImperativeHandle: qi, + useInsertionEffect: ni, + useLayoutEffect: oi, + useMemo: ti, + useReducer: Xh, + useRef: ji, + useState: function () { + return Xh(Vh); + }, + useDebugValue: ri, + useDeferredValue: function (s) { + var o = Uh(); + return null === os ? (o.memoizedState = s) : ui(o, os.memoizedState, s); + }, + useTransition: function () { + return [Xh(Vh)[0], Uh().memoizedState]; + }, + useMutableSource: Yh, + useSyncExternalStore: Zh, + useId: wi, + unstable_isNewReconciler: !1 + }; + function Ci(s, o) { + if (s && s.defaultProps) { + for (var i in ((o = we({}, o)), (s = s.defaultProps))) + void 0 === o[i] && (o[i] = s[i]); + return o; + } + return o; + } + function Di(s, o, i, a) { + ((i = null == (i = i(a, (o = s.memoizedState))) ? o : we({}, o, i)), + (s.memoizedState = i), + 0 === s.lanes && (s.updateQueue.baseState = i)); + } + var gs = { + isMounted: function (s) { + return !!(s = s._reactInternals) && Vb(s) === s; + }, + enqueueSetState: function (s, o, i) { + s = s._reactInternals; + var a = R(), + u = yi(s), + _ = mh(a, u); + ((_.payload = o), + null != i && (_.callback = i), + null !== (o = nh(s, _, u)) && (gi(o, s, u, a), oh(o, s, u))); + }, + enqueueReplaceState: function (s, o, i) { + s = s._reactInternals; + var a = R(), + u = yi(s), + _ = mh(a, u); + ((_.tag = 1), + (_.payload = o), + null != i && (_.callback = i), + null !== (o = nh(s, _, u)) && (gi(o, s, u, a), oh(o, s, u))); + }, + enqueueForceUpdate: function (s, o) { + s = s._reactInternals; + var i = R(), + a = yi(s), + u = mh(i, a); + ((u.tag = 2), + null != o && (u.callback = o), + null !== (o = nh(s, u, a)) && (gi(o, s, a, i), oh(o, s, a))); + } + }; + function Fi(s, o, i, a, u, _, w) { + return 'function' == typeof (s = s.stateNode).shouldComponentUpdate + ? s.shouldComponentUpdate(a, _, w) + : !o.prototype || !o.prototype.isPureReactComponent || !Ie(i, a) || !Ie(u, _); + } + function Gi(s, o, i) { + var a = !1, + u = Sn, + _ = o.contextType; + return ( + 'object' == typeof _ && null !== _ + ? (_ = eh(_)) + : ((u = Zf(o) ? wn : _n.current), + (_ = (a = null != (a = o.contextTypes)) ? Yf(s, u) : Sn)), + (o = new o(i, _)), + (s.memoizedState = null !== o.state && void 0 !== o.state ? o.state : null), + (o.updater = gs), + (s.stateNode = o), + (o._reactInternals = s), + a && + (((s = s.stateNode).__reactInternalMemoizedUnmaskedChildContext = u), + (s.__reactInternalMemoizedMaskedChildContext = _)), + o + ); + } + function Hi(s, o, i, a) { + ((s = o.state), + 'function' == typeof o.componentWillReceiveProps && o.componentWillReceiveProps(i, a), + 'function' == typeof o.UNSAFE_componentWillReceiveProps && + o.UNSAFE_componentWillReceiveProps(i, a), + o.state !== s && gs.enqueueReplaceState(o, o.state, null)); + } + function Ii(s, o, i, a) { + var u = s.stateNode; + ((u.props = i), (u.state = s.memoizedState), (u.refs = {}), kh(s)); + var _ = o.contextType; + ('object' == typeof _ && null !== _ + ? (u.context = eh(_)) + : ((_ = Zf(o) ? wn : _n.current), (u.context = Yf(s, _))), + (u.state = s.memoizedState), + 'function' == typeof (_ = o.getDerivedStateFromProps) && + (Di(s, o, _, i), (u.state = s.memoizedState)), + 'function' == typeof o.getDerivedStateFromProps || + 'function' == typeof u.getSnapshotBeforeUpdate || + ('function' != typeof u.UNSAFE_componentWillMount && + 'function' != typeof u.componentWillMount) || + ((o = u.state), + 'function' == typeof u.componentWillMount && u.componentWillMount(), + 'function' == typeof u.UNSAFE_componentWillMount && u.UNSAFE_componentWillMount(), + o !== u.state && gs.enqueueReplaceState(u, u.state, null), + qh(s, i, u, a), + (u.state = s.memoizedState)), + 'function' == typeof u.componentDidMount && (s.flags |= 4194308)); + } + function Ji(s, o) { + try { + var i = '', + a = o; + do { + ((i += Pa(a)), (a = a.return)); + } while (a); + var u = i; + } catch (s) { + u = '\nError generating stack: ' + s.message + '\n' + s.stack; + } + return { value: s, source: o, stack: u, digest: null }; + } + function Ki(s, o, i) { + return { + value: s, + source: null, + stack: null != i ? i : null, + digest: null != o ? o : null + }; + } + function Li(s, o) { + try { + console.error(o.value); + } catch (s) { + setTimeout(function () { + throw s; + }); + } + } + var ys = 'function' == typeof WeakMap ? WeakMap : Map; + function Ni(s, o, i) { + (((i = mh(-1, i)).tag = 3), (i.payload = { element: null })); + var a = o.value; + return ( + (i.callback = function () { + (Qs || ((Qs = !0), (Zs = a)), Li(0, o)); + }), + i + ); + } + function Qi(s, o, i) { + (i = mh(-1, i)).tag = 3; + var a = s.type.getDerivedStateFromError; + if ('function' == typeof a) { + var u = o.value; + ((i.payload = function () { + return a(u); + }), + (i.callback = function () { + Li(0, o); + })); + } + var _ = s.stateNode; + return ( + null !== _ && + 'function' == typeof _.componentDidCatch && + (i.callback = function () { + (Li(0, o), + 'function' != typeof a && + (null === eo ? (eo = new Set([this])) : eo.add(this))); + var s = o.stack; + this.componentDidCatch(o.value, { componentStack: null !== s ? s : '' }); + }), + i + ); + } + function Si(s, o, i) { + var a = s.pingCache; + if (null === a) { + a = s.pingCache = new ys(); + var u = new Set(); + a.set(o, u); + } else void 0 === (u = a.get(o)) && ((u = new Set()), a.set(o, u)); + u.has(i) || (u.add(i), (s = Ti.bind(null, s, o, i)), o.then(s, s)); + } + function Ui(s) { + do { + var o; + if ( + ((o = 13 === s.tag) && + (o = null === (o = s.memoizedState) || null !== o.dehydrated), + o) + ) + return s; + s = s.return; + } while (null !== s); + return null; + } + function Vi(s, o, i, a, u) { + return 1 & s.mode + ? ((s.flags |= 65536), (s.lanes = u), s) + : (s === o + ? (s.flags |= 65536) + : ((s.flags |= 128), + (i.flags |= 131072), + (i.flags &= -52805), + 1 === i.tag && + (null === i.alternate + ? (i.tag = 17) + : (((o = mh(-1, 1)).tag = 2), nh(i, o, 1))), + (i.lanes |= 1)), + s); + } + var vs = V.ReactCurrentOwner, + bs = !1; + function Xi(s, o, i, a) { + o.child = null === s ? Un(o, null, i, a) : qn(o, s.child, i, a); + } + function Yi(s, o, i, a, u) { + i = i.render; + var _ = o.ref; + return ( + ch(o, u), + (a = Nh(s, o, i, a, _, u)), + (i = Sh()), + null === s || bs + ? (Fn && i && vg(o), (o.flags |= 1), Xi(s, o, a, u), o.child) + : ((o.updateQueue = s.updateQueue), + (o.flags &= -2053), + (s.lanes &= ~u), + Zi(s, o, u)) + ); + } + function $i(s, o, i, a, u) { + if (null === s) { + var _ = i.type; + return 'function' != typeof _ || + aj(_) || + void 0 !== _.defaultProps || + null !== i.compare || + void 0 !== i.defaultProps + ? (((s = Rg(i.type, null, a, o, o.mode, u)).ref = o.ref), + (s.return = o), + (o.child = s)) + : ((o.tag = 15), (o.type = _), bj(s, o, _, a, u)); + } + if (((_ = s.child), !(s.lanes & u))) { + var w = _.memoizedProps; + if ((i = null !== (i = i.compare) ? i : Ie)(w, a) && s.ref === o.ref) + return Zi(s, o, u); + } + return ((o.flags |= 1), ((s = Pg(_, a)).ref = o.ref), (s.return = o), (o.child = s)); + } + function bj(s, o, i, a, u) { + if (null !== s) { + var _ = s.memoizedProps; + if (Ie(_, a) && s.ref === o.ref) { + if (((bs = !1), (o.pendingProps = a = _), !(s.lanes & u))) + return ((o.lanes = s.lanes), Zi(s, o, u)); + 131072 & s.flags && (bs = !0); + } + } + return cj(s, o, i, a, u); + } + function dj(s, o, i) { + var a = o.pendingProps, + u = a.children, + _ = null !== s ? s.memoizedState : null; + if ('hidden' === a.mode) + if (1 & o.mode) { + if (!(1073741824 & i)) + return ( + (s = null !== _ ? _.baseLanes | i : i), + (o.lanes = o.childLanes = 1073741824), + (o.memoizedState = { baseLanes: s, cachePool: null, transitions: null }), + (o.updateQueue = null), + G(qs, $s), + ($s |= s), + null + ); + ((o.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }), + (a = null !== _ ? _.baseLanes : i), + G(qs, $s), + ($s |= a)); + } else + ((o.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }), + G(qs, $s), + ($s |= i)); + else + (null !== _ ? ((a = _.baseLanes | i), (o.memoizedState = null)) : (a = i), + G(qs, $s), + ($s |= a)); + return (Xi(s, o, u, i), o.child); + } + function gj(s, o) { + var i = o.ref; + ((null === s && null !== i) || (null !== s && s.ref !== i)) && + ((o.flags |= 512), (o.flags |= 2097152)); + } + function cj(s, o, i, a, u) { + var _ = Zf(i) ? wn : _n.current; + return ( + (_ = Yf(o, _)), + ch(o, u), + (i = Nh(s, o, i, a, _, u)), + (a = Sh()), + null === s || bs + ? (Fn && a && vg(o), (o.flags |= 1), Xi(s, o, i, u), o.child) + : ((o.updateQueue = s.updateQueue), + (o.flags &= -2053), + (s.lanes &= ~u), + Zi(s, o, u)) + ); + } + function hj(s, o, i, a, u) { + if (Zf(i)) { + var _ = !0; + cg(o); + } else _ = !1; + if ((ch(o, u), null === o.stateNode)) (ij(s, o), Gi(o, i, a), Ii(o, i, a, u), (a = !0)); + else if (null === s) { + var w = o.stateNode, + x = o.memoizedProps; + w.props = x; + var C = w.context, + j = i.contextType; + 'object' == typeof j && null !== j + ? (j = eh(j)) + : (j = Yf(o, (j = Zf(i) ? wn : _n.current))); + var L = i.getDerivedStateFromProps, + B = 'function' == typeof L || 'function' == typeof w.getSnapshotBeforeUpdate; + (B || + ('function' != typeof w.UNSAFE_componentWillReceiveProps && + 'function' != typeof w.componentWillReceiveProps) || + ((x !== a || C !== j) && Hi(o, w, a, j)), + (Kn = !1)); + var $ = o.memoizedState; + ((w.state = $), + qh(o, a, w, u), + (C = o.memoizedState), + x !== a || $ !== C || En.current || Kn + ? ('function' == typeof L && (Di(o, i, L, a), (C = o.memoizedState)), + (x = Kn || Fi(o, i, x, a, $, C, j)) + ? (B || + ('function' != typeof w.UNSAFE_componentWillMount && + 'function' != typeof w.componentWillMount) || + ('function' == typeof w.componentWillMount && w.componentWillMount(), + 'function' == typeof w.UNSAFE_componentWillMount && + w.UNSAFE_componentWillMount()), + 'function' == typeof w.componentDidMount && (o.flags |= 4194308)) + : ('function' == typeof w.componentDidMount && (o.flags |= 4194308), + (o.memoizedProps = a), + (o.memoizedState = C)), + (w.props = a), + (w.state = C), + (w.context = j), + (a = x)) + : ('function' == typeof w.componentDidMount && (o.flags |= 4194308), (a = !1))); + } else { + ((w = o.stateNode), + lh(s, o), + (x = o.memoizedProps), + (j = o.type === o.elementType ? x : Ci(o.type, x)), + (w.props = j), + (B = o.pendingProps), + ($ = w.context), + 'object' == typeof (C = i.contextType) && null !== C + ? (C = eh(C)) + : (C = Yf(o, (C = Zf(i) ? wn : _n.current)))); + var U = i.getDerivedStateFromProps; + ((L = 'function' == typeof U || 'function' == typeof w.getSnapshotBeforeUpdate) || + ('function' != typeof w.UNSAFE_componentWillReceiveProps && + 'function' != typeof w.componentWillReceiveProps) || + ((x !== B || $ !== C) && Hi(o, w, a, C)), + (Kn = !1), + ($ = o.memoizedState), + (w.state = $), + qh(o, a, w, u)); + var V = o.memoizedState; + x !== B || $ !== V || En.current || Kn + ? ('function' == typeof U && (Di(o, i, U, a), (V = o.memoizedState)), + (j = Kn || Fi(o, i, j, a, $, V, C) || !1) + ? (L || + ('function' != typeof w.UNSAFE_componentWillUpdate && + 'function' != typeof w.componentWillUpdate) || + ('function' == typeof w.componentWillUpdate && + w.componentWillUpdate(a, V, C), + 'function' == typeof w.UNSAFE_componentWillUpdate && + w.UNSAFE_componentWillUpdate(a, V, C)), + 'function' == typeof w.componentDidUpdate && (o.flags |= 4), + 'function' == typeof w.getSnapshotBeforeUpdate && (o.flags |= 1024)) + : ('function' != typeof w.componentDidUpdate || + (x === s.memoizedProps && $ === s.memoizedState) || + (o.flags |= 4), + 'function' != typeof w.getSnapshotBeforeUpdate || + (x === s.memoizedProps && $ === s.memoizedState) || + (o.flags |= 1024), + (o.memoizedProps = a), + (o.memoizedState = V)), + (w.props = a), + (w.state = V), + (w.context = C), + (a = j)) + : ('function' != typeof w.componentDidUpdate || + (x === s.memoizedProps && $ === s.memoizedState) || + (o.flags |= 4), + 'function' != typeof w.getSnapshotBeforeUpdate || + (x === s.memoizedProps && $ === s.memoizedState) || + (o.flags |= 1024), + (a = !1)); + } + return jj(s, o, i, a, _, u); + } + function jj(s, o, i, a, u, _) { + gj(s, o); + var w = !!(128 & o.flags); + if (!a && !w) return (u && dg(o, i, !1), Zi(s, o, _)); + ((a = o.stateNode), (vs.current = o)); + var x = w && 'function' != typeof i.getDerivedStateFromError ? null : a.render(); + return ( + (o.flags |= 1), + null !== s && w + ? ((o.child = qn(o, s.child, null, _)), (o.child = qn(o, null, x, _))) + : Xi(s, o, x, _), + (o.memoizedState = a.state), + u && dg(o, i, !0), + o.child + ); + } + function kj(s) { + var o = s.stateNode; + (o.pendingContext + ? ag(0, o.pendingContext, o.pendingContext !== o.context) + : o.context && ag(0, o.context, !1), + yh(s, o.containerInfo)); + } + function lj(s, o, i, a, u) { + return (Ig(), Jg(u), (o.flags |= 256), Xi(s, o, i, a), o.child); + } + var Ss, + _s, + Es, + ws = { dehydrated: null, treeContext: null, retryLane: 0 }; + function nj(s) { + return { baseLanes: s, cachePool: null, transitions: null }; + } + function oj(s, o, i) { + var a, + u = o.pendingProps, + _ = Zn.current, + w = !1, + x = !!(128 & o.flags); + if ( + ((a = x) || (a = (null === s || null !== s.memoizedState) && !!(2 & _)), + a + ? ((w = !0), (o.flags &= -129)) + : (null !== s && null === s.memoizedState) || (_ |= 1), + G(Zn, 1 & _), + null === s) + ) + return ( + Eg(o), + null !== (s = o.memoizedState) && null !== (s = s.dehydrated) + ? (1 & o.mode + ? '$!' === s.data + ? (o.lanes = 8) + : (o.lanes = 1073741824) + : (o.lanes = 1), + null) + : ((x = u.children), + (s = u.fallback), + w + ? ((u = o.mode), + (w = o.child), + (x = { mode: 'hidden', children: x }), + 1 & u || null === w + ? (w = pj(x, u, 0, null)) + : ((w.childLanes = 0), (w.pendingProps = x)), + (s = Tg(s, u, i, null)), + (w.return = o), + (s.return = o), + (w.sibling = s), + (o.child = w), + (o.child.memoizedState = nj(i)), + (o.memoizedState = ws), + s) + : qj(o, x)) + ); + if (null !== (_ = s.memoizedState) && null !== (a = _.dehydrated)) + return (function rj(s, o, i, a, u, _, w) { + if (i) + return 256 & o.flags + ? ((o.flags &= -257), sj(s, o, w, (a = Ki(Error(p(422)))))) + : null !== o.memoizedState + ? ((o.child = s.child), (o.flags |= 128), null) + : ((_ = a.fallback), + (u = o.mode), + (a = pj({ mode: 'visible', children: a.children }, u, 0, null)), + ((_ = Tg(_, u, w, null)).flags |= 2), + (a.return = o), + (_.return = o), + (a.sibling = _), + (o.child = a), + 1 & o.mode && qn(o, s.child, null, w), + (o.child.memoizedState = nj(w)), + (o.memoizedState = ws), + _); + if (!(1 & o.mode)) return sj(s, o, w, null); + if ('$!' === u.data) { + if ((a = u.nextSibling && u.nextSibling.dataset)) var x = a.dgst; + return ((a = x), sj(s, o, w, (a = Ki((_ = Error(p(419))), a, void 0)))); + } + if (((x = !!(w & s.childLanes)), bs || x)) { + if (null !== (a = Ls)) { + switch (w & -w) { + case 4: + u = 2; + break; + case 16: + u = 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: + u = 32; + break; + case 536870912: + u = 268435456; + break; + default: + u = 0; + } + 0 !== (u = u & (a.suspendedLanes | w) ? 0 : u) && + u !== _.retryLane && + ((_.retryLane = u), ih(s, u), gi(a, s, u, -1)); + } + return (tj(), sj(s, o, w, (a = Ki(Error(p(421)))))); + } + return '$?' === u.data + ? ((o.flags |= 128), + (o.child = s.child), + (o = uj.bind(null, s)), + (u._reactRetry = o), + null) + : ((s = _.treeContext), + (Ln = Lf(u.nextSibling)), + (Dn = o), + (Fn = !0), + (Bn = null), + null !== s && + ((In[Tn++] = Mn), + (In[Tn++] = Rn), + (In[Tn++] = Nn), + (Mn = s.id), + (Rn = s.overflow), + (Nn = o)), + (o = qj(o, a.children)), + (o.flags |= 4096), + o); + })(s, o, x, u, a, _, i); + if (w) { + ((w = u.fallback), (x = o.mode), (a = (_ = s.child).sibling)); + var C = { mode: 'hidden', children: u.children }; + return ( + 1 & x || o.child === _ + ? ((u = Pg(_, C)).subtreeFlags = 14680064 & _.subtreeFlags) + : (((u = o.child).childLanes = 0), (u.pendingProps = C), (o.deletions = null)), + null !== a ? (w = Pg(a, w)) : ((w = Tg(w, x, i, null)).flags |= 2), + (w.return = o), + (u.return = o), + (u.sibling = w), + (o.child = u), + (u = w), + (w = o.child), + (x = + null === (x = s.child.memoizedState) + ? nj(i) + : { baseLanes: x.baseLanes | i, cachePool: null, transitions: x.transitions }), + (w.memoizedState = x), + (w.childLanes = s.childLanes & ~i), + (o.memoizedState = ws), + u + ); + } + return ( + (s = (w = s.child).sibling), + (u = Pg(w, { mode: 'visible', children: u.children })), + !(1 & o.mode) && (u.lanes = i), + (u.return = o), + (u.sibling = null), + null !== s && + (null === (i = o.deletions) ? ((o.deletions = [s]), (o.flags |= 16)) : i.push(s)), + (o.child = u), + (o.memoizedState = null), + u + ); + } + function qj(s, o) { + return ( + ((o = pj({ mode: 'visible', children: o }, s.mode, 0, null)).return = s), + (s.child = o) + ); + } + function sj(s, o, i, a) { + return ( + null !== a && Jg(a), + qn(o, s.child, null, i), + ((s = qj(o, o.pendingProps.children)).flags |= 2), + (o.memoizedState = null), + s + ); + } + function vj(s, o, i) { + s.lanes |= o; + var a = s.alternate; + (null !== a && (a.lanes |= o), bh(s.return, o, i)); + } + function wj(s, o, i, a, u) { + var _ = s.memoizedState; + null === _ + ? (s.memoizedState = { + isBackwards: o, + rendering: null, + renderingStartTime: 0, + last: a, + tail: i, + tailMode: u + }) + : ((_.isBackwards = o), + (_.rendering = null), + (_.renderingStartTime = 0), + (_.last = a), + (_.tail = i), + (_.tailMode = u)); + } + function xj(s, o, i) { + var a = o.pendingProps, + u = a.revealOrder, + _ = a.tail; + if ((Xi(s, o, a.children, i), 2 & (a = Zn.current))) + ((a = (1 & a) | 2), (o.flags |= 128)); + else { + if (null !== s && 128 & s.flags) + e: for (s = o.child; null !== s; ) { + if (13 === s.tag) null !== s.memoizedState && vj(s, i, o); + else if (19 === s.tag) vj(s, i, o); + else if (null !== s.child) { + ((s.child.return = s), (s = s.child)); + continue; + } + if (s === o) break e; + for (; null === s.sibling; ) { + if (null === s.return || s.return === o) break e; + s = s.return; + } + ((s.sibling.return = s.return), (s = s.sibling)); + } + a &= 1; + } + if ((G(Zn, a), 1 & o.mode)) + switch (u) { + case 'forwards': + for (i = o.child, u = null; null !== i; ) + (null !== (s = i.alternate) && null === Ch(s) && (u = i), (i = i.sibling)); + (null === (i = u) + ? ((u = o.child), (o.child = null)) + : ((u = i.sibling), (i.sibling = null)), + wj(o, !1, u, i, _)); + break; + case 'backwards': + for (i = null, u = o.child, o.child = null; null !== u; ) { + if (null !== (s = u.alternate) && null === Ch(s)) { + o.child = u; + break; + } + ((s = u.sibling), (u.sibling = i), (i = u), (u = s)); + } + wj(o, !0, i, null, _); + break; + case 'together': + wj(o, !1, null, null, void 0); + break; + default: + o.memoizedState = null; + } + else o.memoizedState = null; + return o.child; + } + function ij(s, o) { + !(1 & o.mode) && + null !== s && + ((s.alternate = null), (o.alternate = null), (o.flags |= 2)); + } + function Zi(s, o, i) { + if ( + (null !== s && (o.dependencies = s.dependencies), + (zs |= o.lanes), + !(i & o.childLanes)) + ) + return null; + if (null !== s && o.child !== s.child) throw Error(p(153)); + if (null !== o.child) { + for ( + i = Pg((s = o.child), s.pendingProps), o.child = i, i.return = o; + null !== s.sibling; + ) + ((s = s.sibling), ((i = i.sibling = Pg(s, s.pendingProps)).return = o)); + i.sibling = null; + } + return o.child; + } + function Dj(s, o) { + if (!Fn) + switch (s.tailMode) { + case 'hidden': + o = s.tail; + for (var i = null; null !== o; ) + (null !== o.alternate && (i = o), (o = o.sibling)); + null === i ? (s.tail = null) : (i.sibling = null); + break; + case 'collapsed': + i = s.tail; + for (var a = null; null !== i; ) + (null !== i.alternate && (a = i), (i = i.sibling)); + null === a + ? o || null === s.tail + ? (s.tail = null) + : (s.tail.sibling = null) + : (a.sibling = null); + } + } + function S(s) { + var o = null !== s.alternate && s.alternate.child === s.child, + i = 0, + a = 0; + if (o) + for (var u = s.child; null !== u; ) + ((i |= u.lanes | u.childLanes), + (a |= 14680064 & u.subtreeFlags), + (a |= 14680064 & u.flags), + (u.return = s), + (u = u.sibling)); + else + for (u = s.child; null !== u; ) + ((i |= u.lanes | u.childLanes), + (a |= u.subtreeFlags), + (a |= u.flags), + (u.return = s), + (u = u.sibling)); + return ((s.subtreeFlags |= a), (s.childLanes = i), o); + } + function Ej(s, o, i) { + var a = o.pendingProps; + switch ((wg(o), o.tag)) { + case 2: + case 16: + case 15: + case 0: + case 11: + case 7: + case 8: + case 12: + case 9: + case 14: + return (S(o), null); + case 1: + case 17: + return (Zf(o.type) && $f(), S(o), null); + case 3: + return ( + (a = o.stateNode), + zh(), + E(En), + E(_n), + Eh(), + a.pendingContext && ((a.context = a.pendingContext), (a.pendingContext = null)), + (null !== s && null !== s.child) || + (Gg(o) + ? (o.flags |= 4) + : null === s || + (s.memoizedState.isDehydrated && !(256 & o.flags)) || + ((o.flags |= 1024), null !== Bn && (Fj(Bn), (Bn = null)))), + S(o), + null + ); + case 5: + Bh(o); + var u = xh(Qn.current); + if (((i = o.type), null !== s && null != o.stateNode)) + (_s(s, o, i, a), s.ref !== o.ref && ((o.flags |= 512), (o.flags |= 2097152))); + else { + if (!a) { + if (null === o.stateNode) throw Error(p(166)); + return (S(o), null); + } + if (((s = xh(Yn.current)), Gg(o))) { + ((a = o.stateNode), (i = o.type)); + var _ = o.memoizedProps; + switch (((a[hn] = o), (a[dn] = _), (s = !!(1 & o.mode)), i)) { + case 'dialog': + (D('cancel', a), D('close', a)); + break; + case 'iframe': + case 'object': + case 'embed': + D('load', a); + break; + case 'video': + case 'audio': + for (u = 0; u < Zr.length; u++) D(Zr[u], a); + break; + case 'source': + D('error', a); + break; + case 'img': + case 'image': + case 'link': + (D('error', a), D('load', a)); + break; + case 'details': + D('toggle', a); + break; + case 'input': + (Za(a, _), D('invalid', a)); + break; + case 'select': + ((a._wrapperState = { wasMultiple: !!_.multiple }), D('invalid', a)); + break; + case 'textarea': + (hb(a, _), D('invalid', a)); + } + for (var x in (ub(i, _), (u = null), _)) + if (_.hasOwnProperty(x)) { + var C = _[x]; + 'children' === x + ? 'string' == typeof C + ? a.textContent !== C && + (!0 !== _.suppressHydrationWarning && Af(a.textContent, C, s), + (u = ['children', C])) + : 'number' == typeof C && + a.textContent !== '' + C && + (!0 !== _.suppressHydrationWarning && Af(a.textContent, C, s), + (u = ['children', '' + C])) + : w.hasOwnProperty(x) && null != C && 'onScroll' === x && D('scroll', a); + } + switch (i) { + case 'input': + (Va(a), db(a, _, !0)); + break; + case 'textarea': + (Va(a), jb(a)); + break; + case 'select': + case 'option': + break; + default: + 'function' == typeof _.onClick && (a.onclick = Bf); + } + ((a = u), (o.updateQueue = a), null !== a && (o.flags |= 4)); + } else { + ((x = 9 === u.nodeType ? u : u.ownerDocument), + 'http://www.w3.org/1999/xhtml' === s && (s = kb(i)), + 'http://www.w3.org/1999/xhtml' === s + ? 'script' === i + ? (((s = x.createElement('div')).innerHTML = ' diff --git a/src/lib/components/admin/Users/Groups/Users.svelte b/src/lib/components/admin/Users/Groups/Users.svelte index 4af8fe418f..ace5141a7f 100644 --- a/src/lib/components/admin/Users/Groups/Users.svelte +++ b/src/lib/components/admin/Users/Groups/Users.svelte @@ -261,7 +261,6 @@ {dayjs(user.last_active_at * 1000).fromNow()} - {/each} diff --git a/src/lib/components/admin/Users/UserList.svelte b/src/lib/components/admin/Users/UserList.svelte index 9ca0a65d38..40c7cffb07 100644 --- a/src/lib/components/admin/Users/UserList.svelte +++ b/src/lib/components/admin/Users/UserList.svelte @@ -438,24 +438,24 @@ }} > - - - + xmlns="http://www.w3.org/2000/svg" + fill="none" + viewBox="0 0 24 24" + stroke-width="1.5" + stroke="currentColor" + class="w-4 h-4" + > + + + {/if} @@ -555,5 +555,9 @@ {/if} {#if selectedUser} - + {/if} diff --git a/src/lib/components/automations/ModelDropdown.svelte b/src/lib/components/automations/ModelDropdown.svelte index ed14d90a0c..848c6507d0 100644 --- a/src/lib/components/automations/ModelDropdown.svelte +++ b/src/lib/components/automations/ModelDropdown.svelte @@ -24,13 +24,14 @@ ? $models.find((m) => m.id === model_id)?.name || model_id : $i18n.t('Select model'); - $: filteredModels = (modelSearch - ? $models.filter( - (m) => - m.name.toLowerCase().includes(modelSearch.toLowerCase()) || - m.id.toLowerCase().includes(modelSearch.toLowerCase()) - ) - : $models + $: filteredModels = ( + modelSearch + ? $models.filter( + (m) => + m.name.toLowerCase().includes(modelSearch.toLowerCase()) || + m.id.toLowerCase().includes(modelSearch.toLowerCase()) + ) + : $models ).filter((m) => !(m?.info?.meta?.hidden ?? false)); diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index a1243020cf..69652dbe41 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -184,7 +184,6 @@ let files = []; let params = {}; - $: if (chatIdProp) { navigateHandler(); } diff --git a/src/lib/components/chat/Messages/ContentRenderer.svelte b/src/lib/components/chat/Messages/ContentRenderer.svelte index 2c5fccb8e4..aeecd6fa7a 100644 --- a/src/lib/components/chat/Messages/ContentRenderer.svelte +++ b/src/lib/components/chat/Messages/ContentRenderer.svelte @@ -230,7 +230,8 @@ {id} content={model?.info?.meta?.capabilities?.citations == false ? replaceOutsideCode(content, (segment) => - segment.replace(/\s*(\[(?:\d+(?:#[^,\]\s]+)?(?:,\s*\d+(?:#[^,\]\s]+)?)*)\])+/g, '')) + segment.replace(/\s*(\[(?:\d+(?:#[^,\]\s]+)?(?:,\s*\d+(?:#[^,\]\s]+)?)*)\])+/g, '') + ) : content} {model} {save} diff --git a/src/lib/components/common/Dropdown.svelte b/src/lib/components/common/Dropdown.svelte index c5542f9aa3..26b5a0a648 100644 --- a/src/lib/components/common/Dropdown.svelte +++ b/src/lib/components/common/Dropdown.svelte @@ -169,7 +169,13 @@ on:resize={positionContent} /> - + diff --git a/src/lib/components/layout/Sidebar/ChatItem.svelte b/src/lib/components/layout/Sidebar/ChatItem.svelte index 7900ca8067..a0ebfb484c 100644 --- a/src/lib/components/layout/Sidebar/ChatItem.svelte +++ b/src/lib/components/layout/Sidebar/ChatItem.svelte @@ -368,7 +368,9 @@ // For the active chat, prefer the live dropdown selection. if (id === $chatId) { - try { model = JSON.parse(sessionStorage.selectedModels || '[]').find((m) => m) ?? ''; } catch {} + try { + model = JSON.parse(sessionStorage.selectedModels || '[]').find((m) => m) ?? ''; + } catch {} } if (!model && history?.messages && history?.currentId) { diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte index 61095455b4..83d2207211 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase.svelte @@ -1117,7 +1117,10 @@ onDestroy(() => { clearTimeout(searchDebounceTimer); - if (pendingPollTimer) { clearInterval(pendingPollTimer); pendingPollTimer = null; } + if (pendingPollTimer) { + clearInterval(pendingPollTimer); + pendingPollTimer = null; + } mediaQuery?.removeEventListener('change', handleMediaQuery); const dropZone = document.querySelector('body'); dropZone?.removeEventListener('dragover', onDragOver); @@ -1125,7 +1128,6 @@ dropZone?.removeEventListener('dragleave', onDragLeave); }); - const decodeString = (str: string) => { try { return decodeURIComponent(str); diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase/DirectoryRow.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase/DirectoryRow.svelte index 6c36904508..23d26df782 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase/DirectoryRow.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase/DirectoryRow.svelte @@ -64,10 +64,7 @@ : 'hover:bg-gray-100 dark:hover:bg-gray-850'}" draggable="true" on:dragstart={(e) => { - e.dataTransfer?.setData( - 'application/x-kb-dir-move', - JSON.stringify({ dirId: directory.id }) - ); + e.dataTransfer?.setData('application/x-kb-dir-move', JSON.stringify({ dirId: directory.id })); }} on:dblclick={() => { if (writeAccess) startRename(); diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte index 13e72ae8ac..f48cf78530 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase/Files.svelte @@ -83,10 +83,7 @@ on:dragstart={(e) => { const fileId = file?.id ?? file?.tempId; if (fileId) { - e.dataTransfer?.setData( - 'application/x-kb-file-move', - JSON.stringify({ fileId }) - ); + e.dataTransfer?.setData('application/x-kb-file-move', JSON.stringify({ fileId })); } }} > diff --git a/src/lib/components/workspace/Knowledge/KnowledgeBase/KnowledgeBreadcrumbs.svelte b/src/lib/components/workspace/Knowledge/KnowledgeBase/KnowledgeBreadcrumbs.svelte index f124acb2ff..db84379d56 100644 --- a/src/lib/components/workspace/Knowledge/KnowledgeBase/KnowledgeBreadcrumbs.svelte +++ b/src/lib/components/workspace/Knowledge/KnowledgeBase/KnowledgeBreadcrumbs.svelte @@ -61,9 +61,7 @@ {breadcrumbs.length === 0 ? 'text-gray-700 dark:text-gray-300' : 'text-gray-400 dark:text-gray-500 hover:text-gray-600 dark:hover:text-gray-400'} - {dragOverCrumb === -1 - ? 'bg-gray-100 dark:bg-gray-800 rounded-lg' - : ''}" + {dragOverCrumb === -1 ? 'bg-gray-100 dark:bg-gray-800 rounded-lg' : ''}" on:click={() => onNavigate(null)} on:dragover={(e) => handleDragOver(e, -1)} on:dragleave={() => handleDragLeave(-1)} @@ -79,9 +77,7 @@ {i === breadcrumbs.length - 1 ? 'text-gray-700 dark:text-gray-300' : 'text-gray-400 dark:text-gray-500 hover:text-gray-600 dark:hover:text-gray-400'} - {dragOverCrumb === i - ? 'bg-gray-100 dark:bg-gray-800 rounded-lg' - : ''}" + {dragOverCrumb === i ? 'bg-gray-100 dark:bg-gray-800 rounded-lg' : ''}" on:click={() => onNavigate(crumb.id)} on:dragover={(e) => handleDragOver(e, i)} on:dragleave={() => handleDragLeave(i)} diff --git a/src/lib/components/workspace/Models/SkillsSelector.svelte b/src/lib/components/workspace/Models/SkillsSelector.svelte index 6effb1dc43..55c8b93977 100644 --- a/src/lib/components/workspace/Models/SkillsSelector.svelte +++ b/src/lib/components/workspace/Models/SkillsSelector.svelte @@ -15,9 +15,7 @@ $: filteredSkillKeys = Object.keys(_skills).filter((id) => { if (!searchQuery.trim()) return true; const q = searchQuery.toLowerCase(); - return ( - _skills[id].name?.toLowerCase().includes(q) || _skills[id].id?.toLowerCase().includes(q) - ); + return _skills[id].name?.toLowerCase().includes(q) || _skills[id].id?.toLowerCase().includes(q); }); onMount(() => { diff --git a/src/lib/i18n/locales/ar-BH/translation.json b/src/lib/i18n/locales/ar-BH/translation.json index 3ea94d28a3..9abdb0c22d 100644 --- a/src/lib/i18n/locales/ar-BH/translation.json +++ b/src/lib/i18n/locales/ar-BH/translation.json @@ -9,12 +9,25 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ نماذج }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_zero": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_two": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_zero": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_two": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_zero": "", @@ -197,6 +210,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -243,6 +257,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "المستخدمون المتاحون", "available!": "متاح", @@ -402,13 +417,21 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "الأوامر", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_zero": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_two": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "الطلبات المتزامنة", "Config": "", "Config imported successfully": "", @@ -541,12 +564,14 @@ "Delete a model": "حذف الموديل", "Delete All": "", "Delete All Chats": "حذف جميع الدردشات", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "حذف المحادثه.", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -583,6 +608,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -691,6 +721,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "نموذج التضمين", "Embedding Model Engine": "تضمين محرك النموذج", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -769,6 +800,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "أدخل كود اللغة", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -905,6 +937,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -958,14 +991,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "وضع الملف", + "File moved.": "", "File name": "", "File not found.": "لم يتم العثور على الملف.", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1181,13 +1216,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1231,6 +1266,7 @@ "Light": "فاتح", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1381,6 +1417,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "دردشة جديدة", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1426,11 +1464,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1451,6 +1491,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1490,6 +1531,7 @@ "On": "تشغيل", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1561,6 +1603,7 @@ "PDF document (.pdf)": "PDF ملف (.pdf)", "PDF Extract Images (OCR)": "PDF أستخرج الصور (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "قيد الانتظار", "Pending": "", "Pending User Overlay Content": "", @@ -1622,6 +1665,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "أخر 30 يوم", "Previous 7 days": "أخر 7 أيام", "Previous message": "", @@ -1699,6 +1743,12 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "حذف الموديل", + "Removing {{count}} stale files..._zero": "", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._two": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "إعادة تسمية", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1717,6 +1767,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "إعادة تعيين الصورة", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1788,6 +1839,7 @@ "Search Prompts": "أبحث حث", "Search Result Count": "عدد نتائج البحث", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1989,6 +2041,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2061,7 +2115,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2069,7 +2122,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "شرح شامل", "Thought": "", "Thought for {{DURATION}}": "", @@ -2105,6 +2158,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2183,7 +2237,7 @@ "Upload Progress": "جاري التحميل", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2203,6 +2257,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/ar/translation.json b/src/lib/i18n/locales/ar/translation.json index d36f4c4bbf..3c2cd715eb 100644 --- a/src/lib/i18n/locales/ar/translation.json +++ b/src/lib/i18n/locales/ar/translation.json @@ -9,12 +9,25 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "النماذج: {{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_zero": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_two": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} سطر/أسطر مخفية", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_zero": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_two": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} رد/ردود", "{{COUNT}} Rows": "", "{{count}} selected_zero": "", @@ -197,6 +210,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "هل أنت متأكد من رغبتك في حذف هذه القناة؟", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "هل أنت متأكد من رغبتك في حذف هذه الرسالة؟", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -243,6 +257,7 @@ "Automations": "", "Available list": "القائمة المتاحة", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "المستخدمون المتاحون", "available!": "متاح!", @@ -402,13 +417,21 @@ "ComfyUI Workflow": "سير عمل ComfyUI", "ComfyUI Workflow Nodes": "عقد سير عمل ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "الأمر", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "الإكمالات", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_zero": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_two": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "الطلبات المتزامنة", "Config": "", "Config imported successfully": "", @@ -541,12 +564,14 @@ "Delete a model": "حذف الموديل", "Delete All": "", "Delete All Chats": "حذف جميع الدردشات", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "حذف المحادثه.", "Delete chat?": "هل تريد حذف المحادثة؟", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "هل تريد حذف المجلد؟", @@ -583,6 +608,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "تتيح الاتصالات المباشرة للمستخدمين الاتصال بنقاط نهاية API متوافقة مع OpenAI الخاصة بهم.", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -691,6 +721,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "نموذج التضمين", "Embedding Model Engine": "تضمين محرك النموذج", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -769,6 +800,7 @@ "Enter Kagi Search API Key": "أدخل مفتاح API لـ Kagi Search", "Enter Key Behavior": "أدخل سلوك المفتاح", "Enter language codes": "أدخل كود اللغة", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -905,6 +937,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -958,14 +991,16 @@ "File content updated successfully.": "تم تحديث محتوى الملف بنجاح.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "وضع الملف", + "File moved.": "", "File name": "", "File not found.": "لم يتم العثور على الملف.", "File removed successfully.": "تم حذف الملف بنجاح.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "يجب ألا يتجاوز حجم الملف {{maxSize}} ميغابايت.", "File Upload": "", "File uploaded successfully": "تم رفع الملف بنجاح", - "File uploaded!": "", "Filename": "", "Files": "الملفات", "Filter": "", @@ -1181,13 +1216,13 @@ "Knowledge": "المعرفة", "Knowledge Access": "الوصول إلى المعرفة", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "تم إنشاء المعرفة بنجاح.", "Knowledge deleted successfully.": "تم حذف المعرفة بنجاح.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "تم إعادة تعيين المعرفة بنجاح.", "Knowledge Sharing": "", "Knowledge updated successfully": "تم تحديث المعرفة بنجاح", "Kokoro.js (Browser)": "Kokoro.js (المتصفح)", @@ -1231,6 +1266,7 @@ "Light": "فاتح", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "جارٍ الاستماع...", @@ -1381,6 +1417,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "دردشة جديدة", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "مجلد جديد", @@ -1426,11 +1464,13 @@ "No HTML, CSS, or JavaScript content found.": "لم يتم العثور على محتوى HTML أو CSS أو JavaScript.", "No inference engine with management support found": "لم يتم العثور على محرك استدلال يدعم الإدارة", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "لم يتم العثور على معرفة", "No limit": "", "No memories to clear": "لا توجد ذاكرة لمسحها", "No model IDs": "لا توجد معرّفات نماذج", + "No models accessible": "", "No models available": "", "No models found": "لم يتم العثور على نماذج", "No models selected": "لم يتم اختيار نماذج", @@ -1451,6 +1491,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "لم يتم العثور على مستخدمين.", "No valves": "", @@ -1490,6 +1531,7 @@ "On": "تشغيل", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1561,6 +1603,7 @@ "PDF document (.pdf)": "PDF ملف (.pdf)", "PDF Extract Images (OCR)": "PDF أستخرج الصور (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "قيد الانتظار", "Pending": "", "Pending User Overlay Content": "", @@ -1622,6 +1665,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "يُستخدم معرف البادئة لتفادي التعارض مع الاتصالات الأخرى من خلال إضافة بادئة إلى معرفات النماذج – اتركه فارغًا لتعطيله", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "أخر 30 يوم", "Previous 7 days": "أخر 7 أيام", "Previous message": "", @@ -1699,6 +1743,12 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "حذف الموديل", + "Removing {{count}} stale files..._zero": "", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._two": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "إعادة تسمية", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1717,6 +1767,7 @@ "Reset": "إعادة تعيين", "Reset All Models": "إعادة تعيين جميع النماذج", "Reset Image": "إعادة تعيين الصورة", + "Reset knowledge base?": "", "Reset Upload Directory": "إعادة تعيين مجلد التحميل", "Reset Vector Storage/Knowledge": "إعادة تعيين تخزين المتجهات/المعرفة", "Reset view": "إعادة تعيين العرض", @@ -1788,6 +1839,7 @@ "Search Prompts": "أبحث حث", "Search Result Count": "عدد نتائج البحث", "Search Skills": "", + "Search skills...": "", "Search the internet": "البحث في الإنترنت", "Search the web and fetch URLs": "", "Search Tools": "أدوات البحث", @@ -1989,6 +2041,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "مزامنة المجلد", "Sync Failed": "", @@ -2061,7 +2115,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "هذا الخيار يحدد عدد الرموز التي يتم الاحتفاظ بها عند تحديث السياق. مثلاً، إذا تم ضبطه على 2، سيتم الاحتفاظ بآخر رمزين من السياق. الحفاظ على السياق يساعد في استمرارية المحادثة، لكنه قد يحد من التفاعل مع مواضيع جديدة.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "يحدد هذا الخيار الحد الأقصى لعدد الرموز التي يمكن للنموذج توليدها في الرد. زيادته تتيح للنموذج تقديم إجابات أطول، لكنها قد تزيد من احتمالية توليد محتوى غير مفيد أو غير ذي صلة.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "سيؤدي هذا الخيار إلى حذف جميع الملفات الحالية في المجموعة واستبدالها بالملفات التي تم تحميلها حديثًا.", "This response was generated by \"{{model}}\"": "تم توليد هذا الرد بواسطة \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "هذا سيقوم بالحذف", @@ -2069,7 +2122,7 @@ "This will delete all models including custom models": "هذا سيحذف جميع النماذج بما في ذلك النماذج المخصصة", "This will delete all models including custom models and cannot be undone.": "هذا سيحذف جميع النماذج بما في ذلك المخصصة ولا يمكن التراجع عن هذا الإجراء.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "هذا سيؤدي إلى إعادة تعيين قاعدة المعرفة ومزامنة جميع الملفات. هل ترغب في المتابعة؟", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "شرح شامل", "Thought": "", "Thought for {{DURATION}}": "فكّر لمدة {{DURATION}}", @@ -2105,6 +2158,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2183,7 +2237,7 @@ "Upload Progress": "جاري التحميل", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "الرابط", "URL is required": "", @@ -2203,6 +2257,7 @@ "User Groups": "", "User location successfully retrieved.": "تم استرجاع موقع المستخدم بنجاح.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/az-AZ/translation.json b/src/lib/i18n/locales/az-AZ/translation.json index c6f09dc109..346686703c 100644 --- a/src/lib/i18n/locales/az-AZ/translation.json +++ b/src/lib/i18n/locales/az-AZ/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[Bu gün saat] h:mm A", "[Yesterday at] h:mm A": "[Dünən saat] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Mövcud Alət", "{{COUNT}} characters": "{{COUNT}} simvol", "{{COUNT}} extracted lines": "{{COUNT}} çıxarılmış sətir", "{{COUNT}} files": "{{COUNT}} fayl", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} gizli sətir", "{{COUNT}} members": "{{COUNT}} üzv", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Cavab", "{{COUNT}} Rows": "{{COUNT}} Sətir", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Bütün çatları silmək istədiyinizə əminsiniz? Bu əməliyyat geri qaytarıla bilməz.", "Are you sure you want to delete this channel?": "Bu kanalı silmək istədiyinizə əminsiniz?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Bu mesajı silmək istədiyinizə əminsiniz?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Bu versiyanı silmək istədiyinizə əminsiniz? Alt versiyalar bu versiyanın valideyninə yenidən bağlanacaq.", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Mövcud siyahı", "Available models": "Mövcud modellər", + "Available Skills": "", "Available Tools": "Mövcud alətlər", "available users": "mövcud istifadəçilər", "available!": "mövcuddur!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI iş axını (Workflow)", "ComfyUI Workflow Nodes": "ComfyUI iş axını düyünləri (Nodes)", "Comma separated Node Ids (e.g. 1 or 1,2)": "Vergüllə ayrılmış düyün ID-ləri (məsələn: 1 və ya 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "əmr", "Command": "Əmr", "Comment": "Şərh", "Commit Message": "Təsdiqləmə mesajı (Commit Message)", "Community Reviews": "İcma rəyləri", + "Comparing with knowledge base...": "", "Completions": "Tamamlamalar", "Compress Images in Channels": "Kanallarda şəkilləri sıx", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Eyni vaxtda olan sorğular", "Config": "Konfiqurasiya", "Config imported successfully": "Konfiqurasiya uğurla idxal edildi", @@ -537,12 +548,14 @@ "Delete a model": "Modeli sil", "Delete All": "Hamısını sil", "Delete All Chats": "Bütün çatları sil", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Bu qovluğun daxilindəki bütün məzmunu sil", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Çatı sil", "Delete chat?": "Çat silinsin?", + "Delete directory?": "", "Delete Event": "", "Delete File": "Faylı sil", "Delete folder?": "Qovluq silinsin?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Birbaşa bağlantılar istifadəçilərə öz OpenAI uyğun API son nöqtələrinə qoşulmağa imkan verir.", "Direct Message": "Birbaşa mesaj", "Direct Tool Servers": "Birbaşa alət serverləri", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Kataloq seçimi ləğv edildi", "Disable All": "Hamısını söndür", "Disable Code Interpreter": "Kod tərcüməçisini (Interpreter) söndür", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "Eyni vaxtda olan yerləşdirmə sorğuları", "Embedding Model": "Yerləşdirmə modeli", "Embedding Model Engine": "Yerləşdirmə modeli mühərriki", + "Emoji": "", "Emojis": "", "Empty message": "Boş mesaj", "Enable All": "Hamısını aktiv et", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Kagi Search API açarını daxil edin", "Enter Key Behavior": "Açar davranışını (Key Behavior) daxil edin", "Enter language codes": "Dil kodlarını daxil edin", + "Enter Linkup API Key": "", "Enter MinerU API Key": "MinerU API açarını daxil edin", "Enter Mistral API Base URL": "Mistral API baza URL-ini daxil edin", "Enter Mistral API Key": "Mistral API açarını daxil edin", @@ -901,6 +921,7 @@ "Failed to archive chat.": "Çat arxivləşdirilmədi.", "Failed to attach file": "Fayl əlavə edilmədi", "Failed to clear status": "Status təmizlənmədi", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI alət serverinə qoşulmaq mümkün olmadı", "Failed to connect to {{URL}} terminal server": "{{URL}} terminal serverinə qoşulmaq mümkün olmadı", "Failed to copy link": "Link kopyalanmadı", @@ -954,14 +975,16 @@ "File content updated successfully.": "Fayl məzmunu uğurla yeniləndi.", "File Context": "Fayl konteksti", "File deleted successfully.": "Fayl uğurla silindi.", + "File Extensions": "", "File Mode": "Fayl rejimi", + "File moved.": "", "File name": "Fayl adı", "File not found.": "Fayl tapılmadı.", "File removed successfully.": "Fayl uğurla çıxarıldı.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Fayl ölçüsü {{maxSize}} MB-ı keçməməlidir.", "File Upload": "Fayl yükləmə", "File uploaded successfully": "Fayl uğurla yükləndi", - "File uploaded!": "Fayl yükləndi!", "Filename": "Fayl adı", "Files": "Fayllar", "Filter": "Süzgəc (Filter)", @@ -1177,13 +1200,13 @@ "Knowledge": "Bilik", "Knowledge Access": "Bilik bazasına giriş", "Knowledge Base": "Bilik bazası", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Bilik uğurla yaradıldı.", "Knowledge deleted successfully.": "Bilik uğurla silindi.", "Knowledge Description": "Bilik təsviri", "Knowledge exported successfully": "Bilik uğurla ixrac edildi", "Knowledge Name": "Bilik adı", "Knowledge Public Sharing": "Biliyin ictimai paylaşımı", - "Knowledge reset successfully.": "Bilik uğurla sıfırlandı.", "Knowledge Sharing": "Biliyin paylaşılması", "Knowledge updated successfully": "Bilik uğurla yeniləndi", "Kokoro.js (Browser)": "Kokoro.js (Brauzer)", @@ -1227,6 +1250,7 @@ "Light": "Açıq (Light)", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Eyni vaxtda aparılan axtarış sorğularını məhdudlaşdırın. 0 = limitsiz (standart). Ardıcıl icra üçün 1 təyin edin.", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Eyni vaxtda olan yerləşdirmə (embedding) sorğularının sayını məhdudlaşdırır. Limitsiz üçün 0 təyin edin.", + "Linkup API Key": "", "List": "Siyahı", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Dinlənilir...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Yeni Çat", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "Yeni Fayl", "New Folder": "Yeni Qovluq", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML, CSS və ya JavaScript məzmunu tapılmadı.", "No inference engine with management support found": "İdarəetmə dəstəyi olan çıxarış mühərriki (inference engine) tapılmadı", "No kernel": "Nüvə (kernel) yoxdur", + "No knowledge bases accessible": "", "No knowledge bases found.": "Bilik bazası tapılmadı.", "No knowledge found": "Bilik tapılmadı", "No limit": "", "No memories to clear": "Təmizlənməli yaddaş yoxdur", "No model IDs": "Model ID-si yoxdur", + "No models accessible": "", "No models available": "Mövcud model yoxdur", "No models found": "Model tapılmadı", "No models selected": "Model seçilməyib", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "Konfiqurasiya edilmiş Terminal bağlantısı yoxdur.", "No terminal connections configured.": "Konfiqurasiya edilmiş terminal bağlantıları yoxdur.", "No tool server connections configured.": "Konfiqurasiya edilmiş alət serveri bağlantıları yoxdur.", + "No tools accessible": "", "No tools found": "Alət tapılmadı", "No users were found.": "İstifadəçi tapılmadı.", "No valves": "Klapan (valve) yoxdur", @@ -1486,6 +1515,7 @@ "On": "Açıq", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Yalnız \"Böyük mətni fayl kimi yapışdır\" ayarı aktiv olduqda işləyir.", "Only active when the chat input is in focus and an LLM is generating a response.": "Yalnız çat girişi fokusda olduqda və LLM cavab yaratdıqda aktiv olur.", "Only active when the chat input is in focus.": "Yalnız çat girişi fokusda olduqda aktiv olur.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF sənədi (.pdf)", "PDF Extract Images (OCR)": "PDF-dən şəkillərin çıxarılması (OCR)", "PDF Loader Mode": "PDF yükləyici rejimi", + "pdf, docx, pptx, xlsx": "", "pending": "gözləmədə", "Pending": "Gözləmədə", "Pending User Overlay Content": "Gözləyən istifadəçi örtük məzmunu", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefiks ID model ID-lərinə prefiks əlavə edərək digər bağlantılarla ziddiyyətlərin qarşısını almaq üçün istifadə olunur - söndürmək üçün boş saxlayın", "Prevent File Creation": "Fayl yaradılmasının qarşısını al", "Preview": "Önizləmə", + "Preview Access": "", "Previous 30 days": "Son 30 gün", "Previous 7 days": "Son 7 gün", "Previous message": "Əvvəlki mesaj", @@ -1695,6 +1727,8 @@ "Remove from favorites": "Sevimlilərdən çıxar", "Remove image": "Şəkli sil", "Remove Model": "Modeli Sil", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Adını dəyiş", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Sıfırla", "Reset All Models": "Bütün modelləri sıfırla", "Reset Image": "Şəkli sıfırla", + "Reset knowledge base?": "", "Reset Upload Directory": "Yükləmə kataloqunu sıfırla", "Reset Vector Storage/Knowledge": "Vektor yaddaşını/Biliyi sıfırla", "Reset view": "Görünüşü sıfırla", @@ -1780,6 +1815,7 @@ "Search Prompts": "Axtarış göstərişləri", "Search Result Count": "Axtarış nəticələrinin sayı", "Search Skills": "Axtarış bacarıqları", + "Search skills...": "", "Search the internet": "İnternetdə axtar", "Search the web and fetch URLs": "Vebdə axtar və URL-ləri gətir", "Search Tools": "Axtarış alətləri", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "Sinxronizasiya", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Sinxronizasiya tamamlandı!", "Sync directory": "Sinxronizasiya kataloqu", "Sync Failed": "Sinxronizasiya alınmadı", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Bu seçim kontekst yenilənərkən neçə tokenin qorunacağına nəzarət edir. Məsələn, 2 təyin edilərsə, söhbət kontekstinin son 2 tokeni saxlanılacaq. Konteksti qorumaq söhbətin davamlılığını saxlamağa kömək edir, lakin yeni mövzulara cavab vermə qabiliyyətini azalda bilər.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Bu seçim Ollama-da mühakimə (reasoning) funksiyasının istifadəsini aktivləşdirir və ya söndürür; bu, modelin cavab yaratmazdan əvvəl 'düşünməsinə' imkan verir. Aktiv edildikdə, model söhbət kontekstini emal etmək və daha dolğun cavab vermək üçün bir anlıq fasilə verə bilər.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Bu seçim modelin cavabında yarada biləcəyi maksimum token sayını təyin edir. Bu limiti artırmaq modelə daha uzun cavablar verməyə imkan verir, lakin faydasız və ya mövzuya aid olmayan məzmunun yaranma ehtimalını da artıra bilər.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Bu seçim kolleksiyadakı bütün mövcud faylları siləcək və onları yeni yüklənmiş fayllarla əvəz edəcək.", "This response was generated by \"{{model}}\"": "Bu cavab \"{{model}}\" tərəfindən yaradılmışdır", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Bu, siləcək:", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Bu, fərdi modellər də daxil olmaqla bütün modelləri siləcək", "This will delete all models including custom models and cannot be undone.": "Bu, fərdi modellər də daxil olmaqla bütün modelləri siləcək və geri qaytarıla bilməz.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Bu, bilik bazasını sıfırlayacaq və bütün faylları sinxronizasiya edəcək. Davam etmək istəyirsiniz?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Ətraflı izahat", "Thought": "", "Thought for {{DURATION}}": "{{DURATION}} müddətində düşündü", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "1 mənbəni göstər/gizlə", "Toggle details": "", "Toggle Dictation": "Diktəni aç/bağla", + "Toggle Mute": "", "Toggle Sidebar": "Yan paneli aç/bağla", "Toggle status history": "Status tarixçəsini aç/bağla", "Toggle whether current connection is active.": "Hazırkı bağlantının aktiv olub-olmadığını dəyişdirin.", @@ -2171,7 +2209,7 @@ "Upload Progress": "Yükləmə vəziyyəti", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Yükləmə vəziyyəti: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Yüklənmiş fayllar və ya şəkillər", - "Uploading file...": "Fayl yüklənir...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Yüklənir...", "URL": "URL", "URL is required": "URL tələb olunur", @@ -2191,6 +2229,7 @@ "User Groups": "İstifadəçi qrupları", "User location successfully retrieved.": "İstifadəçi yeri uğurla müəyyən edildi.", "User menu": "İstifadəçi menyusu", + "User Preview": "", "User ratings (thumbs up/down)": "İstifadəçi reytinqləri (bəyənmə/bəyənməmə)", "User Status": "İstifadəçi statusu", "User Webhooks": "İstifadəçi Webhook-ları", diff --git a/src/lib/i18n/locales/bg-BG/translation.json b/src/lib/i18n/locales/bg-BG/translation.json index 33836ff61b..5759c6d8b3 100644 --- a/src/lib/i18n/locales/bg-BG/translation.json +++ b/src/lib/i18n/locales/bg-BG/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Отговори", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Сигурни ли сте, че искате да изтриете този канал?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Сигурни ли сте, че искате да изтриете това съобщение?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Наличен списък", "Available models": "", + "Available Skills": "", "Available Tools": "Налични инструменти", "available users": "Налични потребители", "available!": "наличен!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI Работен поток", "ComfyUI Workflow Nodes": "Възли на ComfyUI работен поток", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Команда", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Довършвания", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Едновременни заявки", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "Изтриване на модела", "Delete All": "", "Delete All Chats": "Изтриване на всички чатове", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Изтриване на Чат", "Delete chat?": "Изтриване на чата?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Изтриване на папката?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Директните връзки позволяват на потребителите да се свързват със собствени OpenAI съвместими API крайни точки.", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Модел за вграждане", "Embedding Model Engine": "Двигател на модела за вграждане", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Въведете API ключ за Kagi Search", "Enter Key Behavior": "", "Enter language codes": "Въведете кодове на езика", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "Съдържанието на файла е актуализирано успешно.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Файлов режим", + "File moved.": "", "File name": "", "File not found.": "Файл не е намерен.", "File removed successfully.": "Файлът е премахнат успешно.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Размерът на файла не трябва да надвишава {{maxSize}} MB.", "File Upload": "", "File uploaded successfully": "Файлът е качен успешно", - "File uploaded!": "", "Filename": "", "Files": "Файлове", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "Знания", "Knowledge Access": "Достъп до знания", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Знанието е създадено успешно.", "Knowledge deleted successfully.": "Знанието е изтрито успешно.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "Знанието е нулирано успешно.", "Knowledge Sharing": "", "Knowledge updated successfully": "Знанието е актуализирано успешно", "Kokoro.js (Browser)": "Kokoro.js (Браузър)", @@ -1227,6 +1250,7 @@ "Light": "Светъл", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Слушане...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Нов чат", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Нова папка", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Не е намерено HTML, CSS или JavaScript съдържание.", "No inference engine with management support found": "Не е намерен механизъм за извод с поддръжка на управлението", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Не са намерени знания", "No limit": "", "No memories to clear": "", "No model IDs": "Няма ИД-та на моделите", + "No models accessible": "", "No models available": "", "No models found": "Не са намерени модели", "No models selected": "Няма избрани модели", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Не са намерени потребители.", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "Вкл.", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF документ (.pdf)", "PDF Extract Images (OCR)": "Извличане на изображения от PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "в очакване", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Префикс ID се използва за избягване на конфликти с други връзки чрез добавяне на префикс към ID-тата на моделите - оставете празно, за да деактивирате", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Предишните 30 дни", "Previous 7 days": "Предишните 7 дни", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Изтриване на модела", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Преименуване", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Нулиране", "Reset All Models": "Нулиране на всички модели", "Reset Image": "Нулиране на изображението", + "Reset knowledge base?": "", "Reset Upload Directory": "Нулиране на директорията за качване", "Reset Vector Storage/Knowledge": "Нулиране на векторното хранилище/знания", "Reset view": "Нулиране на изгледа", @@ -1780,6 +1815,7 @@ "Search Prompts": "Търси Промптове", "Search Result Count": "Брой резултати от търсенето", "Search Skills": "", + "Search skills...": "", "Search the internet": "Търсене в интернет", "Search the web and fetch URLs": "", "Search Tools": "Инструменти за търсене", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Синхронизирай директория", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Тази опция ще изтрие всички съществуващи файлове в колекцията и ще ги замени с новокачени файлове.", "This response was generated by \"{{model}}\"": "Този отговор беше генериран от \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Това ще изтрие", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Това ще изтрие всички модели, включително персонализираните модели", "This will delete all models including custom models and cannot be undone.": "Това ще изтрие всички модели, включително персонализираните модели, и не може да бъде отменено.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Това ще нулира базата знания и ще синхронизира всички файлове. Желаете ли да продължите?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Подробно обяснение", "Thought": "", "Thought for {{DURATION}}": "Мислил за {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "Прогрес на качването", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "Местоположението на потребителя е успешно извлечено.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/bn-BD/translation.json b/src/lib/i18n/locales/bn-BD/translation.json index febda0a40c..1aca769344 100644 --- a/src/lib/i18n/locales/bn-BD/translation.json +++ b/src/lib/i18n/locales/bn-BD/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ মডেল}}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "উপলব্ধ ব্যবহারকারী", "available!": "উপলব্ধ!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "কমান্ড", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "সমকালীন অনুরোধ", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "একটি মডেল মুছে ফেলুন", "Delete All": "", "Delete All Chats": "সব চ্যাট মুছে ফেলুন", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "চ্যাট মুছে ফেলুন", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "ইমেজ ইমেবডিং মডেল", "Embedding Model Engine": "ইমেজ ইমেবডিং মডেল ইঞ্জিন", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "ল্যাঙ্গুয়েজ কোড লিখুন", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "ফাইল মোড", + "File moved.": "", "File name": "", "File not found.": "ফাইল পাওয়া যায়নি", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1227,6 +1250,7 @@ "Light": "লাইট", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "নতুন চ্যাট", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "চালু", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF ডকুমেন্ট (.pdf)", "PDF Extract Images (OCR)": "পিডিএফ এর ছবি থেকে লেখা বের করুন (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "অপেক্ষমান", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "পূর্ব ৩০ দিন", "Previous 7 days": "পূর্ব ৭ দিন", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "মডেল রিমুভ করুন", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "রেনেম", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "ছবি রিসেট করুন", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1780,6 +1815,7 @@ "Search Prompts": "প্রম্পটসমূহ অনুসন্ধান করুন", "Search Result Count": "অনুসন্ধানের ফলাফল গণনা", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "পুঙ্খানুপুঙ্খ ব্যাখ্যা", "Thought": "", "Thought for {{DURATION}}": "", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "আপলোড হচ্ছে", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/bo-TB/translation.json b/src/lib/i18n/locales/bo-TB/translation.json index 2470410d06..2b286b9fbc 100644 --- a/src/lib/i18n/locales/bo-TB/translation.json +++ b/src/lib/i18n/locales/bo-TB/translation.json @@ -9,12 +9,15 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "ཡིག་ཕྲེང་ {{COUNT}} སྦས་ཡོད།", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "ལན་ {{COUNT}}", "{{COUNT}} Rows": "", "{{count}} selected_other": "", @@ -192,6 +195,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "ཁྱེད་ཀྱིས་བགྲོ་གླེང་འདི་བསུབ་འདོད་ངེས་ཡིན་ནམ།", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "འཕྲིན་འདི་བསུབ་འདོད་ངེས་ཡིན་ནམ།", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -238,6 +242,7 @@ "Automations": "", "Available list": "ཡོད་པའི་ཐོ་གཞུང་།", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "ཡོད་པའི་སྤྱོད་མཁན", "available!": "ཡོད།", @@ -397,13 +402,16 @@ "ComfyUI Workflow": "ComfyUI ལས་ཀའི་རྒྱུན་རིམ།", "ComfyUI Workflow Nodes": "ComfyUI ལས་ཀའི་རྒྱུན་རིམ་མདུད་ཚེག", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "བཀའ་བརྡ།", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "འགྲུབ་པ།", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "མཉམ་ལས་རེ་ཞུ།", "Config": "", "Config imported successfully": "", @@ -536,12 +544,14 @@ "Delete a model": "དཔེ་དབྱིབས་ཤིག་བསུབ་པ།", "Delete All": "", "Delete All Chats": "ཁ་བརྡ་ཡོངས་རྫོགས་བསུབ་པ།", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "ཁ་བརྡ་བསུབ་པ།", "Delete chat?": "ཁ་བརྡ་བསུབ་པ།?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "ཡིག་སྣོད་བསུབ་པ།?", @@ -578,6 +588,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "ཐད་ཀར་སྦྲེལ་མཐུད་ཀྱིས་བེད་སྤྱོད་མཁན་ཚོར་ཁོ་ཚོའི་རང་གི་ OpenAI དང་མཐུན་པའི་ API མཇུག་མཐུད་ལ་སྦྲེལ་བར་གནང་བ་སྤྲོད།", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -686,6 +701,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "ཚུད་འཇུག་དཔེ་དབྱིབས།", "Embedding Model Engine": "ཚུད་འཇུག་དཔེ་དབྱིབས་འཕྲུལ་འཁོར།", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -764,6 +780,7 @@ "Enter Kagi Search API Key": "Kagi Search API ལྡེ་མིག་འཇུག་པ།", "Enter Key Behavior": "ལྡེ་མིག་གི་བྱེད་སྟངས་འཇུག་པ།", "Enter language codes": "སྐད་ཡིག་གི་ཨང་རྟགས་འཇུག་པ།", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -900,6 +917,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI ལག་ཆའི་སར་བར་ལ་སྦྲེལ་མཐུད་བྱེད་མ་ཐུབ།", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -953,14 +971,16 @@ "File content updated successfully.": "ཡིག་ཆའི་ནང་དོན་ལེགས་པར་གསར་སྒྱུར་བྱས་ཟིན།", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "ཡིག་ཆའི་མ་དཔེ།", + "File moved.": "", "File name": "", "File not found.": "ཡིག་ཆ་མ་རྙེད།", "File removed successfully.": "ཡིག་ཆ་ལེགས་པར་བསུབས་ཟིན།", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "ཡིག་ཆའི་ཆེ་ཆུང་ {{maxSize}} MB ལས་མི་བརྒལ་དགོས།", "File Upload": "", "File uploaded successfully": "ཡིག་ཆ་ལེགས་པར་སྤར་ཟིན།", - "File uploaded!": "", "Filename": "", "Files": "ཡིག་ཆ།", "Filter": "", @@ -1176,13 +1196,13 @@ "Knowledge": "ཤེས་བྱ།", "Knowledge Access": "ཤེས་བྱར་འཛུལ་སྤྱོད།", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "ཤེས་བྱ་ལེགས་པར་བཟོས་ཟིན།", "Knowledge deleted successfully.": "ཤེས་བྱ་ལེགས་པར་བསུབས་ཟིན།", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "ཤེས་བྱ་སྤྱི་སྤྱོད་མཉམ་སྤྱོད།", - "Knowledge reset successfully.": "ཤེས་བྱ་ལེགས་པར་སླར་སྒྲིག་བྱས་ཟིན།", "Knowledge Sharing": "", "Knowledge updated successfully": "ཤེས་བྱ་ལེགས་པར་གསར་སྒྱུར་བྱས་ཟིན།", "Kokoro.js (Browser)": "Kokoro.js (བརྡ་འཚོལ་ཆས།)", @@ -1226,6 +1246,7 @@ "Light": "དཀར་པོ།", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "ཉན་བཞིན་པ།...", @@ -1376,6 +1397,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "ཁ་བརྡ་གསར་པ།", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "ཡིག་སྣོད་གསར་པ།", @@ -1421,11 +1444,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML, CSS, ཡང་ན་ JavaScript གི་ནང་དོན་མ་རྙེད།", "No inference engine with management support found": "དོ་དམ་རྒྱབ་སྐྱོར་ཡོད་པའི་དཔོག་རྩིས་འཕྲུལ་འཁོར་མ་རྙེད།", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "ཤེས་བྱ་མ་རྙེད།", "No limit": "", "No memories to clear": "གཙང་སེལ་བྱེད་རྒྱུའི་དྲན་ཤེས་མེད།", "No model IDs": "དཔེ་དབྱིབས་ཀྱི་ ID མེད།", + "No models accessible": "", "No models available": "", "No models found": "དཔེ་དབྱིབས་མ་རྙེད།", "No models selected": "དཔེ་དབྱིབས་གདམ་ག་མ་བྱས།", @@ -1446,6 +1471,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "བེད་སྤྱོད་མཁན་མ་རྙེད།", "No valves": "", @@ -1485,6 +1511,7 @@ "On": "ཁ་ཕྱེ་བ།", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1556,6 +1583,7 @@ "PDF document (.pdf)": "PDF ཡིག་ཆ། (.pdf)", "PDF Extract Images (OCR)": "PDF པར་འདོན་སྤེལ། (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "སྒུག་བཞིན་པ།", "Pending": "", "Pending User Overlay Content": "", @@ -1617,6 +1645,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "སྔོན་སྦྱོར་ ID ནི་དཔེ་དབྱིབས་ཀྱི་ IDs ལ་སྔོན་སྦྱོར་ཞིག་སྣོན་ནས་སྦྲེལ་མཐུད་གཞན་དང་གདོང་ཐུག་ལས་གཡོལ་བར་བེད་སྤྱོད་བྱེད། - ནུས་མེད་བཏང་བར་སྟོང་པ་བཞག་པ།", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "ཉིན་ ༣༠ སྔོན་མ།", "Previous 7 days": "ཉིན་ ༧ སྔོན་མ།", "Previous message": "", @@ -1694,6 +1723,7 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "དཔེ་དབྱིབས་འདོར་བ།", + "Removing {{count}} stale files..._other": "", "Rename": "མིང་བསྐྱར་འདོགས།", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1712,6 +1742,7 @@ "Reset": "སླར་སྒྲིག", "Reset All Models": "དཔེ་དབྱིབས་ཡོངས་རྫོགས་སླར་སྒྲིག", "Reset Image": "བརྙན་རིས་བསྐྱར་སྒྲིག", + "Reset knowledge base?": "", "Reset Upload Directory": "སྤར་བའི་ཐོ་འཚོལ་སླར་སྒྲིག", "Reset Vector Storage/Knowledge": "ཚད་བརྡའི་གསོག་ཆས།/ཤེས་བྱ་སླར་སྒྲིག", "Reset view": "མཐོང་སྣང་སླར་སྒྲིག", @@ -1778,6 +1809,7 @@ "Search Prompts": "འགུལ་སློང་འཚོལ་བཤེར།", "Search Result Count": "འཚོལ་བཤེར་འབྲས་བུའི་གྲངས།", "Search Skills": "", + "Search skills...": "", "Search the internet": "དྲ་རྒྱ་འཚོལ་བཤེར།", "Search the web and fetch URLs": "", "Search Tools": "ལག་ཆ་འཚོལ་བཤེར།", @@ -1974,6 +2006,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "ཐོ་འཚོལ་མཉམ་སྡེབ།", "Sync Failed": "", @@ -2046,7 +2080,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "འདེམས་ཀ་འདིས་ནང་དོན་གསར་སྒྱུར་བྱེད་སྐབས་ཊོཀ་ཀེན་ག་ཚོད་ཉར་ཚགས་བྱེད་དགོས་ཚོད་འཛིན་བྱེད། དཔེར་ན། གལ་ཏེ་ ༢ ལ་བཀོད་སྒྲིག་བྱས་ན། ཁ་བརྡའི་ནང་དོན་གྱི་ཊོཀ་ཀེན་མཐའ་མ་ ༢ ཉར་ཚགས་བྱེད་ངེས། ནང་དོན་ཉར་ཚགས་བྱས་ན་ཁ་བརྡའི་རྒྱུན་མཐུད་རང་བཞིན་རྒྱུན་སྲུང་བྱེད་པར་རོགས་པ་བྱེད་ཐུབ། འོན་ཀྱང་དེས་བརྗོད་གཞི་གསར་པར་ལན་འདེབས་བྱེད་པའི་ནུས་པ་ཉུང་དུ་གཏོང་སྲིད།", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "འདེམས་ཀ་འདིས་དཔེ་དབྱིབས་ཀྱིས་དེའི་ལན་ནང་བཟོ་ཐུབ་པའི་ཊོཀ་ཀེན་གྱི་གྲངས་མང་ཤོས་འཇོག་པ། ཚད་བཀག་འདི་མང་དུ་བཏང་ན་དཔེ་དབྱིབས་ཀྱིས་ལན་རིང་བ་སྤྲོད་པར་གནང་བ་སྤྲོད། འོན་ཀྱང་དེས་ཕན་ཐོགས་མེད་པའམ་འབྲེལ་མེད་ཀྱི་ནང་དོན་བཟོ་བའི་ཆགས་ཚུལ་མང་དུ་གཏོང་སྲིད།", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "འདེམས་ཀ་འདིས་བསྡུ་གསོག་ནང་གི་ཡོད་པའི་ཡིག་ཆ་ཡོངས་རྫོགས་བསུབ་ནས་དེ་དག་གསར་དུ་སྤར་བའི་ཡིག་ཆས་ཚབ་བྱེད་ངེས།", "This response was generated by \"{{model}}\"": "ལན་འདི་ \"{{model}}\" ཡིས་བཟོས་པ།", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "འདིས་བསུབ་ངེས།", @@ -2054,7 +2087,7 @@ "This will delete all models including custom models": "འདིས་སྲོལ་བཟོས་དཔེ་དབྱིབས་ཚུད་པའི་དཔེ་དབྱིབས་ཡོངས་རྫོགས་བསུབ་ངེས།", "This will delete all models including custom models and cannot be undone.": "འདིས་སྲོལ་བཟོས་དཔེ་དབྱིབས་ཚུད་པའི་དཔེ་དབྱིབས་ཡོངས་རྫོགས་བསུབ་ངེས་པ་དང་ཕྱིར་ལྡོག་བྱེད་མི་ཐུབ།", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "འདིས་ཤེས་བྱའི་རྟེན་གཞི་སླར་སྒྲིག་བྱས་ནས་ཡིག་ཆ་ཡོངས་རྫོགས་མཉམ་སྡེབ་བྱེད་ངེས། ཁྱེད་མུ་མཐུད་འདོད་ཡོད་དམ།", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "འགྲེལ་བཤད་ཞིབ་ཚགས།", "Thought": "", "Thought for {{DURATION}}": "{{DURATION}} རིང་བསམས།", @@ -2090,6 +2123,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2168,7 +2202,7 @@ "Upload Progress": "སྤར་བའི་འཕེལ་རིམ།", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2188,6 +2222,7 @@ "User Groups": "", "User location successfully retrieved.": "བེད་སྤྱོད་མཁན་གནས་ཡུལ་ལེགས་པར་ལེན་ཚུར་སྒྲུབ་བྱས།", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "བེད་སྤྱོད་མཁན་གྱི་ Webhooks", diff --git a/src/lib/i18n/locales/bs-BA/translation.json b/src/lib/i18n/locales/bs-BA/translation.json index 9a2534f2b6..e657b57166 100644 --- a/src/lib/i18n/locales/bs-BA/translation.json +++ b/src/lib/i18n/locales/bs-BA/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ modeli }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -240,6 +248,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "dostupni korisnici", "available!": "dostupno!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Naredba", "Comment": "Komentar", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Istodobni zahtjevi", "Config": "", "Config imported successfully": "", @@ -538,12 +552,14 @@ "Delete a model": "Izbriši model", "Delete All": "", "Delete All Chats": "Izbriši sve razgovore", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Izbriši razgovor", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Embedding model", "Embedding Model Engine": "Embedding model pogon", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "Unesite kodove jezika", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -902,6 +925,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -955,14 +979,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Način datoteke", + "File moved.": "", "File name": "", "File not found.": "Datoteka nije pronađena.", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1178,13 +1204,13 @@ "Knowledge": "Znanje", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1228,6 +1254,7 @@ "Light": "Svijetlo", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Slušam...", @@ -1378,6 +1405,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Novi razgovor", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1487,6 +1519,7 @@ "On": "Uključeno", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "PDF dokument (.pdf)", "PDF Extract Images (OCR)": "PDF izdvajanje slika (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "u tijeku", "Pending": "", "Pending User Overlay Content": "", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Prethodnih 30 dana", "Previous 7 days": "Prethodnih 7 dana", "Previous message": "", @@ -1696,6 +1731,9 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Ukloni model", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._other": "", "Rename": "Preimenuj", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "Resetiraj sliku", + "Reset knowledge base?": "", "Reset Upload Directory": "Poništi upload direktorij", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1782,6 +1821,7 @@ "Search Prompts": "Pretraga prompta", "Search Result Count": "Broj rezultata pretraživanja", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "Alati za pretraživanje", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Detaljno objašnjenje", "Thought": "", "Thought for {{DURATION}}": "", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2174,7 +2216,7 @@ "Upload Progress": "Napredak učitavanja", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2194,6 +2236,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/ca-ES/translation.json b/src/lib/i18n/locales/ca-ES/translation.json index 9ca88898e4..61899e8141 100644 --- a/src/lib/i18n/locales/ca-ES/translation.json +++ b/src/lib/i18n/locales/ca-ES/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "[Avui a les] h:mm A", "[Yesterday at] h:mm A": "[Ahir a les] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} eines disponibles", "{{COUNT}} characters": "{{COUNT}} caràcters", "{{COUNT}} extracted lines": "{{COUNT}} línies extretes", "{{COUNT}} files": "{{COUNT}} arxius", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} línies ocultes", "{{COUNT}} members": "{{COUNT}} membres", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} respostes", "{{COUNT}} Rows": "{{COUNT}} files", "{{count}} selected_one": "{{count}} seleccionat", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Estàs segur que vols suprimir tots els xats? Aquesta acció no es pot desfer.", "Are you sure you want to delete this channel?": "Estàs segur que vols eliminar aquest canal?", "Are you sure you want to delete this connection? This action cannot be undone.": "Estàs segur que vols suprimir aquesta connexió? Aquesta acció no es pot desfer.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "Estàs segur que vols suprimir aquest record? Aquesta acció no es pot desfer.", "Are you sure you want to delete this message?": "Estàs segur que vols eliminar aquest missatge?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Estàs segur que vols suprimir aquesta versió? Les versions filles es tornaran a enllaçar amb la versió principal d'aquesta versió.", @@ -240,6 +248,7 @@ "Automations": "Automatització", "Available list": "Llista de disponibles", "Available models": "Models disponibles", + "Available Skills": "", "Available Tools": "Eines disponibles", "available users": "usuaris disponibles", "available!": "disponible!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "Flux de treball de ComfyUI", "ComfyUI Workflow Nodes": "Nodes del flux de treball de ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "Identificadors de node separats per comes (p. ex. 1 o 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "comanda", "Command": "Comanda", "Comment": "Comentari", "Commit Message": "Enviar el missatge", "Community Reviews": "Comentaris de la comunitat", + "Comparing with knowledge base...": "", "Completions": "Completaments", "Compress Images in Channels": "Comprimir imatges en els canals", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Peticions simultànies", "Config": "Configuració", "Config imported successfully": "Configuració importada correctament", @@ -538,12 +552,14 @@ "Delete a model": "Eliminar un model", "Delete All": "Eliminar tot", "Delete All Chats": "Eliminar tots els xats", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Eliminar tot el contingut d'aquesta carpeta", "Delete automation?": "Eliminar l'automatització", "Delete calendar": "Eliminar el calendari", "Delete Calendar": "Eliminar el calendari", "Delete Chat": "Eliminar xat", "Delete chat?": "Eliminar el xat?", + "Delete directory?": "", "Delete Event": "Eliminar l'esdeveniment", "Delete File": "Eliminar el fitxer", "Delete folder?": "Eliminar la carpeta?", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Les connexions directes permeten als usuaris connectar-se als seus propis endpoints d'API compatibles amb OpenAI.", "Direct Message": "Missatge directe", "Direct Tool Servers": "Servidors d'eines directes", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "La selecció de directori s'ha cancel·lat", "Disable All": "Deshabilitar tot", "Disable Code Interpreter": "Deshabilitar l'interpret de codi", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "Peticions concurrents d'incrustació", "Embedding Model": "Model d'incrustació", "Embedding Model Engine": "Motor de model d'incrustació", + "Emoji": "", "Emojis": "Emojis", "Empty message": "Missatge buit", "Enable All": "Habilitar tot", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "Introdueix la clau API de Kagi Search", "Enter Key Behavior": "Introdueix el comportament de clau", "Enter language codes": "Introdueix els codis de llenguatge", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Introdueix la clau API de MinerU", "Enter Mistral API Base URL": "Entra la URL Base de l'API de Mistral", "Enter Mistral API Key": "Entra la clau API de Mistral", @@ -902,6 +925,7 @@ "Failed to archive chat.": "No s'ha pogut arxivar el xat", "Failed to attach file": "No s'ha pogut adjuntar l'arxiu", "Failed to clear status": "No s'ha pogut esborar l'estat", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "No s'ha pogut connecta al servidor d'eines OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "No s'ha pogut connecta al servidor de terminal {{URL}}", "Failed to copy link": "No s'ha pogut copiar l'enllaç", @@ -955,14 +979,16 @@ "File content updated successfully.": "El contingut de l'arxiu s'ha actualitzat correctament.", "File Context": "Contingut de l'arxiu", "File deleted successfully.": "L'arxiu s'ha eliminat correctament", + "File Extensions": "", "File Mode": "Mode d'arxiu", + "File moved.": "", "File name": "Nom d'arxiu", "File not found.": "No s'ha trobat l'arxiu.", "File removed successfully.": "Arxiu eliminat correctament.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "La mida del fitxer no ha de superar els {{maxSize}} MB.", "File Upload": "Pujar arxiu", "File uploaded successfully": "Arxiu pujat satisfactòriament", - "File uploaded!": "Arxiu pujat!", "Filename": "Nom de l'arxiu", "Files": "Arxius", "Filter": "Filtre", @@ -1178,13 +1204,13 @@ "Knowledge": "Coneixement", "Knowledge Access": "Accés al coneixement", "Knowledge Base": "Base de coneixement", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Coneixement creat correctament.", "Knowledge deleted successfully.": "Coneixement eliminat correctament.", "Knowledge Description": "Descripció del coneixement", "Knowledge exported successfully": "El coneixement s'ha exportat correctament", "Knowledge Name": "Nom del coneixement", "Knowledge Public Sharing": "Compartir públicament el Coneixement", - "Knowledge reset successfully.": "Coneixement restablert correctament.", "Knowledge Sharing": "Compartir el coneixement", "Knowledge updated successfully": "Coneixement actualitzat correctament.", "Kokoro.js (Browser)": "Kokoro.js (Navegador)", @@ -1228,6 +1254,7 @@ "Light": "Clar", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Limita les consultes de cerca simultànies. 0 = il·limitada (per defecte). Estableix-ho a 1 per a l'execució seqüencial (recomanat per a API amb límits de velocitat estrictes com el nivell gratuït de Brave).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Limita el nombre de sol·licituds d'incrustació simultànies. Estableix-ho a 0 per a un nombre il·limitat.", + "Linkup API Key": "", "List": "Llista", "List calendars, search, create, update, and delete calendar events": "Llistar calendaris, cercar, crear, actualitzar i suprimir esdeveniments de calendari", "Listening...": "Escoltant...", @@ -1378,6 +1405,8 @@ "New calendar": "Nou calendari", "New Calendar": "Nou calendari", "New Chat": "Nou xat", + "New directory": "", + "New Directory": "", "New Event": "Nou esdeveniment", "New File": "Nou arxiu", "New Folder": "Nova carpeta", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "No s'ha trobat contingut HTML, CSS o JavaScript.", "No inference engine with management support found": "No s'ha trobat un motor d'inferència amb suport de gestió", "No kernel": "No hi ha cap kernel", + "No knowledge bases accessible": "", "No knowledge bases found.": "No s'han trobat bases de coneixement.", "No knowledge found": "No s'ha trobat Coneixement", "No limit": "Sense límit", "No memories to clear": "No hi ha memòries per netejar", "No model IDs": "No hi ha IDs de model", + "No models accessible": "", "No models available": "No hi ha models disponibles", "No models found": "No s'han trobat models", "No models selected": "No s'ha seleccionat cap model", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "No hi ha cap configuració de terminal configurada.", "No terminal connections configured.": "No hi ha connexions de terminal configurades.", "No tool server connections configured.": "No hi ha connexions a servidors d'eines configurades.", + "No tools accessible": "", "No tools found": "No s'han trobat eines", "No users were found.": "No s'han trobat usuaris", "No valves": "No hi ha valves", @@ -1487,6 +1519,7 @@ "On": "Activat", "Once": "Una vegada", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Només està actiu quan l'opció \"Enganxa text gran com a fitxer\" està activada.", "Only active when the chat input is in focus and an LLM is generating a response.": "Només s'activa quan l'entrada del xat està en focus i un LLM està generant una resposta.", "Only active when the chat input is in focus.": "Només actiu quan l'entrada del xat està en focus.", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "Document PDF (.pdf)", "PDF Extract Images (OCR)": "Extreu imatges del PDF (OCR)", "PDF Loader Mode": "Mode de càrrega de PDF", + "pdf, docx, pptx, xlsx": "", "pending": "pendent", "Pending": "Pendent", "Pending User Overlay Content": "Contingut de la finestra d'usuari pendent", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "L'identificador de prefix s'utilitza per evitar conflictes amb altres connexions afegint un prefix als ID de model; deixa'l en blanc per desactivar-lo.", "Prevent File Creation": "Prevenir la creació d'arxius", "Preview": "Previsualització", + "Preview Access": "", "Previous 30 days": "30 dies anteriors", "Previous 7 days": "7 dies anteriors", "Previous message": "Missatge anterior", @@ -1696,6 +1731,9 @@ "Remove from favorites": "Eliminar dels favorits", "Remove image": "Eliminar imatge", "Remove Model": "Eliminar el model", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Canviar el nom", "Renamed to {{name}}": "S'ha renombrat a {{name}}", "Render Markdown in Assistant Messages": "Renderitzar el Markdown dels missatges de l'assistent", @@ -1714,6 +1752,7 @@ "Reset": "Restableix", "Reset All Models": "Restablir tots els models", "Reset Image": "Restableix la imatge", + "Reset knowledge base?": "", "Reset Upload Directory": "Restableix el directori de pujades", "Reset Vector Storage/Knowledge": "Restableix el Repositori de vectors/Coneixement", "Reset view": "Netejar la vista", @@ -1782,6 +1821,7 @@ "Search Prompts": "Cercar indicacions", "Search Result Count": "Recompte de resultats de cerca", "Search Skills": "Cerca habilitats", + "Search skills...": "", "Search the internet": "Cercar a internet", "Search the web and fetch URLs": "Cerca la web i obté les URL", "Search Tools": "Cercar eines", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "Canviar a l'editor JSON", "Switch to visual editor": "Canviar a l'editor visual", "Sync": "Sincronitzar", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Sincronia completada", "Sync directory": "Sincronitzar directori", "Sync Failed": "La sincronia ha fallat", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Aquesta opció controla quants tokens es conserven en actualitzar el context. Per exemple, si s'estableix en 2, es conservaran els darrers 2 tokens del context de conversa. Preservar el context pot ajudar a mantenir la continuïtat d'una conversa, però pot reduir la capacitat de respondre a nous temes.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Aquesta opció activa o desactiva l'ús de la funció de raonament a Ollama, que permet que el model pensi abans de generar una resposta. Quan està activada, el model pot trigar una estona en processar el context de la conversa i generar una resposta més reflexiva.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Aquesta opció estableix el nombre màxim de tokens que el model pot generar en la seva resposta. Augmentar aquest límit permet que el model proporcioni respostes més llargues, però també pot augmentar la probabilitat que es generi contingut poc útil o irrellevant.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Aquesta opció eliminarà tots els fitxers existents de la col·lecció i els substituirà per fitxers recentment penjats.", "This response was generated by \"{{model}}\"": "Aquesta resposta l'ha generat el model \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Aquesta plantilla conté diversos marcadors de posició de context ([context] o {{CONTEXT}}). El context s'injectarà a cada aparició.", "This will delete": "Això eliminarà", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "Això eliminarà tots els models incloent els personalitzats", "This will delete all models including custom models and cannot be undone.": "Això eliminarà tots els models incloent els personalitzats i no es pot desfer", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Això eliminarà permanentment el calendari \"{{name}}\" i tots els seus esdeveniments. Aquesta acció no es pot desfer.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Això restablirà la base de coneixement i sincronitzarà tots els fitxers. Vols continuar?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Explicació en detall", "Thought": "Pensament", "Thought for {{DURATION}}": "He pensat durant {{DURATION}}", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "Activa/Desactiva 1 font", "Toggle details": "Activar/Desactivar els detalls", "Toggle Dictation": "Activa/Desactiva el dictat", + "Toggle Mute": "", "Toggle Sidebar": "Activa/Desactiva la barra lateral", "Toggle status history": "Activa/Desactiva l'estat de l'històric", "Toggle whether current connection is active.": "Alterna si la connexió actual està activa.", @@ -2174,7 +2216,7 @@ "Upload Progress": "Progrés de càrrega", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Progrés de la pujada: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Arxius o imatges pujats", - "Uploading file...": "Pujant l'arxiu...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Pujant...", "URL": "URL", "URL is required": "La URL és necessaria", @@ -2194,6 +2236,7 @@ "User Groups": "Grups d'usuari", "User location successfully retrieved.": "Ubicació de l'usuari obtinguda correctament", "User menu": "Menú d'usuari", + "User Preview": "", "User ratings (thumbs up/down)": "Valoracions dels usuaris (polze amunt/avall)", "User Status": "Estats d'usuari", "User Webhooks": "Webhooks d'usuari", diff --git a/src/lib/i18n/locales/ceb-PH/translation.json b/src/lib/i18n/locales/ceb-PH/translation.json index 0bf089ed2b..4f0420c788 100644 --- a/src/lib/i18n/locales/ceb-PH/translation.json +++ b/src/lib/i18n/locales/ceb-PH/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "magamit nga mga tiggamit", "available!": "magamit!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Pag-order", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "Pagtangtang sa usa ka template", "Delete All": "", "Delete All Chats": "", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "", "Embedding Model Engine": "", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "File mode", + "File moved.": "", "File name": "", "File not found.": "Wala makit-an ang file.", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1227,6 +1250,7 @@ "Light": "Kahayag", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Bag-ong diskusyon", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "Gipaandar", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "", "PDF Extract Images (OCR)": "PDF Image Extraction (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "gipugngan", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "", "Previous 7 days": "", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "I-reset ang hulagway", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1780,6 +1815,7 @@ "Search Prompts": "Pangitaa ang mga prompt", "Search Result Count": "", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "", "Thought": "", "Thought for {{DURATION}}": "", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "Pag-uswag sa Pag-upload", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/cs-CZ/translation.json b/src/lib/i18n/locales/cs-CZ/translation.json index 577aac7bc0..3703a5716e 100644 --- a/src/lib/i18n/locales/cs-CZ/translation.json +++ b/src/lib/i18n/locales/cs-CZ/translation.json @@ -9,12 +9,21 @@ "[Today at] h:mm A": "[Dnes v] h:mm A", "[Yesterday at] h:mm A": "[Včera v] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} dostupných nástrojů", "{{COUNT}} characters": "{{COUNT}} znaků", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} skrytých řádků", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} odpovědí", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -195,6 +204,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Opravdu chcete smazat tento kanál?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Opravdu chcete smazat tuto zprávu?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -241,6 +251,7 @@ "Automations": "", "Available list": "Seznam dostupných", "Available models": "", + "Available Skills": "", "Available Tools": "Dostupné nástroje", "available users": "dostupní uživatelé", "available!": "k dispozici!", @@ -400,13 +411,19 @@ "ComfyUI Workflow": "Pracovní postup ComfyUI", "ComfyUI Workflow Nodes": "Uzly pracovního postupu ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "ID uzlů oddělená čárkou (např. 1 nebo 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Příkaz", "Comment": "Komentář", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Dokončení", "Compress Images in Channels": "Komprimovat obrázky v kanálech", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Souběžné požadavky", "Config": "", "Config imported successfully": "Konfigurace byla úspěšně importována", @@ -539,12 +556,14 @@ "Delete a model": "Smazat model", "Delete All": "", "Delete All Chats": "Smazat všechny konverzace", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Smazat konverzaci", "Delete chat?": "Smazat konverzaci?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Smazat složku?", @@ -581,6 +600,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Přímá připojení umožňují uživatelům připojit se k vlastním koncovým bodům API kompatibilním s OpenAI.", "Direct Message": "", "Direct Tool Servers": "Přímé servery nástrojů", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Výběr adresáře byl zrušen", "Disable All": "", "Disable Code Interpreter": "Zakázat interpret kódu", @@ -689,6 +713,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Model pro vektorizaci", "Embedding Model Engine": "Jádro modelu pro vektorizaci", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -767,6 +792,7 @@ "Enter Kagi Search API Key": "Zadejte API klíč pro Kagi Search", "Enter Key Behavior": "Zadejte chování klávesy", "Enter language codes": "Zadejte kódy jazyků", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "Zadejte API klíč pro Mistral", @@ -903,6 +929,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Nepodařilo se připojit k serveru nástrojů OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "Nepodařilo se zkopírovat odkaz", @@ -956,14 +983,16 @@ "File content updated successfully.": "Obsah souboru byl úspěšně aktualizován.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Režim souboru", + "File moved.": "", "File name": "", "File not found.": "Soubor nenalezen.", "File removed successfully.": "Soubor byl úspěšně odstraněn.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Velikost souboru by neměla překročit {{maxSize}} MB.", "File Upload": "Nahrání souboru", "File uploaded successfully": "Soubor byl úspěšně nahrán", - "File uploaded!": "", "Filename": "", "Files": "Soubory", "Filter": "Filtr", @@ -1179,13 +1208,13 @@ "Knowledge": "Znalosti", "Knowledge Access": "Přístup ke znalostem", "Knowledge Base": "Znalostní báze", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Znalost byla úspěšně vytvořena.", "Knowledge deleted successfully.": "Znalost byla úspěšně smazána.", "Knowledge Description": "Popis znalosti", "Knowledge exported successfully": "", "Knowledge Name": "Název znalosti", "Knowledge Public Sharing": "Veřejné sdílení znalostí", - "Knowledge reset successfully.": "Znalosti byly úspěšně resetovány.", "Knowledge Sharing": "", "Knowledge updated successfully": "Znalost byla úspěšně aktualizována", "Kokoro.js (Browser)": "Kokoro.js (prohlížeč)", @@ -1229,6 +1258,7 @@ "Light": "Světlý", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Poslouchám...", @@ -1379,6 +1409,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Nová konverzace", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Nová složka", @@ -1424,11 +1456,13 @@ "No HTML, CSS, or JavaScript content found.": "Nebyl nalezen žádný obsah HTML, CSS ani JavaScriptu.", "No inference engine with management support found": "Nebyl nalezeno žádné inferenční jádro s podporou správy", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Nebyly nalezeny žádné znalosti", "No limit": "", "No memories to clear": "Žádné vzpomínky k vymazání", "No model IDs": "Žádná ID modelů", + "No models accessible": "", "No models available": "", "No models found": "Nebyly nalezeny žádné modely", "No models selected": "Nebyly vybrány žádné modely", @@ -1449,6 +1483,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "Nebyly nalezeny žádné nástroje", "No users were found.": "Nebyli nalezeni žádní uživatelé.", "No valves": "Žádné valves", @@ -1488,6 +1523,7 @@ "On": "Zapnuto", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1559,6 +1595,7 @@ "PDF document (.pdf)": "Dokument PDF (.pdf)", "PDF Extract Images (OCR)": "Extrahovat obrázky z PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "čeká na vyřízení", "Pending": "Čeká na vyřízení", "Pending User Overlay Content": "Obsah překryvné vrstvy pro čekajícího uživatele", @@ -1620,6 +1657,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID se používá k zamezení konfliktů s jinými připojeními přidáním prefixu k ID modelů - pro vypnutí ponechte prázdné", "Prevent File Creation": "", "Preview": "Náhled", + "Preview Access": "", "Previous 30 days": "Posledních 30 dní", "Previous 7 days": "Posledních 7 dní", "Previous message": "Předchozí zpráva", @@ -1697,6 +1735,10 @@ "Remove from favorites": "", "Remove image": "Odebrat obrázek", "Remove Model": "Odebrat model", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Přejmenovat", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1715,6 +1757,7 @@ "Reset": "Resetovat", "Reset All Models": "Resetovat všechny modely", "Reset Image": "Resetovat obrázek", + "Reset knowledge base?": "", "Reset Upload Directory": "Resetovat adresář pro nahrávání", "Reset Vector Storage/Knowledge": "Resetovat vektorové úložiště/znalosti", "Reset view": "Resetovat zobrazení", @@ -1784,6 +1827,7 @@ "Search Prompts": "Hledat instrukce", "Search Result Count": "Počet výsledků hledání", "Search Skills": "", + "Search skills...": "", "Search the internet": "Hledat na internetu", "Search the web and fetch URLs": "", "Search Tools": "Hledat nástroje", @@ -1983,6 +2027,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Synchronizovat adresář", "Sync Failed": "", @@ -2055,7 +2101,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Tato možnost řídí, kolik tokenů se zachová při obnovování kontextu. Například, pokud je nastavena na 2, poslední 2 tokeny kontextu konverzace budou zachovány. Zachování kontextu může pomoci udržet kontinuitu konverzace, ale může snížit schopnost reagovat na nová témata.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Tato možnost povoluje nebo zakazuje použití funkce uvažování v Ollama, která umožňuje modelu přemýšlet před generováním odpovědi. Když je povolena, model si může vzít chvíli na zpracování kontextu konverzace a vygenerovat promyšlenější odpověď.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Tato možnost nastavuje maximální počet tokenů, které může model vygenerovat ve své odpovědi. Zvýšení tohoto limitu umožňuje modelu poskytovat delší odpovědi, ale může také zvýšit pravděpodobnost generování neužitečného nebo irelevantního obsahu.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Tato volba smaže všechny existující soubory v kolekci a nahradí je nově nahranými soubory.", "This response was generated by \"{{model}}\"": "Tato odpověď byla vygenerována modelem \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Tím se smaže", @@ -2063,7 +2108,7 @@ "This will delete all models including custom models": "Tím se smažou všechny modely včetně vlastních modelů", "This will delete all models including custom models and cannot be undone.": "Tím se smažou všechny modely včetně vlastních a tuto akci nelze vrátit zpět.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Tím se resetuje znalostní báze a synchronizují se všechny soubory. Přejete si pokračovat?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Důkladné vysvětlení", "Thought": "", "Thought for {{DURATION}}": "Přemýšlel po dobu {{DURATION}}", @@ -2099,6 +2144,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "Přepnout, zda je aktuální připojení aktivní.", @@ -2177,7 +2223,7 @@ "Upload Progress": "Průběh nahrávání", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Průběh nahrávání: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "URL je vyžadována", @@ -2197,6 +2243,7 @@ "User Groups": "Skupiny uživatelů", "User location successfully retrieved.": "Poloha uživatele byla úspěšně získána.", "User menu": "Uživatelská nabídka", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Uživatelské webhooky", diff --git a/src/lib/i18n/locales/da-DK/translation.json b/src/lib/i18n/locales/da-DK/translation.json index 56ed596502..bec7c926a7 100644 --- a/src/lib/i18n/locales/da-DK/translation.json +++ b/src/lib/i18n/locales/da-DK/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[I dag kl.] h:mm A", "[Yesterday at] h:mm A": "[I går kl.] h:mm A", "{{ models }}": "{{ modeller }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Tilgængelige værktøjer", "{{COUNT}} characters": "{{COUNT}} tegn", "{{COUNT}} extracted lines": "{{COUNT}} linjer udtrukket", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} skjulte linjer", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} svar", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Er du sikker på du vil slette denne kanal?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Er du sikker på du vil slette denne besked?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Tilgængelige lister", "Available models": "", + "Available Skills": "", "Available Tools": "Tilgængelige værktøj", "available users": "tilgængelige brugere", "available!": "tilgængelig!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI Workflow", "ComfyUI Workflow Nodes": "ComfyUI Workflow Nodes", "Comma separated Node Ids (e.g. 1 or 1,2)": "Kommaseparerede node ID'er (f.eks. 1 eller 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Kommando", "Comment": "Kommentar", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Completions", "Compress Images in Channels": "Komprimér billeder i kanaler", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Concurrent requests", "Config": "", "Config imported successfully": "Konfiguration importeret", @@ -537,12 +548,14 @@ "Delete a model": "Slet en model", "Delete All": "", "Delete All Chats": "Slet alle chats", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Slet alt indhold i denne mappe", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Slet chat", "Delete chat?": "Slet chat?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Slet mappe?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Direkte forbindelser tillader brugere at oprette forbindelse til deres egen OpenAI kompatible API endpoints.", "Direct Message": "Direkte besked", "Direct Tool Servers": "Direkte værktøjsservere", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Valg af mappe annulleret", "Disable All": "", "Disable Code Interpreter": "Deaktiver kode interpreter", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Embedding Model", "Embedding Model Engine": "Embedding Model engine", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Indtast Kagi Search API nøgle", "Enter Key Behavior": "Indtast taste opførsel", "Enter language codes": "Indtast sprogkoder", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "Indtast Mistral API base URL", "Enter Mistral API Key": "Indtast Mistral API nøgle", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "Kunne ikke fjerne status", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Kunne ikke forbinde til {{URL}} OpenAPI tool server", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "Kunne ikke kopiere link", @@ -954,14 +975,16 @@ "File content updated successfully.": "Filens indhold er opdateret.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Filtilstand", + "File moved.": "", "File name": "", "File not found.": "Filen blev ikke fundet.", "File removed successfully.": "Fil fjernet.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Filstørrelsen må ikke overstige {{maxSize}} MB.", "File Upload": "Fil upload", "File uploaded successfully": "Fil uploadet.", - "File uploaded!": "Fil uploadet!", "Filename": "", "Files": "Filer", "Filter": "Filter", @@ -1177,13 +1200,13 @@ "Knowledge": "Viden", "Knowledge Access": "Videnadgang", "Knowledge Base": "Vidensbase", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Viden oprettet.", "Knowledge deleted successfully.": "Viden slettet.", "Knowledge Description": "Vidensbeskrivelse", "Knowledge exported successfully": "", "Knowledge Name": "Vidensnavn", "Knowledge Public Sharing": "Viden offentlig deling", - "Knowledge reset successfully.": "Viden nulstillet.", "Knowledge Sharing": "Vidensdeling", "Knowledge updated successfully": "Viden opdateret.", "Kokoro.js (Browser)": "Kokoro.js (Browser)", @@ -1227,6 +1250,7 @@ "Light": "Lys", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Lytter...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Ny chat", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Ny mappe", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Intet HTML-, CSS- eller JavaScript-indhold fundet.", "No inference engine with management support found": "Ingen inference-engine med støtte til administration fundet", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Ingen viden fundet", "No limit": "", "No memories to clear": "Ingen hukommelser at ryde", "No model IDs": "Ingen model-ID'er", + "No models accessible": "", "No models available": "", "No models found": "Ingen modeller fundet", "No models selected": "Ingen modeller valgt", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "Ingen værktøjer fundet", "No users were found.": "Ingen brugere blev fundet.", "No valves": "Ingen ventiler", @@ -1486,6 +1515,7 @@ "On": "Til", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Kun aktiv når \"Indsæt store tekster som fil\" indstillingen er slået til.", "Only active when the chat input is in focus and an LLM is generating a response.": "Kun aktiv når chat-input er fokuseret og en LLM er ved at generere et svar.", "Only active when the chat input is in focus.": "Kun aktiv når chat-input er fokuseret.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF-dokument (.pdf)", "PDF Extract Images (OCR)": "Udtræk billeder fra PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "afventer", "Pending": "Afventer", "Pending User Overlay Content": "Afventende bruger overlay indhold", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID bruges til at undgå konflikter med andre forbindelser ved at tilføje et prefix til model-ID'erne - lad være tom for at deaktivere", "Prevent File Creation": "Forhindr filoprettelse", "Preview": "Forhåndsvisning", + "Preview Access": "", "Previous 30 days": "Seneste 30 dage", "Previous 7 days": "Seneste 7 dage", "Previous message": "Forrige besked", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "Fjern billede", "Remove Model": "Fjern model", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Omdøb", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Nulstil", "Reset All Models": "Nulstil alle modeller", "Reset Image": "Nulstil billede", + "Reset knowledge base?": "", "Reset Upload Directory": "Nulstil uploadmappe", "Reset Vector Storage/Knowledge": "Nulstil vektor lager/viden", "Reset view": "Nulstil visning", @@ -1780,6 +1815,7 @@ "Search Prompts": "Søg i prompts", "Search Result Count": "Antal søgeresultater", "Search Skills": "", + "Search skills...": "", "Search the internet": "Søg internettet", "Search the web and fetch URLs": "", "Search Tools": "Søg i værktøjer", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Synkroniser mappe", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Denne indstilling styrer hvor mange tokens der bevares ved opdatering af konteksten. For eksempel, hvis sat til 2, vil de sidste 2 tokens af samtale-konteksten blive bevaret. At bevare kontekst kan hjælpe med at opretholde kontinuiteten i en samtale, men det kan reducere evnen til at reagere på nye emner.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Denne indstilling aktiverer eller deaktiverer brugen af ræsonnementsfunktionen i Ollama, som tillader modellen at tænke før den genererer et svar. Når aktiveret, kan modellen tage et øjeblik til at behandle samtale-konteksten og generere et mere gennemtænkt svar.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Denne indstilling sætter det maksimale antal tokens modellen kan generere i sit svar. At øge denne grænse tillader modellen at give længere svar, men det kan også øge sandsynligheden for at unyttigt eller irrelevant indhold genereres.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Denne indstilling sletter alle eksisterende filer i samlingen og erstatter dem med nyligt uploadede filer.", "This response was generated by \"{{model}}\"": "Dette svar blev genereret af \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Dette vil slette", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Dette vil slette alle modeller, inklusive brugerdefinerede modeller", "This will delete all models including custom models and cannot be undone.": "Dette vil slette alle modeller, inklusive brugerdefinerede modeller og kan ikke fortrydes.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Dette vil nulstille vidensbasen og synkronisere alle filer. Vil du fortsætte?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Grundig forklaring", "Thought": "", "Thought for {{DURATION}}": "Tænkte i {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "Vis/skjul sidebar", "Toggle status history": "", "Toggle whether current connection is active.": "Skift om nuværende forbindelse er aktiv.", @@ -2171,7 +2209,7 @@ "Upload Progress": "Uploadfremdrift", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Uploadfremdrift: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "", - "Uploading file...": "Uploader fil...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "URL er påkrævet", @@ -2191,6 +2229,7 @@ "User Groups": "Brugergrupper", "User location successfully retrieved.": "Brugerplacering hentet.", "User menu": "Brugermenu", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Bruger Webhooks", diff --git a/src/lib/i18n/locales/de-DE/translation.json b/src/lib/i18n/locales/de-DE/translation.json index b2486138d7..bc583f1958 100644 --- a/src/lib/i18n/locales/de-DE/translation.json +++ b/src/lib/i18n/locales/de-DE/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[Heute um] h:mm A", "[Yesterday at] h:mm A": "[Gestern um] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} verfügbare Werkzeuge", "{{COUNT}} characters": "{{COUNT}} Zeichen", "{{COUNT}} extracted lines": "{{COUNT}} extrahierte Zeilen", "{{COUNT}} files": "{{COUNT}} Dateien", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} ausgeblendete Zeilen", "{{COUNT}} members": "{{COUNT}} Mitglieder", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Antworten", "{{COUNT}} Rows": "{{COUNT}} Reihen", "{{count}} selected_one": "{{count}} ausgewählt", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Sind Sie sicher, dass Sie alle Chats löschen wollen? Dieser Vorgang kann nicht rückgängig gemacht werden.", "Are you sure you want to delete this channel?": "Sind Sie sicher, dass Sie diesen Kanal löschen möchten?", "Are you sure you want to delete this connection? This action cannot be undone.": "Möchten Sie diese Verbindung wirklich löschen? Dieser Vorgang kann nicht rückgängig gemacht werden.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "Möchten Sie diese Erinnerung wirklich löschen? Dieser Vorgang kann nicht rückgängig gemacht werden.", "Are you sure you want to delete this message?": "Sind Sie sicher, dass Sie diese Nachricht löschen möchten?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Sind Sie sicher, dass Sie diese Version löschen wollen? Child-Versionen werden zu dem Parent dieser Version verlinkt.", @@ -239,6 +245,7 @@ "Automations": "Automatisierungen", "Available list": "Verfügbare Liste", "Available models": "Verfügbare Modelle", + "Available Skills": "", "Available Tools": "Verfügbare Werkzeuge", "available users": "verfügbare Benutzer", "available!": "Verfügbar!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI-Workflow", "ComfyUI Workflow Nodes": "ComfyUI-Workflow-Nodes", "Comma separated Node Ids (e.g. 1 or 1,2)": "Kommagetrennte Node-IDs (z. B. 1 oder 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "Befehl", "Command": "Befehl", "Comment": "Kommentar", "Commit Message": "Commit Nachricht", "Community Reviews": "Community Bewertungen", + "Comparing with knowledge base...": "", "Completions": "Vervollständigungen", "Compress Images in Channels": "Bilder in Kanälen komprimieren", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Gleichzeitige Anfragen", "Config": "Konfiguration", "Config imported successfully": "Konfiguration erfolgreich importiert", @@ -537,12 +548,14 @@ "Delete a model": "Ein Modell löschen", "Delete All": "Alle löschen", "Delete All Chats": "Alle Chats löschen", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Alle Inhalte in diesem Ordner löschen", "Delete automation?": "Automatisierung löschen?", "Delete calendar": "Kalender löschen", "Delete Calendar": "Kalender löschen", "Delete Chat": "Chat löschen", "Delete chat?": "Chat löschen?", + "Delete directory?": "", "Delete Event": "Ereignis löschen", "Delete File": "Datei löschen", "Delete folder?": "Ordner löschen?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Direktverbindungen erlauben Benutzern die Verbindung zu eigenen OpenAI-kompatiblen API-Endpunkten.", "Direct Message": "Direktnachricht", "Direct Tool Servers": "Direkte Tool-Server", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Verzeichnisauswahl wurde abgebrochen", "Disable All": "Alle deaktivieren", "Disable Code Interpreter": "Code-Interpreter deaktivieren", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "Gleichzeitige Embedding Anfragen", "Embedding Model": "Embedding-Modell", "Embedding Model Engine": "Embedding-Modell-Engine", + "Emoji": "", "Emojis": "Emoji", "Empty message": "Leere Nachricht", "Enable All": "Alle aktivieren", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Kagi Search API-Schlüssel eingeben", "Enter Key Behavior": "Eingabetasten-Verhalten", "Enter language codes": "Sprachcodes eingeben", + "Enter Linkup API Key": "", "Enter MinerU API Key": "MinerU-API-Schlüssel eingeben", "Enter Mistral API Base URL": "Mistral API Basis-URL eingeben", "Enter Mistral API Key": "Mistral API-Schlüssel eingeben", @@ -901,6 +921,7 @@ "Failed to archive chat.": "Chat konnte nicht archiviert werden.", "Failed to attach file": "Datei konnte nicht hinzugefügt werden", "Failed to clear status": "Status konnte nicht geleert werden", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Verbindung zum OpenAPI-Toolserver {{URL}} fehlgeschlagen", "Failed to connect to {{URL}} terminal server": "Fehler beim Verbinden zum Terminal Server {{URL}}", "Failed to copy link": "Link konnte nicht kopiert werden", @@ -954,14 +975,16 @@ "File content updated successfully.": "Dateiinhalt erfolgreich aktualisiert.", "File Context": "Datei-Kontext", "File deleted successfully.": "Datei erfolgreich gelöscht.", + "File Extensions": "", "File Mode": "Datei-Modus", + "File moved.": "", "File name": "Dateiname", "File not found.": "Datei nicht gefunden.", "File removed successfully.": "Datei erfolgreich entfernt.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Dateigröße darf {{maxSize}} MB nicht überschreiten.", "File Upload": "Dateiupload", "File uploaded successfully": "Datei erfolgreich hochgeladen", - "File uploaded!": "Datei hochgeladen!", "Filename": "Dateiname", "Files": "Dateien", "Filter": "Filter", @@ -1177,13 +1200,13 @@ "Knowledge": "Wissen", "Knowledge Access": "Wissenszugriff", "Knowledge Base": "Wissensspeicher", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Wissen erfolgreich erstellt.", "Knowledge deleted successfully.": "Wissen erfolgreich gelöscht.", "Knowledge Description": "Wissensbeschreibung", "Knowledge exported successfully": "Wissensspeicher erfolgreich exportiert", "Knowledge Name": "Wissensname", "Knowledge Public Sharing": "Öffentliche Freigabe von Wissen", - "Knowledge reset successfully.": "Wissen erfolgreich zurückgesetzt.", "Knowledge Sharing": "Wissen teilen", "Knowledge updated successfully": "Wissen erfolgreich aktualisiert", "Kokoro.js (Browser)": "Kokoro.js (Browser)", @@ -1227,6 +1250,7 @@ "Light": "Hell", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Gleichzeitige Suchanfragen begrenzen. 0 = unbegrenzt (Standard). Auf 1 setzen für sequentielle Ausführung (empfohlen für APIs mit strengen Ratenbegrenzungen wie dem kostenlosen Brave-Tarif).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Limitiert die Anzahl gleichzeitiger embedding Anfragen. Auf 0 setzen für unlimitiert.", + "Linkup API Key": "", "List": "Liste", "List calendars, search, create, update, and delete calendar events": "Kalender auflisten, suchen, erstellen, aktualisieren und löschen", "Listening...": "Höre zu...", @@ -1377,6 +1401,8 @@ "New calendar": "Neuer Kalender", "New Calendar": "Neuer Kalender", "New Chat": "Neuer Chat", + "New directory": "", + "New Directory": "", "New Event": "Neues Ereignis", "New File": "Neue Datei", "New Folder": "Neuer Ordner", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Keine HTML-, CSS- oder JavaScript-Inhalte gefunden.", "No inference engine with management support found": "Keine Inferenz-Engine mit Verwaltungsunterstützung gefunden", "No kernel": "Kein Kernel", + "No knowledge bases accessible": "", "No knowledge bases found.": "Keine Wissensspeicher gefunden.", "No knowledge found": "Kein Wissen gefunden", "No limit": "Kein Limit", "No memories to clear": "Keine Erinnerungen zum Löschen", "No model IDs": "Keine Modell-IDs", + "No models accessible": "", "No models available": "Keine Modelle verfügbar", "No models found": "Keine Modelle gefunden", "No models selected": "Keine Modelle ausgewählt", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "Keine Terminal Verbindung konfiguriert.", "No terminal connections configured.": "Keine Terminal Verbindungen konfiguriert.", "No tool server connections configured.": "Keine Werkzeug-Server Verbindungen konfiguriert.", + "No tools accessible": "", "No tools found": "Keine Werkzeuge gefunden", "No users were found.": "Keine Benutzer gefunden.", "No valves": "Keine Valves", @@ -1486,6 +1515,7 @@ "On": "Ein", "Once": "Einmalig", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Nur aktiv, wenn die Einstellung „Großen Text als Datei einfügen“ aktiviert ist.", "Only active when the chat input is in focus and an LLM is generating a response.": "Nur aktiv, wenn das Chat-Eingabefeld fokussiert ist und ein LLM eine Antwort generiert.", "Only active when the chat input is in focus.": "Nur aktiv, wenn das Chat-Eingabefeld fokussiert ist.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF-Dokument (.pdf)", "PDF Extract Images (OCR)": "Bilder aus PDFs extrahieren (OCR)", "PDF Loader Mode": "PDF Loader Modus", + "pdf, docx, pptx, xlsx": "", "pending": "ausstehend", "Pending": "Ausstehend", "Pending User Overlay Content": "Inhalt des Overlays 'Ausstehende Kontoaktivierung'", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Die Präfix-ID wird verwendet, um Konflikte mit anderen Verbindungen zu vermeiden, indem ein Präfix zu den Modell-IDs hinzugefügt wird - zum Deaktivieren leer lassen.", "Prevent File Creation": "Dateierstellung verhindern", "Preview": "Vorschau", + "Preview Access": "", "Previous 30 days": "Letzte 30 Tage", "Previous 7 days": "Letzte 7 Tage", "Previous message": "Vorherige Nachricht", @@ -1695,6 +1727,8 @@ "Remove from favorites": "Von Favoriten entfernen", "Remove image": "Bild entfernen", "Remove Model": "Modell entfernen", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Umbenennen", "Renamed to {{name}}": "In {{name}} umbenannt", "Render Markdown in Assistant Messages": "Markdown in Assistentennachrichten rendern", @@ -1713,6 +1747,7 @@ "Reset": "Zurücksetzen", "Reset All Models": "Alle Modelle zurücksetzen", "Reset Image": "Bild zurücksetzen", + "Reset knowledge base?": "", "Reset Upload Directory": "Upload-Verzeichnis zurücksetzen", "Reset Vector Storage/Knowledge": "Vektorspeicher/Wissen zurücksetzen", "Reset view": "Ansicht zurücksetzen", @@ -1780,6 +1815,7 @@ "Search Prompts": "Prompts durchsuchen...", "Search Result Count": "Anzahl der Suchergebnisse", "Search Skills": "Durchsuche Skills", + "Search skills...": "", "Search the internet": "Das Internet durchsuchen", "Search the web and fetch URLs": "Durchsuche das Internet und rufe URLs auf", "Search Tools": "Werkzeuge durchsuchen...", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "Zum JSON-Editor wechseln", "Switch to visual editor": "Zum visuellen Editor wechseln", "Sync": "Synchronisieren", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Synchronisierung abgeschlossen!", "Sync directory": "Ordner synchronisieren", "Sync Failed": "Synchronisierung fehlgeschlagen", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Diese Option steuert, wie viele Token beim Aktualisieren des Kontexts behalten werden. Bei 2 werden z. B. die letzten 2 Token des Gesprächskontexts beibehalten. Dies hilft, die Kontinuität zu wahren, kann aber die Reaktion auf neue Themen einschränken.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Diese Option aktiviert die Reasoning-Funktion in Ollama, wodurch das Modell vor der Antwort nachdenken kann. Wenn aktiviert, nimmt sich das Modell einen Moment Zeit, um den Kontext zu verarbeiten und eine durchdachtere Antwort zu generieren.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Diese Option legt die maximale Anzahl von Token fest, die das Modell generieren darf. Ein höheres Limit ermöglicht längere Antworten, kann aber auch die Wahrscheinlichkeit für irrelevante Inhalte erhöhen.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Diese Option löscht alle vorhandenen Dateien in der Sammlung und ersetzt sie durch die neu hochgeladenen Dateien.", "This response was generated by \"{{model}}\"": "Diese Antwort wurde von \"{{model}}\" generiert", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Diese Vorlage enthält mehrere Kontext-Platzhalter ([context] oder {{CONTEXT}}). Der Kontext wird an jeder Stelle eingefügt.", "This will delete": "Dies löscht", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Dies löscht alle Modelle, einschließlich benutzerdefinierter Modelle", "This will delete all models including custom models and cannot be undone.": "Dies löscht alle Modelle, einschließlich benutzerdefinierter Modelle, und kann nicht rückgängig gemacht werden.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Dies wird den Kalender \"{{name}}\" und alle seine Ereignisse dauerhaft löschen. Diese Aktion kann nicht rückgängig gemacht werden.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Dadurch wird der Wissensspeicher zurückgesetzt und alle Dateien werden synchronisiert. Möchten Sie fortfahren?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Ausführliche Erklärung", "Thought": "Gedanke", "Thought for {{DURATION}}": "Nachgedacht für {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "Eine Quelle umschalten", "Toggle details": "Details umschalten", "Toggle Dictation": "Diktieren umschalten", + "Toggle Mute": "", "Toggle Sidebar": "Seitenleiste umschalten", "Toggle status history": "Status Updates umschalten", "Toggle whether current connection is active.": "Umschalten, ob die aktuelle Verbindung aktiv ist.", @@ -2171,7 +2209,7 @@ "Upload Progress": "Upload-Fortschritt", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Fortschritt: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Hochgeladene Dateien oder Bilder", - "Uploading file...": "Datei wird hochgeladen...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Lade hoch...", "URL": "URL", "URL is required": "URL ist erforderlich", @@ -2191,6 +2229,7 @@ "User Groups": "Benutzergruppen", "User location successfully retrieved.": "Benutzerstandort erfolgreich abgerufen.", "User menu": "Benutzermenü", + "User Preview": "", "User ratings (thumbs up/down)": "Benutzerbewertungen (Daumen hoch/runter)", "User Status": "Nutzerstatus", "User Webhooks": "Benutzer-Webhooks", diff --git a/src/lib/i18n/locales/dg-DG/translation.json b/src/lib/i18n/locales/dg-DG/translation.json index cb5fdfc250..6b1f73f8af 100644 --- a/src/lib/i18n/locales/dg-DG/translation.json +++ b/src/lib/i18n/locales/dg-DG/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "such available users", "available!": "available! So excite!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Command", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "Delete a model", "Delete All": "", "Delete All Chats": "", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "", "Embedding Model Engine": "", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Bark Mode", + "File moved.": "", "File name": "", "File not found.": "Bark not found.", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1227,6 +1250,7 @@ "Light": "Light", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "New Bark", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "On", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "", "PDF Extract Images (OCR)": "PDF Extract Wowmages (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "pending", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "", "Previous 7 days": "", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "Reset image. Very wow.", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1780,6 +1815,7 @@ "Search Prompts": "Search Prompts much wow", "Search Result Count": "", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "", "Thought": "", "Thought for {{DURATION}}": "", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "Upload Progress much progress", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/el-GR/translation.json b/src/lib/i18n/locales/el-GR/translation.json index eb177b1238..ac64e1f389 100644 --- a/src/lib/i18n/locales/el-GR/translation.json +++ b/src/lib/i18n/locales/el-GR/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το κανάλι;", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το μήνυμα;", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Διαθέσιμη λίστα", "Available models": "", + "Available Skills": "", "Available Tools": "Διαθέσιμα Εργαλεία", "available users": "διαθέσιμοι χρήστες", "available!": "διαθέσιμο!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "Ροές Εργασίας ComfyUI", "ComfyUI Workflow Nodes": "Κόμβοι Ροής Εργασίας ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "ID κόμβων διαχωρισμένα με κόμμα (π.χ. 1 ή 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Εντολή", "Comment": "Σχόλιο", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Ολοκληρώσεις", "Compress Images in Channels": "Συμπίεση εικόνων σε κανάλια", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Ταυτόχρονες Αιτήσεις", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "Διαγραφή ενός μοντέλου", "Delete All": "", "Delete All Chats": "Διαγραφή Όλων των Συνομιλιών", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Διαγραφή Συνομιλίας", "Delete chat?": "Διαγραφή συνομιλίας;", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Διαγραφή φακέλου;", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Οι Άμεσες Συνδέσεις επιτρέπουν στους χρήστες να συνδέσουν τα δικά τους API endpoints συμβατά με OpenAI.", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Μοντέλο Ενσωμάτωσης", "Embedding Model Engine": "Μηχανή Μοντέλου Ενσωμάτωσης", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "Εισάγετε κωδικούς γλώσσας", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Αποτυχία σύνδεσης στο διακομιστή εργαλείων OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "Αποτυχία αντιγραφής συνδέσμου", @@ -954,14 +975,16 @@ "File content updated successfully.": "Το περιεχόμενο του αρχείου ενημερώθηκε με επιτυχία.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Λειτουργία Αρχείου", + "File moved.": "", "File name": "", "File not found.": "Αρχείο δεν βρέθηκε.", "File removed successfully.": "Το αρχείο αφαιρέθηκε με επιτυχία.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Το μέγεθος του αρχείου δεν πρέπει να υπερβαίνει τα {{maxSize}} MB.", "File Upload": "Ανέβασμα Αρχείων", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "Αρχεία", "Filter": "Φίλτρο", @@ -1177,13 +1200,13 @@ "Knowledge": "", "Knowledge Access": "Πρόσβαση στο Knowledge", "Knowledge Base": "Βάση Knowledge", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Το Knowledge δημιουργήθηκε με επιτυχία.", "Knowledge deleted successfully.": "Το Knowledge διαγράφηκε με επιτυχία.", "Knowledge Description": "Περιγραφή Knowledge", "Knowledge exported successfully": "", "Knowledge Name": "Όνομα Knowledge", "Knowledge Public Sharing": "Κοινή χρήση Knowledge", - "Knowledge reset successfully.": "Το Knowledge επαναφέρθηκε με επιτυχία.", "Knowledge Sharing": "", "Knowledge updated successfully": "Το Knowledge ενημερώθηκε με επιτυχία", "Kokoro.js (Browser)": "", @@ -1227,6 +1250,7 @@ "Light": "Φως", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Ακούγεται...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Νέα Συνομιλία", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Νέος Φάκελος", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Δεν βρέθηκε περιεχόμενο HTML, CSS ή JavaScript.", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Δεν βρέθηκε Knowledge", "No limit": "", "No memories to clear": "", "No model IDs": "Δεν υπάρχουν IDs μοντέλων", + "No models accessible": "", "No models available": "", "No models found": "Δεν βρέθηκαν μοντέλα", "No models selected": "Δεν έχουν επιλεγεί μοντέλα", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "Δεν βρέθηκαν εργαλεία", "No users were found.": "Δεν βρέθηκαν χρήστες.", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "Ενεργό", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "Έγγραφο PDF (.pdf)", "PDF Extract Images (OCR)": "Εξαγωγή Εικόνων PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "εκκρεμεί", "Pending": "Εκκρεμεί", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Το ID Προθέματος χρησιμοποιείται για να αποφεύγονται συγκρούσεις με άλλες συνδέσεις προσθέτοντας ένα πρόθεμα στα IDs των μοντέλων - αφήστε κενό για απενεργοποίηση", "Prevent File Creation": "", "Preview": "Προεπισκόπηση", + "Preview Access": "", "Previous 30 days": "Προηγούμενες 30 ημέρες", "Previous 7 days": "Προηγούμενες 7 ημέρες", "Previous message": "Προηγούμενο μήνυμα", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "Αφαίρεση εικόνας", "Remove Model": "Αφαίρεση Μοντέλου", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Μετονομασία", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Επαναφορά", "Reset All Models": "Επαναφορά Όλων των Μοντέλων", "Reset Image": "Επαναφορά εικόνας", + "Reset knowledge base?": "", "Reset Upload Directory": "Επαναφορά Καταλόγου Ανεβάσματος", "Reset Vector Storage/Knowledge": "Επαναφορά Αποθήκευσης Διανυσμάτων/Knowledge", "Reset view": "Επαναφορά προβολής", @@ -1780,6 +1815,7 @@ "Search Prompts": "Αναζήτηση Προτροπών", "Search Result Count": "Αριθμός Αποτελεσμάτων Αναζήτησης", "Search Skills": "", + "Search skills...": "", "Search the internet": "Αναζήτησε το διαδίκτυο", "Search the web and fetch URLs": "", "Search Tools": "Αναζήτηση Εργαλείων", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Συγχρονισμός καταλόγου", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Αυτή η επιλογή θα διαγράψει όλα τα υπάρχοντα αρχεία στη συλλογή και θα τα αντικαταστήσει με νέα ανεβασμένα αρχεία.", "This response was generated by \"{{model}}\"": "Αυτή η απάντηση δημιουργήθηκε από \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Αυτό θα διαγράψει", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Αυτό θα διαγράψει όλα τα μοντέλα, συμπεριλαμβανομένων των προσαρμοσμένων μοντέλων", "This will delete all models including custom models and cannot be undone.": "Αυτό θα διαγράψει όλα τα μοντέλα, συμπεριλαμβανομένων των προσαρμοσμένων μοντέλων και δεν μπορεί να αναιρεθεί.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Αυτό θα επαναφέρει τη βάση γνώσης και θα συγχρονίσει όλα τα αρχεία. Θέλετε να συνεχίσετε;", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Λεπτομερής εξήγηση", "Thought": "", "Thought for {{DURATION}}": "Σκέφτηκε για {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "Πρόοδος Ανεβάσματος", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "Το URL είναι απαραίτητο", @@ -2191,6 +2229,7 @@ "User Groups": "Ομάδες Χρηστών", "User location successfully retrieved.": "Η τοποθεσία του χρήστη ανακτήθηκε με επιτυχία.", "User menu": "Μενού Χρήστη", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Webhooks Χρήστη", diff --git a/src/lib/i18n/locales/en-GB/translation.json b/src/lib/i18n/locales/en-GB/translation.json index 31a704dc1b..a87e9e153e 100644 --- a/src/lib/i18n/locales/en-GB/translation.json +++ b/src/lib/i18n/locales/en-GB/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "", "available!": "", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "", "Delete All": "", "Delete All Chats": "", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "", "Embedding Model Engine": "", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "Enter Key Behaviour", "Enter language codes": "", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "", + "File moved.": "", "File name": "", "File not found.": "", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1227,6 +1250,7 @@ "Light": "", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "", "PDF Extract Images (OCR)": "", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "", "Previous 7 days": "", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1780,6 +1815,7 @@ "Search Prompts": "", "Search Result Count": "", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "", "Thought": "", "Thought for {{DURATION}}": "", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/en-US/translation.json b/src/lib/i18n/locales/en-US/translation.json index d5142ec5a2..ed6da124f6 100644 --- a/src/lib/i18n/locales/en-US/translation.json +++ b/src/lib/i18n/locales/en-US/translation.json @@ -9,13 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "", - "{{COUNT}} Available Tools": "", "{{COUNT}} Available Skills": "", + "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -194,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -240,8 +245,8 @@ "Automations": "", "Available list": "", "Available models": "", - "Available Tools": "", "Available Skills": "", + "Available Tools": "", "available users": "", "available!": "", "Away": "", @@ -400,13 +405,17 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "", "Config": "", "Config imported successfully": "", @@ -539,12 +548,14 @@ "Delete a model": "", "Delete All": "", "Delete All Chats": "", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -581,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -689,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "", "Embedding Model Engine": "", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -767,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -903,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -956,14 +975,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "", + "File moved.": "", "File name": "", "File not found.": "", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1179,13 +1200,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1229,6 +1250,7 @@ "Light": "", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1379,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1424,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1449,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1488,6 +1515,7 @@ "On": "", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1559,6 +1587,7 @@ "PDF document (.pdf)": "", "PDF Extract Images (OCR)": "", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "", "Pending": "", "Pending User Overlay Content": "", @@ -1620,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "", "Previous 7 days": "", "Previous message": "Previous message", @@ -1697,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1715,6 +1747,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1782,6 +1815,7 @@ "Search Prompts": "", "Search Result Count": "", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1979,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2051,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2059,7 +2094,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "", "Thought": "", "Thought for {{DURATION}}": "", @@ -2095,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2173,7 +2209,7 @@ "Upload Progress": "", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2193,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/es-ES/translation.json b/src/lib/i18n/locales/es-ES/translation.json index 91c65bb9b5..4f47cf992e 100644 --- a/src/lib/i18n/locales/es-ES/translation.json +++ b/src/lib/i18n/locales/es-ES/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "[Hoy a las] h:mm A", "[Yesterday at] h:mm A": "[Ayer a las] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} herramientas disponibles", "{{COUNT}} characters": "{{COUNT}} caracteres", "{{COUNT}} extracted lines": "{{COUNT}} líneas extraidas", "{{COUNT}} files": "{{COUNT}} archivos", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} líneas ocultas", "{{COUNT}} members": "{{COUNT}} miembros", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Respuestas", "{{COUNT}} Rows": "{{COUNT}} filas", "{{count}} selected_one": "{{count}} únicos seleccionados", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "¿Estás seguro que quieres borrar todos los chats? (¡esta acción NO se puede deshacer!)", "Are you sure you want to delete this channel?": "¿Estás seguro de que quieres eliminar este canal?", "Are you sure you want to delete this connection? This action cannot be undone.": "¿Estás seguro que desea eliminar esta conexión? (¡esta acción NO se puede deshacer!)", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "¿Estás seguro que desea eliminar esta memoria? (¡esta acción NO se puede deshacer!)", "Are you sure you want to delete this message?": "¿Estás seguro de que quieres eliminar este mensaje? ", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "¿Estás seguro que desea eliminar esta versión? (las versiones derivadas se vincularán a la versión principal de esta)", @@ -240,6 +248,7 @@ "Automations": "Automatizaciones", "Available list": "Lista disponible", "Available models": "Modelos disponibles", + "Available Skills": "", "Available Tools": "Herramientas Disponibles", "available users": "usuarios disponibles", "available!": "¡disponible!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "Flujo de Trabajo de ComfyUI", "ComfyUI Workflow Nodes": "Nodos del Flujo de Trabajo de ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "IDs de Nodo separados por comas (ej. 1 o 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "comando", "Command": "Comando", "Comment": "Comentario", "Commit Message": "Corregir Mensaje", "Community Reviews": "Revisiones de la Comunidad", + "Comparing with knowledge base...": "", "Completions": "Cumplimientos", "Compress Images in Channels": "Comprimir Imágenes en Canales", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Número de Solicitudes Concurrentes", "Config": "Config", "Config imported successfully": "Configuración importada correctamente", @@ -538,12 +552,14 @@ "Delete a model": "Borrar un modelo", "Delete All": "Borrar Todo", "Delete All Chats": "Borrar todos los chats", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Borrar todo el contenido de esta carpeta", "Delete automation?": "¿Borrar automatización?", "Delete calendar": "Borrar calendario", "Delete Calendar": "Borrar Calendario", "Delete Chat": "Borrar Chat", "Delete chat?": "¿Borrar el chat?", + "Delete directory?": "", "Delete Event": "Borrar Evento", "Delete File": "Borrar Fichero", "Delete folder?": "¿Borrar carpeta?", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Las Conexiones Directas permiten a los usuarios conectar a sus propios endpoints compatibles API OpenAI.", "Direct Message": "Mensaje Directo", "Direct Tool Servers": "Servidores de Herramientas Directos", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "La selección de directorio ha sido cancelada", "Disable All": "Deshabilitar Todo", "Disable Code Interpreter": "Deshabilitar Interprete de Código", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "Número de Peticiones Concurrentes en Incrustración", "Embedding Model": "Modelo de Incrustación", "Embedding Model Engine": "Motor del Modelo de Incrustación", + "Emoji": "", "Emojis": "Emoticonos", "Empty message": "Mensaje vacío", "Enable All": "Habilitar Todo", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "Ingresar Clave API de Kagi Search", "Enter Key Behavior": "Comportamiento de la Tecla de Envío", "Enter language codes": "Ingresar Códigos de Idioma", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Ingresar Clave API de MinerU", "Enter Mistral API Base URL": "Ingresar la URL Base de la API de Mistral", "Enter Mistral API Key": "Ingresar Clave API de Mistral", @@ -902,6 +925,7 @@ "Failed to archive chat.": "Fallo al archivar el chat", "Failed to attach file": "Fallo al adjuntar el archivo", "Failed to clear status": "Fallo al limpiar el estado", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Fallo al conectar al servidor de herramientas: {{URL}}", "Failed to connect to {{URL}} terminal server": "Fallo al conectar al servidor de terminal: {{URL}}", "Failed to copy link": "Fallo al copiar enlace", @@ -955,14 +979,16 @@ "File content updated successfully.": "Contenido del archivo actualizado correctamente.", "File Context": "Contexto del Archivo", "File deleted successfully.": "Archivo borrado correctamente.", + "File Extensions": "", "File Mode": "Modo de Archivo", + "File moved.": "", "File name": "Nombre del archivo", "File not found.": "Archivo no encontrado.", "File removed successfully.": "Archivo eliminado correctamente.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Tamaño del archivo no debe exceder {{maxSize}} MB.", "File Upload": "Subir Archivo", "File uploaded successfully": "Archivo subido correctamente", - "File uploaded!": "¡Archivo subido!", "Filename": "Nombre del Archivo", "Files": "Archivos", "Filter": "Filtro", @@ -1178,13 +1204,13 @@ "Knowledge": "Conocimiento", "Knowledge Access": "Permiso a Conocimiento", "Knowledge Base": "Base de Conocimiento", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Conocimiento creado correctamente.", "Knowledge deleted successfully.": "Conocimiento eliminado correctamente.", "Knowledge Description": "Descripción del Conocimiento", "Knowledge exported successfully": "Conocimiento exportado correctamente", "Knowledge Name": "Nombre del Conocimiento", "Knowledge Public Sharing": "Compartir Conocimiento Públicamente", - "Knowledge reset successfully.": "Conocimiento restablecido correctamente.", "Knowledge Sharing": "Compartir Conocimiento", "Knowledge updated successfully": "Conocimiento actualizado correctamente.", "Kokoro.js (Browser)": "Kokoro.js (Navegador)", @@ -1228,6 +1254,7 @@ "Light": "Claro", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Limitar consultas de búsqueda simultáneas. 0 = ilimitado (predeterminado). Establécerlo en 1 para ejecución secuencial (recomendado para API con límites de velocidad estrictos, como la versión gratuita de Brave).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Limita el número de peticiones concurrentes al incrustrar. Ajusta a 0 para ilimitadas", + "Linkup API Key": "", "List": "Lista", "List calendars, search, create, update, and delete calendar events": "Listar, buscar, crear, actualizar y borrar eventos en calendarios", "Listening...": "Escuchando...", @@ -1378,6 +1405,8 @@ "New calendar": "Nuevo calendario", "New Calendar": "Nuevo Calendario", "New Chat": "Nuevo Chat", + "New directory": "", + "New Directory": "", "New Event": "Nuevo Evento", "New File": "Nuevo Archivo", "New Folder": "Nueva Carpeta", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "No se encontró contenido HTML, CSS, o JavaScript.", "No inference engine with management support found": "No se encontró un motor de inferencia que soporte gestión", "No kernel": "Sin núcleo Jupyter", + "No knowledge bases accessible": "", "No knowledge bases found.": "No se encontraron bases de conocimiento", "No knowledge found": "No se encontró ningún conocimiento", "No limit": "Sin límite", "No memories to clear": "No hay memorias para borrar", "No model IDs": "No hay IDs de modelo", + "No models accessible": "", "No models available": "No hay modelos disponibles", "No models found": "No se encontraron modelos", "No models selected": "No se seleccionaron modelos", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "Ninguna conexión configurada a Terminal", "No terminal connections configured.": "No hay conexiones a terminal configuradas.", "No tool server connections configured.": "No hay conexiones a servidores de herramientas configuradas", + "No tools accessible": "", "No tools found": "No se encontraron herramientas", "No users were found.": "No se encontraron usuarios.", "No valves": "No hay válvulas", @@ -1487,6 +1519,7 @@ "On": "Activado", "Once": "Una vez", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Solo activo cuando \"Pegar el Texto Largo como Archivo\" está activado", "Only active when the chat input is in focus and an LLM is generating a response.": "Solo activo con el foco en la entrada del chat y se está generando una respuesta", "Only active when the chat input is in focus.": "Solo activo con el foco en la entrada del chat", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "Documento PDF (.pdf)", "PDF Extract Images (OCR)": "Extraer imágenes del PDF (OCR)", "PDF Loader Mode": "Modo de Carga del PDF", + "pdf, docx, pptx, xlsx": "", "pending": "pendiente", "Pending": "Pendiente", "Pending User Overlay Content": "Contenido de la SobreCapa Usuario Pendiente", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "El prefijo ID se utiliza para evitar conflictos con otras conexiones al añadir un prefijo a los IDs de modelo, dejar vacío para deshabilitarlo", "Prevent File Creation": "Prevenir la Creación de Archivos", "Preview": "Previsualización", + "Preview Access": "", "Previous 30 days": "30 días previos", "Previous 7 days": "7 días previos", "Previous message": "Mensaje anterior", @@ -1696,6 +1731,9 @@ "Remove from favorites": "Eliminar de favoritos", "Remove image": "Eliminar imagen", "Remove Model": "Eliminar Modelo", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Renombrar", "Renamed to {{name}}": "Renombrado como {{name}}", "Render Markdown in Assistant Messages": "Renderizar Marldown en los Mensajes del Asistente", @@ -1714,6 +1752,7 @@ "Reset": "Reiniciar", "Reset All Models": "Reiniciar Todos los Modelos", "Reset Image": "Restablecer imagen", + "Reset knowledge base?": "", "Reset Upload Directory": "Reiniciar Directorio de Subidas", "Reset Vector Storage/Knowledge": "Reiniciar Almacenamiento de Vectores/Conocimiento", "Reset view": "Reiniciar Vista", @@ -1782,6 +1821,7 @@ "Search Prompts": "Buscar Indicadores", "Search Result Count": "Número de resultados de la búsqueda", "Search Skills": "Buscar Habilidades", + "Search skills...": "", "Search the internet": "Buscar en internet", "Search the web and fetch URLs": "Buscar en la web y obtener URLs", "Search Tools": "Buscar Herramientas", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "Cambiar a editor JSON", "Switch to visual editor": "Cambiar a editor visual", "Sync": "Sincronizar", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Sincronización Completa", "Sync directory": "Sincroniza Directorio", "Sync Failed": "Fallo al Sincronizar", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Esta opción controla cuántos tokens se conservan cuando se actualiza el contexto. Por ejemplo, si se establece en 2, se conservarán los primeros 2 tokens del contexto de la conversación. Conservar el contexto puede ayudar a mantener la continuidad de una conversación, pero puede reducir la habilidad para responder a nuevos temas.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Esta opción activa o desactiva el uso de la característica de razonamiento en Ollama, la cuál permite al modelo pensar antes de generar una respuesta. Cuando está activa el modelo se toma un tiempo para procesar el contexto de la conversación y generar una respuesta más razonada.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Esta opción establece el número máximo de tokens que el modelo puede generar en sus respuestas. Aumentar este límite permite al modelo proporcionar respuestas más largas, pero también puede aumentar la probabilidad de que se genere contenido inútil o irrelevante.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Esta opción eliminará todos los archivos existentes en la colección y los reemplazará con los nuevos archivos subidos.", "This response was generated by \"{{model}}\"": "Esta respuesta fue generada por \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "¡AVISO! Esta plantilla contiene multiples variables de remplazo ([context] o {{context}}. El contexto será inyectado en cada una de ellas.", "This will delete": "Esto eliminará", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "Esto eliminará todos los modelos, incluidos los modelos personalizados", "This will delete all models including custom models and cannot be undone.": "Esto eliminará todos los modelos, incluidos los modelos personalizados y no se puede deshacer.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Esta acción borará permanentemente el calendario \"{{name}}\" y todos sus eventos. Esta acción no se puede deshacer.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Esto reinicializará la base de conocimientos y sincronizará todos los archivos. ¿Desea continuar?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Explicación exhaustiva", "Thought": "Pensando", "Thought for {{DURATION}}": "Pensando durante {{DURATION}}", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "Des/Plegar 1 fuente", "Toggle details": "Des/Plegar detalles", "Toggle Dictation": "Des/Plegar Dictado", + "Toggle Mute": "", "Toggle Sidebar": "Des/Plegar la Barra Lateral", "Toggle status history": "Des/Plegar historial de estado", "Toggle whether current connection is active.": "Alternar si la conexión actual está activa", @@ -2174,7 +2216,7 @@ "Upload Progress": "Progreso de la Subida", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Progreso de la Subida: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Archivos o imágenes cargados", - "Uploading file...": "Subiendo archivo...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Subiendo...", "URL": "URL", "URL is required": "La URL es requerida", @@ -2194,6 +2236,7 @@ "User Groups": "Grupos de Usuarios", "User location successfully retrieved.": "Ubicación de usuario obtenida correctamente.", "User menu": "Menu de Usuario", + "User Preview": "", "User ratings (thumbs up/down)": "Calificaciones de los usuarios (pulgares arriba/abajo)", "User Status": "Estado del Usuario", "User Webhooks": "Usuario Webhooks", diff --git a/src/lib/i18n/locales/et-EE/translation.json b/src/lib/i18n/locales/et-EE/translation.json index 3cd496cdce..00d37bb5f1 100644 --- a/src/lib/i18n/locales/et-EE/translation.json +++ b/src/lib/i18n/locales/et-EE/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[Täna kell] h:mm A", "[Yesterday at] h:mm A": "[Eile kell] h:mm A", "{{ models }}": "{{ mudelid }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} tööriista saadaval", "{{COUNT}} characters": "{{COUNT}} märki", "{{COUNT}} extracted lines": "{{COUNT}} eraldatud rida", "{{COUNT}} files": "{{COUNT}} faili", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} peidetud rida", "{{COUNT}} members": "{{COUNT}} liiget", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} vastust", "{{COUNT}} Rows": "{{COUNT}} rida", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Kas olete kindel, et soovite kustutada kõik vestlused? Seda toimingut ei saa tagasi võtta.", "Are you sure you want to delete this channel?": "Kas olete kindel, et soovite selle kanali kustutada?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Kas olete kindel, et soovite selle sõnumi kustutada?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Kas olete kindel, et soovite selle versiooni kustutada? Alamversioonid seotakse uuesti selle versiooni vanemaga.", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Saadaolevate nimekiri", "Available models": "Saadaolevad mudelid", + "Available Skills": "", "Available Tools": "Saadaolevad tööriistad", "available users": "saadaolevad kasutajad", "available!": "saadaval!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI töövoog", "ComfyUI Workflow Nodes": "ComfyUI töövoo sõlmed", "Comma separated Node Ids (e.g. 1 or 1,2)": "Komadega eraldatud sõlme ID-d (nt 1 või 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "käsk", "Command": "Käsk", "Comment": "Kommentaar", "Commit Message": "Commiti teade", "Community Reviews": "Kogukonna ülevaated", + "Comparing with knowledge base...": "", "Completions": "Lõpetamised", "Compress Images in Channels": "Tihenda pildid kanalites", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Samaaegsed päringud", "Config": "Seadistus", "Config imported successfully": "Seadistus edukalt imporditud", @@ -537,12 +548,14 @@ "Delete a model": "Kustuta mudel", "Delete All": "Kustuta kõik", "Delete All Chats": "Kustuta kõik vestlused", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Kustuta kogu selle kausta sisu", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Kustuta vestlus", "Delete chat?": "Kustutada vestlus?", + "Delete directory?": "", "Delete Event": "", "Delete File": "Kustuta fail", "Delete folder?": "Kustutada kaust?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Otsesed ühendused võimaldavad kasutajatel ühenduda oma OpenAI-ga ühilduvate API lõpp-punktidega.", "Direct Message": "Otsesõnum", "Direct Tool Servers": "Otsesed tööriistaserverid", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Kataloogi valik tühistati", "Disable All": "Keela kõik", "Disable Code Interpreter": "Keela koodi interpretaator", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "Manustamise samaaegsed päringud", "Embedding Model": "Manustamise mudel", "Embedding Model Engine": "Manustamise mudeli mootor", + "Emoji": "", "Emojis": "", "Empty message": "Tühi sõnum", "Enable All": "Luba kõik", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Sisestage Kagi Search API võti", "Enter Key Behavior": "Sisestage võtme käitumine", "Enter language codes": "Sisestage keelekoodid", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Sisestage MinerU API võti", "Enter Mistral API Base URL": "Sisestage Mistral API baas-URL", "Enter Mistral API Key": "Sisestage Mistral API võti", @@ -901,6 +921,7 @@ "Failed to archive chat.": "Vestluse arhiveerimine ebaõnnestus.", "Failed to attach file": "Faili lisamine ebaõnnestus", "Failed to clear status": "Oleku tühjendamine ebaõnnestus", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Ühendamine {{URL}} OpenAPI tööriistaserveriga ebaõnnestus", "Failed to connect to {{URL}} terminal server": "Ühendamine {{URL}} terminali serveriga ebaõnnestus", "Failed to copy link": "Lingi kopeerimine ebaõnnestus", @@ -954,14 +975,16 @@ "File content updated successfully.": "Faili sisu edukalt uuendatud.", "File Context": "Faili kontekst", "File deleted successfully.": "Fail edukalt kustutatud.", + "File Extensions": "", "File Mode": "Faili režiim", + "File moved.": "", "File name": "Faili nimi", "File not found.": "Faili ei leitud.", "File removed successfully.": "Fail edukalt eemaldatud.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Faili suurus ei tohiks ületada {{maxSize}} MB.", "File Upload": "Faili üleslaadimine", "File uploaded successfully": "Fail edukalt üles laaditud", - "File uploaded!": "Fail üles laaditud!", "Filename": "Failinimi", "Files": "Failid", "Filter": "Filter", @@ -1177,13 +1200,13 @@ "Knowledge": "Teadmised", "Knowledge Access": "Teadmiste juurdepääs", "Knowledge Base": "Teadmiste baas", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Teadmised edukalt loodud.", "Knowledge deleted successfully.": "Teadmised edukalt kustutatud.", "Knowledge Description": "Teadmiste kirjeldus", "Knowledge exported successfully": "Teadmised edukalt eksporditud", "Knowledge Name": "Teadmiste nimi", "Knowledge Public Sharing": "Teadmiste avalik jagamine", - "Knowledge reset successfully.": "Teadmised edukalt lähtestatud.", "Knowledge Sharing": "Teadmiste jagamine", "Knowledge updated successfully": "Teadmised edukalt uuendatud", "Kokoro.js (Browser)": "Kokoro.js (brauser)", @@ -1227,6 +1250,7 @@ "Light": "Hele", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Piira samaaegseid otsingupäringuid. 0 = piiramatu (vaikimisi). Määrake 1 järjestikuse täitmise jaoks (soovitatav API-de puhul, millel on ranged piirangud, nagu Brave tasuta tase).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Piirab samaaegsete manustamispäringute arvu. Määrake 0 piirangu puudumiseks.", + "Linkup API Key": "", "List": "Nimekiri", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Kuulamine...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Uus vestlus", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "Uus fail", "New Folder": "Uus kaust", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML, CSS ega JavaScript sisu ei leitud.", "No inference engine with management support found": "Järeldusmootorit haldamise toega ei leitud", "No kernel": "Kernel puudub", + "No knowledge bases accessible": "", "No knowledge bases found.": "Teadmiste baase ei leitud.", "No knowledge found": "Teadmisi ei leitud", "No limit": "", "No memories to clear": "Pole mälestusi, mida kustutada", "No model IDs": "Mudeli ID-d puuduvad", + "No models accessible": "", "No models available": "Mudeleid pole saadaval", "No models found": "Mudeleid ei leitud", "No models selected": "Mudeleid pole valitud", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "Terminaliühendust pole seadistatud.", "No terminal connections configured.": "Terminaliühendusi pole seadistatud.", "No tool server connections configured.": "Tööriistaserveri ühendusi pole seadistatud.", + "No tools accessible": "", "No tools found": "Tööriistu ei leitud", "No users were found.": "Kasutajaid ei leitud.", "No valves": "Klappe pole", @@ -1486,6 +1515,7 @@ "On": "Sees", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Aktiivne ainult siis, kui seade \"Kleebi suur tekst failina\" on sisse lülitatud.", "Only active when the chat input is in focus and an LLM is generating a response.": "Aktiivne ainult siis, kui vestluse sisend on fookuses ja LLM genereerib vastust.", "Only active when the chat input is in focus.": "Aktiivne ainult siis, kui vestluse sisend on fookuses.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF dokument (.pdf)", "PDF Extract Images (OCR)": "PDF-ist piltide väljavõtmine (OCR)", "PDF Loader Mode": "PDF laadija režiim", + "pdf, docx, pptx, xlsx": "", "pending": "ootel", "Pending": "Ootel", "Pending User Overlay Content": "Ootava kasutaja kattekihi sisu", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefiksi ID-d kasutatakse teiste ühendustega konfliktide vältimiseks, lisades mudeli ID-dele prefiksi - jätke tühjaks keelamiseks", "Prevent File Creation": "Keela failide loomine", "Preview": "Eelvaade", + "Preview Access": "", "Previous 30 days": "Eelmised 30 päeva", "Previous 7 days": "Eelmised 7 päeva", "Previous message": "Eelmine sõnum", @@ -1695,6 +1727,8 @@ "Remove from favorites": "Eemalda lemmikutest", "Remove image": "Eemalda pilt", "Remove Model": "Eemalda mudel", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Nimeta ümber", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Lähtesta", "Reset All Models": "Lähtesta kõik mudelid", "Reset Image": "Lähtesta pilt", + "Reset knowledge base?": "", "Reset Upload Directory": "Lähtesta üleslaadimiste kataloog", "Reset Vector Storage/Knowledge": "Lähtesta vektormälu/teadmised", "Reset view": "Lähtesta vaade", @@ -1780,6 +1815,7 @@ "Search Prompts": "Otsi sisendeid", "Search Result Count": "Otsingutulemuste arv", "Search Skills": "Otsi oskusi", + "Search skills...": "", "Search the internet": "Otsi internetist", "Search the web and fetch URLs": "Otsi veebist ja hangi URL-e", "Search Tools": "Otsi tööriistu", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "Sünkrooni", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Sünkroonimine lõpetatud!", "Sync directory": "Sünkroniseeri kataloog", "Sync Failed": "Sünkroonimine ebaõnnestus", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "See valik kontrollib, mitu tokenit säilitatakse konteksti värskendamisel. Näiteks kui see on määratud 2-le, säilitatakse vestluse konteksti viimased 2 tokenit. Konteksti säilitamine võib aidata säilitada vestluse järjepidevust, kuid võib vähendada võimet reageerida uutele teemadele.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "See valik lubab või keelab Ollama arutlusfunktsiooni kasutamise, mis võimaldab mudelil enne vastuse genereerimist mõelda. Kui see on lubatud, võib mudel võtta hetke vestluse konteksti töötlemiseks ja läbimõeldum vastuse genereerimiseks.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "See valik määrab maksimaalse tokenite arvu, mida mudel saab oma vastuses genereerida. Selle piirmäära suurendamine võimaldab mudelil anda pikemaid vastuseid, kuid võib suurendada ka ebavajaliku või ebaolulise sisu genereerimise tõenäosust.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "See valik kustutab kõik olemasolevad failid kogust ja asendab need äsja üleslaaditud failidega.", "This response was generated by \"{{model}}\"": "Selle vastuse genereeris \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "See kustutab", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "See kustutab kõik mudelid, sealhulgas kohandatud mudelid", "This will delete all models including custom models and cannot be undone.": "See kustutab kõik mudelid, sealhulgas kohandatud mudelid, ja seda ei saa tagasi võtta.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "See lähtestab teadmiste baasi ja sünkroniseerib kõik failid. Kas soovite jätkata?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Põhjalik selgitus", "Thought": "", "Thought for {{DURATION}}": "Mõtles {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "Lülita 1 allikas", "Toggle details": "", "Toggle Dictation": "Lülita dikteerimine", + "Toggle Mute": "", "Toggle Sidebar": "Lülita külgriba", "Toggle status history": "Lülita olekuajalugu", "Toggle whether current connection is active.": "Lülita, kas praegune ühendus on aktiivne.", @@ -2171,7 +2209,7 @@ "Upload Progress": "Üleslaadimise progress", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Üleslaadimise edenemine: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Üleslaaditud failid või pildid", - "Uploading file...": "Faili üleslaadimine...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Üleslaadimine...", "URL": "URL", "URL is required": "URL on nõutav", @@ -2191,6 +2229,7 @@ "User Groups": "Kasutajagrupid", "User location successfully retrieved.": "Kasutaja asukoht edukalt hangitud.", "User menu": "Kasutaja menüü", + "User Preview": "", "User ratings (thumbs up/down)": "Kasutajate hinnangud (pöidlad üles/alla)", "User Status": "Kasutaja olek", "User Webhooks": "Kasutaja webhook'id", diff --git a/src/lib/i18n/locales/eu-ES/translation.json b/src/lib/i18n/locales/eu-ES/translation.json index e52829b81f..6d8ec3bcd4 100644 --- a/src/lib/i18n/locales/eu-ES/translation.json +++ b/src/lib/i18n/locales/eu-ES/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Zerrenda erabilgarria", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "erabilgarri dauden erabiltzaileak", "available!": "eskuragarri!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI Lan-fluxua", "ComfyUI Workflow Nodes": "ComfyUI Lan-fluxu Nodoak", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Komandoa", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Osatzeak", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Eskari Konkurrenteak", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "Ezabatu eredu bat", "Delete All": "", "Delete All Chats": "Ezabatu Txat Guztiak", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Ezabatu Txata", "Delete chat?": "Ezabatu txata?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Ezabatu karpeta?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Embedding Eredua", "Embedding Model Engine": "Embedding Eredu Motorea", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "Sartu hizkuntza kodeak", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "Fitxategiaren edukia ongi eguneratu da.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Fitxategi Modua", + "File moved.": "", "File name": "", "File not found.": "Ez da fitxategia aurkitu.", "File removed successfully.": "Fitxategia ongi ezabatu da.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Fitxategiaren tamainak ez luke {{maxSize}} MB gainditu behar.", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "Fitxategiak", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "Ezagutza", "Knowledge Access": "Ezagutzarako Sarbidea", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Ezagutza ongi sortu da.", "Knowledge deleted successfully.": "Ezagutza ongi ezabatu da.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "Ezagutza ongi berrezarri da.", "Knowledge Sharing": "", "Knowledge updated successfully": "Ezagutza ongi eguneratu da.", "Kokoro.js (Browser)": "", @@ -1227,6 +1250,7 @@ "Light": "Argia", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Entzuten...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Txat berria", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Ez da HTML, CSS, edo JavaScript edukirik aurkitu.", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Ez da ezagutzarik aurkitu", "No limit": "", "No memories to clear": "", "No model IDs": "Ez dago modelo IDrik", + "No models accessible": "", "No models available": "", "No models found": "Ez da modelorik aurkitu", "No models selected": "Ez da modelorik hautatu", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Ez da erabiltzailerik aurkitu.", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "Piztuta", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF dokumentua (.pdf)", "PDF Extract Images (OCR)": "PDF irudiak erauzi (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "zain", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Aurrizki IDa erabiltzen da beste konexioekin gatazkak saihesteko modelo IDei aurrizki bat gehituz - utzi hutsik desgaitzeko", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Aurreko 30 egunak", "Previous 7 days": "Aurreko 7 egunak", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Kendu modeloa", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Berrizendatu", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Berrezarri", "Reset All Models": "", "Reset Image": "Berrezarri irudia", + "Reset knowledge base?": "", "Reset Upload Directory": "Berrezarri karga direktorioa", "Reset Vector Storage/Knowledge": "Berrezarri bektore biltegia/ezagutza", "Reset view": "", @@ -1780,6 +1815,7 @@ "Search Prompts": "Bilatu prompt-ak", "Search Result Count": "Bilaketa emaitzen kopurua", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "Bilaketa tresnak", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Sinkronizatu direktorioa", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Aukera honek bilduman dauden fitxategi guztiak ezabatuko ditu eta berriki kargatutako fitxategiekin ordezkatuko ditu.", "This response was generated by \"{{model}}\"": "Erantzun hau \"{{model}}\" modeloak sortu du", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Honek ezabatuko du", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Honek modelo guztiak ezabatuko ditu, modelo pertsonalizatuak barne", "This will delete all models including custom models and cannot be undone.": "Honek modelo guztiak ezabatuko ditu, modelo pertsonalizatuak barne, eta ezin da desegin.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Honek ezagutza-basea berrezarri eta fitxategi guztiak sinkronizatuko ditu. Jarraitu nahi duzu?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Azalpen sakona", "Thought": "", "Thought for {{DURATION}}": "", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "Kargaren aurrerapena", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URLa", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "Erabiltzailearen kokapena ongi berreskuratu da.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/fa-IR/translation.json b/src/lib/i18n/locales/fa-IR/translation.json index 929a62614e..a556d73ec1 100644 --- a/src/lib/i18n/locales/fa-IR/translation.json +++ b/src/lib/i18n/locales/fa-IR/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[امروز در] h:mm A", "[Yesterday at] h:mm A": "[دیروز در] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} ابزار موجود", "{{COUNT}} characters": "{{COUNT}} نویسه", "{{COUNT}} extracted lines": "{{COUNT}} خط استخراج شده", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} خط پنهان", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} پاسخ", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "آیا مطمئن هستید که می\u200cخواهید این کانال را حذف کنید؟", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "آیا مطمئن هستید که می\u200cخواهید این پیام را حذف کنید؟", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "فهرست دردسترس", "Available models": "", + "Available Skills": "", "Available Tools": "ابزارهای موجود", "available users": "کاربران در دسترس", "available!": "در دسترس!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "گردش کار کومیوآی", "ComfyUI Workflow Nodes": "گره\u200cهای گردش کار کومیوآی", "Comma separated Node Ids (e.g. 1 or 1,2)": "شناسه\u200cهای گره که با کاما جدا شده\u200cاند (مثلاً ۱ یا ۱,۲)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "دستور", "Comment": "نظر", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "تکمیل\u200cها", "Compress Images in Channels": "فشرده\u200cسازی تصاویر در کانال\u200cها", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "درخواست های همزمان", "Config": "", "Config imported successfully": "پیکربندی با موفقیت وارد شد", @@ -537,12 +548,14 @@ "Delete a model": "حذف یک مدل", "Delete All": "", "Delete All Chats": "حذف همه گفتگوها", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "حذف گپ", "Delete chat?": "گفتگو حذف شود؟", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "پوشه حذف شود؟", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "اتصالات مستقیم به کاربران اجازه می\u200cدهد به نقاط پایانی API سازگار با OpenAI خود متصل شوند.", "Direct Message": "", "Direct Tool Servers": "سرورهای ابزار مستقیم", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "انتخاب دایرکتوری لغو شد", "Disable All": "", "Disable Code Interpreter": "غیرفعال کردن مفسر کد", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "مدل پیدائش", "Embedding Model Engine": "محرک مدل پیدائش", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "کلید API جستجوی کاگی را وارد کنید", "Enter Key Behavior": "رفتار کلید را وارد کنید", "Enter language codes": "کد زبان را وارد کنید", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "آدرس پایه API میسترال را وارد کنید", "Enter Mistral API Key": "کلید API میسترال را وارد کنید", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "خطا در اتصال به سرور ابزار OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "کپی لینک ناموفق بود", @@ -954,14 +975,16 @@ "File content updated successfully.": "محتوای پرونده با موفقیت به\u200cروز شد.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "حالت پرونده", + "File moved.": "", "File name": "", "File not found.": "پرونده یافت نشد.", "File removed successfully.": "پرونده با موفقیت حذف شد.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "حجم پرونده نبایستی از {{maxSize}} MB بیشتر باشد.", "File Upload": "آپلود فایل", "File uploaded successfully": "پرونده با موفقیت بارگذاری شد", - "File uploaded!": "", "Filename": "", "Files": "پرونده\u200cها", "Filter": "فیلتر", @@ -1177,13 +1200,13 @@ "Knowledge": "دانش", "Knowledge Access": "دسترسی به دانش", "Knowledge Base": "پایگاه دانش", + "Knowledge base has been reset": "", "Knowledge created successfully.": "دانش با موفقیت ایجاد شد.", "Knowledge deleted successfully.": "دانش با موفقیت حذف شد.", "Knowledge Description": "توضیحات دانش", "Knowledge exported successfully": "", "Knowledge Name": "نام دانش", "Knowledge Public Sharing": "اشتراک\u200cگذاری عمومی دانش", - "Knowledge reset successfully.": "دانش با موفقیت بازنشانی شد.", "Knowledge Sharing": "", "Knowledge updated successfully": "دانش با موفقیت به\u200cروز شد", "Kokoro.js (Browser)": "Kokoro.js (مرورگر)", @@ -1227,6 +1250,7 @@ "Light": "روشن", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "در حال گوش دادن...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "گپ جدید", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "پوشه جدید", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "محتوای HTML، CSS یا JavaScript یافت نشد.", "No inference engine with management support found": "موتور استنتاج با پشتیبانی مدیریت یافت نشد", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "دانشی یافت نشد", "No limit": "", "No memories to clear": "حافظه\u200cای برای پاک کردن وجود ندارد", "No model IDs": "شناسه مدلی وجود ندارد", + "No models accessible": "", "No models available": "", "No models found": "مدلی یافت نشد", "No models selected": "مدلی انتخاب نشده است", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "هیچ ابزاری یافت نشد", "No users were found.": "کاربری یافت نشد.", "No valves": "بدون دریچه", @@ -1486,6 +1515,7 @@ "On": "روشن", "Once": "", "OneDrive": "وان\u200cدرایو", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "فقط زمانی فعال است که تنظیم «چسباندن متن بزرگ به عنوان فایل» روشن باشد.", "Only active when the chat input is in focus and an LLM is generating a response.": "فقط زمانی فعال است که ورودی چت در فوکوس باشد و یک LLM در حال تولید پاسخ باشد.", "Only active when the chat input is in focus.": "فقط زمانی فعال است که ورودی چت در فوکوس باشد.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF سند (.pdf)", "PDF Extract Images (OCR)": "استخراج تصاویر از PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "در انتظار", "Pending": "در انتظار", "Pending User Overlay Content": "محتوای پوشش کاربر در انتظار", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "شناسه پیشوند برای جلوگیری از تداخل با سایر اتصالات با افزودن پیشوند به شناسه\u200cهای مدل استفاده می\u200cشود - برای غیرفعال کردن خالی بگذارید", "Prevent File Creation": "جلوگیری از ایجاد فایل", "Preview": "پیش\u200cنمایش", + "Preview Access": "", "Previous 30 days": "30 روز قبل", "Previous 7 days": "7 روز قبل", "Previous message": "پیام قبلی", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "حذف تصویر", "Remove Model": "حذف مدل", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "تغییر نام", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "بازنشانی", "Reset All Models": "بازنشانی همه مدل\u200cها", "Reset Image": "بازنشانی تصویر", + "Reset knowledge base?": "", "Reset Upload Directory": "بازنشانی پوشه آپلود", "Reset Vector Storage/Knowledge": "بازنشانی ذخیره\u200cسازی برداری/دانش", "Reset view": "بازنشانی نما", @@ -1780,6 +1815,7 @@ "Search Prompts": "جستجوی پرامپت\u200cها", "Search Result Count": "تعداد نتایج جستجو", "Search Skills": "", + "Search skills...": "", "Search the internet": "جستجوی اینترنت", "Search the web and fetch URLs": "", "Search Tools": "ابزارهای جستجو", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "هم\u200cگام\u200cسازی پوشه", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "این گزینه کنترل می\u200cکند که هنگام تازه\u200cسازی متن، چند توکن حفظ شوند. برای مثال، اگر روی 2 تنظیم شود، 2 توکن آخر متن مکالمه حفظ خواهند شد. حفظ متن می\u200cتواند به حفظ پیوستگی مکالمه کمک کند، اما ممکن است توانایی پاسخ به موضوعات جدید را کاهش دهد.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "این گزینه استفاده از ویژگی استدلال در اُلاما را فعال یا غیرفعال می\u200cکند، که به مدل اجازه می\u200cدهد قبل از تولید پاسخ فکر کند. هنگامی که فعال باشد، مدل می\u200cتواند لحظه\u200cای را برای پردازش زمینه مکالمه صرف کند و یک پاسخ متفکرانه\u200cتر تولید کند.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "این گزینه حداکثر تعداد توکن\u200cهایی را که مدل می\u200cتواند در پاسخ خود تولید کند تنظیم می\u200cکند. افزایش این محدودیت به مدل اجازه می\u200cدهد پاسخ\u200cهای طولانی\u200cتری ارائه دهد، اما ممکن است احتمال تولید محتوای بی\u200cفایده یا نامربوط را نیز افزایش دهد.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "این گزینه تمام فایل\u200cهای موجود در مجموعه را حذف کرده و با فایل\u200cهای جدید آپلود شده جایگزین می\u200cکند.", "This response was generated by \"{{model}}\"": "این پاسخ توسط \"{{model}}\" تولید شده است", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "این حذف خواهد شد", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "این همه مدل\u200cها از جمله مدل\u200cهای سفارشی را حذف خواهد کرد", "This will delete all models including custom models and cannot be undone.": "این همه مدل\u200cها از جمله مدل\u200cهای سفارشی را حذف خواهد کرد و قابل بازگشت نیست.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "این پایگاه دانش را بازنشانی کرده و همه فایل\u200cها را همگام\u200cسازی خواهد کرد. آیا می\u200cخواهید ادامه دهید؟", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "توضیح کامل", "Thought": "", "Thought for {{DURATION}}": "فکر کردن برای {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "تغییر وضعیت نوار کناری", "Toggle status history": "", "Toggle whether current connection is active.": "تغییر وضعیت فعال بودن اتصال فعلی.", @@ -2171,7 +2209,7 @@ "Upload Progress": "پیشرفت آپلود", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "پیشرفت آپلود: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}٪)", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "آدرس اینترنتی", "URL is required": "آدرس URL مورد نیاز است", @@ -2191,6 +2229,7 @@ "User Groups": "گروه\u200cهای کاربری", "User location successfully retrieved.": "موقعیت مکانی کاربر با موفقیت دریافت شد.", "User menu": "منوی کاربر", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "وب\u200cهوک\u200cهای کاربر", diff --git a/src/lib/i18n/locales/fi-FI/translation.json b/src/lib/i18n/locales/fi-FI/translation.json index 2479b1ce06..fba699ec4d 100644 --- a/src/lib/i18n/locales/fi-FI/translation.json +++ b/src/lib/i18n/locales/fi-FI/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[Tänään] h:mm A", "[Yesterday at] h:mm A": "[Eilen] h:mm A", "{{ models }}": "{{ mallit }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} työkalua saatavilla", "{{COUNT}} characters": "{{COUNT}} kirjainta", "{{COUNT}} extracted lines": "{{COUNT}} poimittua riviä", "{{COUNT}} files": "{{COUNT}} tiedostoa", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} piilotettua riviä", "{{COUNT}} members": "{{COUNT}} jäsentä", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} vastausta", "{{COUNT}} Rows": "{{COUNT}} riviä", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Haluatko varmasti poistaa kaikki keskustelut? Tätä toimintoa ei voi peruuttaa.", "Are you sure you want to delete this channel?": "Haluatko varmasti poistaa tämän kanavan?", "Are you sure you want to delete this connection? This action cannot be undone.": "Haluatko varmasti poistaa yhteyden? Tätä toimintoa ei voi peruuttaa.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "Haluatko varmasti poistaa muiston? Tätä toimintoa ei voi peruuttaa.", "Are you sure you want to delete this message?": "Haluatko varmasti poistaa tämän viestin?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Haluatko varmasti poistaa tämän version? Alaversiot linkitetään uudelleen tämän version ylätason versioon.", @@ -239,6 +245,7 @@ "Automations": "Automaatiot", "Available list": "Käytettävissä oleva luettelo", "Available models": "Käytettävissä olevat mallit", + "Available Skills": "", "Available Tools": "Käytettävissä olevat työkalut", "available users": "käytettävissä olevat käyttäjät", "available!": "saatavilla!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI-työnkulku", "ComfyUI Workflow Nodes": "ComfyUI-työnkulun solmut", "Comma separated Node Ids (e.g. 1 or 1,2)": "Pilkulla erotellut Node Id:t (esim. 1 tai 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "komento", "Command": "Komento", "Comment": "Kommentti", "Commit Message": "Vahvistusviesti", "Community Reviews": "Yhteisön arvostelut", + "Comparing with knowledge base...": "", "Completions": "Täydennykset", "Compress Images in Channels": "Pakkaa kuvat kanavissa", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Samanaikaiset pyynnöt", "Config": "Määritykset", "Config imported successfully": "Määritysten tuonti onnistui", @@ -537,12 +548,14 @@ "Delete a model": "Poista malli", "Delete All": "Poista kaikki", "Delete All Chats": "Poista kaikki keskustelut", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Poista kaikki sisällöt tästä kansiosta", "Delete automation?": "Poista automaatio?", "Delete calendar": "Poista kalenteri", "Delete Calendar": "Poista kalenteri", "Delete Chat": "Poista keskustelu", "Delete chat?": "Haluatko varmasti poistaa tämän keskustelun?", + "Delete directory?": "", "Delete Event": "Poista tapahtuma?", "Delete File": "Poista tiedosto", "Delete folder?": "Haluatko varmasti poistaa tämän kansion?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Suorat yhteydet mahdollistavat käyttäjien yhdistää omia OpenAI-yhteensopivia API-päätepisteitä.", "Direct Message": "Suora viesti", "Direct Tool Servers": "Suorat työkalu palvelimet", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Hakemiston valinta keskeytettiin", "Disable All": "Poista kaikki käytöstä", "Disable Code Interpreter": "Poista Koodin suoritus käytöstä", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "Samanaikaiset upotuspyynnöt", "Embedding Model": "Upotusmalli", "Embedding Model Engine": "Upotusmallin moottori", + "Emoji": "", "Emojis": "Emojit", "Empty message": "Tyhjä viesti", "Enable All": "Ota kaikki käyttöön", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Kirjoita Kagi Search API -avain", "Enter Key Behavior": "Enter näppäimen käyttäytyminen", "Enter language codes": "Kirjoita kielikoodit", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Kirjoita MinerU API-avain", "Enter Mistral API Base URL": "Kirjoita Mistral API verkko-osoite", "Enter Mistral API Key": "Kirjoita Mistral API-avain", @@ -901,6 +921,7 @@ "Failed to archive chat.": "Keskustelun arkistointi epäonnistui.", "Failed to attach file": "Tiedoston liittäminen epäonnistui", "Failed to clear status": "Tilan tyhjentäminen epäonnistui", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Yhdistäminen {{URL}} OpenAPI työkalu palvelimeen epäonnistui", "Failed to connect to {{URL}} terminal server": "Yhdistäminen {{URL}} päätepalvelimeen epäonnistui", "Failed to copy link": "Linkin kopiointi epäonnistui", @@ -954,14 +975,16 @@ "File content updated successfully.": "Tiedoston sisältö päivitetty onnistuneesti.", "File Context": "Tiedoston konteksti", "File deleted successfully.": "Tiedosto poistettiin onnistuneesti.", + "File Extensions": "", "File Mode": "Tiedostotila", + "File moved.": "", "File name": "Tiedostonimi", "File not found.": "Tiedostoa ei löytynyt.", "File removed successfully.": "Tiedosto poistettu onnistuneesti.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Tiedoston koko ei saa ylittää {{maxSize}} MB.", "File Upload": "Tiedoston lataus", "File uploaded successfully": "Tiedosto ladattiin onnistuneesti", - "File uploaded!": "Tiedosto ladattu!", "Filename": "Tiedostonimi", "Files": "Tiedostot", "Filter": "Suodata", @@ -1177,13 +1200,13 @@ "Knowledge": "Tietämys", "Knowledge Access": "Tiedon käyttöoikeus", "Knowledge Base": "Tietokanta", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Tietokanta luotu onnistuneesti.", "Knowledge deleted successfully.": "Tietokanta poistettu onnistuneesti.", "Knowledge Description": "Tietokannan kuvaus", "Knowledge exported successfully": "Tietokanta viety onnistuneesti", "Knowledge Name": "Tietokannan nimi", "Knowledge Public Sharing": "Tietokannan julkinen jakaminen", - "Knowledge reset successfully.": "Tietokanta nollattu onnistuneesti.", "Knowledge Sharing": "Tietokannan jakaminen", "Knowledge updated successfully": "Tietokanta päivitetty onnistuneesti", "Kokoro.js (Browser)": "Kokoro.js (selain)", @@ -1227,6 +1250,7 @@ "Light": "Vaalea", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Rajoita samanaikaisia hakukyselyitä. 0 = rajoittamaton (oletus). Aseta arvoon 1 peräkkäistä suoritusta varten (suositellaan API-rajapinnoille, joilla on tiukat nopeusrajoitukset, kuten Brave-ilmaistaso).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Rajoittaa samanaikaisten upotuspyyntöjen määrää. Arvolla 0 ei rajoituksia.", + "Linkup API Key": "", "List": "Lista", "List calendars, search, create, update, and delete calendar events": "Listaa kalenterit, hae, luo, päivitä ja poista kalenteritapahtumia", "Listening...": "Kuuntelee...", @@ -1377,6 +1401,8 @@ "New calendar": "Uusi kalenteri", "New Calendar": "Uusi kalenteri", "New Chat": "Uusi keskustelu", + "New directory": "", + "New Directory": "", "New Event": "Uusi tapahtuma", "New File": "Uusi tiedosto", "New Folder": "Uusi kansio", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML-, CSS- tai JavaScript-sisältöä ei löytynyt.", "No inference engine with management support found": "", "No kernel": "Ei kerneliä", + "No knowledge bases accessible": "", "No knowledge bases found.": "Tietokantoja ei löytynyt.", "No knowledge found": "Tietoa ei löytynyt", "No limit": "Ei rajoituksia", "No memories to clear": "Ei muistia tyhjennettäväksi", "No model IDs": "Ei mallitunnuksia", + "No models accessible": "", "No models available": "Malleja ei saatavilla", "No models found": "Malleja ei löytynyt", "No models selected": "Malleja ei ole valittu", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "Ei pääteyhteyttä määritettynä.", "No terminal connections configured.": "Ei pääteyhteyksiä määritettynä.", "No tool server connections configured.": "Työkalupalvelinyhteyksiä ei ole määritetty.", + "No tools accessible": "", "No tools found": "Työkaluja ei löytynyt", "No users were found.": "Käyttäjiä ei löytynyt.", "No valves": "Ei venttiileitä", @@ -1486,6 +1515,7 @@ "On": "Käytössä", "Once": "Kerran", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Aktiivinen vain, kun \"Liitä suuri teksti tiedostona\" -asetus on käytössä.", "Only active when the chat input is in focus and an LLM is generating a response.": "Aktiivinen vain, kun tekstikenttä on kohdistettuna ja LLM luo vastausta.", "Only active when the chat input is in focus.": "Aktiivinen vain, kun tekstikenttä on valittuna.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF-asiakirja (.pdf)", "PDF Extract Images (OCR)": "Poimi kuvat PDF:stä (OCR)", "PDF Loader Mode": "PDF latausmoodi", + "pdf, docx, pptx, xlsx": "", "pending": "odottaa", "Pending": "Odottaa", "Pending User Overlay Content": "Odottavien käyttäjien sisältö", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Etuliite-ID:tä käytetään välttämään ristiriidat muiden yhteyksien kanssa lisäämällä etuliite mallitunnuksiin - jätä tyhjäksi, jos haluat ottaa sen pois käytöstä", "Prevent File Creation": "Estä tiedostojen luonti", "Preview": "Esikatselu", + "Preview Access": "", "Previous 30 days": "Edelliset 30 päivää", "Previous 7 days": "Edelliset 7 päivää", "Previous message": "Edellinen viesti", @@ -1695,6 +1727,8 @@ "Remove from favorites": "Poista suosikeista", "Remove image": "Poista kuva", "Remove Model": "Poista malli", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Nimeä uudelleen", "Renamed to {{name}}": "Nimetty uudelleen {{name}}", "Render Markdown in Assistant Messages": "Renderöi Markdown avustajan viesteissä", @@ -1713,6 +1747,7 @@ "Reset": "Palauta", "Reset All Models": "Palauta kaikki mallit", "Reset Image": "Palauta kuva", + "Reset knowledge base?": "", "Reset Upload Directory": "Palauta latauspolku", "Reset Vector Storage/Knowledge": "Tyhjennä vektoritallennukset/tietämys", "Reset view": "Palauta näkymä", @@ -1780,6 +1815,7 @@ "Search Prompts": "Hae kehotteita", "Search Result Count": "Hakutulosten määrä", "Search Skills": "Etsi taitoja", + "Search skills...": "", "Search the internet": "Hae verkosta", "Search the web and fetch URLs": "Hae verkosta ja hae URL-osoitteita", "Search Tools": "Hae työkaluja", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "Vaihda JSON-editoriin", "Switch to visual editor": "Vaihda visuaaliseen editoriin", "Sync": "Synkronoi", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Synkronointi valmis!", "Sync directory": "Synkronoitu hakemisto", "Sync Failed": "Synkronointi epäonnistui", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Tämä asetus määrittää, kuinka monta tokenia säilytetään kontekstia päivitettäessä. Jos arvoksi on asetettu esimerkiksi 2, keskustelukontekstin kaksi viimeistä tokenia säilytetään. Kontekstin säilyttäminen voi auttaa ylläpitämään keskustelun jatkuvuutta, mutta se voi heikentää kykyä vastata uusiin aiheisiin.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Tämä vaihtoehto mahdollistaa tai estää päättelyominaisuuden käytön Ollama:ssa, mikä antaa mallille mahdollisuuden miettiä ennen vastauksen tuottamista. Kun se on käytössä, malli voi ottaa hetken aikaa käsitellä keskustelun kontekstia ja tuottaa ajatellumman vastauksen.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Tämä vaihtoehto asettaa mallin vastauksessaan luomien tokenien enimmäismäärän. Tämän rajan nostaminen antaa mallille mahdollisuuden tarjota pidempiä vastauksia, mutta se voi myös lisätä hyödyttömän tai epäolennaisen sisällön luomisen todennäköisyyttä.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Tämä vaihtoehto poistaa kaikki kokoelman nykyiset tiedostot ja korvaa ne uusilla ladatuilla tiedostoilla.", "This response was generated by \"{{model}}\"": "Tämän vastauksen tuotti \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Tämä mallipohja sisältää useita kontekstipaikkamerkkejä ([context] tai {{CONTEXT}}). Konteksti lisätään jokaiseen esiintymään.", "This will delete": "Tämä poistaa", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Tämä poistaa kaikki mallit mukaan lukien mukautetut mallit", "This will delete all models including custom models and cannot be undone.": "Tämä poistaa kaikki mallit, mukaan lukien mukautetut mallit, eikä sitä voi peruuttaa.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Tämä poistaa pysyvästi kalenterin \"{{name}}\" ja kaikki sen tapahtumat. Tätä toimintoa ei voi peruuttaa.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Tämä nollaa tietokannan ja synkronoi kaikki tiedostot. Haluatko jatkaa?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Perusteellinen selitys", "Thought": "Ajatus", "Thought for {{DURATION}}": "Ajatteli {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "Näytä/piilota 1 lähde", "Toggle details": "Näytä/piilota yksityiskohdat", "Toggle Dictation": "Sanelu päälle/pois", + "Toggle Mute": "", "Toggle Sidebar": "Näytä/piilota sivupalkki", "Toggle status history": "Näytä/piilota tilahistoria", "Toggle whether current connection is active.": "Vaihda, onko nykyinen yhteys aktiivinen", @@ -2171,7 +2209,7 @@ "Upload Progress": "Latauksen edistyminen", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Latauksen edistyminen: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Ladatut tiedostot tai kuvat", - "Uploading file...": "Ladataan tiedostoa...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Ladataan...", "URL": "URL", "URL is required": "URL vaaditaan", @@ -2191,6 +2229,7 @@ "User Groups": "Käyttäjäryhmät", "User location successfully retrieved.": "Käyttäjän sijainti haettu onnistuneesti.", "User menu": "Käyttäjävalikko", + "User Preview": "", "User ratings (thumbs up/down)": "Käyttäjien arviot (peukku ylös/alas)", "User Status": "Käyttäjän tila", "User Webhooks": "Käyttäjän Webhook:it", diff --git a/src/lib/i18n/locales/fil-PH/translation.json b/src/lib/i18n/locales/fil-PH/translation.json index d5b40d870d..0e7d6bb423 100644 --- a/src/lib/i18n/locales/fil-PH/translation.json +++ b/src/lib/i18n/locales/fil-PH/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -194,6 +199,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -240,6 +246,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "", "available!": "", @@ -399,13 +406,17 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "", "Comment": "Komento", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "", "Config": "", "Config imported successfully": "", @@ -538,12 +549,14 @@ "Delete a model": "", "Delete All": "Burahin ang Lahat", "Delete All Chats": "", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Burahin ang Chat", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -580,6 +593,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "Direktang Mensahe", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -688,6 +706,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "", "Embedding Model Engine": "", + "Emoji": "", "Emojis": "Mga Emoji", "Empty message": "", "Enable All": "", @@ -766,6 +785,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -902,6 +922,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -955,14 +976,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "", + "File moved.": "", "File name": "", "File not found.": "", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "Salain", @@ -1178,13 +1201,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1228,6 +1251,7 @@ "Light": "Maliwanag", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "Listahan", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1378,6 +1402,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Bagong Chat", + "New directory": "", + "New Directory": "", "New Event": "Bagong Kaganapan", "New File": "", "New Folder": "Bagong Folder", @@ -1423,11 +1449,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1448,6 +1476,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1487,6 +1516,7 @@ "On": "Naka-on", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1558,6 +1588,7 @@ "PDF document (.pdf)": "", "PDF Extract Images (OCR)": "", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "", "Pending": "Nakabinbin", "Pending User Overlay Content": "", @@ -1619,6 +1650,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Nakaraang 30 araw", "Previous 7 days": "Nakaraang 7 araw", "Previous message": "", @@ -1696,6 +1728,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Palitan ng Pangalan", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1748,7 @@ "Reset": "I-reset", "Reset All Models": "", "Reset Image": "", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1782,6 +1817,7 @@ "Search Prompts": "", "Search Result Count": "", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1980,6 +2016,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "I-sync", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2052,7 +2090,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2060,7 +2097,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "", "Thought": "", "Thought for {{DURATION}}": "", @@ -2096,6 +2133,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2174,7 +2212,7 @@ "Upload Progress": "", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2194,6 +2232,7 @@ "User Groups": "Mga Grupo ng Gumagamit", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "Katayuan ng Gumagamit", "User Webhooks": "", diff --git a/src/lib/i18n/locales/fr-CA/translation.json b/src/lib/i18n/locales/fr-CA/translation.json index f9e2a97a44..d380d380c1 100644 --- a/src/lib/i18n/locales/fr-CA/translation.json +++ b/src/lib/i18n/locales/fr-CA/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "Nombre d'outils disponibles {{COUNT}}", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "Nombres de lignes cachées {{COUNT}}", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} réponses", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Êtes-vous sûr de vouloir supprimer ce canal ?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Êtes-vous sûr de vouloir supprimer ce message ?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -240,6 +248,7 @@ "Automations": "", "Available list": "Liste disponible", "Available models": "", + "Available Skills": "", "Available Tools": "Outils disponibles", "available users": "utilisateurs disponibles", "available!": "disponible !", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "Flux de travaux de ComfyUI", "ComfyUI Workflow Nodes": "Noeud du flux de travaux de ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Commande", "Comment": "Commentaire", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Complétions", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Demandes concurrentes", "Config": "", "Config imported successfully": "", @@ -538,12 +552,14 @@ "Delete a model": "Supprimer un modèle", "Delete All": "", "Delete All Chats": "Supprimer toutes les conversations", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Supprimer la Conversation", "Delete chat?": "Supprimer la conversation ?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Supprimer le dossier ?", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Les connexions directes permettent aux utilisateurs de se connecter à leurs propres points d'extension API compatibles OpenAI.", "Direct Message": "", "Direct Tool Servers": "Serveur d'outils directs", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "Désactiver l'interpréteur de code", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Modèle d'embedding", "Embedding Model Engine": "Moteur de modèle d'embedding", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "Entrez la clé API Kagi Search", "Enter Key Behavior": "Entrez la clé Behavior", "Enter language codes": "Entrez les codes de langue", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "Entrez la clé APU de Mistral", @@ -902,6 +925,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Échec de la connexion au serveur d'outils OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "Échec de la copie du lien", @@ -955,14 +979,16 @@ "File content updated successfully.": "Contenu du fichier mis à jour avec succès.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Mode fichier", + "File moved.": "", "File name": "", "File not found.": "Fichier introuvable.", "File removed successfully.": "Fichier supprimé avec succès.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "La taille du fichier ne doit pas dépasser {{maxSize}} Mo.", "File Upload": "Téléversement du fichier", "File uploaded successfully": "Fichier téléversé avec succès", - "File uploaded!": "", "Filename": "", "Files": "Fichiers", "Filter": "Filtre", @@ -1178,13 +1204,13 @@ "Knowledge": "Connaissances", "Knowledge Access": "Accès aux connaissances", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Connaissance créée avec succès.", "Knowledge deleted successfully.": "Connaissance supprimée avec succès.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "Partage public des Connaissances", - "Knowledge reset successfully.": "Connaissance réinitialisée avec succès.", "Knowledge Sharing": "", "Knowledge updated successfully": "Connaissance mise à jour avec succès", "Kokoro.js (Browser)": "Kokoro.js (Navigateur)", @@ -1228,6 +1254,7 @@ "Light": "Clair", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Écoute en cours...", @@ -1378,6 +1405,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Nouvelle conversation", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Nouveau dossier", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "Aucun contenu HTML, CSS ou JavaScript trouvé.", "No inference engine with management support found": "Aucun moteur d'inférence avec support trouvé", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Aucune connaissance trouvée", "No limit": "", "No memories to clear": "Aucun souvenir à effacer", "No model IDs": "Aucun ID de modèle", + "No models accessible": "", "No models available": "", "No models found": "Aucun modèle trouvé", "No models selected": "Aucun modèle sélectionné", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Aucun utilisateur trouvé.", "No valves": "", @@ -1487,6 +1519,7 @@ "On": "Activé", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "Document au format PDF (.pdf)", "PDF Extract Images (OCR)": "Extraction d'images PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "en attente", "Pending": "en attente", "Pending User Overlay Content": "Contenu de l'overlay utilisateur en attente", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Le préfixe ID est utilisé pour éviter les conflits avec d'autres connexions en ajoutant un préfixe aux ID de modèle - laissez vide pour désactiver", "Prevent File Creation": "", "Preview": "Aperçu", + "Preview Access": "", "Previous 30 days": "30 derniers jours", "Previous 7 days": "7 derniers jours", "Previous message": "Message précédent", @@ -1696,6 +1731,9 @@ "Remove from favorites": "", "Remove image": "Retirer l'image", "Remove Model": "Retirer le modèle", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Renommer", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "Réinitialiser", "Reset All Models": "Réinitialiser tous les modèles", "Reset Image": "Réinitialiser l’image", + "Reset knowledge base?": "", "Reset Upload Directory": "Réinitialiser le répertoire de téléchargement", "Reset Vector Storage/Knowledge": "Réinitialiser le stockage vectoriel/connaissances", "Reset view": "Réinitialiser la vue", @@ -1782,6 +1821,7 @@ "Search Prompts": "Rechercher des prompts", "Search Result Count": "Nombre de résultats de recherche", "Search Skills": "", + "Search skills...": "", "Search the internet": "Cherche sur Internet", "Search the web and fetch URLs": "", "Search Tools": "Rechercher des outils", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Synchroniser le répertoire", "Sync Failed": "", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Cette option détermine combien de Token sont conservés lors du rafraîchissement du contexte. Par exemple, avec une valeur de 2, les 2 derniers Token seront conservés. Cela aide à maintenir la continuité de la conversation, mais peut limiter la capacité à traiter de nouveaux sujets.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Cette option active ou désactive l'utilisation de la fonctionnalité de raisonnement dans Ollama, qui permet au modèle de réfléchir avant de générer une réponse. Lorsqu'elle est activée, le modèle peut prendre un moment pour traiter le contexte de la conversation et générer une réponse plus réfléchie.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Cette option définit le nombre maximal de Token que le modèle peut générer dans sa réponse. Une valeur plus élevée permet des réponses plus longues, mais peut aussi générer du contenu moins pertinent.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Cette option supprimera tous les fichiers existants dans la collection et les remplacera par les fichiers nouvellement téléchargés.", "This response was generated by \"{{model}}\"": "Cette réponse a été générée par \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Cela supprimera", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "Cela supprimera tous les modèles, y compris les modèles personnalisés", "This will delete all models including custom models and cannot be undone.": "Cela supprimera tous les modèles, y compris les modèles personnalisés, et ne peut pas être annulé.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Cela réinitialisera la base de connaissances et synchronisera tous les fichiers. Souhaitez-vous continuer ?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Explication approfondie", "Thought": "", "Thought for {{DURATION}}": "Réflexion de {{DURATION}}", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "Afficher/masquer si la connection courante est active", @@ -2174,7 +2216,7 @@ "Upload Progress": "Progression de l'envoi", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2194,6 +2236,7 @@ "User Groups": "", "User location successfully retrieved.": "L'emplacement de l'utilisateur a été récupéré avec succès.", "User menu": "Menu utilisateur", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Webhooks utilisateur", diff --git a/src/lib/i18n/locales/fr-FR/translation.json b/src/lib/i18n/locales/fr-FR/translation.json index 48f5f7d0fc..485236ab33 100644 --- a/src/lib/i18n/locales/fr-FR/translation.json +++ b/src/lib/i18n/locales/fr-FR/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "[Aujourd'hui à] H[h]mm", "[Yesterday at] h:mm A": "[Hier à] H[h]mm", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} outils disponibles ", "{{COUNT}} characters": "{{COUNT}} caractères", "{{COUNT}} extracted lines": "{{COUNT}} lignes extraites", "{{COUNT}} files": "{{COUNT}} fichiers", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "Nombres de lignes cachées {{COUNT}}", "{{COUNT}} members": "{{COUNT}} membres", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} réponses", "{{COUNT}} Rows": "{{COUNT}} lignes", "{{count}} selected_one": "", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Êtes-vous sûr de vouloir supprimer toutes les conversations ? Cette action est irréversible.", "Are you sure you want to delete this channel?": "Êtes-vous sûr de vouloir supprimer ce canal ?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Êtes-vous sûr de vouloir supprimer ce message ?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Êtes-vous sûr de vouloir supprimer cette version ? Les versions enfants seront rattachées à la version parente.", @@ -240,6 +248,7 @@ "Automations": "", "Available list": "Liste disponible", "Available models": "Modèles disponibles", + "Available Skills": "", "Available Tools": "Outils disponibles", "available users": "utilisateurs disponibles", "available!": "disponible !", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "Workflow ComfyUI", "ComfyUI Workflow Nodes": "Noeuds du workflow ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "ID de nœud séparés par des virgules (Ex : 1 ou 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "commande", "Command": "Commande", "Comment": "Commentaire", "Commit Message": "Description de la modification", "Community Reviews": "Avis de la communauté", + "Comparing with knowledge base...": "", "Completions": "Complétions", "Compress Images in Channels": "Compresser les images dans les canaux", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Demandes concurrentes", "Config": "Configuration", "Config imported successfully": "Configuration importée avec succès", @@ -538,12 +552,14 @@ "Delete a model": "Supprimer un modèle", "Delete All": "Tout supprimer", "Delete All Chats": "Supprimer toutes les conversations", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Supprimer tout le contenu de ce dossier", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Supprimer la Conversation", "Delete chat?": "Supprimer la conversation ?", + "Delete directory?": "", "Delete Event": "", "Delete File": "Supprimer le fichier", "Delete folder?": "Supprimer le dossier ?", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Les connexions directes permettent aux utilisateurs de se connecter à leurs propres points d'extension API compatibles OpenAI.", "Direct Message": "Message direct", "Direct Tool Servers": "Serveur d'outils directs", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "La sélection du répertoire a été annulée", "Disable All": "Désactiver tout", "Disable Code Interpreter": "Désactiver l'interpréteur de code", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "Requêtes d'embedding simultanées", "Embedding Model": "Modèle d'embedding", "Embedding Model Engine": "Moteur de modèle d'embedding", + "Emoji": "", "Emojis": "", "Empty message": "Message vide", "Enable All": "Activer tout", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "Entrez la clé API Kagi", "Enter Key Behavior": "Comportement de la touche Entrée", "Enter language codes": "Entrez les codes de langue", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Entrez la clé API MinerU", "Enter Mistral API Base URL": "Entrez l'URL de base de l'API Mistral", "Enter Mistral API Key": "Entrez la clé API Mistral", @@ -902,6 +925,7 @@ "Failed to archive chat.": "Échec de l'archivage de la conversation.", "Failed to attach file": "Échec de l'ajout du fichier", "Failed to clear status": "Échec de l'effacement du statut", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Échec de la connexion au serveur d'outils OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "Échec de la connexion au serveur de terminal {{URL}}", "Failed to copy link": "Échec de la copie du lien", @@ -955,14 +979,16 @@ "File content updated successfully.": "Contenu du fichier mis à jour avec succès.", "File Context": "Fichier dans le contexte", "File deleted successfully.": "Fichier supprimé avec succès.", + "File Extensions": "", "File Mode": "Mode fichier", + "File moved.": "", "File name": "Nom du fichier", "File not found.": "Fichier introuvable.", "File removed successfully.": "Fichier supprimé avec succès.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "La taille du fichier ne doit pas dépasser {{maxSize}} Mo.", "File Upload": "Téléversement du fichier", "File uploaded successfully": "Fichier téléversé avec succès", - "File uploaded!": "Fichier téléversé !", "Filename": "Nom du fichier", "Files": "Fichiers", "Filter": "Filtre", @@ -1178,13 +1204,13 @@ "Knowledge": "Connaissances", "Knowledge Access": "Accès aux connaissances", "Knowledge Base": "Base de connaissances", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Connaissance créée avec succès.", "Knowledge deleted successfully.": "Connaissance supprimée avec succès.", "Knowledge Description": "Description des connaissances", "Knowledge exported successfully": "Connaissance exportée avec succès", "Knowledge Name": "Nom de la connaissance", "Knowledge Public Sharing": "Partage public des Connaissances", - "Knowledge reset successfully.": "Connaissance réinitialisée avec succès.", "Knowledge Sharing": "Partage des connaissances", "Knowledge updated successfully": "Connaissance mise à jour avec succès", "Kokoro.js (Browser)": "Kokoro.js (Navigateur)", @@ -1228,6 +1254,7 @@ "Light": "Clair", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Limite les requêtes de recherche simultanées. 0 = illimité (par défaut). Définir à 1 pour une exécution séquentielle (recommandé pour les API avec des limites de débit strictes comme Brave gratuit).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Limite le nombre de requêtes d'embedding simultanées. Définir à 0 pour illimité.", + "Linkup API Key": "", "List": "Liste", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Écoute en cours...", @@ -1378,6 +1405,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Nouvelle conversation", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "Nouveau fichier", "New Folder": "Nouveau dossier", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "Aucun contenu HTML, CSS ou JavaScript trouvé.", "No inference engine with management support found": "Aucun moteur d'inférence avec support trouvé", "No kernel": "Aucun noyau", + "No knowledge bases accessible": "", "No knowledge bases found.": "Aucune base de connaissances trouvée.", "No knowledge found": "Aucune connaissance trouvée", "No limit": "", "No memories to clear": "Aucun souvenir à effacer", "No model IDs": "Aucun ID de modèle", + "No models accessible": "", "No models available": "Aucun modèle disponible", "No models found": "Aucun modèle trouvé", "No models selected": "Aucun modèle sélectionné", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "Aucune connexion à un terminal configurée.", "No terminal connections configured.": "Aucune connexion à un terminal configurée.", "No tool server connections configured.": "Aucune connexion à un serveur d'outils configurée.", + "No tools accessible": "", "No tools found": "Aucun outil trouvé", "No users were found.": "Aucun utilisateur trouvé.", "No valves": "Aucune vanne trouvée", @@ -1487,6 +1519,7 @@ "On": "Activé", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Uniquement lorsque le paramètre \"Coller un texte volumineux comme fichier\" est activé.", "Only active when the chat input is in focus and an LLM is generating a response.": "Uniquement lorsque la zone de saisie de la conversation est active et qu'un LLM génère une réponse.", "Only active when the chat input is in focus.": "Uniquement lorsque la zone de saisie de la conversation est active.", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "Document au format PDF (.pdf)", "PDF Extract Images (OCR)": "Extraction d'images PDF (OCR)", "PDF Loader Mode": "Mode de chargement des PDF", + "pdf, docx, pptx, xlsx": "", "pending": "en attente", "Pending": "en attente", "Pending User Overlay Content": "Contenu de l'overlay utilisateur en attente", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Le préfixe ID est utilisé pour éviter les conflits avec d'autres connexions en ajoutant un préfixe aux ID de modèle - laissez vide pour désactiver", "Prevent File Creation": "Empêcher la création de fichier", "Preview": "Aperçu", + "Preview Access": "", "Previous 30 days": "30 derniers jours", "Previous 7 days": "7 derniers jours", "Previous message": "Message précédent", @@ -1696,6 +1731,9 @@ "Remove from favorites": "Retirer des favoris", "Remove image": "Retirer l'image", "Remove Model": "Retirer le modèle", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Renommer", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "Réinitialiser", "Reset All Models": "Réinitialiser tous les modèles", "Reset Image": "Réinitialiser l’image", + "Reset knowledge base?": "", "Reset Upload Directory": "Réinitialiser le répertoire de téléchargement", "Reset Vector Storage/Knowledge": "Réinitialiser le stockage vectoriel/connaissances", "Reset view": "Réinitialiser la vue", @@ -1782,6 +1821,7 @@ "Search Prompts": "Rechercher des prompts", "Search Result Count": "Nombre de résultats de recherche", "Search Skills": "Rechercher des skills", + "Search skills...": "", "Search the internet": "Cherche sur Internet", "Search the web and fetch URLs": "Rechercher sur le web et récupérer le contenu de sites web à partir d'une URL", "Search Tools": "Rechercher des outils", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "Synchroniser", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Synchronisation terminée !", "Sync directory": "Synchroniser le répertoire", "Sync Failed": "Échec de la synchronisation", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Cette option détermine combien de Token sont conservés lors du rafraîchissement du contexte. Par exemple, avec une valeur de 2, les 2 derniers Token seront conservés. Cela aide à maintenir la continuité de la conversation, mais peut limiter la capacité à traiter de nouveaux sujets.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Cette option active ou désactive l'utilisation de la fonctionnalité de raisonnement dans Ollama, qui permet au modèle de réfléchir avant de générer une réponse. Lorsqu'elle est activée, le modèle peut prendre un moment pour traiter le contexte de la conversation et générer une réponse plus réfléchie.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Cette option définit le nombre maximal de tokens que le modèle peut générer dans sa réponse. Une valeur plus élevée permet des réponses plus longues, mais peut aussi générer du contenu moins pertinent.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Cette option supprimera tous les fichiers existants dans la collection et les remplacera par les fichiers nouvellement téléchargés.", "This response was generated by \"{{model}}\"": "Cette réponse a été générée par \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Cela supprimera", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "Cela supprimera tous les modèles, y compris les modèles personnalisés", "This will delete all models including custom models and cannot be undone.": "Cela supprimera tous les modèles, y compris les modèles personnalisés, et ne peut pas être annulé.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Cela réinitialisera la base de connaissances et synchronisera tous les fichiers. Souhaitez-vous continuer ?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Explication approfondie", "Thought": "", "Thought for {{DURATION}}": "Réflexion de {{DURATION}}", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "Afficher/masquer 1 source", "Toggle details": "", "Toggle Dictation": "Activer/Désactiver la dictée", + "Toggle Mute": "", "Toggle Sidebar": "Afficher/Masquer la barre latérale", "Toggle status history": "Afficher/masquer l'historique des statuts", "Toggle whether current connection is active.": "Afficher/masquer si la connection courante est active", @@ -2174,7 +2216,7 @@ "Upload Progress": "Progression de l'envoi", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Progression du téléchargement\u00a0: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Les fichiers ou images téléversés", - "Uploading file...": "Téléversement du fichier en cours...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Téléversement en cours...", "URL": "URL", "URL is required": "L'URL est requise", @@ -2194,6 +2236,7 @@ "User Groups": "Groupes d'utilisateurs", "User location successfully retrieved.": "Emplacement de l'utilisateur récupéré avec succès.", "User menu": "Menu utilisateur", + "User Preview": "", "User ratings (thumbs up/down)": "Évaluations des utilisateurs (pouces vers le haut/bas)", "User Status": "Statut utilisateur", "User Webhooks": "Webhooks utilisateur", diff --git a/src/lib/i18n/locales/gl-ES/translation.json b/src/lib/i18n/locales/gl-ES/translation.json index 1bdc11ae7f..392d9fe7e1 100644 --- a/src/lib/i18n/locales/gl-ES/translation.json +++ b/src/lib/i18n/locales/gl-ES/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Respostas", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "¿Seguro que queres eliminar este canal?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "¿Seguro que queres eliminar este mensaxe? ", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Lista dispoñible", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "usuarios dispoñibles", "available!": "¡dispoñible!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "Fluxo de traballo de ComfyUI", "ComfyUI Workflow Nodes": "Nodos para ComfyUI Workflow", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Comando", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Respostas autoxeradas", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Solicitudes simultáneas", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "Borra un modelo", "Delete All": "", "Delete All Chats": "Eliminar todos os chats", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Borrar Chat", "Delete chat?": "Borrar o chat?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "¿Eliminar carpeta?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Conexións directas permiten aos usuarios conectar cos seus propios puntos finais de API compatibles con OpenAI.", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Modelo de Embedding", "Embedding Model Engine": "Motor de Modelo de Embedding", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Ingrese a chave API de Kagi Search", "Enter Key Behavior": "Ingrese o comportamento da chave", "Enter language codes": "Ingrese códigos de idioma", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "Contido do Arquivo actualizado correctamente.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Modo de Arquivo", + "File moved.": "", "File name": "", "File not found.": "Arquivo non encontrado.", "File removed successfully.": "Arquivo eliminado correctamente.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Tamaño do Arquivo non debe exceder {{maxSize}} MB.", "File Upload": "", "File uploaded successfully": "Arquivo subido correctamente", - "File uploaded!": "", "Filename": "", "Files": "Arquivos", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "coñecemento", "Knowledge Access": "Acceso al coñecemento", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "coñecemento creado exitosamente.", "Knowledge deleted successfully.": "coñecemento eliminado exitosamente.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "coñecemento restablecido exitosamente.", "Knowledge Sharing": "", "Knowledge updated successfully": "coñecemento actualizado exitosamente.", "Kokoro.js (Browser)": "Kokoro .js (Navegador)", @@ -1227,6 +1250,7 @@ "Light": "Claro", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Escoitando...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Novo Chat", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Nova carpeta", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "No se encontró contido HTML, CSS, o JavaScript.", "No inference engine with management support found": "No se encontró un motor de inferencia con soporte de gestión", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "No se encontrou ningún coñecemento", "No limit": "", "No memories to clear": "Non hay memorias que limpar", "No model IDs": "Non ten IDs de modelos", + "No models accessible": "", "No models available": "", "No models found": "No se encontraron modelos", "No models selected": "No se seleccionaron modelos", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "No se encontraron usuarios.", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "Activado", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "Documento PDF (.pdf)", "PDF Extract Images (OCR)": "Extraer imaxes de PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "pendente", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "O ID de prefixo se utiliza para evitar conflictos con outras conexiones añadiendo un prefijo a os IDs de os modelos - deje vacío para deshabilitar", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Últimos 30 días", "Previous 7 days": "Últimos 7 días", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Eliminar modelo", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Renombrar", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Reiniciar", "Reset All Models": "Reiniciar todos os modelos", "Reset Image": "Restablecer imaxe", + "Reset knowledge base?": "", "Reset Upload Directory": "Reiniciar Directorio de carga", "Reset Vector Storage/Knowledge": "Reiniciar almacenamiento de vectores/coñecemento", "Reset view": "Reiniciar vista", @@ -1780,6 +1815,7 @@ "Search Prompts": "Buscar Prompts", "Search Result Count": "Recuento de resultados de búsqueda", "Search Skills": "", + "Search skills...": "", "Search the internet": "Buscar en internet", "Search the web and fetch URLs": "", "Search Tools": "Búsqueda de ferramentas", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Sincroniza directorio", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Esta opción eliminará todos os arquivos existentes na colección y os reemplazará con novos arquivos subidos.", "This response was generated by \"{{model}}\"": "Esta resposta fue generada por \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Esto eliminará", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Esto eliminará todos os modelos, incluidos os modelos personalizados", "This will delete all models including custom models and cannot be undone.": "Esto eliminará todos os modelos, incluidos os modelos personalizados y no se puede deshacer.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Esto reseteará la base de coñecementos y sincronizará todos os arquivos. ¿Desea continuar?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Explicación exhaustiva", "Thought": "", "Thought for {{DURATION}}": "Pensamiento para {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "Progreso de carga", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "Localización do usuario recuperada con éxito.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/he-IL/translation.json b/src/lib/i18n/locales/he-IL/translation.json index cffc7de3ab..8024cad7e3 100644 --- a/src/lib/i18n/locales/he-IL/translation.json +++ b/src/lib/i18n/locales/he-IL/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ מודלים }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_two": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_two": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -240,6 +248,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "כלים זמינים", "available users": "משתמשים זמינים", "available!": "זמין!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "פקודה", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_two": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "בקשות בו-זמניות", "Config": "", "Config imported successfully": "", @@ -538,12 +552,14 @@ "Delete a model": "מחק מודל", "Delete All": "", "Delete All Chats": "מחק את כל הצ'אטים", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "מחק צ'אט", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "מודל הטמעה", "Embedding Model Engine": "מנוע מודל הטמעה", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "הזן קודי שפה", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -902,6 +925,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -955,14 +979,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "מצב קובץ", + "File moved.": "", "File name": "", "File not found.": "הקובץ לא נמצא.", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1178,13 +1204,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1228,6 +1254,7 @@ "Light": "בהיר", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1378,6 +1405,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "צ'אט חדש", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "תיקייה חדשה", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "לא נמצאו יוזרים", "No valves": "", @@ -1487,6 +1519,7 @@ "On": "פועל", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "מסמך PDF (.pdf)", "PDF Extract Images (OCR)": "חילוץ תמונות מ-PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "ממתין", "Pending": "", "Pending User Overlay Content": "", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "30 הימים הקודמים", "Previous 7 days": "7 הימים הקודמים", "Previous message": "", @@ -1696,6 +1731,9 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "הסר מודל", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._two": "", + "Removing {{count}} stale files..._other": "", "Rename": "שנה שם", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "איפוס תמונה", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1782,6 +1821,7 @@ "Search Prompts": "חפש פקודות", "Search Result Count": "ספירת תוצאות חיפוש", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "תיאור מפורט", "Thought": "", "Thought for {{DURATION}}": "", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2174,7 +2216,7 @@ "Upload Progress": "תקדמות העלאה", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2194,6 +2236,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/hi-IN/translation.json b/src/lib/i18n/locales/hi-IN/translation.json index 4752cd9f56..dbdd03b8bb 100644 --- a/src/lib/i18n/locales/hi-IN/translation.json +++ b/src/lib/i18n/locales/hi-IN/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ मॉडल }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "उपलब्ध उपयोगकर्ता", "available!": "उपलब्ध!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "कमांड", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "समवर्ती अनुरोध", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "एक मॉडल हटाएँ", "Delete All": "", "Delete All Chats": "सभी चैट हटाएं", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "चैट हटाएं", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "मॉडेल अनुकूलन", "Embedding Model Engine": "एंबेडिंग मॉडल इंजन", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "भाषा कोड दर्ज करें", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "फ़ाइल मोड", + "File moved.": "", "File name": "", "File not found.": "फ़ाइल प्राप्त नहीं हुई।", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1227,6 +1250,7 @@ "Light": "हल्का", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "नई चैट", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "चालू", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF दस्तावेज़ (.pdf)", "PDF Extract Images (OCR)": "PDF छवियाँ निकालें (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "लंबित", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "पिछले 30 दिन", "Previous 7 days": "पिछले 7 दिन", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "मोडेल हटाएँ", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "नाम बदलें", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "छवि रीसेट करें", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1780,6 +1815,7 @@ "Search Prompts": "प्रॉम्प्ट खोजें", "Search Result Count": "खोज परिणामों की संख्या", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "विस्तृत व्याख्या", "Thought": "", "Thought for {{DURATION}}": "", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "प्रगति अपलोड करें", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/hr-HR/translation.json b/src/lib/i18n/locales/hr-HR/translation.json index d7356f1107..339209f5fd 100644 --- a/src/lib/i18n/locales/hr-HR/translation.json +++ b/src/lib/i18n/locales/hr-HR/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ modeli }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -240,6 +248,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "dostupni korisnici", "available!": "dostupno!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Naredba", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Istodobni zahtjevi", "Config": "", "Config imported successfully": "", @@ -538,12 +552,14 @@ "Delete a model": "Izbriši model", "Delete All": "", "Delete All Chats": "Izbriši sve razgovore", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Izbriši razgovor", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Embedding model", "Embedding Model Engine": "Embedding model pogon", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "Unesite kodove jezika", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -902,6 +925,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -955,14 +979,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Način datoteke", + "File moved.": "", "File name": "", "File not found.": "Datoteka nije pronađena.", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1178,13 +1204,13 @@ "Knowledge": "Znanje", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1228,6 +1254,7 @@ "Light": "Svijetlo", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Slušam...", @@ -1378,6 +1405,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Novi razgovor", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1487,6 +1519,7 @@ "On": "Uključeno", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "PDF dokument (.pdf)", "PDF Extract Images (OCR)": "PDF izdvajanje slika (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "u tijeku", "Pending": "", "Pending User Overlay Content": "", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Prethodnih 30 dana", "Previous 7 days": "Prethodnih 7 dana", "Previous message": "", @@ -1696,6 +1731,9 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Ukloni model", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._other": "", "Rename": "Preimenuj", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "Resetiraj sliku", + "Reset knowledge base?": "", "Reset Upload Directory": "Poništi upload direktorij", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1782,6 +1821,7 @@ "Search Prompts": "Pretraga prompta", "Search Result Count": "Broj rezultata pretraživanja", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "Alati za pretraživanje", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Detaljno objašnjenje", "Thought": "", "Thought for {{DURATION}}": "", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2174,7 +2216,7 @@ "Upload Progress": "Napredak učitavanja", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2194,6 +2236,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/hu-HU/translation.json b/src/lib/i18n/locales/hu-HU/translation.json index 0479aba67f..250a047c61 100644 --- a/src/lib/i18n/locales/hu-HU/translation.json +++ b/src/lib/i18n/locales/hu-HU/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ modellek }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Elérhető eszköz", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} rejtett sor", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Válasz", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Biztosan törölni szeretnéd ezt a csatornát?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Biztosan törölni szeretnéd ezt az üzenetet?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Elérhető lista", "Available models": "", + "Available Skills": "", "Available Tools": "Elérhető eszközök", "available users": "elérhető felhasználók", "available!": "elérhető!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI munkafolyamat", "ComfyUI Workflow Nodes": "ComfyUI munkafolyamat csomópontok", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Parancs", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Kiegészítések", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Párhuzamos kérések", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "Modell törlése", "Delete All": "", "Delete All Chats": "Minden beszélgetés törlése", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Beszélgetés törlése", "Delete chat?": "Törli a beszélgetést?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Törli a mappát?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "A közvetlen kapcsolatok lehetővé teszik a felhasználók számára, hogy saját OpenAI kompatibilis API végpontjaikhoz csatlakozzanak.", "Direct Message": "", "Direct Tool Servers": "Közvetlen eszköszerverek", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Beágyazási modell", "Embedding Model Engine": "Beágyazási modell motor", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Add meg a Kagi Search API kulcsot", "Enter Key Behavior": "Add meg a kulcs viselkedését", "Enter language codes": "Add meg a nyelvi kódokat", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "Add meg a Mistral API kulcsot", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Nem sikerült csatlakozni a {{URL}} OpenAPI eszköszerverhez", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "Fájl tartalom sikeresen frissítve.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Fájl mód", + "File moved.": "", "File name": "", "File not found.": "Fájl nem található.", "File removed successfully.": "Fájl sikeresen eltávolítva.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "A fájl mérete nem haladhatja meg a {{maxSize}} MB-ot.", "File Upload": "", "File uploaded successfully": "Fájl sikeresen feltöltve", - "File uploaded!": "", "Filename": "", "Files": "Fájlok", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "Tudásbázis", "Knowledge Access": "Tudásbázis hozzáférés", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Tudásbázis sikeresen létrehozva.", "Knowledge deleted successfully.": "Tudásbázis sikeresen törölve.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "Tudásbázis nyilvános megosztása", - "Knowledge reset successfully.": "Tudásbázis sikeresen visszaállítva.", "Knowledge Sharing": "", "Knowledge updated successfully": "Tudásbázis sikeresen frissítve", "Kokoro.js (Browser)": "Kokoro.js (Böngésző)", @@ -1227,6 +1250,7 @@ "Light": "Világos", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Hallgatás...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Új beszélgetés", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Új mappa", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Nem található HTML, CSS vagy JavaScript tartalom.", "No inference engine with management support found": "Nem található kezelést támogató következtetési motor", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Nem található tudásbázis", "No limit": "", "No memories to clear": "Nincs törlendő memória", "No model IDs": "Nincs modell azonosító", + "No models accessible": "", "No models available": "", "No models found": "Nem található modell", "No models selected": "Nincs kiválasztott modell", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Nem található felhasználó.", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "Be", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF dokumentum (.pdf)", "PDF Extract Images (OCR)": "PDF képek kinyerése (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "függőben", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Az előtag azonosító a modell azonosítókhoz hozzáadott előtag segítségével elkerüli az egyéb kapcsolatokkal való ütközéseket - hagyja üresen a letiltáshoz", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Előző 30 nap", "Previous 7 days": "Előző 7 nap", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Modell eltávolítása", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Átnevezés", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Visszaállítás", "Reset All Models": "Minden modell visszaállítása", "Reset Image": "Kép visszaállítása", + "Reset knowledge base?": "", "Reset Upload Directory": "Feltöltési könyvtár visszaállítása", "Reset Vector Storage/Knowledge": "Vektor tárhely/tudásbázis visszaállítása", "Reset view": "Nézet visszaállítása", @@ -1780,6 +1815,7 @@ "Search Prompts": "Promptok keresése", "Search Result Count": "Keresési találatok száma", "Search Skills": "", + "Search skills...": "", "Search the internet": "Keresés az interneten", "Search the web and fetch URLs": "", "Search Tools": "Eszközök keresése", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Könyvtár szinkronizálása", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Ez az opció szabályozza, hány token marad meg a kontextus frissítésekor. Például, ha 2-re van állítva, a beszélgetés kontextusának utolsó 2 tokenje megmarad. A kontextus megőrzése segíthet a beszélgetés folytonosságának fenntartásában, de csökkentheti az új témákra való reagálás képességét.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Ez az opció beállítja a modell által generálható tokenek maximális számát a válaszban. Ezen limit növelése hosszabb válaszokat tesz lehetővé, de növelheti a nem hasznos vagy irreleváns tartalom generálásának valószínűségét.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Ez az opció törli az összes meglévő fájlt a gyűjteményben és lecseréli őket az újonnan feltöltött fájlokkal.", "This response was generated by \"{{model}}\"": "Ezt a választ a \"{{model}}\" generálta", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Ez törölni fogja", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Ez törölni fogja az összes modellt, beleértve az egyéni modelleket is", "This will delete all models including custom models and cannot be undone.": "Ez törölni fogja az összes modellt, beleértve az egyéni modelleket is, és nem vonható vissza.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Ez visszaállítja a tudásbázist és szinkronizálja az összes fájlt. Szeretné folytatni?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Alapos magyarázat", "Thought": "", "Thought for {{DURATION}}": "Gondolkodott {{DURATION}} ideig", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "Feltöltési folyamat", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "Felhasználó helye sikeresen lekérve.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Felhasználói webhookok", diff --git a/src/lib/i18n/locales/id-ID/translation.json b/src/lib/i18n/locales/id-ID/translation.json index c7eafdc4ff..1d71921cdd 100644 --- a/src/lib/i18n/locales/id-ID/translation.json +++ b/src/lib/i18n/locales/id-ID/translation.json @@ -9,12 +9,15 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_other": "", @@ -192,6 +195,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -238,6 +242,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "pengguna yang tersedia", "available!": "tersedia!", @@ -397,13 +402,16 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Perintah", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Permintaan Bersamaan", "Config": "", "Config imported successfully": "", @@ -536,12 +544,14 @@ "Delete a model": "Menghapus model", "Delete All": "", "Delete All Chats": "Menghapus Semua Obrolan", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Menghapus Obrolan", "Delete chat?": "Menghapus obrolan?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -578,6 +588,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -686,6 +701,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Model Penyematan", "Embedding Model Engine": "Mesin Model Penyematan", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -764,6 +780,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "Masukkan kode bahasa", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -900,6 +917,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -953,14 +971,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Mode File", + "File moved.": "", "File name": "", "File not found.": "File tidak ditemukan.", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1176,13 +1196,13 @@ "Knowledge": "Pengetahuan", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1226,6 +1246,7 @@ "Light": "Cahaya", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Mendengarkan", @@ -1376,6 +1397,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Obrolan Baru", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1421,11 +1444,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1446,6 +1471,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1485,6 +1511,7 @@ "On": "Aktif", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1556,6 +1583,7 @@ "PDF document (.pdf)": "Dokumen PDF (.pdf)", "PDF Extract Images (OCR)": "Ekstrak Gambar PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "tertunda", "Pending": "", "Pending User Overlay Content": "", @@ -1617,6 +1645,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "30 hari sebelumnya", "Previous 7 days": "7 hari sebelumnya", "Previous message": "", @@ -1694,6 +1723,7 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Hapus Model", + "Removing {{count}} stale files..._other": "", "Rename": "Ganti nama", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1712,6 +1742,7 @@ "Reset": "Atur Ulang", "Reset All Models": "", "Reset Image": "Atur Ulang Gambar", + "Reset knowledge base?": "", "Reset Upload Directory": "Setel Ulang Direktori Unggahan", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1778,6 +1809,7 @@ "Search Prompts": "Perintah Pencarian", "Search Result Count": "Jumlah Hasil Pencarian", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "Alat Pencarian", @@ -1974,6 +2006,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2046,7 +2080,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Ini akan menghapus", @@ -2054,7 +2087,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Penjelasan menyeluruh", "Thought": "", "Thought for {{DURATION}}": "", @@ -2090,6 +2123,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2168,7 +2202,7 @@ "Upload Progress": "Kemajuan Unggah", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2188,6 +2222,7 @@ "User Groups": "", "User location successfully retrieved.": "Lokasi pengguna berhasil diambil.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/ie-GA/translation.json b/src/lib/i18n/locales/ie-GA/translation.json index 7a1a5da929..3137af410f 100644 --- a/src/lib/i18n/locales/ie-GA/translation.json +++ b/src/lib/i18n/locales/ie-GA/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[Inniu ag] h:mm A", "[Yesterday at] h:mm A": "[Inné ag] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Uirlisí ar Fáil", "{{COUNT}} characters": "{{COUNT}} carachtair", "{{COUNT}} extracted lines": "{{COUNT}} línte eastósctha", "{{COUNT}} files": "{{COUNT}} comhad", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} línte folaithe", "{{COUNT}} members": "{{COUNT}} ball", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Freagra", "{{COUNT}} Rows": "{{COUNT}} Sraitheanna", "{{count}} selected_one": "{{count}} mir roghnaithe", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "An bhfuil tú cinnte gur mian leat na comhráite go léir a scriosadh? Ní féidir an gníomh seo a chealú.", "Are you sure you want to delete this channel?": "An bhfuil tú cinnte gur mhaith leat an cainéal seo a scriosadh?", "Are you sure you want to delete this connection? This action cannot be undone.": "An bhfuil tú cinnte gur mian leat an nasc seo a scriosadh? Ní féidir an gníomh seo a chealú.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "An bhfuil tú cinnte gur mian leat an chuimhne seo a scriosadh? Ní féidir an gníomh seo a chealú.", "Are you sure you want to delete this message?": "An bhfuil tú cinnte gur mhaith leat an teachtaireacht seo a scriosadh?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "An bhfuil tú cinnte gur mian leat an leagan seo a scriosadh? Déanfar leaganacha linbh a athnascadh le tuismitheoir an leagain seo.", @@ -239,6 +245,7 @@ "Automations": "Uathoibrithe", "Available list": "Liosta atá ar fáil", "Available models": "Samhlacha atá ar fáil", + "Available Skills": "", "Available Tools": "Uirlisí ar Fáil", "available users": "úsáideoirí ar fáil", "available!": "ar fáil!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "Sreabhadh Oibre ComfyUI", "ComfyUI Workflow Nodes": "Nóid Sreabhadh Oibre ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "Aitheantóirí Nóid scartha le camóga (m.sh. 1 nó 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "ordú", "Command": "Ordú", "Comment": "Trácht", "Commit Message": "Teachtaireacht Tiomnaithe", "Community Reviews": "Léirmheasanna Pobail", + "Comparing with knowledge base...": "", "Completions": "Críochnaithe", "Compress Images in Channels": "Comhbhrúigh Íomhánna i gCainéil", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Iarrataí Comhthéime", "Config": "Cumraíocht", "Config imported successfully": "Cumraíocht allmhairithe go rathúil", @@ -537,12 +548,14 @@ "Delete a model": "Scrios samhail", "Delete All": "Scrios Gach Rud", "Delete All Chats": "Scrios Gach Comhrá", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Scrios an t-ábhar go léir atá sa fhillteán seo", "Delete automation?": "Scrios an t-uathoibriú?", "Delete calendar": "Scrios féilire", "Delete Calendar": "Scrios Féilire", "Delete Chat": "Scrios Comhrá", "Delete chat?": "Scrios comhrá?", + "Delete directory?": "", "Delete Event": "Scrios Imeacht", "Delete File": "Scrios Comhad", "Delete folder?": "Scrios fillteán?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Ligeann Connections Direct d'úsáideoirí ceangal lena gcríochphointí API féin atá comhoiriúnach le OpenAI.", "Direct Message": "Teachtaireacht Dhíreach", "Direct Tool Servers": "Freastalaithe Uirlisí Díreacha", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Cealaíodh roghnú an eolaire", "Disable All": "Díchumasaigh Gach Rud", "Disable Code Interpreter": "Díchumasaigh Léirmhínitheoir Cód", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "Iarratais Chomhuaineacha a Leabú", "Embedding Model": "Samhail Leabháilte", "Embedding Model Engine": "Inneall Samhail Leabaithe", + "Emoji": "", "Emojis": "Emoji", "Empty message": "Teachtaireacht folamh", "Enable All": "Cumasaigh Gach Rud", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Cuir isteach Eochair Kagi Cuardach API", "Enter Key Behavior": "Iontráil Iompar Eochair", "Enter language codes": "Cuir isteach cóid teanga", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Cuir isteach Eochair API MinerU", "Enter Mistral API Base URL": "Cuir isteach URL Bunúsach API Mistral", "Enter Mistral API Key": "Cuir isteach Eochair API Mistral", @@ -901,6 +921,7 @@ "Failed to archive chat.": "Theip ar an gcomhrá a chartlannú.", "Failed to attach file": "Theip ar an gcomhad a cheangal", "Failed to clear status": "Theip ar an stádas a ghlanadh", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Theip ar nascadh le {{URL}} freastalaí uirlisí OpenAPI", "Failed to connect to {{URL}} terminal server": "Theip ar cheangal le freastalaí críochfoirt {{URL}}", "Failed to copy link": "Theip ar an nasc a chóipeáil", @@ -954,14 +975,16 @@ "File content updated successfully.": "D'éirigh le hábhar an chomhaid a nuashonrú.", "File Context": "Comhthéacs Comhaid", "File deleted successfully.": "Scriosadh an comhad go rathúil.", + "File Extensions": "", "File Mode": "Mód Comhad", + "File moved.": "", "File name": "Ainm comhaid", "File not found.": "Níor aimsíodh an comhad.", "File removed successfully.": "D'éirigh le baint an chomhaid.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Níor chóir go mbeadh méid an chomhaid níos mó ná {{maxSize}} MB.", "File Upload": "Uaslódáil Comhaid", "File uploaded successfully": "D'éirigh le huaslódáil an chomhaid", - "File uploaded!": "Comhad uaslódáilte!", "Filename": "Ainm comhaid", "Files": "Comhaid", "Filter": "Scagaire", @@ -1177,13 +1200,13 @@ "Knowledge": "Eolas", "Knowledge Access": "Rochtain Eolais", "Knowledge Base": "Bunachar Eolais", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Eolas cruthaithe go rathúil.", "Knowledge deleted successfully.": "D'éirigh leis an eolas a scriosadh.", "Knowledge Description": "Cur Síos Eolais", "Knowledge exported successfully": "Eolas a easpórtáil go rathúil", "Knowledge Name": "Ainm an Eolais", "Knowledge Public Sharing": "Roinnt Faisnéise Poiblí", - "Knowledge reset successfully.": "D'éirigh le hathshocrú eolais.", "Knowledge Sharing": "Comhroinnt Eolais", "Knowledge updated successfully": "D'éirigh leis an eolas a nuashonrú", "Kokoro.js (Browser)": "Kokoro.js (Brabhsálaí)", @@ -1227,6 +1250,7 @@ "Light": "Solas", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Teorainn a chur le fiosrúcháin chuardaigh chomhuaineacha. 0 = gan teorainn (réamhshocraithe). Socraigh go 1 le haghaidh forghníomhú seicheamhach (molta do APIanna le teorainneacha ráta dochta cosúil le sraith saor in aisce Brave).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Cuireann sé teorainn le líon na n-iarratas leabaithe comhuaineach. Socraigh go 0 le haghaidh neamhtheoranta.", + "Linkup API Key": "", "List": "Liosta", "List calendars, search, create, update, and delete calendar events": "Liostaigh féilirí, cuardaigh, cruthaigh, nuashonraigh agus scrios imeachtaí féilire", "Listening...": "Éisteacht...", @@ -1377,6 +1401,8 @@ "New calendar": "Féilire nua", "New Calendar": "Féilire Nua", "New Chat": "Comhrá Nua", + "New directory": "", + "New Directory": "", "New Event": "Imeacht Nua", "New File": "Comhad Nua", "New Folder": "Fillteán Nua", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Níor aimsíodh aon ábhar HTML, CSS nó JavaScript.", "No inference engine with management support found": "Níor aimsíodh aon inneall tátail le tacaíocht bhainistíochta", "No kernel": "Gan aon eithne", + "No knowledge bases accessible": "", "No knowledge bases found.": "Níor aimsíodh aon bhunachair eolais.", "No knowledge found": "Níor aimsíodh aon eolas", "No limit": "Gan teorainn", "No memories to clear": "Gan cuimhní cinn a ghlanadh", "No model IDs": "Gan aon aitheantóirí samhail", + "No models accessible": "", "No models available": "Níl aon samhlacha ar fáil", "No models found": "Níor aimsíodh samhlacha", "No models selected": "Uimh samhlacha roghnaithe", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "Gan nasc teirminéal cumraithe.", "No terminal connections configured.": "Gan aon naisc teirminéal cumraithe.", "No tool server connections configured.": "Níl aon naisc freastalaí uirlisí cumraithe.", + "No tools accessible": "", "No tools found": "Níor aimsíodh aon uirlisí", "No users were found.": "Níor aimsíodh aon úsáideoirí.", "No valves": "Gan comhlaí", @@ -1486,6 +1515,7 @@ "On": "Ar", "Once": "Uair amháin", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Gníomhach amháin nuair a bhíonn an socrú \"Greamaigh Téacs Mór mar Chomhad\" casta air.", "Only active when the chat input is in focus and an LLM is generating a response.": "Gníomhach ach amháin nuair a bhíonn an t-ionchur comhrá i bhfócas agus nuair a bhíonn LLM ag giniúint freagra.", "Only active when the chat input is in focus.": "Gníomhach ach amháin nuair a bhíonn an t-ionchur comhrá i bhfócas.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "Doiciméad PDF (.pdf)", "PDF Extract Images (OCR)": "Íomhánna Sliocht PDF (OCR)", "PDF Loader Mode": "Mód Luchtaithe PDF", + "pdf, docx, pptx, xlsx": "", "pending": "ar feitheamh", "Pending": "Ar feitheamh", "Pending User Overlay Content": "Ábhar Forleagan Úsáideora atá ar Feitheamh", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Úsáidtear Aitheantas Réimír chun coinbhleachtaí le naisc eile a sheachaint trí réimír a chur le haitheantas na samhla - fág folamh le díchumasú", "Prevent File Creation": "Cosc a chur ar Chruthú Comhad", "Preview": "Réamhamharc", + "Preview Access": "", "Previous 30 days": "30 lá roimhe seo", "Previous 7 days": "7 lá roimhe seo", "Previous message": "Teachtaireacht roimhe seo", @@ -1695,6 +1727,8 @@ "Remove from favorites": "Bain de Ceanáin", "Remove image": "Bain íomhá", "Remove Model": "Bain an tSamhail", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Athainmnigh", "Renamed to {{name}}": "Athainmnithe go {{name}}", "Render Markdown in Assistant Messages": "Rindreáil Markdown i dTeachtaireachtaí Cúntóra", @@ -1713,6 +1747,7 @@ "Reset": "Athshocraigh", "Reset All Models": "Athshocraigh Gach Samhail", "Reset Image": "Athshocraigh Íomhá", + "Reset knowledge base?": "", "Reset Upload Directory": "Athshocraigh Eolaire Uas", "Reset Vector Storage/Knowledge": "Athshocraigh Stóráil/Eolas Veicteoir", "Reset view": "Athshocraigh amharc", @@ -1780,6 +1815,7 @@ "Search Prompts": "Treoracha Cuardaigh", "Search Result Count": "Líon Torthaí Cuardaigh", "Search Skills": "Scileanna Cuardaigh", + "Search skills...": "", "Search the internet": "Cuardaigh an tIdirlíon", "Search the web and fetch URLs": "Cuardaigh an gréasán agus faigh URLanna", "Search Tools": "Uirlisí Cuardaigh", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "Athraigh go heagarthóir JSON", "Switch to visual editor": "Athraigh go dtí an t-eagarthóir amhairc", "Sync": "Sioncrónaigh", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Sioncrónú críochnaithe!", "Sync directory": "Eolaire sioncronaithe", "Sync Failed": "Theip ar an sioncrónú", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Rialaíonn an rogha seo cé mhéad comhartha a chaomhnaítear agus an comhthéacs á athnuachan. Mar shampla, má shocraítear go 2 é, coinneofar an 2 chomhartha dheireanacha de chomhthéacs an chomhrá. Is féidir le comhthéacs a chaomhnú cabhrú le leanúnachas comhrá a choinneáil, ach d'fhéadfadh sé laghdú a dhéanamh ar an gcumas freagairt do thopaicí nua.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Cumasaíonn nó díchumasaíonn an rogha seo úsáid na gné réasúnaíochta in Ollama, rud a ligeann don tsamhail smaoineamh sula gineadh freagra. Nuair atá sé cumasaithe, féadann an tsamhail nóiméad a ghlacadh chun an comhthéacs comhrá a phróiseáil agus freagairt níos tuisceana a ghiniúint.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Socraíonn an rogha seo an t-uaslíon comharthaí is féidir leis an tsamhail a ghiniúint ina fhreagra. Tríd an teorainn seo a mhéadú is féidir leis an tsamhail freagraí níos faide a sholáthar, ach d'fhéadfadh go méadódh sé an dóchúlacht go nginfear ábhar neamhchabhrach nó nach mbaineann le hábhar.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Scriosfaidh an rogha seo gach comhad atá sa bhailiúchán agus cuirfear comhaid nua-uaslódála ina n-ionad.", "This response was generated by \"{{model}}\"": "Gin an freagra seo ag \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Tá roinnt áitchoimeádóirí comhthéacs ([comhthéacs] nó {{CONTEXT}}) sa teimpléad seo. Cuirfear comhthéacs isteach gach uair a tharlaíonn sé.", "This will delete": "Scriosfaidh sé seo", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Scriosfaidh sé seo gach samhail lena n-áirítear samhlacha saincheaptha", "This will delete all models including custom models and cannot be undone.": "Scriosfaidh sé seo gach samhail, lena n-áirítear samhlacha saincheaptha, agus ní féidir é a chealú.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Scriosfaidh sé seo an féilire \"{{name}}\" agus a chuid imeachtaí go léir go buan. Ní féidir an gníomh seo a chealú.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Déanfaidh sé seo an bonn eolais a athshocrú agus gach comhad a shioncronú. Ar mhaith leat leanúint ar aghaidh?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Míniú críochnúil", "Thought": "Smaoineamh", "Thought for {{DURATION}}": "Smaoineamh ar {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "Athraigh foinse amháin", "Toggle details": "Athraigh sonraí", "Toggle Dictation": "Athraigh Deachtú", + "Toggle Mute": "", "Toggle Sidebar": "Barra Taobh a Athraigh", "Toggle status history": "Athraigh stair stádais", "Toggle whether current connection is active.": "Athraigh an bhfuil an nasc reatha gníomhach.", @@ -2171,7 +2209,7 @@ "Upload Progress": "Dul Chun Cinn an Uaslódála", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Dul Chun Cinn Uaslódála: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Comhaid nó íomhánna uaslódáilte", - "Uploading file...": "Ag uaslódáil comhaid...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Ag uaslódáil...", "URL": "URL", "URL is required": "Tá URL ag teastáil", @@ -2191,6 +2229,7 @@ "User Groups": "Grúpaí Úsáideoirí", "User location successfully retrieved.": "Fuarthas suíomh an úsáideora go rathúil.", "User menu": "Roghchlár úsáideora", + "User Preview": "", "User ratings (thumbs up/down)": "Rátálacha úsáideoirí (ordóg suas/síos)", "User Status": "Stádas Úsáideora", "User Webhooks": "Crúcaí Gréasáin Úsáideoir", diff --git a/src/lib/i18n/locales/it-IT/translation.json b/src/lib/i18n/locales/it-IT/translation.json index 092679a0d4..ca4076321e 100644 --- a/src/lib/i18n/locales/it-IT/translation.json +++ b/src/lib/i18n/locales/it-IT/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ modelli }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Strumenti Disponibili", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} righe nascoste", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Risposte", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Sei sicuro di voler eliminare questo canale?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Sei sicuro di voler eliminare questo messaggio?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -240,6 +248,7 @@ "Automations": "", "Available list": "Elenco disponibile", "Available models": "", + "Available Skills": "", "Available Tools": "Strumenti disponibili", "available users": "utenti disponibili", "available!": "disponibile!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "Flusso di lavoro ComfyUI", "ComfyUI Workflow Nodes": "Nodi flusso di lavoro ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Comando", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Completamenti", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Richieste simultanee", "Config": "", "Config imported successfully": "", @@ -538,12 +552,14 @@ "Delete a model": "Elimina un modello", "Delete All": "", "Delete All Chats": "Elimina tutte le chat", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Elimina chat", "Delete chat?": "Elimina chat?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Elimina cartella?", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Le Connessioni Dirette consentono agli utenti di connettersi ai propri endpoint API compatibili con OpenAI.", "Direct Message": "", "Direct Tool Servers": "Strimentu Server Diretti", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Modello Embedding", "Embedding Model Engine": "Motore Modello di Embedding", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "Inserisci Chiave API Kagi Search", "Enter Key Behavior": "Comportamento Tasto Invio", "Enter language codes": "Inserisci i codici lingua", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "Inserisci Chiave API Mistral", @@ -902,6 +925,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Impossibile connettersi al server dello strumento OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "Impossibile copiare il link", @@ -955,14 +979,16 @@ "File content updated successfully.": "Contenuto del file aggiornato con successo.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Modalità File", + "File moved.": "", "File name": "", "File not found.": "File non trovato.", "File removed successfully.": "File rimosso con successo.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "La dimensione del file non deve superare {{maxSize}} MB.", "File Upload": "Caricamento file", "File uploaded successfully": "Caricamento file riuscito", - "File uploaded!": "", "Filename": "", "Files": "File", "Filter": "", @@ -1178,13 +1204,13 @@ "Knowledge": "Conoscenza", "Knowledge Access": "Accesso alla conoscenza", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Conoscenza creata con successo.", "Knowledge deleted successfully.": "Conoscenza eliminata con successo.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "Conoscenza condivisione pubblica", - "Knowledge reset successfully.": "Conoscenza ripristinata con successo.", "Knowledge Sharing": "", "Knowledge updated successfully": "Conoscenza aggiornata con successo", "Kokoro.js (Browser)": "Kokoro.js (Browser)", @@ -1228,6 +1254,7 @@ "Light": "Chiaro", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "In ascolto...", @@ -1378,6 +1405,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Nuova chat", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Nuova cartella", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "Nessun contenuto HTML, CSS o JavaScript trovato.", "No inference engine with management support found": "Nessun motore di inferenza con supporto per la gestione trovato", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Nessuna conoscenza trovata", "No limit": "", "No memories to clear": "Nessun ricordo da cancellare", "No model IDs": "Nessun ID modello", + "No models accessible": "", "No models available": "", "No models found": "Nessun modello trovato", "No models selected": "Nessun modello selezionato", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Nessun utente trovato.", "No valves": "", @@ -1487,6 +1519,7 @@ "On": "Attivato", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "Documento PDF (.pdf)", "PDF Extract Images (OCR)": "Estrazione Immagini PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "in sospeso", "Pending": "In Attesa", "Pending User Overlay Content": "Contenuto utente in attesa", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "L'ID prefisso viene utilizzato per evitare conflitti con altre connessioni aggiungendo un prefisso agli ID dei modelli - lasciare vuoto per disabilitare", "Prevent File Creation": "", "Preview": "Anteprima", + "Preview Access": "", "Previous 30 days": "Ultimi 30 giorni", "Previous 7 days": "Ultimi 7 giorni", "Previous message": "", @@ -1696,6 +1731,9 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Rimuovi Modello", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Rinomina", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "Ripristina", "Reset All Models": "Ripristina Tutti i Modelli", "Reset Image": "Reimposta immagine", + "Reset knowledge base?": "", "Reset Upload Directory": "Ripristina Directory di Caricamento", "Reset Vector Storage/Knowledge": "Ripristina Archiviazione Vettoriale/Conoscenza", "Reset view": "Ripristina visualizzazione", @@ -1782,6 +1821,7 @@ "Search Prompts": "Cerca prompt", "Search Result Count": "Conteggio dei risultati della ricerca", "Search Skills": "", + "Search skills...": "", "Search the internet": "Cerca su Internet", "Search the web and fetch URLs": "", "Search Tools": "Cerca Strumenti", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Sincronizza directory", "Sync Failed": "", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Questa opzione controlla quanti token vengono preservati quando si aggiorna il contesto. Ad esempio, se impostato su 2, gli ultimi 2 token del contesto della conversazione verranno mantenuti. Preservare il contesto può aiutare a mantenere la continuità di una conversazione, ma potrebbe ridurre la capacità di rispondere a nuovi argomenti.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Questa opzione abilita o disabilita l'utilizzo della funzionalità di ragionamento in Ollama, che consente al modello di riflettere prima di generare una risposta. Quando abilitata, il modello può impiegare un po' di tempo per elaborare il contesto della conversazione e generare una risposta più elaborata.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Questa opzione imposta il numero massimo di token che il modello può generare nella sua risposta. Aumentare questo limite consente al modello di fornire risposte più lunghe, ma potrebbe anche aumentare la probabilità che vengano generati contenuti non utili o irrilevanti.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Questa opzione eliminerà tutti i file esistenti nella collezione e li sostituirà con i file appena caricati.", "This response was generated by \"{{model}}\"": "Questa risposta è stata generata da \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Questa opzione eliminerà", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "Questa opzione eliminerà tutti i modelli, compresi i modelli personalizzati", "This will delete all models including custom models and cannot be undone.": "Questa opzione eliminerà tutti i modelli, compresi i modelli personalizzati e non può essere annullata.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Questa opzione ripristinerà la base di conoscenza e sincronizzerà tutti i file. Vuoi continuare?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Spiegazione dettagliata", "Thought": "", "Thought for {{DURATION}}": "Pensiero per {{DURATION}}", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "Attiva/disattiva la connessione attuale quando è attiva", @@ -2174,7 +2216,7 @@ "Upload Progress": "Avanzamento Caricamento", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2194,6 +2236,7 @@ "User Groups": "", "User location successfully retrieved.": "Posizione utente recuperata con successo.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Webhook Utente", diff --git a/src/lib/i18n/locales/ja-JP/translation.json b/src/lib/i18n/locales/ja-JP/translation.json index 72c3e60f89..799bc68f1d 100644 --- a/src/lib/i18n/locales/ja-JP/translation.json +++ b/src/lib/i18n/locales/ja-JP/translation.json @@ -9,12 +9,15 @@ "[Today at] h:mm A": "[今日の] h:mm A", "[Yesterday at] h:mm A": "[昨日の] h:mm A", "{{ models }}": "{{ モデル }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} 個の有効なツール", "{{COUNT}} characters": "{{COUNT}} 文字", "{{COUNT}} extracted lines": "{{COUNT}} 行を抽出", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} 行が非表示", "{{COUNT}} members": "{{COUNT}} メンバー", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} 件の返信", "{{COUNT}} Rows": "", "{{count}} selected_other": "", @@ -192,6 +195,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "すべてのチャットを削除しますか? この操作は元に戻すことができません。", "Are you sure you want to delete this channel?": "このチャンネルを削除しますか?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "このメモリをクリアしますか? この操作は元に戻すことができません。", "Are you sure you want to delete this message?": "このメッセージを削除しますか?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -238,6 +242,7 @@ "Automations": "オートメーション", "Available list": "利用可能リスト", "Available models": "", + "Available Skills": "", "Available Tools": "利用可能ツール", "available users": "利用可能なユーザー", "available!": "が利用可能です!", @@ -397,13 +402,16 @@ "ComfyUI Workflow": "ComfyUIワークフロー", "ComfyUI Workflow Nodes": "ComfyUIワークフローノード", "Comma separated Node Ids (e.g. 1 or 1,2)": "カンマで区切られたノードID (例: 1 または 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "コマンド", "Comment": "コメント", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Completions", "Compress Images in Channels": "チャンネルで画像を圧縮する", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "同時リクエスト", "Config": "", "Config imported successfully": "設定のインポートに成功しました", @@ -536,12 +544,14 @@ "Delete a model": "モデルを削除", "Delete All": "すべて削除する", "Delete All Chats": "すべてのチャットを削除", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "オートメーションを削除しますか?", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "チャットを削除", "Delete chat?": "チャットを削除しますか?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "フォルダーを削除しますか?", @@ -578,6 +588,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "ダイレクトコネクションは、ユーザーが独自のOpenAI互換APIエンドポイントに接続できるようにします。", "Direct Message": "", "Direct Tool Servers": "ダイレクトツールサーバー", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "ディレクトリ選択がキャンセルされました", "Disable All": "", "Disable Code Interpreter": "コードインタプリタを無効化", @@ -686,6 +701,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "埋め込みモデル", "Embedding Model Engine": "埋め込みモデルエンジン", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -764,6 +780,7 @@ "Enter Kagi Search API Key": "Kagi Search APIキーを入力", "Enter Key Behavior": "Enter Keyの動作", "Enter language codes": "言語コードを入力", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "Mistral APIキーを入力", @@ -900,6 +917,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPIツールサーバーへの接続に失敗しました。", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "リンクのコピーに失敗しました。", @@ -953,14 +971,16 @@ "File content updated successfully.": "ファイルコンテンツ追加が成功しました。", "File Context": "ファイルコンテキスト", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "ファイルモード", + "File moved.": "", "File name": "", "File not found.": "ファイルが見つかりません。", "File removed successfully.": "ファイル削除が成功しました。", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "ファイルサイズの最大値は {{maxSize}} MB です。", "File Upload": "ファイルアップロード", "File uploaded successfully": "ファイルアップロードが成功しました", - "File uploaded!": "", "Filename": "ファイル名", "Files": "ファイル", "Filter": "フィルタ", @@ -1176,13 +1196,13 @@ "Knowledge": "ナレッジベース", "Knowledge Access": "ナレッジアクセス", "Knowledge Base": "ナレッジベース", + "Knowledge base has been reset": "", "Knowledge created successfully.": "ナレッジベースの作成に成功しました", "Knowledge deleted successfully.": "ナレッジベースの削除に成功しました", "Knowledge Description": "ナレッジベースの説明", "Knowledge exported successfully": "", "Knowledge Name": "ナレッジベースの名前", "Knowledge Public Sharing": "ナレッジベースの公開共有", - "Knowledge reset successfully.": "ナレッジベースのリセットに成功しました", "Knowledge Sharing": "ナレッジベースの共有", "Knowledge updated successfully": "ナレッジベースのアップデートに成功しました", "Kokoro.js (Browser)": "Kokoro.js (ブラウザ)", @@ -1226,6 +1246,7 @@ "Light": "ライト", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "リスト", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "聞いています...", @@ -1376,6 +1397,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "新しいチャット", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "新しいフォルダ", @@ -1421,11 +1444,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML、CSS、またはJavaScriptの内容が見つかりません。", "No inference engine with management support found": "管理サポートのある推論エンジンが見つかりません。", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "ナレッジベースが見つかりません", "No knowledge found": "ナレッジベースが見つかりません", "No limit": "", "No memories to clear": "クリアするメモリがありません", "No model IDs": "モデルIDがありません", + "No models accessible": "", "No models available": "", "No models found": "モデルが見つかりません", "No models selected": "モデルが選択されていません", @@ -1446,6 +1471,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "ツールが見つかりません", "No users were found.": "ユーザーが見つかりません。", "No valves": "バルブがありません", @@ -1485,6 +1511,7 @@ "On": "オン", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "\"大きなテキストをファイルとして貼り付ける\"がオンの場合にのみ有効です。", "Only active when the chat input is in focus and an LLM is generating a response.": "チャット入力欄にフォーカスがあり、LLMが応答を生成しているときのみ有効です。", "Only active when the chat input is in focus.": "チャット入力欄にフォーカスがあるときのみ有効です。", @@ -1556,6 +1583,7 @@ "PDF document (.pdf)": "PDF ドキュメント (.pdf)", "PDF Extract Images (OCR)": "PDF 画像抽出 (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "保留中", "Pending": "処理中", "Pending User Overlay Content": "保留中のユーザー情報オーバーレイの内容", @@ -1617,6 +1645,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID はモデル ID に接頭辞を追加することで、他の接続との競合を避けるために使用されます - 空の場合は無効にします", "Prevent File Creation": "ファイル作成を防止", "Preview": "プレビュー", + "Preview Access": "", "Previous 30 days": "過去30日間", "Previous 7 days": "過去7日間", "Previous message": "前のメッセージ", @@ -1694,6 +1723,7 @@ "Remove from favorites": "", "Remove image": "画像を削除", "Remove Model": "モデルを削除", + "Removing {{count}} stale files..._other": "", "Rename": "名前を変更", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1712,6 +1742,7 @@ "Reset": "リセット", "Reset All Models": "すべてのモデルをリセット", "Reset Image": "画像をリセット", + "Reset knowledge base?": "", "Reset Upload Directory": "アップロードディレクトリをリセット", "Reset Vector Storage/Knowledge": "ベクターストレージとナレッジベースをリセット", "Reset view": "表示をリセット", @@ -1778,6 +1809,7 @@ "Search Prompts": "プロンプトを検索", "Search Result Count": "検索結果数", "Search Skills": "Skillを検索", + "Search skills...": "", "Search the internet": "インターネットを検索", "Search the web and fetch URLs": "", "Search Tools": "ツールの検索", @@ -1974,6 +2006,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "ディレクトリを同期", "Sync Failed": "", @@ -2046,7 +2080,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "このオプションは、コンテキストをリフレッシュする際に保持するトークンの数を制御します。例えば、2に設定すると、会話のコンテキストの最後の2つのトークンが保持されます。コンテキストを保持することで、会話の継続性を維持できますが、新しいトピックに応答する能力を低下させる可能性があります。", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "このオプションはOllamaで、応答の生成前に思考する、推論機能の有効化を設定します。有効化すると、会話を処理する時間をとり、考え深い応答を生成します。", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "このオプションは、モデルが生成できるトークンの最大数を設定します。この制限を増加すると、モデルはより長い回答を生成できるようになりますが、不適切な内容や関連性の低い内容が生成される可能性も高まります。", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "このオプションを有効にすると、コレクション内の既存ファイルがすべて削除され、新たにアップロードしたファイルに置き換わります。", "This response was generated by \"{{model}}\"": "このレスポンスは\"{{model}}\"によって生成されました。", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "削除します", @@ -2054,7 +2087,7 @@ "This will delete all models including custom models": "これはカスタムモデルを含むすべてのモデルを削除します", "This will delete all models including custom models and cannot be undone.": "これはカスタムモデルを含むすべてのモデルを削除し、元に戻すことはできません。", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "これは知識ベースをリセットし、すべてのファイルを同期します。続けますか?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "詳細な説明", "Thought": "", "Thought for {{DURATION}}": "{{DURATION}}間の思考", @@ -2090,6 +2123,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "音声入力の切り替える", + "Toggle Mute": "", "Toggle Sidebar": "サイドバーを切り替える", "Toggle status history": "", "Toggle whether current connection is active.": "この接続の有効性を切り替える", @@ -2168,7 +2202,7 @@ "Upload Progress": "アップロードの進行状況", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "アップロード状況: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "URLは必須です", @@ -2188,6 +2222,7 @@ "User Groups": "ユーザーグループ", "User location successfully retrieved.": "ユーザーの位置情報が正常に取得されました。", "User menu": "ユーザーメニュー", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "ユーザーステータス", "User Webhooks": "ユーザWebhook", diff --git a/src/lib/i18n/locales/ka-GE/translation.json b/src/lib/i18n/locales/ka-GE/translation.json index 7c1686c381..f7190cdd2b 100644 --- a/src/lib/i18n/locales/ka-GE/translation.json +++ b/src/lib/i18n/locales/ka-GE/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[დღეს,] h:mm A", "[Yesterday at] h:mm A": "[გუშინ, ] h:mm A", "{{ models }}": "{{ მოდელები }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} ხელმისაწვდომი ხელსაწყო", "{{COUNT}} characters": "{{COUNT}} სიმბოლო", "{{COUNT}} extracted lines": "{{COUNT}} ამოღებული ხაზი", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} დამალული ხაზი", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} პასუხი", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "მართლა გნებავთ ამ არხის წაშლა?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "მართლა გნებავთ ამ შეტყობინების წასლა?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "ხელმისაწვდომი სია", "Available models": "", + "Available Skills": "", "Available Tools": "ხელმისაწვდომი ხელსაწყოები", "available users": "ხელმისაწვდომი მომხმარებლები", "available!": "ხელმისაწვდომია!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI-ის სამუშაო პროცესი", "ComfyUI Workflow Nodes": "ComfyUI-ის სამუსაო პროცესის კვანძები", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "ბრძანება", "Comment": "კომენტარი", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "დასრულებები", "Compress Images in Channels": "გამოსახულებების შეკუმშვა არხებში", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "ერთდროული მოთხოვნები", "Config": "", "Config imported successfully": "კონფიგურაცია წარმატებით იქნა შემოტანილი", @@ -537,12 +548,14 @@ "Delete a model": "მოდელის წაშლა", "Delete All": "", "Delete All Chats": "ყველა ჩატის წაშლა", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "საუბრის წაშლა", "Delete chat?": "წავშალო ჩატი?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "წავშალო საქაღალდეები?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "მოდელის ჩაშენება", "Embedding Model Engine": "ჩაშენებული მოდელის ძრავა", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "შეიყვანეთ გასაღების ქცევა", "Enter language codes": "შეიყვანეთ ენის კოდები", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "ბმულის კოპირება ჩავარდა", @@ -954,14 +975,16 @@ "File content updated successfully.": "ფაილის შემცველობა წარმატებით განახლდა.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "ფაილის რეჟიმი", + "File moved.": "", "File name": "", "File not found.": "ფაილი ნაპოვნი არაა.", "File removed successfully.": "ფაილი წარმატებით წაიშალა.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "ფაილის ზომა {{maxSize}} მბ-ს არ უნდა აღემატებოდეს.", "File Upload": "ფაილის ატვირთვა", "File uploaded successfully": "ფაილი წარმატებით აიტვირთა", - "File uploaded!": "", "Filename": "", "Files": "ფაილი", "Filter": "ფილტრი", @@ -1177,13 +1200,13 @@ "Knowledge": "ცოდნა", "Knowledge Access": "წვდომა ცოდნასთან", "Knowledge Base": "ცოდნის ბაზა", + "Knowledge base has been reset": "", "Knowledge created successfully.": "ცოდნა წარმატებით შეიქმნა.", "Knowledge deleted successfully.": "ცოდნა წარმატებით წაიშალა.", "Knowledge Description": "ცოდნის აღწერა", "Knowledge exported successfully": "", "Knowledge Name": "ცოდნის სახელი", "Knowledge Public Sharing": "ცოდნის საჯარო გაზიარება", - "Knowledge reset successfully.": "ცოდნის ჩამოყრა წარმატებულია.", "Knowledge Sharing": "", "Knowledge updated successfully": "ცოდნა წარმატებით განახლდა", "Kokoro.js (Browser)": "Kokoro.js (ბრაუზერი)", @@ -1227,6 +1250,7 @@ "Light": "ღია", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "ვისმენ...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "ახალი მიმოწერა", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "ახალი საქაღალდე", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "ცოდნა აღმოჩენილი არაა", "No limit": "", "No memories to clear": "გასასუფთავებელი მოგონებების გარეშე", "No model IDs": "მოდელის ID-ების გარეშე", + "No models accessible": "", "No models available": "", "No models found": "მოდელები აღმოჩენილი არაა", "No models selected": "მოდელები არჩეული არაა", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "ხელსაწყოები აღმოჩენილი არაა", "No users were found.": "მომხმარებლები აღმოჩენილი არაა.", "No valves": "ონკანები აღმოჩენილი არაა", @@ -1486,6 +1515,7 @@ "On": "ჩართული", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF დოკუმენტი (.pdf)", "PDF Extract Images (OCR)": "PDF იდან ამოღებული სურათები (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "დარჩენილი", "Pending": "დარჩენილი", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "მინიატურა", + "Preview Access": "", "Previous 30 days": "წინა 30 დღე", "Previous 7 days": "წინა 7 დღე", "Previous message": "წინა შეტყობინება", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "სურათის წაშლა", "Remove Model": "მოდელის წაშლა", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "სახელის გადარქმევა", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "ჩამოყრა", "Reset All Models": "ყველა მოდელის ჩამოყრა", "Reset Image": "სურათის აღდგენა", + "Reset knowledge base?": "", "Reset Upload Directory": "ატვირთვის საქაღალდის ჩამოყრა", "Reset Vector Storage/Knowledge": "", "Reset view": "ხედის ჩამოყრა", @@ -1780,6 +1815,7 @@ "Search Prompts": "მოთხოვნების ძებნა", "Search Result Count": "ძიების შედეგების რაოდენობა", "Search Skills": "", + "Search skills...": "", "Search the internet": "ინტერნეტში ძებნა", "Search the web and fetch URLs": "", "Search Tools": "ძებნის ხელსაწყოები", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "სინქრონიზაციის საქაღალდე", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "ეს წაშლის", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "საფუძვლიანი ახსნა", "Thought": "", "Thought for {{DURATION}}": "ვიფიქრე {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "გადართვა, აქტიურია, თუ არა მიმდინარე კავშირი.", @@ -2171,7 +2209,7 @@ "Upload Progress": "ატვირთვის მიმდინარეობა", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "URL საჭიროა", @@ -2191,6 +2229,7 @@ "User Groups": "მომხმარებლის ჯგუფები", "User location successfully retrieved.": "", "User menu": "მომხმარებლის მენიუ", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "ვებჰუკების გამოყენება", diff --git a/src/lib/i18n/locales/kab-DZ/translation.json b/src/lib/i18n/locales/kab-DZ/translation.json index 32450a4b58..88aaa0adca 100644 --- a/src/lib/i18n/locales/kab-DZ/translation.json +++ b/src/lib/i18n/locales/kab-DZ/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[Ass-a ɣef] h:mm A", "[Yesterday at] h:mm A": "[Iḍelli ɣef] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "Amḍan n yifecka i yellan {{COUNT}}", "{{COUNT}} characters": "{{COUNT}} n isekkilen", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} n yizirigen yeffren", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} n tririyin", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Tetḥeqqeḍ tebɣiḍ ad tekkseḍ targa-a?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Tetḥeqqeḍ tebɣiḍ ad tekkseḍ izen-a?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Tabdart i yellan", "Available models": "", + "Available Skills": "", "Available Tools": "Ifecka i yellan", "available users": "Iseqdacen yellan", "available!": "yella!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "Asuddem n umahil n ComfyUI", "ComfyUI Workflow Nodes": "Taneddict n usuddem n umahil n ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Anezḍay", "Comment": "Awennit", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Tisemdiyin", "Compress Images in Channels": "Skussem tugniwin deg Yibuda", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Tuttriwin timiranin", "Config": "", "Config imported successfully": "Tawila tettwakekter-d akken iwata", @@ -537,12 +548,14 @@ "Delete a model": "Kkes tamudemt", "Delete All": "", "Delete All Chats": "Kkes akk idiwenniyen", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Kkes asqerdec", "Delete chat?": "Tebɣiḍ ad tekkseḍ adiwenni?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Kkes akaram?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Tuqqniwin tusridin ttaǧǧant iseqdacen ad qqnen ɣer wagazen-nsen n taggara API imṣadan OpenAI.", "Direct Message": "", "Direct Tool Servers": "Iqeddacen n ifecka usriden", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "Sens asegzay n tengalt", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Tamudemt n ujmak", "Embedding Model Engine": "Amsedday n tmudemt n ujmak", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Sekcem-d tasarut API n Kagi Search", "Enter Key Behavior": "Kcem ɣer tsarut Behavior", "Enter language codes": "Sekcem-d tangalin n tutlayin", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "Enter Mistral API Tasarut", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Ur yessaweḍ ara ad yeqqen ɣer {{URL}} n uqeddac n yifecka OpenAPI", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "Ur yessaweḍ ara ad yessukken aseɣwen", @@ -954,14 +975,16 @@ "File content updated successfully.": "Agbur n ufaylu yettwaleqqem akken iwata.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Askar n ufaylu", + "File moved.": "", "File name": "", "File not found.": "Ur yettwaf ara ufaylu-nni.", "File removed successfully.": "Afaylu yettwakkes akken iwata.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Tiddi n ufaylu ur ilaq ara ad tɛeddi nnig {{maxSize}} MB.", "File Upload": "Asali n ufaylu", "File uploaded successfully": "Afaylu-nni yuli akken iwata", - "File uploaded!": "", "Filename": "", "Files": "Ifuyla", "Filter": "Imsizdeg", @@ -1177,13 +1200,13 @@ "Knowledge": "Tamusni", "Knowledge Access": "Anekcum ɣer tmussni", "Knowledge Base": "Taffa n tmusni", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Tamussni tennulfa-d akken iwata.", "Knowledge deleted successfully.": "Tamussni tettwakkes akken iwata.", "Knowledge Description": "Aglam n tmessunt", "Knowledge exported successfully": "", "Knowledge Name": "Isem n tmessunt", "Knowledge Public Sharing": "Beṭṭu azayaz n tmussniwin", - "Knowledge reset successfully.": "Tamussni tettuwennez akken iwata.", "Knowledge Sharing": "", "Knowledge updated successfully": "Timussniwin ttwaleqqment akken iwata", "Kokoro.js (Browser)": "Kokoro.js (Iminig)", @@ -1227,6 +1250,7 @@ "Light": "Aceɛlal", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Yettmaḥsis…", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Asqerdec amaynut", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Akaram amaynut", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Ulac agbur HTML, CSS neɣ JavaScript i d-yufraren.", "No inference engine with management support found": "Ulac amsedday n unalkam s tallelt n usefrek i yettwafen", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Ulac tamussni i yettwafen", "No limit": "", "No memories to clear": "Ulac aktayen ibanen", "No model IDs": "Ulac asulay n tmudemt", + "No models accessible": "", "No models available": "", "No models found": "Ulac timudmiwin yettwafen", "No models selected": "Ulac timudmin yettwafernen", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "Ulac ifecka yettwafen", "No users were found.": "Ulac aqeddac i yettwafen.", "No valves": "Ulac isegganen", @@ -1486,6 +1515,7 @@ "On": "Irmed", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "Isemli PDF (.pdf)", "PDF Extract Images (OCR)": "Tugniwin n ugemmay PDF", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "yettṛaǧu", "Pending": "Yegguni", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Asulay n uzwir yettusexdem i wakken ur d-yettili ara umennuɣ akked tuqqna-nniḍen s tmerna n usewgelhen i yimuhal n tmudemt - eǧǧ-iten d ilmawen i tukksa n tuqqna", "Prevent File Creation": "", "Preview": "Taskant", + "Preview Access": "", "Previous 30 days": "30 n wussan yezrin", "Previous 7 days": "7 n wussan yezrin", "Previous message": "Izen udfir", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "Kkes tugna", "Remove Model": "Kkes tamudemt", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Snifel isem", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Wennez", "Reset All Models": "Ales akk timudmiwin", "Reset Image": "Ales awennez n tugna", + "Reset knowledge base?": "", "Reset Upload Directory": "Wennez akaram n uzdam", "Reset Vector Storage/Knowledge": "", "Reset view": "Wennez askan", @@ -1780,6 +1815,7 @@ "Search Prompts": "Anadi ɣef yineftaɣen", "Search Result Count": "Amḍan n yigmaḍ n unadi", "Search Skills": "", + "Search skills...": "", "Search the internet": "Anadi deg Internet", "Search the web and fetch URLs": "", "Search Tools": "Nadi ifecka", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Mtawi akaram", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Tifrat-a ad teǧǧ neɣ ad tessenqes aseqdec n tmahilt n usseɣẓen deg Ollama, ayen yettaǧǧan tamudemt ad txemmem uqbel ad d-tawi tiririt. Ma yessaweḍ yiwen, tamudemt tezmer ad teṭṭef cwiṭ n wakud akken ad tseddu asatal n umeslay u ad d-tawi tiririt yettxemmimen ugar.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "Tiririt-a teslal-itt-id \"{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Aya ad yekkes", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Aya ad yekkes akk timudmin yellan gar-asent timudmin n tannumi", "This will delete all models including custom models and cannot be undone.": "Aya ad yekkes akk timudmin gar-asent timudmin tudmawanin yerna ur yezmir yiwen ad tent-id-yerr.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Aya ad yales taffa n tmussni u ad yemtawi akk ifuyla. Tebɣiḍ ad tkemmleḍ?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Asegzi leqqayen", "Thought": "", "Thought for {{DURATION}}": "Ixemmem {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "Sken ma yella tuqqna tamirant d turmidt.", @@ -2171,7 +2209,7 @@ "Upload Progress": "", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Tikli n uɛebbi: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "Tlaq tansa URL", @@ -2191,6 +2229,7 @@ "User Groups": "Agraw n iseqdacen", "User location successfully retrieved.": "", "User menu": "Umuɣ n useqdac", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Webhooks n yiseqdacen", diff --git a/src/lib/i18n/locales/ko-KR/translation.json b/src/lib/i18n/locales/ko-KR/translation.json index 2c9917ee50..dc22345e24 100644 --- a/src/lib/i18n/locales/ko-KR/translation.json +++ b/src/lib/i18n/locales/ko-KR/translation.json @@ -1,2320 +1,2355 @@ { - "-1 for no limit, or a positive integer for a specific limit": "-1은 제한 없음을 의미하며, 양의 정수는 특정 제한을 나타냅니다", - "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s(초)', 'm(분)', 'h(시간)', 'd(일)', 'w(주)' 또는 '-1'(만료없음) 중 하나를 사용하세요.", - "(e.g. `sh webui.sh --api --api-auth username_password`)": "(예: `sh webui.sh --api --api-auth 사용자이름_비밀번호`)", - "(e.g. `sh webui.sh --api`)": "(예: `sh webui.sh --api`)", - "(latest)": "(최신)", - "(leave blank for to use commercial endpoint)": "(상용 엔드포인트를 사용하시려면 비워두세요)", - "[Last] dddd [at] h:mm A": "[지난] dddd A h:mm", - "[Today at] h:mm A": "[오늘] A h:mm", - "[Yesterday at] h:mm A": "[어제] A h:mm", - "{{ models }}": "{{ models }}", - "{{COUNT}} Available Tools": "사용 가능한 도구 {{COUNT}}개", - "{{COUNT}} characters": "{{COUNT}} 문자", - "{{COUNT}} extracted lines": "추출된 줄 {{COUNT}}개", - "{{COUNT}} files": "{{COUNT}}개 파일", - "{{COUNT}} hidden lines": "숨겨진 줄 {{COUNT}}개", - "{{COUNT}} members": "{{COUNT}}명의 멤버", - "{{COUNT}} Replies": "답글 {{COUNT}}개", - "{{COUNT}} Rows": "{{COUNT}}개 행", - "{{count}} selected_other": "{{count}}개 선택됨", - "{{COUNT}} Sources": "{{COUNT}}개의 소스", - "{{COUNT}} words": "{{COUNT}} 단어", - "{{COUNT}}d_time_ago": "{{COUNT}}일 전", - "{{COUNT}}h_time_ago": "{{COUNT}}시간 전", - "{{COUNT}}m_time_ago": "{{COUNT}}분 전", - "{{COUNT}}w_time_ago": "{{COUNT}}주 전", - "{{COUNT}}y_time_ago": "{{COUNT}}년 전", - "{{LOCALIZED_DATE}} at {{LOCALIZED_TIME}}": "{{LOCALIZED_DATE}}일 {{LOCALIZED_TIME}}시", - "{{model}} download has been canceled": "{{model}} 다운로드가 취소되었습니다.", - "{{modelName}} profile image": "{{modelName}} 프로필 이미지", - "{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} 님이 {{REACTION}}으로 반응했습니다", - "{{user}}'s Chats": "{{user}}의 채팅", - "{{webUIName}} Backend Required": "{{webUIName}} 백엔드가 필요합니다.", - "*Prompt node ID(s) are required for image generation": "이미지 생성에는 프롬프트 노드 ID가 필요합니다.", - "1 hour before": "1시간 전", - "1 Source": "소스 1", - "10 minutes before": "10분 전", - "15 minutes before": "15분 전", - "1m_time_ago": "1분 전", - "30 minutes before": "30분 전", - "5 minutes before": "5분 전", - "A collaboration channel where people join as members": "사람들이 멤버로 참여하는 협업 채널", - "A discussion channel where access is controlled by groups and permissions": "그룹과 권한으로 접근이 제어되는 토론 채널", - "A new version (v{{LATEST_VERSION}}) is now available.": "새로운 버전 (v{{LATEST_VERSION}})을 사용할 수 있습니다.", - "A private conversation between you and selected users": "나와 선택한 사용자 간의 비공개 대화", - "A task model is used when performing tasks such as generating titles for chats and web search queries": "작업 모델은 채팅 및 웹 검색 쿼리에 대한 제목 생성 등의 작업 수행 시 사용됩니다.", - "a user": "사용자", - "About": "정보", - "Accept Autocomplete Generation\nJump to Prompt Variable": "자동완성 생성 수락\n프롬프트 변수로 이동", - "Access": "접근", - "Access Control": "접근 제어", - "Access Grants": "접근 권한", - "Access List": "접근 목록", - "Access updated": "접근 업데이트", - "Accessible to all users": "모든 사용자가 이용할 수 있음", - "Account": "계정", - "Account Activation Pending": "계정 활성화 대기", - "Accurate information": "정확한 정보", - "Action": "작업", - "Action Required for Chat Log Storage": "채팅 로그 저장을 위해 조치가 필요합니다", - "Actions": "작업", - "Activate": "활성화", - "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "채팅 입력창에 \"{{COMMAND}}\"을 입력해 명령을 실행하세요.", - "Active": "활성", - "Active Users": "활성 사용자", - "Activity": "활동", - "Add": "추가", - "Add a model ID": "모델 ID 추가", - "Add a short description about what this model does": "모델의 기능에 대한 간단한 설명 추가", - "Add a tag": "태그 추가", - "Add a tag...": "태그 추가...", - "Add Access": "접근 권한 추가", - "Add Arena Model": "아레나 모델 추가", - "Add Connection": "연결 추가", - "Add Content": "내용 추가", - "Add content here": "여기에 내용을 추가하세요", - "Add Custom Parameter": "사용자 정의 매개변수 추가", - "Add Custom Prompt": "사용자 정의 프롬프트 추가", - "Add description": "설명 추가", - "Add Details": "디테일 추가", - "Add Files": "파일 추가", - "Add Image": "이미지 추가", - "Add location": "위치 추가", - "Add Member": "멤버 추가", - "Add Members": "멤버 추가", - "Add Memory": "메모리 추가", - "Add Model": "모델 추가", - "Add Reaction": "리액션 추가", - "Add tag": "태그 추가", - "Add Tag": "태그 추가", - "Add Terminal": "터미널 추가", - "Add Terminal Connection": "터미널 연결 추가", - "Add text content": "글 추가", - "Add to favorites": "즐겨찾기에 추가", - "Add User": "사용자 추가", - "Add User Group": "사용자 그룹 추가", - "Add webpage": "웹페이지 추가", - "Add your Open Terminal URL and API key in Settings → Integrations.": "설정 → 통합에서 Open Terminal URL과 API 키를 추가하세요.", - "Additional Config": "추가 설정", - "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "Marker에 대한 추가 설정 옵션입니다. 키-값 쌍으로 이루어진 JSON 문자열이어야 합니다. 예를 들어, '{\"key\": \"value\"}'와 같습니다. 지원되는 키는 다음과 같습니다: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level", - "Additional feedback comments": "추가 피드백 의견", - "Additional Parameters": "추가 매개변수", - "Adds filenames, titles, sections, and snippets into the BM25 text to improve lexical recall.": "어휘 검색 재현율을 높이기 위해 BM25 텍스트에 파일명, 제목, 섹션, 스니펫을 추가합니다.", - "Adjusting these settings will apply changes universally to all users.": "이 설정을 조정하면 모든 사용자에게 변경 사항이 일괄 적용됩니다.", - "admin": "관리자", - "Admin": "관리자", - "Admin Contact Email": "관리자 이메일", - "Admin Panel": "관리자 패널", - "Admin Settings": "관리자 설정", - "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "관리자는 항상 모든 도구에 접근할 수 있지만, 사용자는 워크스페이스에서 모델마다 도구를 할당받아야 합니다.", - "Advanced": "고급", - "Advanced Parameters": "고급 매개변수", - "Advanced parameters for MinerU parsing (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)": "MinerU 파싱을 위한 고급 매개변수(enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)", - "Advanced Params": "고급 매개변수", - "After updating or changing the embedding model, you must reindex the knowledge base for the changes to take effect. You can do this using the \"Reindex\" button below.": "임베딩 모델을 업데이트하거나 변경 후 변경 사항을 적용하려면 지식 베이스를 다시 인덱싱해야 합니다. 아래의 \"재색인\" 버튼을 사용하여 수행할 수 있습니다.", - "AI": "AI", - "All": "전체", - "All chats have been unarchived.": "모든 채팅이 보관 해제되었습니다.", - "All day": "하루 종일", - "All models are now hidden": "모든 모델이 이제 숨김 처리되었습니다", - "All models are now visible": "모든 모델이 이제 표시됩니다", - "All models deleted successfully": "성공적으로 모든 모델이 삭제되었습니다", - "All time": "전체 기간", - "All Users": "모든 사용자", - "Allow Call": "음성 통화 허용", - "Allow Chat Controls": "채팅 제어 허용", - "Allow Chat Delete": "채팅 삭제 허용", - "Allow Chat Edit": "채팅 수정 허용", - "Allow Chat Export": "채팅 내보내기 허용", - "Allow Chat Params": "채팅 매개변수 허용", - "Allow Chat Share": "채팅 공유 허용", - "Allow Chat System Prompt": "채팅 시스템 프롬프트 허용", - "Allow Chat Valves": "채팅 밸브 허용", - "Allow Continue Response": "계속 응답 허용", - "Allow Delete Messages": "메시지 삭제 허용", - "Allow File Upload": "파일 업로드 허용", - "Allow Multiple Models in Chat": "채팅에서 여러 모델 허용", - "Allow non-local voices": "외부 음성 허용", - "Allow public write access": "공개 쓰기 접근 허용", - "Allow Rate Response": "응답 평가 허용", - "Allow Regenerate Response": "응답 재생성 허용", - "Allow Sharing With Users": "사용자와 공유 허용", - "Allow Speech to Text": "음성 텍스트 변환 허용", - "Allow Temporary Chat": "임시 채팅 허용", - "Allow Text to Speech": "텍스트 음성 변환 허용", - "Allow User Location": "사용자 위치 활용 허용", - "Allow Voice Interruption in Call": "음성 기능에서 음성 방해 허용", - "Allow Web Upload": "웹 업로드 허용", - "Allowed Endpoints": "허용 엔드포인트", - "Allowed File Extensions": "허용 파일 확장자", - "Allowed file extensions for upload. Separate multiple extensions with commas. Leave empty for all file types.": "업로드할 수 있는 파일 확장자. 여러 확장자를 구분하기 위해 쉼표로 구분합니다. 모든 파일 유형을 허용하려면 비워두세요.", - "Already have an account?": "이미 계정이 있으신가요?", - "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "top_p의 대안으로, 품질과 다양성 간의 균형을 보장하는 것을 목표로 합니다. 매개변수 p는 가장 가능성이 높은 토큰의 확률 대비 고려될 토큰의 최소 확률을 나타냅니다. 예를 들어, p=0.05이고 가장 가능성이 높은 토큰의 확률이 0.9인 경우, 값이 0.045보다 작은 로짓은 필터링됩니다.", - "Always": "항상", - "Always Collapse Code Blocks": "항상 코드 블록 접기", - "Always Expand Details": "항상 세부 정보 펼치기", - "Always Play Notification Sound": "항상 알림 소리 재생", - "Amazing": "놀라움", - "an assistant": "어시스턴트", - "Analytics": "분석", - "Analyzed": "분석됨", - "Analyzing...": "분석 중...", - "and {{COUNT}} more": "그리고 {{COUNT}}개 더", - "and create a new shared link.": "새로운 공유 링크를 생성합니다.", - "Android": "안드로이드", - "Anyone": "누구나", - "API Base URL": "API 기본 URL", - "API Base URL for Datalab Marker service. Defaults to: https://www.datalab.to/api/v1/marker": "Datalab Marker 서비스의 API URL. 기본값: https://www.datalab.to/api/v1/marker", - "API Key": "API 키", - "API Key created.": "API 키가 생성되었습니다.", - "API Key Endpoint Restrictions": "API 키 엔드포인트 제한", - "API keys": "API 키", - "API Keys": "API 키", - "API Mode": "API 모드", - "API Timeout": "API 시간 초과", - "API Type": "API 유형", - "API Version": "API 버전", - "API Version is required": "API 버전이 필요합니다", - "Application DN": "Application DN", - "Application DN Password": "Application DN 비밀번호", - "applies to all users with the \"user\" role": "\"사용자\" 권한의 모든 사용자에게 적용됩니다", - "April": "4월", - "Archive": "보관", - "Archive All": "모두 보관", - "Archive All Chats": "모든 채팅 보관", - "Archived Chats": "보관된 채팅", - "archived-chat-export": "보관된 채팅 내보내기", - "Are you sure you want to archive all chats? This action cannot be undone.": "정말 모든 채팅을 보관하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "Are you sure you want to clear all memories? This action cannot be undone.": "정말 모든 메모리를 지우시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "Are you sure you want to delete \"{{NAME}}\"?": "정말 \"{{NAME}}\"을 삭제하시겠습니까?", - "Are you sure you want to delete **{{modelName}}**?": "정말 **{{modelName}}**을(를) 삭제하시겠습니까?", - "Are you sure you want to delete all chats? This action cannot be undone.": "정말 모든 채팅을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "Are you sure you want to delete this channel?": "정말 이 채널을 삭제하시겠습니까?", - "Are you sure you want to delete this connection? This action cannot be undone.": "정말 이 연결을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "Are you sure you want to delete this memory? This action cannot be undone.": "정말 이 메모리를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", - "Are you sure you want to delete this message?": "정말 이 메시지를 삭제하시겠습니까?", - "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "정말 이 버전을 삭제하시겠습니까? 하위 버전은 이 버전의 상위 버전에 다시 연결됩니다.", - "Are you sure you want to delete this?": "정말 이 항목을 삭제하시겠습니까?", - "Are you sure you want to unarchive all archived chats?": "정말 보관된 모든 채팅을 보관 해제하시겠습니까?", - "Arena Models": "Arena 모델", - "Artifacts": "아티팩트", - "Asc": "오름차순", - "Ask": "질문", - "Ask a question": "질문하기", - "Assistant": "어시스턴트", - "Async Embedding Processing": "비동기 임베딩 처리", - "At time of event": "이벤트 발생 시", - "Attach File From Knowledge": "지식 기반에서 파일 첨부", - "Attach Files": "첨부 파일", - "Attach Knowledge": "지식 기반 첨부", - "Attach Notes": "노트 첨부", - "Attach Webpage": "웹페이지 첨부", - "Attention to detail": "세부 사항에 대한 주의", - "Attribute for Mail": "메일 속성", - "Attribute for Username": "사용자 이름 속성", - "Audio": "오디오", - "August": "8월", - "Auth": "인증", - "Authenticate": "인증하다", - "Authentication": "인증", - "Auto": "자동", - "Auto (Random)": "자동 (랜덤)", - "Auto-Copy Response to Clipboard": "응답을 클립보드에 자동 복사", - "Auto-playback response": "응답 자동 재생", - "Autocomplete Generation": "자동완성 생성", - "Autocomplete Generation Input Max Length": "자동완성 생성 입력 최대 길이", - "Automatic1111": "Automatic1111", - "AUTOMATIC1111 Api Auth String": "Automatic1111 API 인증 문자", - "AUTOMATIC1111 Base URL": "AUTOMATIC1111 기본 URL", - "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 기본 URL 설정이 필요합니다.", - "Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "네이티브 함수 호출 모드에서 시스템 도구(예: 타임스탬프, 메모리, 채팅 기록, 노트 등)를 자동으로 삽입합니다.", - "Automation": "자동", - "Automation created": "자동 생성", - "Automation Name": "자동 생성된 이름", - "Automation title": "자동 생성된 제목", - "Automation triggered": "자동 시행", - "Automation updated": "자동 업데이트", - "Automations": "자동", - "Available list": "가능한 목록", - "Available models": "사용 가능한 모델", - "Available Tools": "사용 가능한 도구", - "available users": "사용 가능 사용자", - "available!": "사용 가능!", - "Away": "자리 비움", - "Awful": "형편없음", - "Azure AI Speech": "Azure AI 음성", - "Azure OpenAI": "Azure OpenAI", - "Azure Region": "Azure 지역", - "Back": "뒤로", - "Bad Response": "잘못된 응답", - "Banners": "배너", - "Base Model (From)": "기본 모델(시작)", - "Base Model List Cache speeds up access by fetching base models only at startup or on settings save—faster, but may not show recent base model changes.": "기본 모델 목록 캐시는 시작 시 또는 설정 저장 시에만 기본 모델을 불러와 접근 속도를 높여줍니다. 이는 더 빠르지만, 최근 기본 모델 변경 사항이 반영되지 않을 수 있습니다.", - "Bearer": "보유자", - "before": "이전", - "Being lazy": "게으름 피우기", - "Beta": "베타", - "Bing": "Bing", - "Bing Search V7 Endpoint": "Bing Search V7 엔드포인트", - "Bing Search V7 Subscription Key": "Bing Search V7 구독 키", - "Bio": "소개", - "Birth Date": "생년월일", - "BM25 Weight": "BM25 가중치", - "Bocha Search API Key": "Bocha Search API 키", - "Bold": "굵게", - "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "특정 토큰을 가중 상향/하향하여 응답을 제약합니다. 값은 -100 ~ 100(기본값: 없음)", - "Brave": "Brave", - "Brave Search API Key": "Brave Search API 키", - "Break down complex requests into trackable steps": "복잡한 요청을 추적 가능한 단계로 나누세요", - "Browse and query knowledge bases": "지식 기반 탐색 및 쿼리", - "Builtin Tools": "내장(빌트인) 도구", - "Bullet List": "글머리 기호 목록", - "Button ID": "버튼 ID", - "Button Label": "버튼 레이블", - "Button Prompt": "버튼 프롬프트", - "by {{name}}": "작성자: {{name}}", - "By {{name}}": "작성자: {{name}}", - "Bypass Embedding and Retrieval": "임베딩 검색 우회", - "Bypass Web Loader": "웹 콘텐츠 불러오기 생략", - "Cache Base Model List": "기본 모델 목록 캐시", - "Calendar": "캘린더", - "Calendar created": "", - "Calendar deleted": "캘린더가 삭제되었습니다.", - "Calendar name": "", - "Calendars": "캘린더", - "Calendars Public Sharing": "", - "Call": "음성 기능", - "Call feature is not supported when using Web STT engine": "웹 STT 엔진 사용 시, 음성 기능은 지원되지 않습니다.", - "Camera": "카메라", - "Cancel": "취소", - "Cancel download of {{model}}": "{{model}} 다운로드 취소", - "Cannot create an empty note.": "빈 노트를 생성할 수 없습니다.", - "Cannot delete the production version": "이 프로덕션 버전은 삭제할 수 없습니다.", - "Capabilities": "기능", - "Capture": "캡처", - "Capture Audio": "오디오 캡처", - "Certificate Path": "인증서 경로", - "Change folder icon": "폴더 아이콘 변경", - "Change Password": "비밀번호 변경", - "Change User Role": "사용자 역할 변경", - "Channel": "채널", - "Channel deleted successfully": "채널 삭제 성공", - "Channel Name": "채널 이름", - "Channel name cannot be empty.": "채널 이름은 비워둘 수 없습니다.", - "Channel name must be less than 128 characters": "채널 이름은 128자 미만이어야 합니다", - "Channel Type": "채널 타입", - "Channel updated successfully": "채널 업데이트 성공", - "Channels": "채널", - "Character": "캐릭터", - "Character limit for autocomplete generation input": "자동 완성 생성 입력 문자 제한", - "Chart new frontiers": "새로운 영역 개척", - "Chat": "채팅", - "Chat archived.": "채팅 보관됨.", - "Chat Background Image": "채팅 배경 이미지", - "Chat Bubble UI": "버블형 채팅 UI", - "Chat Completions": "채팅 완성", - "Chat Conversation": "채팅 대화", - "Chat deleted.": "", - "Chat direction": "채팅 방향", - "Chat exported successfully": "채팅 내보내기 성공", - "Chat History": "채팅 기록", - "Chat ID": "채팅 ID", - "Chat moved successfully": "채팅 이동 성공", - "Chat Permissions": "채팅 권한", - "Chat Tags Auto-Generation": "채팅 태그 자동생성", - "Chat unshared successfully.": "채팅 공유 해제 성공", - "chats": "채팅", - "Chats": "채팅", - "Chats Public Sharing": "", - "Check Again": "다시 확인", - "Check for updates": "업데이트 확인", - "Checking for updates...": "업데이트 확인중...", - "Choose a model before saving...": "저장하기 전에 모델을 선택하세요...", - "Chunk Min Size Target": "최소 청크 크기 목표", - "Chunk Overlap": "청크 중첩", - "Chunk Size": "청크 크기", - "Chunks smaller than this threshold will be merged with neighboring chunks when possible. Set to 0 to disable merging.": "이 임계값보다 작은 청크는 가능한 경우 이웃한 청크와 병합됩니다. 병합을 비활성화하려면 0으로 설정하세요.", - "Ciphers": "암호", - "Citation": "인용", - "Citations": "인용", - "Clear memory": "메모리 초기화", - "Clear Memory": "메모리 지우기", - "Clear search": "검색 초기화", - "Clear status": "상태 초기화", - "click here": "여기를 클릭하세요", - "Click here for filter guides.": "필터 가이드를 보려면 여기를 클릭하세요.", - "Click here for help.": "도움말을 보려면 여기를 클릭하세요.", - "Click here to": "여기를 클릭하면", - "Click here to download user import template file.": "사용자 삽입 템플렛 파일을 다운받으려면 여기를 클릭하세요", - "Click here to learn more about faster-whisper and see the available models.": "빠른 속삭임에 대해 배우거나 가능한 모델을 보려면 여기를 클릭하세요", - "Click here to see available models.": "사용 가능한 모델을 보려면 여기를 클릭하세요.", - "Click here to select": "선택하려면 여기를 클릭하세요.", - "Click here to select a csv file.": "csv 파일을 선택하려면 여기를 클릭하세요.", - "Click here to select a py file.": "py 파일을 선택하려면 여기를 클릭하세요.", - "Click here to upload a workflow.json file.": "workflow.json 파일을 업로드하려면 여기를 클릭하세요", - "click here.": "여기를 클릭하세요.", - "Click on the user role button to change a user's role.": "사용자 역할 버튼을 클릭하여 사용자의 역할을 변경하세요.", - "Click to connect": "연결하려면 클릭하세요", - "Click to copy ID": "ID를 복사하려면 클릭하세요", - "Client ID": "클라이언트 ID", - "Client Secret": "클라이언트 시크릿", - "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "클립보드 쓰기 권한이 거부되었습니다. 브라우저 설정에서 권한을 허용해주세요.", - "Clone": "복제", - "Clone Chat": "채팅 복제", - "Clone of {{TITLE}}": "{{TITLE}}의 복제본", - "Close": "닫기", - "Close Banner": "배너 닫기", - "Close chat controls": "채팅 제어 닫기", - "Close citation modal": "인용 모달 닫기", - "Close Configure Connection Modal": "연결 설정 닫기", - "Close feedback": "피드백 닫기", - "Close modal": "닫기", - "Close Modal": "모달 닫기", - "Close settings modal": "설정 닫기", - "Close Sidebar": "사이드바 닫기", - "cloud": "클라우드", - "CMU ARCTIC speaker embedding name": "CMU ARCTIC 화자 임베딩 이름", - "Code Block": "코드 블록", - "Code Editor": "코드 편집기", - "Code execution": "코드 실행", - "Code Execution": "코드 실행", - "Code Execution Engine": "코드 실행 엔진", - "Code Execution Timeout": "코드 실행 시간 초과", - "Code formatted successfully": "코드 포맷팅이 성공적으로 완료되었습니다.", - "Code Interpreter": "코드 인터프리터", - "Code Interpreter Engine": "코드 인터프리터 엔진", - "Code Interpreter Prompt Template": "코드 인터프리터 프롬프트 템플릿", - "Collaboration channel where people join as members": "사람들이 멤버로 참여하는 협업 채널", - "Collapse": "접기", - "Collection": "컬렉션", - "Collections": "컬렉션", - "Color": "색상", - "ComfyUI": "ComfyUI", - "ComfyUI API Key": "ComfyUI API 키", - "ComfyUI Base URL": "ComfyUI 기본 URL", - "ComfyUI Base URL is required.": "ComfyUI 기본 URL이 필요합니다.", - "ComfyUI Workflow": "ComfyUI 워크플로", - "ComfyUI Workflow Nodes": "ComfyUI 워크플로 노드", - "Comma separated Node Ids (e.g. 1 or 1,2)": "쉼표로 구분된 노드 아이디 (예: 1 또는 1,2)", - "command": "명령", - "Command": "명령", - "Comment": "주석", - "Commit Message": "커밋 메시지", - "Community Reviews": "커뮤니티 리뷰", - "Completions": "완성됨", - "Compress Images in Channels": "채널에 이미지들 압축하기", - "Concurrent Requests": "동시 요청 수", - "Config": "구성", - "Config imported successfully": "구성을 성공적으로 가져왔습니다", - "Configuration": "구성", - "Configure": "구성", - "Confirm": "확인", - "Confirm Password": "비밀번호 확인", - "Confirm Prompt from Embed": "임베드에서 확인 프롬프트", - "Confirm your action": "작업 확인", - "Confirm your new password": "새로운 비밀번호를 한 번 더 입력해 주세요", - "Confirm Your Password": "비밀번호를 확인해주세요", - "Connect to an AI provider to start chatting": "AI 제공자에 연결하여 채팅을 시작하세요", - "Connect to Open Terminal instances to browse files and use them as always-on tools. Only one can be active at a time.": "파일을 탐색하고 항상 켜진 도구로 사용하려면 Open Terminal 인스턴스에 연결하세요. 한 번에 하나만 활성화할 수 있습니다.", - "Connect to Open Terminal instances. All users will have access to file browsing and terminal tools through these servers.": "Open Terminal 인스턴스에 연결합니다. 모든 사용자는 이 서버를 통해 파일 탐색과 터미널 도구를 사용할 수 있습니다.", - "Connect to your own OpenAI compatible API endpoints.": "OpenAI 호환 API 엔드포인트에 연결합니다.", - "Connect to your own OpenAPI compatible external tool servers.": "OpenAPI 호환 외부 도구 서버에 연결합니다.", - "Connected ({{type}})": "{{type}}에 연결됨", - "Connection failed": "연결 실패", - "Connection lost. Reconnecting...": "연결이 끊겼습니다. 재연결 중...", - "Connection successful": "연결 성공", - "Connection Type": "연결 방식", - "Connections": "연결", - "Connections saved successfully": "연결이 성공적으로 저장되었습니다", - "Connections settings updated": "연결 설정이 업데이트되었습니다", - "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "추론 모델의 추론 난이도를 제한합니다. 추론 난이도를 지원하는 특정 공급자의 추론 모델에만 적용됩니다.", - "Contact Admin for WebUI Access": "WebUI 접속을 위해서는 관리자에게 연락에 연락하십시오", - "Content": "내용", - "Content Extraction Engine": "콘텐츠 추출 엔진", - "Content lengths (character counts only)": "콘텐츠 길이(문자 수만)", - "Context Tokens": "", - "Continue Response": "응답 이어 받기", - "Continue with {{provider}}": "{{provider}}로 계속", - "Continue with Email": "이메일로 계속", - "Continue with LDAP": "LDAP로 계속", - "Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "TTS 요청에 메시지가 어떻게 나눠지는지 제어하십시오. 'Punctuation'는 문장으로 나누고, 'paragraphs'은 문단으로 나누고, '없음'은 메시지를 하나의 문자열로 인식합니다.", - "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "생성된 텍스트에서 토큰 시퀀스의 반복을 제어합니다. 높은 값(예: 1.5)은 반복에 더 강한 페널티를 부과하고, 낮은 값(예: 1.1)은 더 관대합니다. 1일 경우 비활성화됩니다.", - "Controls": "제어", - "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "출력의 일관성과 다양성 간의 균형을 제어합니다. 낮은 값은 더 집중되고 일관성 있는 텍스트를 생성합니다.", - "Conversation saved successfully": "대화가 성공적으로 저장되었습니다", - "Copied": "복사됨", - "Copied link to clipboard": "클립보드에 링크가 복사되었습니다", - "Copied shared chat URL to clipboard!": "채팅 공유 URL이 클립보드에 복사되었습니다!", - "Copied to clipboard": "클립보드에 복사되었습니다", - "Copy": "복사", - "Copy API Key": "API 키 복사", - "Copy content": "콘텐츠 복사", - "Copy Formatted Text": "서식 있는 텍스트 복사", - "Copy Last Code Block": "마지막 코드 블록 복사", - "Copy Last Response": "마지막 응답 복사", - "Copy link": "링크 복사", - "Copy Link": "링크 복사", - "Copy Path": "경로 복사", - "Copy Prompt": "프롬프트 복사", - "Copy Share Link": "공유 링크 복사", - "Copy to clipboard": "클립보드에 복사", - "Copy Token": "토큰 복사", - "Copy URL": "URL 복사", - "Copying to clipboard was successful!": "성공적으로 클립보드에 복사되었습니다!", - "CORS must be properly configured by the provider to allow requests from Open WebUI.": "Open WebUI의 요청을 허용하려면 공급자가 CORS를 올바르게 구성해야 합니다.", - "Could not read file.": "파일을 읽을 수 없습니다.", - "CPU": "CPU", - "Create": "생성", - "Create a knowledge base": "지식 기반 생성", - "Create a model": "모델 생성", - "Create a new note": "새 노트 생성", - "Create Account": "계정 생성", - "Create Admin Account": "관리자 계정 생성", - "Create and manage scheduled automations": "예약된 자동화를 생성하고 관리합니다", - "Create Channel": "채널 생성", - "Create Folder": "폴더 생성", - "Create Image": "이미지 생성", - "Create Knowledge": "지식 생성", - "Create Model": "모델 생성", - "Create new key": "새로운 키 생성", - "Create new secret key": "새로운 비밀 키 생성", - "Create note": "노트 생성", - "Create Note": "노트 생성", - "Create scheduled prompts that run automatically on a recurring basis.": "반복적으로 자동으로 실행되는 예약 프롬프트를 생성합니다.", - "Create your first note by clicking on the plus button below.": "아래의 플러스 버튼을 클릭하여 첫 번째 노트를 생성하세요.", - "Created at": "생성일", - "Created At": "생성일", - "Created by": "작성자", - "Created by you": "당신이 생성함", - "Created on {{date}}": "{{date}}에 생성됨", - "CSV Import": "CSV 가져오기", - "Ctrl+Enter to Send": "Ctrl+Enter로 보내기", - "Current Model": "현재 모델", - "Current Password": "현재 비밀번호", - "Custom": "사용자 정의", - "Custom color": "", - "Custom description enabled": "사용자 정의 설명 활성화됨", - "Custom Gender": "사용자 정의 성별", - "Custom Parameter Name": "사용자 정의 매개변수 이름", - "Custom Parameter Value": "사용자 정의 매개변수 값", - "Daily": "매일", - "Daily Messages": "일일 메시지", - "Danger Zone": "위험 기능", - "Dark": "다크", - "Data Controls": "데이터 제어", - "Database": "데이터베이스", - "Datalab Marker API": "Datalab Marker API", - "Date Modified": "", - "Day": "일", - "DD/MM/YYYY": "YYYY/MM/DD", - "DDGS Backend": "DDGS 백엔드", - "December": "12월", - "Decrease UI Scale": "UI 크기 축소", - "Deepgram": "Deepgram", - "Default": "기본값", - "Default (Open AI)": "기본값 (Open AI)", - "Default (SentenceTransformers)": "기본값 (SentenceTransformers)", - "Default action buttons will be used.": "기본 작업 버튼이 사용됩니다.", - "Default description enabled": "기본 설명 활성화됨", - "Default Features": "기본 기능", - "Default Filters": "기본 필터", - "Default Group": "기본 그룹", - "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model's built-in tool-calling capabilities, but requires the model to inherently support this feature.": "기본 모드는 실행 전에 도구를 한 번 호출하여 더 다양한 모델에서 작동합니다. 기본 모드는 모델에 내장된 도구 호출 기능을 활용하지만, 모델이 이 기능을 본질적으로 지원해야 합니다.", - "Default Model": "기본 모델", - "Default model updated": "기본 모델이 업데이트되었습니다.", - "Default permissions": "기본 권한", - "Default permissions updated successfully": "성공적으로 기본 권한이 수정되었습니다", - "Default Prompt Suggestions": "기본 프롬프트 제안", - "Default to 389 or 636 if TLS is enabled": "TLS가 활성화된 경우 기본값은 389 또는 636입니다", - "Default to ALL": "기본값: 전체", - "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "집중적이고 관련성 있는 콘텐츠 추출을 위해 세분화된 검색을 기본으로 하며, 대부분의 경우에 권장됩니다.", - "Default User Role": "기본 사용자 역할", - "Defaults": "기본값", - "Delete": "삭제", - "Delete {{name}}": "{{name}} 삭제", - "Delete a model": "모델 삭제", - "Delete All": "모두 삭제", - "Delete All Chats": "모든 채팅 삭제", - "Delete all contents inside this folder": "이 폴더 내 모든 콘텐츠 삭제", - "Delete automation?": "자동 삭제하시겠습니까?", - "Delete calendar": "캘린더 삭제", - "Delete Calendar": "캘린더 삭제", - "Delete Chat": "채팅 삭제", - "Delete chat?": "채팅을 삭제하시겠습니까?", - "Delete Event": "이벤트 삭제", - "Delete File": "파일 삭제", - "Delete folder?": "폴더를 삭제하시겠습니까?", - "Delete function?": "함수를 삭제하시겠습니까?", - "Delete Memory?": "메모리를 삭제하시겠습니까?", - "Delete Message": "메시지 삭제", - "Delete message?": "메시지를 삭제하시겠습니까?", - "Delete Model": "모델 삭제", - "Delete note?": "노트를 삭제하시겠습니까?", - "Delete prompt?": "프롬프트를 삭제하시겠습니까?", - "Delete skill?": "스킬을 삭제하시겠습니까?", - "delete this link": "이 링크를 삭제합니다.", - "Delete tool?": "도구를 삭제하시겠습니까?", - "Delete User": "사용자 삭제", - "Delete Version": "버전 삭제", - "Deleted": "삭제됨", - "Deleted {{deleteModelTag}}": "{{deleteModelTag}} 삭제됨", - "Deleted {{name}}": "{{name}}을(를) 삭제했습니다.", - "Deleted {{ok}} of {{total}} items": "총 {{total}}개 항목 중 {{ok}}개가 삭제되었습니다.", - "Deleted User": "삭제된 사용자", - "Deployment names are required for Azure OpenAI": "Azure OpenAI 사용 시 배포 이름은 필수입니다.", - "Desc": "내림차순", - "Describe the edit...": "편집 내용 설명...", - "Describe the image...": "이미지 설명...", - "Describe what changed...": "변경 내용 설명...", - "Describe your knowledge base and objectives": "지식 기반에 대한 설명과 목적을 입력하세요", - "Description": "설명", - "Deselect": "선택 해제", - "Detect Artifacts Automatically": "아티팩트 자동 감지", - "Dictate": "마이크 사용", - "Didn't fully follow instructions": "완전히 지침을 따르지 않음", - "Direct": "직접", - "Direct Connections": "직접 연결", - "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "직접 연결을 통해 사용자는 자체 OpenAI 호환 API 엔드포인트에 연결할 수 있습니다.", - "Direct Message": "1:1 메시지", - "Direct Tool Servers": "다이렉트 도구 서버", - "Directory selection was cancelled": "디렉토리 선택이 취소되었습니다.", - "Disable All": "모두 비활성화", - "Disable Code Interpreter": "코드 인터프리터 비활성화", - "Disable Image Extraction": "이미지 추출 비활성화", - "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "PDF에서 이미지 추출을 비활성화합니다. Use LLM이 활성화된 경우 이미지는 자동으로 캡션이 달립니다. 기본값은 False입니다.", - "Disabled": "제한됨", - "Disconnect OAuth": "", - "Discover a function": "함수 검색", - "Discover a model": "모델 검색", - "Discover a prompt": "프롬프트 검색", - "Discover a tool": "도구 검색", - "Discover how to use Open WebUI and seek support from the community.": "Open WebUI 사용 방법을 알아보고 커뮤니티에서 지원을 받으세요.", - "Discover wonders": "놀라움을 체험하세요", - "Discover, download, and explore custom functions": "사용자 정의 함수 검색, 다운로드 및 탐색", - "Discover, download, and explore custom prompts": "사용자 정의 프롬프트 검색, 다운로드 및 탐색", - "Discover, download, and explore custom tools": "사용자 정의 도구 검색, 다운로드 및 탐색", - "Discover, download, and explore model presets": "모델 사전 설정 검색, 다운로드 및 탐색", - "Discussion channel where access is based on groups and permissions": "그룹과 권한을 기반으로 액세스하는 토론 채널", - "Display": "표시", - "Display chat title in tab": "탭에 채팅 목록 표시", - "Display Emoji in Call": "음성기능에서 이모지 표시", - "Display Multi-model Responses in Tabs": "탭에 여러 모델 응답 표시", - "Display the username instead of You in the Chat": "채팅에서 '당신' 대신 사용자 이름 표시", - "Displays citations in the response": "응답에 인용 표시", - "Displays status updates (e.g., web search progress) in the response": "응답에 상태 업데이트(예: 웹 검색 진행 상황)를 표시합니다", - "Dive into knowledge": "지식 탐구", - "Do not install functions from sources you do not fully trust.": "불분명한 출처를 가진 함수를 설치하지마세요", - "Do not install tools from sources you do not fully trust.": "불분명한 출처를 가진 도구를 설치하지마세요", - "Do you want to sync your usage stats with Open WebUI Community?": "사용 통계를 Open WebUI 커뮤니티와 동기화하시겠습니까?", - "Docling": "Docling", - "Docling Parameters": "Docling 매개변수", - "Docling Server URL required.": "Docling 서버 URL이 필요합니다.", - "Document": "문서", - "Document Intelligence": "문서 인텔리전스", - "Document Intelligence endpoint required.": "문서 인텔리전스 엔드포인트가 필요합니다.", - "Document Intelligence Model": "문서 인텔리전스 모델", - "Documentation": "문서", - "Documents": "문서", - "does not make any external connections, and your data stays securely on your locally hosted server.": "외부와 어떠한 연결도 하지 않으며, 데이터는 로컬에서 호스팅되는 서버에 안전하게 유지됩니다.", - "Domain Filter List": "도메인 필터 목록", - "don't fetch random pipelines from sources you don't trust.": "신뢰하지 않는 출처에서 임의의 파이프라인을 가져오지 마세요.", - "Don't have an account?": "계정이 없으신가요?", - "don't install random functions from sources you don't trust.": "불분명한 출처를 가진 임의의 함수를 설치하지마세요", - "don't install random tools from sources you don't trust.": "불분명한 출처를 가진 임의의 도구를 설치하지마세요", - "Don't like the style": "스타일이 마음에 안 드시나요?", - "Done": "완료됨", - "Download": "다운로드", - "Download & Delete": "다운로드 및 삭제", - "Download as JSON": "JSON으로 다운로드", - "Download as SVG": "SVG로 다운로드", - "Download canceled": "다운로드 취소", - "Download Database": "데이터베이스 다운로드", - "Downloading stats...": "통계 다운로드 중...", - "Draw": "그리기", - "Drop any files here to upload": "여기에 파일을 끌어다 놓아 업로드하세요", - "Drop files here": "파일을 여기에 끌어다 놓으세요", - "Drop files here to upload": "업로드할 파일을 여기에 끌어다 놓으세요", - "DuckDuckGo": "DuckDuckGo", - "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "예: '30초','10분'. 올바른 시간 단위는 '초', '분', '시'입니다.", - "e.g. 'low', 'medium', 'high'": "예: '낮음', '중간', '높음'", - "e.g. \"json\" or a JSON schema": "예: \\\"json\\\" 또는 JSON 스키마", - "e.g. 60": "예: 60", - "e.g. A filter to remove profanity from text": "예: 텍스트에서 비속어를 제거하는 필터", - "e.g. about the Roman Empire": "예: 로마 제국에 대해", - "e.g. alloy, echo, shimmer": "예: alloy, echo, shimmer", - "e.g. Code Review Guidelines": "예: 코드 리뷰 가이드라인", - "e.g. code-review-guidelines": "예: code-review-guidelines", - "e.g. en": "예: en", - "e.g. My Filter": "예: 내 필터", - "e.g. My Tools": "예: 내 도구", - "e.g. my_filter": "예: my_filter", - "e.g. my_tools": "예: my_tools", - "e.g. pdf, docx, txt": "예: pdf, docx, txt", - "e.g. Step-by-step instructions for code reviews": "예: 코드 리뷰를 위한 단계별 지침", - "e.g. Tell me a fun fact": "예: 재미있는 사실을 말해주세요", - "e.g. Tell me a fun fact about the Roman Empire": "예: 로마 제국에 대한 재미있는 사실을 말해주세요", - "e.g. Tools for performing various operations": "예: 다양한 작업을 수행하는 도구", - "e.g., 3, 4, 5 (leave blank for default)": "예: 3, 4, 5 (기본값을 위해 비워 두세요)", - "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "예: audio/wav,audio/mpeg,video/* (기본값은 빈칸)", - "e.g., en-US,ja-JP (leave blank for auto-detect)": "예: en-US, ja-JP (자동 감지를 위해 비워 두세요)", - "e.g., westus (leave blank for eastus)": "예: westus (eastus를 위해 비워 두세요)", - "Edit": "편집", - "Edit Arena Model": "아레나 모델 편집", - "Edit Channel": "채널 편집", - "Edit Connection": "연결 편집", - "Edit Default Permissions": "기본 권한 편집", - "Edit Folder": "폴더 편집", - "Edit Image": "이미지 편집", - "Edit Last Message": "마지막 메시지 편집", - "Edit Memory": "메모리 편집", - "Edit Prompt": "프롬프트 편집", - "Edit Terminal Connection": "터미널 연결 편집", - "Edit User": "사용자 편집", - "Edit User Group": "사용자 그룹 편집", - "Edit workflow.json content": "workflow.json 콘텐츠 편집", - "edited": "수정됨", - "Edited": "수정됨", - "Editing": "수정중", - "Eject": "추출", - "Eject model": "모델 추출", - "ElevenLabs": "ElevenLabs", - "Email": "이메일", - "Embark on adventures": "모험을 떠나기", - "Embedding": "임베딩", - "Embedding Batch Size": "임베딩 배치 크기", - "Embedding Concurrent Requests": "임베딩 동시 요청 수", - "Embedding Model": "임베딩 모델", - "Embedding Model Engine": "임베딩 모델 엔진", - "Emojis": "이모티콘", - "Empty message": "빈 메시지", - "Enable All": "모두 활성화", - "Enable API Keys": "API 키 활성화", - "Enable autocomplete generation for chat messages": "채팅 메시지에 대한 자동 완성 생성 활성화", - "Enable Code Execution": "코드 실행 활성화", - "Enable Code Interpreter": "코드 인터프리터 활성화", - "Enable Community Sharing": "커뮤니티 공유 활성화", - "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "모델 데이터가 RAM에서 스왑 아웃되는 것을 방지하기 위해 메모리 잠금(mlock)을 활성화합니다. 이 옵션은 모델의 작업 페이지 집합을 RAM에 잠가 디스크로 스왑 아웃되지 않도록 보장합니다. 이는 페이지 폴트를 피하고 빠른 데이터 액세스를 보장하여 성능을 유지하는 데 도움이 될 수 있습니다.", - "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "모델 데이터를 로드하기 위해 메모리 매핑(mmap)을 활성화합니다. 이 옵션을 사용하면 시스템이 디스크 파일을 RAM에 있는 것처럼 처리하여 디스크 스토리지를 RAM의 확장으로 사용할 수 있습니다. 이는 더 빠른 데이터 액세스를 허용하여 모델 성능을 향상시킬 수 있습니다. 그러나 모든 시스템에서 올바르게 작동하지 않을 수 있으며 상당한 양의 디스크 공간을 소비할 수 있습니다.", - "Enable Message Queue": "메시지 큐 활성화", - "Enable Message Rating": "메시지 평가 활성화", - "Enable Mirostat sampling for controlling perplexity.": "퍼플렉서티 제어를 위해 Mirostat 샘플링 활성화", - "Enable New Sign Ups": "새 회원가입 활성화", - "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "모델이 사용하는 추론 태그를 활성화, 비활성화 또는 사용자 지정할 수 있습니다. \"활성화됨\"은 기본 태그를 사용하고, \"비활성화됨\"은 추론 태그를 끄며, \"사용자 지정\"은 직접 시작 및 종료 태그를 지정할 수 있습니다.", - "Enabled": "활성화됨", - "End Tag": "종료 태그", - "Endpoint URL": "엔드포인트 URL", - "Enforce Temporary Chat": "임시 채팅 강제 적용", - "Enhance": "향상", - "Enrich Hybrid Search Text": "하이브리드 검색 텍스트 강화", - "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSV 파일에 이름, 이메일, 비밀번호, 역할 4개의 열이 순서대로 포함되어 있는지 확인하세요.", - "Enter {{role}} message here": "여기에 {{role}} 메시지 입력", - "Enter a detail about yourself for your LLMs to recall": "자신에 대한 세부사항을 입력하여 LLM들이 기억할 수 있도록 하세요.", - "Enter a title for the pending user info overlay. Leave empty for default.": "대기 중인 사용자 정보 오버레이의 제목을 입력하세요. 비워두면 기본값이 사용됩니다.", - "Enter a watermark for the response. Leave empty for none.": "응답에 사용할 워터마크를 입력하세요. 비워두면 워터마크가 적용되지 않습니다.", - "Enter additional headers in JSON format": "추가 헤더를 JSON 형식으로 입력하세요", - "Enter additional headers in JSON format (e.g. {\"X-Custom-Header\": \"value\"}": "추가 헤더를 JSON 형식으로 입력하세요(예: {\"X-Custom-Header\": \"value\"})", - "Enter additional parameters in JSON format": "추가 매개변수를 JSON 형식으로 입력하세요", - "Enter api auth string (e.g. username:password)": "API 인증 문자 입력 (예: 사용자 이름:비밀번호)", - "Enter Application DN": "애플리케이션 DN 입력", - "Enter Application DN Password": "애플리케이션 DN 비밀번호 입력", - "Enter Bing Search V7 Endpoint": "Bing Search V7 엔드포인트 입력", - "Enter Bing Search V7 Subscription Key": "Bing Search V7 구독 키 입력", - "Enter Bocha Search API Key": "Bocha 검색 API 키 입력", - "Enter Brave Search API Key": "Brave Search API Key 입력", - "Enter certificate path": "인증서 경로 입력", - "Enter Chunk Min Size Target": "청크 최소 크기 목표 입력", - "Enter Chunk Overlap": "청크 중첩 입력", - "Enter Chunk Size": "청크 크기 입력", - "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "쉼표로 구분된 \\\"토큰:편향_값\\\" 쌍 입력 (예: 5432:100, 413:-100)", - "Enter content for the pending user info overlay. Leave empty for default.": "대기 중인 사용자 정보 오버레이에 들어갈 내용을 입력하세요. 비워두면 기본값이 사용됩니다.", - "Enter coordinates (e.g. 51.505, -0.09)": "좌표 입력 (예: 51.505, -0.09)", - "Enter Datalab Marker API Base URL": "Datalab Marker API URL 입력", - "Enter Datalab Marker API Key": "Datalab Marker API 키 입력", - "Enter description": "설명 입력", - "Enter Docling API Key": "Docling API 키 입력", - "Enter Docling Server URL": "Docling 서버 URL 입력", - "Enter Document Intelligence Endpoint": "Document Intelligence 엔드포인트 입력", - "Enter Document Intelligence Key": "Document Intelligence 키 입력", - "Enter Document Intelligence Model": "Document Intelligence 모델 입력", - "Enter domains separated by commas (e.g., example.com,site.org,!excludedsite.com)": "쉼표로 구분하여 도메인을 입력하세요(예: example.com,site.org,!excludedsite.com)", - "Enter Exa API Key": "Exa API 키 입력", - "Enter External Document Loader API Key": "외부 문서 로더 API 키 입력", - "Enter External Document Loader URL": "외부 문서 로더 URL 입력", - "Enter External Web Loader API Key": "외부 웹 로더 API 키 입력", - "Enter External Web Loader URL": "외부 웹 로더 URL 입력", - "Enter External Web Search API Key": "외부 웹 검색 API 키 입력", - "Enter External Web Search URL": "외부 웹 검색 URL 입력", - "Enter Firecrawl API Base URL": "Firecrawl API 기본 URL 입력", - "Enter Firecrawl API Key": "Firecrawl API 키 입력", - "Enter Firecrawl Timeout": "Firecrawl 시간 초과 입력", - "Enter folder name": "폴더 이름 입력", - "Enter function name filter list (e.g. func1, !func2)": "함수 이름 필터 목록을 입력하세요(예: func1, !func2)", - "Enter Github Raw URL": "Github Raw URL 입력", - "Enter Google PSE API Key": "Google PSE API 키 입력", - "Enter Google PSE Engine Id": "Google PSE 엔진 ID 입력", - "Enter hex color (e.g. #FF0000)": "색상 hex 입력 (예: #FF0000)", - "Enter Image Size (e.g. 512x512)": "이미지 크기 입력(예: 512x512)", - "Enter Jina API Base URL": "Jina API 기본 URL 입력", - "Enter Jina API Key": "Jina API 키 입력", - "Enter JSON config (e.g., {\"disable_links\": true})": "JSON 설정 입력 (예: {\"disable_links\": true})", - "Enter Jupyter Password": "Jupyter 비밀번호 입력", - "Enter Jupyter Token": "Jupyter 토큰 입력", - "Enter Jupyter URL": "Jupyter URL 입력", - "Enter Kagi Search API Key": "Kagi Search API 키 입력", - "Enter Key Behavior": "키 동작 입력", - "Enter language codes": "언어 코드 입력", - "Enter MinerU API Key": "MinerU API 키 입력", - "Enter Mistral API Base URL": "Mistral API Base URL 입력", - "Enter Mistral API Key": "Mistral API 키 입력", - "Enter Model ID": "모델 ID 입력", - "Enter model tag (e.g. {{modelTag}})": "모델 태그 입력(예: {{modelTag}})", - "Enter Mojeek Search API Key": "Mojeek Search API 키 입력", - "Enter name": "이름 입력", - "Enter New Password": "새로운 비밀번호 입력", - "Enter Number of Steps (e.g. 50)": "단계 수 입력(예: 50)", - "Enter Ollama Cloud API Key": "Ollama 클라우드 API 키 입력", - "Enter PaddleOCR-vl API Base URL": "", - "Enter PaddleOCR-vl API Token": "", - "Enter Perplexity API Key": "Perplexity API 키 입력", - "Enter Perplexity Search API URL": "Perplexity 검색 API URL 입력", - "Enter Playwright Timeout": "Playwright 시간 초과 입력", - "Enter Playwright WebSocket URL": "Playwright WebSocket URL 입력", - "Enter prompt here.": "여기에 프롬프트를 입력하세요.", - "Enter proxy URL (e.g. https://user:password@host:port)": "프록시 URL 입력(예: https://user:password@host:port)", - "Enter reasoning effort": "추론 난이도", - "Enter Score": "점수 입력", - "Enter SearchApi API Key": "SearchApi API 키 입력", - "Enter SearchApi Engine": "SearchApi 엔진 입력", - "Enter Searxng Query URL": "Searxng 쿼리 URL 입력", - "Enter Searxng search language": "Searxng 검색 언어 입력", - "Enter Seed": "Seed 입력", - "Enter SerpApi API Key": "SerpApi API 키 입력", - "Enter SerpApi Engine": "SerpApi 엔진 입력", - "Enter Serper API Key": "Serper API 키 입력", - "Enter Serply API Key": "Serply API 키 입력", - "Enter Serpstack API Key": "Serpstack API 키 입력", - "Enter server host": "서버 호스트 입력", - "Enter server label": "서버 레이블 입력", - "Enter server port": "서버 포트 입력", - "Enter skill instructions in markdown...": "마크다운 형식으로 스킬 지침을 입력하세요...", - "Enter Sougou Search API sID": "Sougou 검색 API sID 입력", - "Enter Sougou Search API SK": "Sougou 검색 API SK 입력", - "Enter stop sequence": "중지 시퀀스 입력", - "Enter system prompt": "시스템 프롬프트 입력", - "Enter system prompt here": "여기에 시스템 프롬프트 입력", - "Enter Tavily API Key": "Tavily API 키 입력", - "Enter Tavily Extract Depth": "Tavily 추출 깊이 입력", - "Enter the prompt instructions for this automation...": "이 자동화의 프롬프트 지침을 입력하세요...", - "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "WebUI의 공개 URL을 입력해 주세요. 이 URL은 알림에서 링크를 생성하는 데 사용합니다.", - "Enter the URL of the function to import": "가져올 함수의 URL 입력", - "Enter the URL to import": "가져올 URL 입력", - "Enter Tika Server URL": "Tika 서버 URL 입력", - "Enter timeout in seconds": "시간 초과(초) 입력", - "Enter to Send": "Enter로 보내기", - "Enter Top K": "Top K 입력", - "Enter Top K Reranker": "Top K 리랭커 입력", - "Enter URL (e.g. http://127.0.0.1:7860/)": "URL 입력(예: http://127.0.0.1:7860/)", - "Enter URL (e.g. http://localhost:11434)": "URL 입력(예: http://localhost:11434)", - "Enter value": "값 입력", - "Enter value (true/false)": "값 입력(true/false)", - "Enter Yacy Password": "Yacy 비밀번호 입력", - "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Yacy URL 입력(예: http://yacy.example.com:8090)", - "Enter Yacy Username": "Yacy 사용자 이름 입력", - "Enter Yandex Web Search API Key": "Yandex 웹 검색 API 키 입력", - "Enter Yandex Web Search URL": "Yandex 웹 검색 URL 입력", - "Enter You.com API Key": "You.com API 키 입력", - "Enter your code here...": "여기에 코드를 입력하세요...", - "Enter your current password": "현재 비밀번호를 입력해 주세요", - "Enter Your Email": "이메일 입력", - "Enter Your Full Name": "전체 이름 입력", - "Enter your gender": "성별 입력", - "Enter your message": "메시지 입력", - "Enter your name": "이름 입력", - "Enter Your Name": "이름 입력", - "Enter your new password": "새로운 비밀번호를 입력해 주세요", - "Enter Your Password": "비밀번호 입력", - "Enter Your Role": "역할 입력", - "Enter Your Username": "사용자 이름 입력", - "Enter your webhook URL": "웹훅 URL을 입력해 주세요", - "Entra ID": "Entra ID", - "Environment Variables": "환경 변수", - "Ephemeral": "임시", - "Error": "오류", - "ERROR": "오류", - "Error accessing directory": "디렉토리 액세스 오류", - "Error accessing Google Drive: {{error}}": "Google Drive 액세스 오류: {{error}}", - "Error accessing media devices.": "미디어 장치 액세스 오류", - "Error deleting model: {{error}}": "모델 삭제 중 오류: {{error}}", - "Error starting recording.": "녹화 시작 오류", - "Error unloading model: {{error}}": "모델 언로드 오류: {{error}}", - "Error uploading file: {{error}}": "파일 업로드 오류: {{error}}", - "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "오류: ID가 '{{modelId}}'인 모델이 이미 존재합니다. 계속하려면 다른 ID를 선택하세요.", - "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "오류: 모델 ID는 비워둘 수 없습니다. 계속하려면 유효한 ID를 입력하세요.", - "Evaluations": "평가", - "Event created": "이벤트가 생성되었습니다.", - "Event deleted": "이벤트가 삭제되었습니다.", - "Event title": "이벤트 제목", - "Event updated": "이벤트가 업데이트되었습니다.", - "Exa API Key": "Exa API 키", - "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "예: (&(objectClass=inetOrgPerson)(uid=%s))", - "Example: ALL": "예: 전체", - "Example: mail": "예: 메일", - "Example: ou=users,dc=foo,dc=example": "예: ou=users,dc=foo,dc=example", - "Example: sAMAccountName or uid or userPrincipalName": "예: sAMAccountName or uid or userPrincipalName", - "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "라이선스의 좌석 수를 초과했습니다. 좌석 수를 늘리려면 지원팀에 문의해 주세요.", - "Exclude": "미포함", - "Execute code": "코드 실행", - "Execute code for analysis": "분석을 위한 코드 실행", - "Executing **{{NAME}}**...": "**{{NAME}}** 실행 중...", - "Execution Logs": "실행 로그", - "Expand": "확장", - "Experimental": "실험적", - "Explain": "설명", - "Explore the cosmos": "우주 탐험", - "Explored": "탐색 완료", - "Exploring": "탐색 중", - "Export": "내보내기", - "Export All Archived Chats": "모든 보관된 채팅 내보내기", - "Export All Chats (All Users)": "모든 채팅 내보내기(모든 사용자)", - "Export as CSV": "CSV로 내보내기", - "Export as JSON": "JSON으로 내보내기", - "Export chat (.json)": "채팅 내보내기 (.json)", - "Export Chats": "채팅 내보내기", - "Export Config": "설정 내보내기", - "Export Models": "모델 내보내기", - "Export Prompts": "프롬프트 내보내기", - "Export to CSV": "CSV로 내보내기", - "Export Tools": "도구 내보내기", - "Export Users": "사용자 정보 내보내기", - "External": "외부", - "External Document Loader URL required.": "외부 문서 로더 URL이 필요합니다.", - "External Task Model": "외부 작업 모델", - "External Web Loader API Key": "외부 웹 로더 API 키", - "External Web Loader URL": "외부 웹 로더 URL", - "External Web Search API Key": "외부 웹 검색 API 키", - "External Web Search URL": "외부 웹 검색 URL", - "Fade Effect for Streaming Text": "스트리밍 텍스트에 대한 페이드 효과", - "Failed to add file.": "파일추가에 실패했습니다", - "Failed to add members": "멤버 추가에 실패했습니다", - "Failed to archive chat.": "채팅 보관에 실패했습니다.", - "Failed to attach file": "파일 첨부에 실패했습니다", - "Failed to clear status": "상태 초기화에 실패했습니다", - "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI 도구 서버 연결 실패", - "Failed to connect to {{URL}} terminal server": "{{URL}} 터미널 서버 연결에 실패했습니다", - "Failed to copy link": "링크 복사 실패", - "Failed to create API Key.": "API 키 생성에 실패했습니다.", - "Failed to delete calendar": "캘린더 삭제에 실패했습니다.", - "Failed to delete note": "노트 삭제 실패", - "Failed to disconnect": "", - "Failed to download image": "이미지 다운로드에 실패했습니다", - "Failed to extract content from the file: {{error}}": "파일 내용 추출 실패: {{error}}", - "Failed to extract content from the file.": "파일 내용 추출 실패.", - "Failed to fetch models": "모델 조회 실패", - "Failed to generate title": "제목 생성 실패", - "Failed to import models": "모델 가져오기 실패", - "Failed to load chat preview": "채팅 미리보기 로드 실패", - "Failed to load DOCX file. Please try downloading it instead.": "DOCX 파일을 불러오지 못했습니다. 대신 다운로드해 보세요.", - "Failed to load Excel/CSV file. Please try downloading it instead.": "Excel/CSV 파일을 불러오지 못했습니다. 대신 다운로드해 보세요.", - "Failed to load file content.": "파일 내용 로드 실패.", - "Failed to load Interface settings": "인터페이스 설정을 불러오지 못했습니다", - "Failed to load PPTX file. Please try downloading it instead.": "PPTX 파일을 불러오지 못했습니다. 대신 다운로드해 보세요.", - "Failed to move chat": "채팅 이동 실패", - "Failed to process URL: {{url}}": "URL 처리에 실패했습니다: {{url}}", - "Failed to read clipboard contents": "클립보드 내용 가져오기를 실패하였습니다", - "Failed to remove member": "멤버 삭제에 실패했습니다", - "Failed to render diagram": "다이어그램을 표시할 수 없습니다", - "Failed to render visualization": "시각화에 실패했습니다.", - "Failed to save connections": "연결 저장 실패", - "Failed to save conversation": "대화 저장 실패", - "Failed to save models configuration": "모델 구성 저장 실패", - "Failed to save policy: {{error}}": "정책 저장에 실패했습니다: {{error}}", - "Failed to save terminal servers": "터미널 서버 저장에 실패했습니다", - "Failed to unshare chat.": "채팅 공유 해제에 실패했습니다.", - "Failed to update settings": "설정 업데이트에 실패하였습니다", - "Failed to update status": "상태 업데이트에 실패하였습니다", - "Failed to upload file.": "파일 업로드에 실패했습니다.", - "Features": "기능", - "Features Permissions": "기능 권한", - "February": "2월", - "Feedback": "피드백", - "Feedback Activity": "피드백 활동", - "Feedback deleted successfully": "피드백이 성공적으로 삭제되었습니다", - "Feedback Details": "피드백 상세내용", - "Feedback History": "피드백 기록", - "Feel free to add specific details": "자세한 내용을 자유롭게 추가하세요.", - "Female": "여성", - "Fetch URL Content Length Limit": "URL 콘텐츠 길이 제한 가져오기", - "File": "파일", - "File added successfully.": "파일이 성공적으로 추가되었습니다", - "File attached to chat": "파일이 채팅에 첨부되었습니다", - "File browser": "파일 브라우저", - "File content": "파일 내용", - "File content updated successfully.": "내용이 성공적으로 업데이트되었습니다", - "File Context": "파일 컨텍스트", - "File deleted successfully.": "파일이 성공적으로 삭제되었습니다.", - "File Mode": "파일 모드", - "File name": "파일 이름", - "File not found.": "파일을 찾을 수 없습니다.", - "File removed successfully.": "파일이 성공적으로 삭제되었습니다", - "File size should not exceed {{maxSize}} MB.": "파일 사이즈가 {{maxSize}} MB를 초과하면 안됩니다.", - "File Upload": "파일 업로드", - "File uploaded successfully": "파일이 성공적으로 업로드되었습니다", - "File uploaded!": "파일이 업로드되었습니다!", - "Filename": "파일명", - "Files": "파일", - "Filter": "필터", - "Filter is now globally disabled": "전반적으로 필터 비활성화됨", - "Filter is now globally enabled": "전반적으로 필터 활성화됨", - "Filters": "필터", - "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Fingerprint spoofing 감지: 이니셜을 아바타로 사용할 수 없습니다. 기본 프로필 이미지로 설정합니다.", - "Firecrawl API Base URL": "Firecrawl API 기본 URL", - "Firecrawl API Key": "Firecrawl API 키", - "Firecrawl Timeout (s)": "Firecrawl 시간 초과(초)", - "Floating Quick Actions": "플로팅 퀵 액션", - "Focus Chat Input": "채팅 입력창에 포커스", - "Folder": "폴더", - "Folder Background Image": "폴더 배경 이미지", - "Folder created successfully": "폴더가 성공적으로 생성되었습니다", - "Folder deleted successfully": "성공적으로 폴더가 삭제되었습니다", - "Folder Max File Count": "폴더 최대 파일 수", - "Folder name": "폴더 이름", - "Folder Name": "폴더 이름", - "Folder name cannot be empty.": "폴더 이름을 작성해주세요", - "Folder name updated successfully": "성공적으로 폴더 이름이 저장되었습니다", - "Folder options": "폴더 옵션", - "Folder updated successfully": "폴더가 성공적으로 업데이트되었습니다", - "Folders": "폴더", - "Follow up": "후속 질문", - "Follow Up Generation": "후속 질문 생성", - "Follow Up Generation Prompt": "후속 질문 생성 프롬프트", - "Follow up: {{question}}": "후속 질문: {{question}}", - "Follow-Up Auto-Generation": "후속 질문 자동 생성", - "Followed instructions perfectly": "지시를 완벽히 수행함", - "for placeholders": "플레이스홀더용", - "Force OCR": "OCR 강제 적용", - "Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "PDF의 모든 페이지에 대해 OCR을 강제로 적용합니다. PDF에 좋은 텍스트가 포함된 경우 결과가 더 나빠질 수 있습니다. 기본값은 False입니다.", - "Forge new paths": "새로운 경로 만들기", - "Form": "폼", - "Format Lines": "줄 서식", - "Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "출력되는 줄에 서식을 적용합니다. 기본값은 False입니다. 이 옵션을 True로 하면, 인라인 수식 및 스타일을 감지하도록 줄에 서식이 적용됩니다.", - "Formatting may be inconsistent from source.": "출처에서의 서식이 일관되지 않을 수 있습니다.", - "Forward": "전달", - "Forwards system user OAuth access token to authenticate": "인증을 위해 시스템 사용자 OAuth 액세스 토큰을 전달합니다.", - "Forwards system user session credentials to authenticate": "인증을 위해 시스템 사용자 세션 자격 증명 전달", - "Fr_day_of_week": "Fr_day_of_week", - "Full Context Mode": "전체 컨텍스트 모드", - "Function": "함수", - "Function Calling": "함수 호출", - "Function created successfully": "성공적으로 함수가 생성되었습니다", - "Function deleted successfully": "성공적으로 함수가 삭제되었습니다", - "Function Description": "함수 설명", - "Function ID": "함수 ID", - "Function imported successfully": "성공적으로 함수를 가져왔습니다", - "Function is now globally disabled": "전반적으로 함수 비활성화됨", - "Function is now globally enabled": "전반적으로 함수 활성화됨", - "Function Name": "함수 이름", - "Function Name Filter List": "함수 이름 필터 목록", - "Function updated successfully": "성공적으로 함수가 업데이트되었습니다", - "Functions": "함수", - "Functions allow arbitrary code execution.": "함수가 임의의 코드를 실행하도록 허용하였습니다", - "Functions imported successfully": "성공적으로 함수를 가져왔습니다", - "Gemini": "Gemini", - "Gemini API Key": "Gemini API 키", - "Gemini API Key is required.": "Gemini API 키가 필요합니다.", - "Gemini Base URL": "Gemini 기본 URL", - "Gemini Endpoint Method": "Gemini 엔드포인트 방식", - "Gender": "성별", - "General": "일반", - "Generate": "생성", - "Generate an image": "이미지 생성", - "Generate and edit images": "이미지 생성 및 편집", - "Generate Message Pair": "메시지 쌍 생성", - "Generated Image": "생성된 이미지", - "Generated images will appear here": "생성된 이미지가 여기에 표시됩니다", - "Generating search query": "검색 쿼리 생성", - "Generating...": "생성 중...", - "Get current time and perform date/time calculations": "현재 시간을 가져오고 날짜/시간 계산을 수행합니다", - "Get information on {{name}} in the UI": "UI에서 {{name}} 정보 확인", - "Get started": "시작하기", - "Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} 시작하기", - "Global": "글로벌", - "Good Response": "좋은 응답", - "Google": "Google", - "Google Drive": "구글 드라이브", - "Google PSE API Key": "Google PSE API 키", - "Google PSE Engine Id": "Google PSE 엔진 ID", - "Gravatar": "Gravatar", - "Grid": "그리드", - "Grokipedia": "Grokipedia", - "Group Channel": "그룹 채널", - "Group created successfully": "성공적으로 그룹을 생성했습니다", - "Group deleted successfully": "성공적으로 그룹을 삭제했습니다", - "Group Description": "그룹 설명", - "Group Name": "그룹 명", - "Group updated successfully": "성공적으로 그룹을 수정했습니다", - "groups": "그룹들", - "Groups": "그룹", - "H1": "제목 1", - "H2": "제목 2", - "H3": "제목 3", - "Haptic Feedback": "햅틱 피드백", - "Headers": "헤더", - "Headers must be a valid JSON object": "헤더는 유효한 JSON 객체여야 합니다", - "Height": "높이", - "Hello, {{name}}": "안녕하세요, {{name}}", - "Help": "도움말", - "Help the community discover great models": "커뮤니티가 훌륭한 모델을 발견하도록 도와주세요", - "Hex Color": "Hex 색상", - "Hex Color - Leave empty for default color": "Hex 색상 - 기본 색상의 경우 빈 상태로 유지", - "Hidden": "숨겨짐", - "Hide": "숨기기", - "Hide All": "모두 숨기기", - "Hide from Sidebar": "사이드바에서 숨기기", - "Hide Model": "모델 숨기기", - "High": "높은", - "High Contrast Mode": "고대비 모드", - "History": "기록", - "Home": "홈", - "Host": "호스트", - "Hourly": "시간별", - "Hourly Messages": "시간별 메시지", - "How can I help you today?": "무엇을 도와드릴까요?", - "How would you rate this response?": "이 응답을 어떻게 평가하시겠어요?", - "HTML": "HTML", - "http://localhost:8000": "http://localhost:8000", - "https://mineru.net/api/v4": "https://mineru.net/api/v4", - "Hybrid Search": "하이브리드 검색", - "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "저는 제 행동의 의미를 읽고 이해했음을 인정합니다. 임의 코드 실행과 관련된 위험을 인지하고 있으며 출처의 신뢰성을 확인했습니다.", - "ID": "ID", - "ID cannot contain \":\" or \"|\" characters": "ID는 \":\" 또는 \"|\" 문자를 포함할 수 없습니다", - "ID copied to clipboard": "ID가 클립보드에 복사되었습닙다", - "Idle Timeout": "Idle 시간 초과", - "iframe Sandbox Allow Forms": "iframe 샌드박스 허용 양식", - "iframe Sandbox Allow Same Origin": "iframe 샌드박스에서 동일한 오리진 허용", - "Ignite curiosity": "호기심 자극", - "Image": "이미지", - "Image Compression": "이미지 압축", - "Image Compression Height": "이미지 압축 높이", - "Image Compression Width": "이미지 압축 너비", - "Image Edit": "이미지 편집", - "Image Edit Engine": "이미지 편집 엔진", - "Image Generation": "이미지 생성", - "Image Generation Engine": "이미지 생성 엔진", - "Image Max Compression Size": "이미지 최대 압축 크기", - "Image Max Compression Size height": "이미지 최대 압축 크기 높이", - "Image Max Compression Size width": "이미지 최대 압축 크기 너비", - "Image Prompt Generation": "이미지 프롬프트 생성", - "Image Prompt Generation Prompt": "이미지 프롬프트를 생성하기 위한 프롬프트", - "Image Size": "이미지 크기", - "Images": "이미지들", - "Import": "가져오기", - "Import Chats": "채팅 가져오기", - "Import Config": "구성 가져오기", - "Import From Link": "링크에서 가져오기", - "Import Models": "모델 가져오기", - "Import Prompts": "프롬프트 가져오기", - "Import successful": "가져오기 성공", - "Import Tools": "도구 가져오기", - "Important Update": "중요 업데이트", - "Inactive": "비활성화", - "Include": "포함", - "Include `--api-auth` flag when running stable-diffusion-webui": "stable-diffusion-webui를 실행 시 `--api-auth` 플래그를 포함하세요", - "Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui를 실행 시 `--api` 플래그를 포함하세요", - "Includes SharePoint": "SharePoint 포함", - "Increase UI Scale": "UI 크기 증가", - "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "생성된 텍스트의 피드백에 알고리즘이 얼마나 빨리 반응하는지에 영향을 미칩니다. 학습률이 낮을수록 조정 속도가 느려지고 학습률이 높아지면 알고리즘의 반응 속도가 빨라집니다.", - "Info": "정보", - "Initials": "초기", - "Inject file content into conversation context": "파일 콘텐츠를 대화 컨텍스트에 삽입", - "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "전체 콘텐츠를 포괄적인 처리를 위해 컨텍스트로 삽입하세요. 이는 복잡한 쿼리에 권장됩니다.", - "Input": "입력", - "Input Key (e.g. text, unet_name, steps)": "입력 키 (예: text, unet_name, steps)", - "Input Variables": "변수 입력", - "Insert": "삽입", - "Insert Follow-Up Prompt to Input": "후속 질문을 메시지 입력란에 삽입(자동 전송 없이)", - "Insert Prompt as Rich Text": "프롬프트를 서식 있는 텍스트로 삽입", - "Insert Suggestion Prompt to Input": "입력할 제안 프롬프트 삽입", - "Install from Github URL": "Github URL에서 설치", - "Instant Auto-Send After Voice Transcription": "음성 변환 후 즉시 자동 전송", - "Instructions": "지침", - "Integration": "통합", - "Integrations": "통합", - "Interface": "인터페이스", - "Interface Settings Access": "인터페이스 설정 접근", - "Invalid file content": "잘못된 파일 내용", - "Invalid file format.": "잘못된 파일 형식", - "Invalid JSON file": "잘못된 JSON 파일", - "Invalid JSON format for ComfyUI Edit Workflow.": "잘못된 ComfyUI 편집 워크플로우 JSON 형식입니다.", - "Invalid JSON format for ComfyUI Workflow.": "잘못된 ComfyUI 워크플로우 JSON 형식입니다.", - "Invalid JSON format for Parameters": "잘못된 파라미터 JSON 형식입니다.", - "Invalid JSON format in {{NAME}}": "잘못된 JSON 형식 in {{NAME}}", - "Invalid JSON format in Additional Config": "추가 설정에 잘못된 JSON 형식 입력", - "Invalid JSON format in MinerU Parameters": "MinerU 파라미터에 잘못된 JSON 형식 입력", - "is typing...": "입력 중...", - "Italic": "기울임", - "January": "1월", - "Jina API Base URL": "Jina API 기본 URL", - "Jina API Key": "Jina API 키", - "join our Discord for help.": "도움말을 보려면 Discord에 가입하세요.", - "JSON": "JSON", - "JSON Preview": "JSON 미리 보기", - "JSON Spec": "JSON 스펙", - "July": "7월", - "June": "6월", - "Jupyter Auth": "Jupyter 인증", - "Jupyter URL": "Jupyter URL", - "JWT Expiration": "JWT 만료", - "JWT Token": "JWT 토큰", - "Kagi Search API Key": "Kagi Search API 키", - "Keep Follow-Up Prompts in Chat": "채팅마다 후속 질문이 항상 보이도록 유지", - "Keep in Sidebar": "사이드바에 유지", - "Key": "키", - "Key is required": "키가 필요합니다", - "Keyboard shortcuts": "키보드 단축키", - "Keyboard Shortcuts": "키보드 단축키", - "Knowledge": "지식 기반", - "Knowledge Access": "지식 기반 접근", - "Knowledge Base": "지식 기반", - "Knowledge created successfully.": "성공적으로 지식 기반이 생성되었습니다", - "Knowledge deleted successfully.": "성공적으로 지식 기반이 삭제되었습니다", - "Knowledge Description": "지식 기반 설명", - "Knowledge exported successfully": "성공적으로 지식 기반이 내보내졌습니다", - "Knowledge Name": "지식 기반 이름", - "Knowledge Public Sharing": "지식 기반 공개 공유", - "Knowledge reset successfully.": "성공적으로 지식 기반이 초기화되었습니다", - "Knowledge Sharing": "지식 기반 공유", - "Knowledge updated successfully": "성공적으로 지식 기반이 업데이트되었습니다", - "Kokoro.js (Browser)": "Kokoro.js (브라우저)", - "Kokoro.js Dtype": "Kokoro.js 데이터 유형", - "Label": "라벨", - "Landing Page Mode": "랜딩페이지 모드", - "Language": "언어", - "Language Locales": "언어 로케일", - "Last 24 hours": "최근 24시간", - "Last 30 days": "최근 30일", - "Last 7 days": "최근 7일", - "Last 90 days": "최근 90일", - "Last Active": "최근 활동", - "Last Modified": "마지막 수정", - "Last ran": "마지막 실행", - "Last reply": "마지막 답글", - "LDAP": "LDAP", - "LDAP server updated": "LDAP 서버가 업데이트되었습니다", - "Leaderboard": "리더보드", - "Learn more": "자세히 알아보기", - "Learn More": "자세히 알아보기", - "Learn more about Open Terminal": "Open Terminal에 대해 자세히 알아보기", - "Learn more about OpenAPI tool servers.": "OpenAPI 도구 서버에 대해 자세히 알아보세요.", - "Learn more about Voxtral transcription.": "Voxtral 변환에 대해 자세히 알아보세요.", - "Leave a public review for {{modelName}}": "{{modelName}}에 대한 공개 리뷰 남기기", - "Leave empty for no compression": "압축하지 않으려면 비워 두세요", - "Leave empty for unlimited": "제한하지 않으려면 비워 두세요", - "Leave empty to include all models from \"{{url}}\" endpoint": "\"{{url}}\" 엔드포인트의 모든 모델을 포함하려면 비워 두세요", - "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "\"{{url}}/api/tags\" 엔드포인트의 모든 모델을 포함하려면 비워 두세요", - "Leave empty to include all models from \"{{url}}/models\" endpoint": "\"{{url}}/models\" 엔드포인트의 모든 모델을 포함하려면 비워 두세요", - "Leave empty to include all models or select specific models": "비워두면 모든 모델이 포함되며, 특정 모델을 선택할 수도 있습니다.", - "Leave empty to use first admin user": "첫 번째 관리자 사용자로 사용하려면 비워 두세요", - "Leave empty to use the default config, or enter a valid json (see https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)": "기본 구성을 사용하려면 비워 두세요, 또는 유효한 json을 입력하세요 (https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest 참조)", - "Leave empty to use the default model (voxtral-mini-latest).": "비워두면 기본 모델(voxtral-mini-latest)을 사용합니다.", - "Leave empty to use the default prompt, or enter a custom prompt": "기본 프롬프트를 사용하기 위해 빈칸으로 남겨두거나, 커스텀 프롬프트를 입력하세요", - "Leave model field empty to use the default model.": "기본 모델을 사용하려면 모델 필드를 비워 두세요.", - "Legacy": "레거시", - "lexical": "어휘적", - "License": "라이선스", - "Lift List": "리스트 올리기", - "Light": "라이트", - "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "동시 검색 쿼리 수를 제한합니다. 0은 무제한(기본값)입니다. 순차 실행하려면 1로 설정하세요(Brave 무료 요금제처럼 엄격한 속도 제한이 있는 API에 권장됩니다).", - "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "동시 임베딩 요청 수를 제한합니다. 무제한은 0으로 설정하세요.", - "List": "목록", - "List calendars, search, create, update, and delete calendar events": "", - "Listening...": "듣는 중...", - "Live": "실시간", - "llama.cpp": "", - "Llama.cpp": "Llama.cpp", - "LLMs can make mistakes. Verify important information.": "LLM에 오류가 있을 수 있습니다. 중요한 정보는 확인이 필요합니다.", - "Loaded": "", - "Loader": "로더", - "Loading Kokoro.js...": "Kokoro.js 로딩 중...", - "Loading...": "로딩 중...", - "local": "로컬", - "Local": "로컬", - "Local Task Model": "로컬 작업 모델", - "Location": "위치", - "Location access not allowed": "위치 접근이 허용되지 않습니다", - "Lost": "패배", - "Low": "낮음", - "LTR": "LTR", - "Made by Open WebUI Community": "OpenWebUI 커뮤니티에 의해 개발됨", - "Make password visible in the user interface": "비밀번호 보이기", - "Make sure to export a workflow.json file as API format from ComfyUI.": "꼭 workflow.json 파일을 ComfyUI의 API 형식대로 내보내세요", - "Male": "남성", - "Manage": "관리", - "Manage Connections": "연결 관리", - "Manage Direct Connections": "다이렉트 연결 관리", - "Manage Files": "파일 관리", - "Manage Models": "모델 관리", - "Manage Ollama": "Ollama 관리", - "Manage Ollama API Connections": "Ollama API 연결 관리", - "Manage OpenAI API Connections": "OpenAI API 연결 관리", - "Manage Pipelines": "파이프라인 관리", - "Manage Tool Servers": "도구 서버 관리", - "Manage your account information.": "계정 정보를 관리하세요.", - "March": "3월", - "Markdown": "마크다운", - "Markdown Header Text Splitter": "마크다운 헤더 텍스트 분할기", - "Max Speakers": "최대 화자 수", - "Max tokens to retrieve (1024-32768, default 8192)": "", - "Max Upload Count": "업로드 최대 수", - "Max Upload Size": "업로드 최대 사이즈", - "Maximum characters to return from fetched URLs. Leave empty for no limit.": "가져온 URL에서 반환할 최대 문자 수입니다. 제한이 없으면 비워 두세요.", - "Maximum number of files allowed per folder.": "폴더당 허용되는 최대 파일 수입니다.", - "Maximum number of files per folder is {{max}}.": "폴더당 파일 수의 최대값은 {{max}}입니다.", - "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "최대 3개의 모델을 동시에 다운로드할 수 있습니다. 나중에 다시 시도하세요.", - "May": "5월", - "MBR": "MBR", - "MCP": "MCP", - "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP 지원은 실험적이며 명세가 자주 변경되므로, 호환성 문제가 발생할 수 있습니다. Open WebUI 팀이 OpenAPI 명세 지원을 직접 유지·관리하고 있어, 호환성 측면에서는 더 신뢰할 수 있는 선택입니다.", - "Medium": "중간", - "Member removed successfully": "멤버 삭제에 성공했습니다", - "members": "멤버들", - "Members": "멤버", - "Members added successfully": "멤버 추가에 성공했습니다", - "Memories": "메모리", - "Memories accessible by LLMs will be shown here.": "LLM에서 접근할 수 있는 메모리는 여기에 표시됩니다.", - "Memory": "메모리", - "Memory added successfully": "성공적으로 메모리가 추가되었습니다", - "Memory cleared successfully": "성공적으로 메모리가 정리되었습니다", - "Memory deleted successfully": "성공적으로 메모리가 삭제되었습니다", - "Memory updated successfully": "성공적으로 메모리가 업데이트되었습니다", - "Merge Responses": "응답들 결합하기", - "Merged Response": "결합된 응답", - "Message": "메시지", - "Message counts and response timestamps": "메시지 수와 응답 타임스탬프", - "Message counts are based on assistant responses.": "메시지 수는 어시스턴트 응답을 기준으로 계산됩니다.", - "Message rating should be enabled to use this feature": "이 기능을 사용하려면 메시지 평가가 활성화되어야합니다", - "Message text...": "", - "messages": "메시지들", - "Messages": "메시지", - "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "링크 생성 후에 보낸 메시지는 공유되지 않습니다. URL이 있는 사용자는 공유된 채팅을 볼 수 있습니다.", - "Microsoft OneDrive": "Microsoft OneDrive", - "Microsoft OneDrive (personal)": "Microsoft OneDrive (개인용)", - "Microsoft OneDrive (work/school)": "Microsoft OneDrive (회사/학교용)", - "min": "분", - "MinerU": "MinerU", - "MinerU API Key required for Cloud API mode.": "클라우드 API 모드를 사용하려면 MinerU API 키가 필요합니다.", - "Mistral OCR": "Mistral OCR", - "Mistral OCR API Key required.": "Mistral OCR API Key가 필요합니다.", - "MistralAI": "MistralAI", - "Mo_day_of_week": "Mo_day_of_week", - "Model": "모델", - "Model '{{modelName}}' has been successfully downloaded.": "모델 '{{modelName}}'이/가 성공적으로 다운로드되었습니다.", - "Model '{{modelTag}}' is already in queue for downloading.": "모델 '{{modelTag}}'은/는 이미 다운로드 대기열에 있습니다.", - "Model {{modelId}} not found": "모델 {{modelId}}을/를 찾을 수 없습니다", - "Model {{modelName}} deleted successfully": "모델 {{modelName}}이/가 성공적으로 삭제되었습니다", - "Model {{modelName}} is not vision capable": "모델 {{modelName}}은/는 비전을 사용할 수 없습니다.", - "Model {{name}} is now {{status}}": "모델 {{name}}은/는 이제 {{status}} 상태입니다.", - "Model {{name}} is now hidden": "모델 {{name}}은/는 이제 숨겨졌습니다.", - "Model {{name}} is now visible": "모델 {{name}}은/는 이제 볼 수 있습니다.", - "Model accepts file inputs": "모델에 파일 입력을 허용합니다", - "Model accepts image inputs": "모델에 이미지 입력을 허용합니다", - "Model can access Open Terminal for command execution and file management": "모델이 명령 실행과 파일 관리를 위해 Open Terminal에 접근할 수 있습니다.", - "Model can execute code and perform calculations": "모델이 코드를 실행하고 계산을 수행할 수 있습니다.", - "Model can generate images based on text prompts": "모델이 텍스트 프롬프트를 기반으로 이미지를 생성할 수 있습니다.", - "Model can search the web for information": "모델이 웹에서 정보를 검색할 수 있습니다.", - "Model Capabilities": "모델 성능", - "Model created successfully!": "성공적으로 모델이 생성되었습니다", - "Model filesystem path detected. Model shortname is required for update, cannot continue.": "모델 파일 시스템 경로가 감지되었습니다. 업데이트하려면 모델 단축 이름이 필요하며 계속할 수 없습니다.", - "Model Filtering": "모델 필터링", - "Model ID": "모델 ID", - "Model ID is required.": "모델 ID가 필요합니다", - "Model IDs": "모델 IDs", - "Model Name": "모델 이름", - "Model name already exists, please choose a different one": "이 모델 이름은 이미 존재합니다. 다른 이름을 선택해주세요.", - "Model Name is required.": "모델 이름이 필요합니다", - "Model names and usage frequency": "모델 이름과 사용 빈도", - "Model not found": "모델을 찾을 수 없습니다", - "Model not selected": "모델이 선택되지 않았습니다.", - "Model Parameters": "모델 매개변수", - "Model Params": "모델 매개변수", - "Model Permissions": "모델 권한", - "Model responses or outputs": "모델 응답 또는 출력", - "Model unloaded successfully": "성공적으로 모델이 언로드되었습니다", - "Model updated successfully": "성공적으로 모델이 업데이트되었습니다", - "Model Usage": "모델 사용량", - "Model(s) do not support file upload": "모델이 파일 업로드를 지원하지 않습니다", - "Modelfile Content": "모델 파일 내용", - "Models": "모델", - "Models Access": "모델 접근", - "Models configuration saved successfully": "모델 구성이 성공적으로 저장되었습니다", - "Models imported successfully": "모델을 성공적으로 가져왔습니다.", - "Models Public Sharing": "모델 공개 공유", - "Models Sharing": "모델 공유", - "Mojeek": "Mojeek", - "Mojeek Search API Key": "Mojeek Search API 키", - "Month": "월", - "Monthly": "월간", - "More": "더보기", - "More Concise": "더 간결하게", - "More options": "추가 옵션", - "More Options": "추가 설정", - "Move": "이동", - "Moved {{name}}": "{{name}} 이동됨", - "Mute": "", - "Muted": "", - "My Terminal": "내 터미널", - "Name": "이름", - "Name and ID are required, please fill them out": "이름과 ID는 필수입니다. 작성해주세요", - "Name is required": "", - "Name your knowledge base": "지식 기반 이름을 지정하세요", - "Name, prompt, and model are required": "이름, 프롬프트, 및 모델은 필수입니다", - "Native": "네이티브", - "Never": "절대", - "New": "새로 만들기", - "New Automation": "새로운 자동", - "New Button": "새 버튼", - "New calendar": "", - "New Calendar": "", - "New Chat": "새 채팅", - "New Event": "새 이벤트", - "New File": "새 파일", - "New Folder": "새 폴더", - "New Function": "새 함수", - "New Group": "새 그룹", - "New Knowledge": "새 지식 기반", - "New Model": "새 모델", - "New Note": "새 노트", - "New Password": "새 비밀번호", - "New Prompt": "새 프롬프트", - "New Skill": "새 기능", - "New Temporary Chat": "새 임시 채팅", - "New Terminal": "새 터미널", - "New Tool": "새 도구", - "New Webhook": "새 Webhook", - "new-channel": "새 채널", - "Next message": "다음 메시지", - "Next run": "다음 실행", - "No access grants. Private to you.": "접근 권한이 없습니다. 개인용입니다.", - "No activity data": "활동 데이터가 없습니다", - "No authentication": "권한 인증이 없습니다", - "No automations found": "자동화된 항목을 찾을 수 없습니다.", - "No chats found": "채팅을 찾을 수 없습니다", - "No chats found for this user.": "이 사용자에 대한 채팅을 찾을 수 없습니다.", - "No chats found.": "채팅을 찾을 수 없습니다.", - "No content": "내용이 없습니다", - "No content found": "내용을 찾을 수 없습니다", - "No content to speak": "음성 출력할 내용을 찾을 수 없습니다", - "No conversation to save": "저장할 대화가 없습니다", - "No data": "데이터가 없습니다", - "No data found": "데이터를 찾을 수 없습니다", - "No distance available": "거리 불가능", - "No execution logs available yet": "아직 실행 로그가 없습니다", - "No expiration can pose security risks.": "만료 기한이 없으면 보안 위험이 발생할 수 있습니다.", - "No feedback found": "피드백을 찾을 수 없습니다", - "No file selected": "파일이 선택되지 않았습니다", - "No files found": "파일을 찾을 수 없습니다", - "No files in this knowledge base.": "이 지식 기반에 파일이 없습니다.", - "No files yet. Upload files or run Python code to create them.": "아직 파일이 없습니다. 파일을 업로드하거나 Python 코드를 실행하여 생성하세요.", - "No functions found": "함수를 찾을 수 없습니다", - "No groups found": "그룹을 찾을 수 없습니다", - "No history available": "사용 기록이 없습니다", - "No HTML, CSS, or JavaScript content found.": "HTML, CSS, JavaScript이 발견되지 않았습니다", - "No inference engine with management support found": "관리 지원이 포함된 추론 엔진을 찾을 수 없습니다", - "No kernel": "커널이 없습니다", - "No knowledge bases found.": "지식 기반을 찾을 수 없습니다", - "No knowledge found": "지식 기반을 찾을 수 없습니다", - "No limit": "제한이 없습니다", - "No memories to clear": "메모리를 정리할 수 없습니다", - "No model IDs": "모델 ID가 없습니다", - "No models available": "사용 가능한 모델이 없습니다", - "No models found": "모델을 찾을 수 없습니다", - "No models selected": "모델이 선택되지 않았습니다", - "No Notes": "노트가 없습니다", - "No notes found": "노트를 찾을 수 없습니다", - "No one": "없음", - "No output items": "", - "No pinned messages": "고정된 메시지가 없습니다", - "No prompts found": "프롬프트를 찾을 수 없습니다", - "No results": "결과가 없습니다", - "No results found": "결과를 찾을 수 없습니다", - "No search query generated": "검색어가 생성되지 않았습니다", - "No servers detected": "서버가 감지되지 않았습니다", - "No skills found": "기능을 찾을 수 없습니다", - "No source available": "사용 가능한 소스가 없습니다.", - "No sources found": "소스를 찾을 수 없습니다", - "No suggestion prompts": "추천 프롬프트가 없습니다", - "No Terminal connection configured.": "터미널 연결이 구성되지 않았습니다.", - "No terminal connections configured.": "터미널 연결이 구성되지 않았습니다.", - "No tool server connections configured.": "도구 서버 연결이 구성되지 않았습니다.", - "No tools found": "도구를 찾을 수 없습니다", - "No users were found.": "사용자를 찾을 수 없습니다", - "No valves": "밸브가 없습니다", - "No valves to update": "업데이트 할 밸브가 없습니다", - "No webhooks yet": "webhook이 아직 없습니다", - "Node Ids": "노드 ID", - "None": "없음", - "Not factually correct": "사실상 맞지 않습니다", - "Not helpful": "도움이 되지않습니다", - "Not Registered": "등록되지 않았습니다", - "Not scheduled": "예약되지 않았습니다", - "Note": "노트", - "Note deleted successfully": "노트가 성공적으로 삭제되었습니다", - "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "참고: 최소 점수를 설정하면, 검색 결과로 최소 점수 이상의 점수를 가진 문서만 반환합니다.", - "Notes": "노트", - "Notes Public Sharing": "노트 공개 공유", - "Notes Sharing": "노트 공유", - "Notification Sound": "알림 소리", - "Notification Webhook": "알림 웹훅", - "Notifications": "알림", - "November": "11월", - "OAuth": "OAuth", - "OAuth 2.1": "OAuth 2.1", - "OAuth 2.1 (Static)": "OAuth 2.1 (Static)", - "OAuth ID": "OAuth ID", - "OAuth Server URL": "", - "OAuth session disconnected": "", - "October": "10월", - "Off": "끄기", - "Okay, Let's Go!": "좋아요, 시작합시다!", - "OLED Dark": "OLED 다크", - "Ollama": "Ollama", - "Ollama API": "Ollama API", - "Ollama API settings updated": "Ollama API 세팅이 업데이트 되었습니다.", - "Ollama Cloud API Key": "Ollama Cloud API Key", - "Ollama Version": "Ollama 버전", - "On": "켜기", - "Once": "Once", - "OneDrive": "OneDrive", - "Only active when \"Paste Large Text as File\" setting is toggled on.": "\"긴 텍스트를 파일로 붙여넣기\" 설정이 켜져 있을 때만 작동합니다.", - "Only active when the chat input is in focus and an LLM is generating a response.": "채팅 입력창이 선택되어 있고 LLM이 응답을 생성 중일 때만 작동합니다.", - "Only active when the chat input is in focus.": "채팅 입력창이 선택된 상태에서만 작동합니다.", - "Only alphanumeric characters and hyphens are allowed": "영문자, 숫자 및 하이픈(-)만 허용됩니다.", - "Only alphanumeric characters and hyphens are allowed in the command string.": "명령어 문자열에는 영문자, 숫자 및 하이픈(-)만 허용됩니다.", - "Only can be triggered when the chat input is in focus.": "채팅 입력창이 선택된 상태에서만 작동합니다.", - "Only collections can be edited, create a new knowledge base to edit/add documents.": "가지고 있는 컬렉션만 수정 가능합니다, 새 지식 기반을 생성하여 문서를 수정 혹은 추가하십시오.", - "Only invited users can access": "초대된 사용자만 접근할 수 있습니다.", - "Only markdown files are allowed": "마크다운 파일만 허용됩니다", - "Only select users and groups with permission can access": "권한이 있는 사용자와 그룹만 접근 가능합니다.", - "Only sync new/updated chats": "새로운/업데이트된 채팅만 동기화", - "Oops! Looks like the URL is invalid. Please double-check and try again.": "이런! URL이 잘못된 것 같습니다. 다시 한번 확인하고 다시 시도해주세요.", - "Oops! There are files still uploading. Please wait for the upload to complete.": "이런! 파일이 계속 업로드중 입니다. 업로드가 완료될 때까지 잠시만 기다려주세요.", - "Oops! There was an error in the previous response.": "이런! 이전 응답에 에러가 있었던 것 같습니다.", - "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "이런! 지원되지 않는 방식(프론트엔드만)을 사용하고 계십니다. 백엔드에서 WebUI를 제공해주세요.", - "Open file": "파일 열기", - "Open in full screen": "전체화면으로 열기", - "Open in new tab": "새 탭에서 열기", - "Open link": "링크 열기", - "Open modal to configure connection": "연결 설정 열기", - "Open Modal To Manage Floating Quick Actions": "플로팅 빠른 작업 관리를 위한 모달 열기", - "Open Modal To Manage Image Compression": "이미지 압축 관리를 위한 모달 열기", - "Open Model Selector": "모델 선택기 열기", - "Open Settings": "설정 열기", - "Open Sidebar": "사이드바 열기", - "Open Terminal": "터미널 열기", - "Open User Profile Menu": "사용자 프로필 메뉴 열기", - "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI는 모든 OpenAPI 서버에서 제공하는 도구를 사용할 수 있습니다.", - "Open WebUI uses faster-whisper internally.": "Open WebUI는 내부적으로 패스트 위스퍼를 사용합니다.", - "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI는 SpeechT5와 CMU Arctic 스피커 임베딩을 사용합니다.", - "Open WebUI version": "Open WebUI 버전", - "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "열린 WebUI 버젼(v{{OPEN_WEBUI_VERSION}})은 최소 버젼 (v{{REQUIRED_VERSION}})보다 낮습니다", - "OpenAI": "OpenAI", - "OpenAI API": "OpenAI API", - "OpenAI API Base URL": "OpenAI API 기본 URL", - "OpenAI API Key": "OpenAI API 키", - "OpenAI API Key is required.": "OpenAI API 키가 필요합니다.", - "OpenAI API settings updated": "OpenAI API 설정이 업데이트되었습니다.", - "OpenAI API Version": "OpenAI API 버전", - "OpenAI URL/Key required.": "OpenAI URL/키가 필요합니다.", - "OpenAPI": "OpenAPI", - "OpenAPI Spec": "OpenAPI 사양", - "openapi.json URL or Path": "openapi.json URL 또는 경로", - "optional": "선택 사항", - "Optional": "선택 사항", - "or": "또는", - "Ordered List": "번호 목록", - "Other": "기타", - "out of": "의", - "Output": "출력", - "OUTPUT": "출력", - "Output format": "출력 형식", - "Output Format": "출력 형식", - "Overview": "개요", - "PaddleOCR-vl": "", - "PaddleOCR-vl API URL required.": "", - "page": "페이지", - "Page": "페이지", - "Page mode creates one document per page. Single mode combines all pages into one document for better chunking across page boundaries.": "페이지 모드는 페이지마다 하나의 문서를 생성합니다. 단일 모드는 모든 페이지를 하나의 문서로 결합하여 페이지 경계를 넘어 더 나은 청킹을 제공합니다.", - "Paginate": "페이지 나누기", - "Parameters": "매개변수", - "Parent message not found": "상위 메시지를 찾을 수 없습니다.", - "Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.": "커뮤니티 리더보드와 평가에 참여하세요! 집계된 사용 통계를 동기화하면 Open WebUI의 연구과 개선을 지원합니다. 귀하의 개인정보는 최우선으로 보호됩니다: 메시지 내용은 절대 공유되지 않습니다.", - "Password": "비밀번호", - "Passwords do not match.": "비밀번호가 일치하지 않습니다.", - "Paste Large Text as File": "큰 텍스트를 파일로 붙여넣기", - "Path copied": "경로가 복사되었습니다.", - "Paused": "일시정지됨", - "PDF document (.pdf)": "PDF 문서(.pdf)", - "PDF Extract Images (OCR)": "PDF 이미지 추출(OCR)", - "PDF Loader Mode": "PDF 로더 모드", - "pending": "보류 중", - "Pending": "보류", - "Pending User Overlay Content": "대기 중인 사용자 오버레이 내용", - "Pending User Overlay Title": "대기 중인 사용자 오버레이 제목", - "Permission denied when accessing media devices": "미디어 장치 접근 권한이 거부되었습니다.", - "Permission denied when accessing microphone": "마이크 접근 권한이 거부되었습니다.", - "Permission denied when accessing microphone: {{error}}": "마이크 접근 권한이 거부되었습니다: {{error}}", - "Permissions": "권한", - "Perplexity API Key": "Perplexity API 키", - "Perplexity Model": "Perplexity 모델", - "Perplexity Search API URL": "Perplexity 검색 API URL", - "Perplexity Search Context Usage": "Perplexity 검색 컨텍스트 사용", - "Persistent": "지속적", - "Personalization": "개인화", - "Pin": "고정", - "Pin to Sidebar": "사이드바에 고정", - "Pinned": "고정됨", - "Pinned Messages": "고정된 메시지", - "Pinned Models": "고정된 모델", - "Pioneer insights": "혁신적인 발견", - "Pipe": "파이프", - "Pipeline deleted successfully": "성공적으로 파이프라인이 삭제되었습니다.", - "Pipeline downloaded successfully": "성공적으로 파이프라인이 설치되었습니다.", - "Pipelines": "파이프라인", - "Pipelines are a plugin system with arbitrary code execution —": "Pipelines는 임의 코드 실행이 가능한 플러그인 시스템입니다 —", - "Pipelines Not Detected": "파이프라인이 발견되지 않았습니다.", - "Pipelines Valves": "파이프라인 밸브", - "Plain text (.md)": "일반 텍스트(.md)", - "Plain text (.txt)": "일반 텍스트(.txt)", - "Playground": "플레이그라운드", - "Playwright Timeout (ms)": "Playwright 시간 초과 (ms)", - "Playwright WebSocket URL": "Playwright WebSocket URL", - "Please carefully review the following warnings:": "다음 주의를 조심히 확인해주십시오", - "Please connect all required integrations before sending a message": "모든 필요한 통합을 연결한 후 메시지를 보내세요", - "Please do not close the settings page while loading the model.": "모델을 로드하는 동안 설정 페이지를 닫지 마세요.", - "Please enter a message or attach a file.": "메시지를 입력하거나 파일을 첨부해 주세요.", - "Please enter a prompt": "프롬프트를 입력해주세요", - "Please enter a valid ID": "올바른 ID를 입력하세요", - "Please enter a valid JSON spec": "올바른 JSON spec을 입력하세요", - "Please enter a valid path": "올바른 경로를 입력하세요", - "Please enter a valid URL": "올바른 URL을 입력하세요", - "Please enter a valid URL.": "올바른 URL을 입력하세요.", - "Please enter Client ID and Client Secret": "Client ID와 Client Secret을 입력하세요", - "Please fill in all fields.": "모두 빈칸없이 채워주세요", - "Please register the OAuth client": "OAuth clith를 등록해주세요", - "Please save the connection to persist the OAuth client information and do not change the ID": "OAuth 클라이언트 정보를 저장하려면 연결을 저장하고 ID를 변경하지 마세요.", - "Please select a model first.": "먼저 모델을 선택하세요.", - "Please select a model.": "모델을 선택하세요.", - "Please select a reason": "이유를 선택해주세요", - "Please select a valid JSON file": "올바른 Json 파일을 선택해 주세요", - "Please select at least one user for Direct Message channel.": "1:1 메시지 채널에 참여할 사용자를 최소 한 명 선택해주세요.", - "Please wait until all files are uploaded.": "모든 파일이 업로드될 때까지 기다려 주세요.", - "Policy ID": "정책 ID", - "Port": "포트", - "Ports": "포트", - "Positive attitude": "긍정적인 자세", - "Prefer not to say": "언급하고 싶지 않습니다.", - "Prefix ID": "Prefix ID", - "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID는 모델 ID에 접두사를 추가하여 다른 연결과의 충돌을 방지하는 데 사용됩니다. - 비활성화하려면 비워 둡니다.", - "Prevent File Creation": "파일 생성 방지", - "Preview": "미리보기", - "Previous 30 days": "이전 30일", - "Previous 7 days": "이전 7일", - "Previous message": "이전 메시지", - "Private": "비공개", - "Private conversation between selected users": "선택한 사용자 간의 비공개 대화", - "Production version updated": " production 버전이 업데이트되었습니다.", - "Profile": "프로필", - "Prompt": "프롬프트", - "Prompt Autocompletion": "프롬프트 자동 완성", - "Prompt Content": "프롬프트 내용", - "Prompt created successfully": "성공적으로 프롬프트를 생성했습니다", - "Prompt Name": "프롬프트 이름", - "Prompt Suggestions": "프롬프트 제안", - "Prompt Template": "", - "Prompt updated successfully": "성공적으로 프롬프트를 수정했습니다", - "Prompts": "프롬프트", - "Prompts Access": "프롬프트 접근", - "Prompts Public Sharing": "프롬프트 공개 공유", - "Prompts Sharing": "프롬프트 공유", - "Provider": "", - "Public": "공개", - "Pull \"{{searchValue}}\" from Ollama.com": "Ollama.com에서 \"{{searchValue}}\" 가져오기", - "Pull a model from Ollama.com": "Ollama.com에서 모델 가져오기(pull)", - "Pull Model": "모델 pull", - "Pyodide file browser": "Pyodide 파일 브라우저", - "Query Generation Prompt": "쿼리 생성 프롬프트", - "Querying": "쿼리 진행중", - "Quick Actions": "빠른 작업", - "RAG Template": "RAG 템플릿", - "Ran {{COUNT}} analyses": "{{COUNT}}개의 분석이 실행되었습니다", - "Ran {{COUNT}} analysis": "{{COUNT}}개의 분석이 실행되었습니다", - "Rate {{rating}} out of 10": "{{rating}}/10 점 평가", - "Rating": "평가", - "Re-rank models by topic similarity": "주제 유사성으로 모델을 재정렬하기", - "Read": "읽기", - "Read Aloud": "읽어주기", - "Read more →": "더 읽기 →", - "Read Only": "읽기 전용", - "Read-Only Access": "읽기 전용 접근", - "Reason": "근거", - "Reasoning Effort": "추론 난이도", - "Reasoning Tags": "추론 태그", - "Reasoning text...": "", - "Recently Used": "최근 사용", - "Reconnected": "재연결됨", - "Record": "녹음", - "Record voice": "음성 녹음", - "Redirecting you to Open WebUI Community": "OpenWebUI 커뮤니티로 리디렉션 중", - "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "넌센스를 생성할 확률을 줄입니다. 값이 높을수록(예: 100) 더 다양한 답변을 제공하는 반면, 값이 낮을수록(예: 10) 더 보수적입니다.", - "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "스스로를 \"사용자\" 라고 지칭하세요. (예: \"사용자는 영어를 배우고 있습니다\")", - "Reference Chats": "채팅 참조", - "Refresh": "새로 고침", - "Refused when it shouldn't have": "허용되지 않았지만 허용되어야 합니다.", - "Regenerate": "재생성", - "Regenerate Menu": "메뉴 재생성", - "Regenerate Response": "응답 재생성", - "Register Again": "재등록", - "Register Client": "클라이언트 등록", - "Registered": "등록됨", - "Registration failed": "등록 실패", - "Registration successful": "등록 성공", - "Reindex": "재색인", - "Reindex Knowledge Base Vectors": "전체 지식 베이스 재색인", - "Release Notes": "릴리스 노트", - "Releases": "릴리스", - "Relevance": "관련도", - "Relevance Threshold": "관련성 임계값", - "Remember Dismissal": "다시 보지 않기", - "Reminder": "알림", - "Remove": "삭제", - "Remove {{MODELID}} from list.": "{{MODELID}}를 목록에서 제거.", - "Remove action": "작업 제거", - "Remove file": "파일 삭제", - "Remove File": "파일 삭제", - "Remove from favorites": "즐겨찾기에서 제거", - "Remove image": "이미지 삭제", - "Remove Model": "모델 삭제", - "Rename": "이름 변경", - "Renamed to {{name}}": "{{name}}(으)로 이름 변경", - "Render Markdown in Assistant Messages": "", - "Render Markdown in Previews": "미리보기에서 마크다운 렌더링", - "Render Markdown in User Messages": "", - "Reorder Models": "모델 재정렬", - "Repeats": "반복", - "Reply": "답장", - "Reply in Thread": "스레드로 답장하기", - "Reply to thread...": "스레드로 답장하기...", - "Replying to {{NAME}}": "{{NAME}}에게 답장하는 중", - "required": "필수", - "Reranking Batch Size": "리랭킹 배치 사이즈", - "Reranking Engine": "Reranking 엔진", - "Reranking Model": "Reranking 모델", - "Reset": "초기화", - "Reset All Models": "모든 모델 초기화", - "Reset Image": "이미지 초기화", - "Reset Upload Directory": "업로드 디렉토리 초기화", - "Reset Vector Storage/Knowledge": "벡터 저장 공간/지식 기반 초기화", - "Reset view": "보기 초기화", - "Response": "응답", - "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "웹사이트 권한이 거부되어 응답 알림을 활성화할 수 없습니다. 필요한 접근 권한을 부여하려면 브라우저 설정을 확인해 주세요.", - "Response splitting": "응답 나누기", - "Response Watermark": "응답 워터마크", - "Responses": "응답", - "Restart": "재시작", - "Result": "결과", - "RESULT": "결과", - "Retrieval": "검색", - "Retrieval Query Generation": "검색 쿼리 생성", - "Retrieved {{count}} sources": "{{count}}개의 소스 검색됨", - "Retrieved {{count}} sources_other": "{{count}}개의 소스 검색됨", - "Retrieved 1 source": "검색된 source 1개", - "Rich Text Input for Chat": "다양한 텍스트 서식 사용", - "Role": "역할", - "RTL": "RTL", - "Run": "실행", - "Run All": "모두 실행", - "Run now": "지금 실행", - "Run Now": "지금 실행", - "Running": "실행 중", - "Running...": "실행 중...", - "Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "임베딩 작업을 동시에 실행하여 처리 속도를 높입니다. 속도 제한이 문제가 되면 끄세요.", - "Sa_day_of_week": "Sa_day_of_week", - "Save": "저장", - "Save & Create": "저장 및 생성", - "Save & Update": "저장 및 업데이트", - "Save As Copy": "다른 이름으로 저장", - "Save Chat": "채팅 저장", - "Saved": "저장됨", - "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "브라우저의 저장소에 채팅 로그를 직접 저장하는 것은 더 이상 지원되지 않습니다. 아래 버튼을 클릭하여 채팅 로그를 다운로드하고 삭제하세요. 걱정 마세요. 백엔드를 통해 채팅 로그를 쉽게 다시 가져올 수 있습니다.", - "Schedule": "일정", - "Scheduled time must be in the future": "예약 시간은 미래여야 합니다", - "Scroll On Branch Change": "브랜치 변경 시 스크롤", - "Scroll to Top": "", - "Search": "검색", - "Search a model": "모델 검색", - "Search all emojis": "모든 이모지 검색", - "Search and manage user memories": "사용자 기억 검색 및 관리", - "Search and view user chat history": "사용자 채팅 기록 검색 및 보기", - "Search Automations": "자동 검색", - "Search Base": "검색 기반", - "Search channels and channel messages": "채널 및 채널 메시지 검색", - "Search Chats": "채팅 검색", - "Search Collection": "컬렉션 검색", - "Search Files": "파일 검색", - "Search Filters": "필터 검색", - "search for archived chats": "보관된 채팅 검색", - "search for folders": "폴더 검색", - "search for pinned chats": "고정된 채팅 검색", - "search for shared chats": "공유된 채팅 검색", - "search for tags": "태그 검색", - "Search Functions": "함수 검색", - "Search Groups": "그룹 검색", - "Search In Models": "모델에서 검색", - "Search Knowledge": "지식 기반 검색", - "Search Memories": "메모리 검색", - "Search Models": "모델 검색", - "Search Notes": "노트 검색", - "Search options": "검색 옵션", - "Search Prompts": "프롬프트 검색", - "Search Result Count": "검색 결과 수", - "Search Skills": "스킬 검색", - "Search the internet": "인터넷 검색", - "Search the web and fetch URLs": "웹에서 검색하고 URL 가져오기", - "Search Tools": "검색 도구", - "Search, view, and manage user notes": "사용자 노트 검색, 보기, 및 관리", - "SearchApi API Key": "SearchApi API 키", - "SearchApi Engine": "SearchApi 엔진", - "Searched {{count}} sites": "{{count}}개 사이트 검색됨", - "Searching": "검색 중", - "Searching \"{{searchQuery}}\"": "\"{{searchQuery}}\" 검색 중", - "Searching Knowledge for \"{{searchQuery}}\"": "\"{{searchQuery}}\"에 대한 지식 기반 검색 중", - "Searching the web": "웹에서 검색 중...", - "Searxng Query URL": "Searxng 쿼리 URL", - "Searxng search language (all, en, es, de, fr, etc.)": "Searxng 검색 언어 (all, en, es, de, fr, etc.)", - "See readme.md for instructions": "설명은 readme.md를 참조하세요.", - "See what's new": "새로운 기능 보기", - "Seed": "시드", - "Select": "선택", - "Select {{modelName}} model": "{{modelName}} 모델 선택", - "Select a base model": "기본 모델 선택", - "Select a base model (e.g. llama3, gpt-4o)": "기본 모델 선택 (예: llama3, gpt-4o)", - "Select a conversation to preview": "대화를 선택하여 미리 보기", - "Select a engine": "엔진 선택", - "Select a function": "함수 선택", - "Select a group": "그룹 선택", - "Select a language": "언어 선택", - "Select a mode": "모드 선택", - "Select a model": "모델 선택", - "Select a model (optional)": "모델 선택 (선택사항)", - "Select a pipeline": "파이프라인 선택", - "Select a pipeline url": "파이프라인 URL 선택", - "Select a reranking model engine": "리랭킹 모델 엔진 선택", - "Select a role": "역할 선택", - "Select a theme": "테마 선택", - "Select a tool": "도구 선택", - "Select a voice": "음성 선택", - "Select All": "모두 선택", - "Select an auth method": "인증 방법 선택", - "Select an embedding model engine": "임베딩 모델 엔진 선택", - "Select an engine": "엔진 선택", - "Select an Ollama instance": "Ollama 인스턴스 선택", - "Select an option": "옵션 선택", - "Select an output format": "출력 형식 선택", - "Select dtype": "dtype 선택", - "Select Engine": "엔진 선택", - "Select how to split message text for TTS requests": "TTS 요청에 대한 메시지 텍스트 분할 방법 선택", - "Select Knowledge": "지식 기반 선택", - "Select Method": "방법 선택", - "Select model": "모델 선택", - "Select only one model to call": "음성 기능을 위해서는 모델을 하나만 선택해야 합니다.", - "Select view": "보기 선택", - "Selected model: {{modelName}}": "선택된 모델: {{modelName}}", - "Selected model(s) do not support image inputs": "선택한 모델은 이미지 입력을 지원하지 않습니다.", - "Selected Models": "선택된 모델들", - "semantic": "의미적", - "Send": "보내기", - "Send a Message": "메시지 보내기", - "Send message": "메시지 보내기", - "Send now": "지금 보내기", - "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "'stream_options: { include_usage: true }' 요청 보내기 \n지원되는 제공자가 토큰 사용 정보를 응답할 예정입니다", - "September": "9월", - "SerpApi API Key": "SerpApi API 키", - "SerpApi Engine": "SerpApi 엔진", - "Serper API Key": "Serper API 키", - "Serply API Key": "Serply API 키", - "Serpstack API Key": "Serpstack API 키", - "Server connection failed": "서버 연결 실패", - "Server connection verified": "서버 연결 확인됨", - "Session": "세션", - "Set as default": "기본값으로 설정", - "Set as Production": "프로덕션으로 설정", - "Set embedding model": "임베딩 모델 설정", - "Set embedding model (e.g. {{model}})": "임베딩 모델 설정 (예: {{model}})", - "Set reranking model (e.g. {{model}})": "Reranking 모델 설정 (예: {{model}})", - "Set the default models that are automatically selected for all users when a new chat is created.": "새 채팅이 생성될 때 모든 사용자에게 자동으로 선택되는 기본 모델을 설정합니다.", - "Set the models that are automatically pinned to the sidebar for all users.": "모든 사용자에게 자동으로 사이드바에 고정되는 모델을 설정합니다.", - "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "GPU에 오프로드될 레이어 수를 설정합니다. 이 값을 높이면 GPU 가속에 최적화된 모델의 성능이 크게 향상될 수 있지만 더 많은 전력과 GPU 리소스를 소비할 수도 있습니다.", - "Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "계산에 사용되는 작업자 스레드 수를 설정합니다. 이 옵션은 들어오는 요청을 동시에 처리하는 데 사용되는 스레드 수를 제어합니다. 이 값을 높이면 동시성이 높은 워크로드에서 성능을 향상시킬 수 있지만 더 많은 CPU 리소스를 소비할 수도 있습니다.", - "Set Voice": "음성 설정", - "Set whisper model": "자막 생성기 모델 설정", - "Set your status": "내 상태 설정", - "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "적어도 한 번 이상 나타난 토큰에 대해 평평한 편향을 설정합니다. 값이 높을수록 반복에 더 강력한 불이익을 주는 반면, 값이 낮을수록(예: 0.9) 더 관대해집니다. 0에서는 비활성화됩니다.", - "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "토큰에 대한 스케일링 편향을 설정하여 반복 횟수에 따라 반복 횟수에 불이익을 줍니다. 값이 높을수록(예: 1.5) 반복 횟수에 더 강하게 불이익을 주는 반면, 값이 낮을수록(예: 0.9) 더 관대해집니다. 0에서는 반복 횟수가 비활성화됩니다.", - "Sets how far back for the model to look back to prevent repetition.": "모델이 반복을 방지하기 위해 되돌아볼 수 있는 거리를 설정합니다.", - "Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt.": "생성에 사용할 난수 시드를 설정합니다. 이를 특정 숫자로 설정하면 모델이 동일한 프롬프트에 대해 동일한 텍스트를 생성하게 됩니다.", - "Sets the size of the context window used to generate the next token.": "다음 토큰을 생성하는 데 사용되는 컨텍스트 창의 크기를 설정합니다.", - "Sets the stop sequences to use. When this pattern is encountered, the LLM will stop generating text and return. Multiple stop patterns may be set by specifying multiple separate stop parameters in a modelfile.": "중단 시퀀스를 설정합니다. 이 패턴이 발생하면 LLM은 텍스트 생성을 중단하고 반환합니다. 여러 중단 패턴은 모델 파일에서 여러 개의 별도 중단 매개변수를 지정하여 설정할 수 있습니다.", - "Setting": "설정", - "Settings": "설정", - "Settings Permissions": "설정 권한", - "Settings saved successfully!": "설정이 성공적으로 저장되었습니다!", - "Share": "공유", - "Share Chat": "채팅 공유", - "Share link copied to clipboard.": "공유 링크가 클립보드에 복사되었습니다.", - "Share to Open WebUI Community": "OpenWebUI 커뮤니티에 공유", - "Share your background and interests": "당신의 배경과 관심사를 공유하세요", - "Shared Chats": "공유된 채팅", - "Shared with you": "당신과 공유됨", - "Sharing Permissions": "권한 공유", - "Show": "보기", - "Show \"What's New\" modal on login": "로그인시 \"새로운 기능\" 모달 보기", - "Show Admin Details in Account Pending Overlay": "사용자용 계정 보류 설명창에, 관리자 상세 정보 노출", - "Show All": "모두 보기", - "Show all ({{COUNT}} characters)": "모든 ({{COUNT}} 문자) 보기", - "Show Files": "파일 보기", - "Show Formatting Toolbar": "서식 툴바 표시", - "Show image preview": "이미지 미리보기", - "Show Model": "모델 보기", - "Show Shortcuts": "단축키 보기", - "Show your support!": "당신의 응원을 보내주세요!", - "Showcased creativity": "창의성 발휘", - "Showing all messages (user + assistant) per user.": "사용자당 모든 메시지(사용자 + 어시스턴트) 표시.", - "Sign in": "로그인", - "Sign in to {{WEBUI_NAME}}": "{{WEBUI_NAME}} 로그인", - "Sign in to {{WEBUI_NAME}} with LDAP": "LDAP로 {{WEBUI_NAME}}에 로그인", - "Sign Out": "로그아웃", - "Sign up": "가입", - "Sign up to {{WEBUI_NAME}}": "{{WEBUI_NAME}} 가입", - "Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "LLM을 활용하여 표, 양식, 인라인 수식 및 레이아웃 감지 정확도를 대폭 개선합니다. 하지만 지연 시간이 증가할 수 있습니다. 기본값은 False입니다.", - "Signing in to {{WEBUI_NAME}}": "{{WEBUI_NAME}}로 가입중", - "Single": "단일", - "Sink List": "리스트 내리기", - "sk-1234": "sk-1234", - "Skill created successfully": "스킬이 성공적으로 생성되었습니다.", - "Skill deleted successfully": "스킬이 성공적으로 삭제되었습니다.", - "Skill Description": "스킬 설명", - "Skill ID": "스킬 ID", - "Skill imported successfully": "스킬이 성공적으로 가져와졌습니다.", - "Skill Instructions": "스킬 지침", - "Skill Name": "스킬 이름", - "Skill updated successfully": "스킬이 성공적으로 업데이트되었습니다.", - "Skills": "스킬", - "Skills Access": "스킬 접근", - "Skills Public Sharing": "스킬 공개 공유", - "Skills Sharing": "스킬 공유", - "Skip Cache": "캐시 무시", - "Skip the cache and re-run the inference. Defaults to False.": "캐시를 무시하고 추론을 다시 실행합니다. 기본값은 False입니다.", - "Something went wrong :/": "무언가 잘못 되었습니다 :/", - "Sonar": "Sonar", - "Sonar Deep Research": "Sonar Deep Research", - "Sonar Pro": "Sonar Pro", - "Sonar Reasoning": "Sonar Reasoning", - "Sonar Reasoning Pro": "Sonar Reasoning Pro", - "Sort": "정렬", - "Sort by": "정렬 기준", - "Sougou Search API sID": "Sougou Search API sID", - "Sougou Search API SK": "Sougou Search API SK", - "Source": "출처", - "Speech Playback Speed": "음성 재생 속도", - "Speech recognition error: {{error}}": "음성 인식 오류: {{error}}", - "Speech-to-Text": "음성-텍스트 변환", - "Speech-to-Text Engine": "음성-텍스트 변환 엔진", - "Speech-to-Text Language": "음성-텍스트 변환 언어", - "Split documents by markdown headers before applying character/token splitting.": "문자/토큰 분할을 적용하기 전에 마크다운 헤더로 문서를 분할합니다.", - "Start a new conversation": "새 대화 시작", - "Start of the channel": "채널 시작", - "Start Tag": "시작 태그", - "Starting in {{count}} minutes_other": "{{count}}분 후 시작", - "Starting in 1 minute": "1분 후 시작", - "Starting kernel...": "커널 시작 중...", - "Starting now": "지금 시작", - "State": "상태", - "Status": "상태", - "Status cleared successfully": "상태 초기화에 성공했습니다", - "Status updated successfully": "상태 업데이트에 성공했습니다", - "Status Updates": "상태 업데이트", - "STDOUT/STDERR": "STDOUT/STDERR", - "Steps": "단계", - "Stop": "정지", - "Stop Download": "다운로드 중지", - "Stop Generating": "생성 중지", - "Stop Sequence": "중지 시퀀스", - "Storage": "저장소", - "Stream Chat Response": "스트림 채팅 응답", - "Stream Delta Chunk Size": "스트림 델타 청크 크기", - "Streamable HTTP": "스트림 가능한 HTTP", - "Strikethrough": "취소선", - "Strip Existing OCR": "기존 OCR 제거", - "Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.": "PDF에서 기존 OCR 텍스트를 제거하고 OCR을 다시 실행합니다. Force OCR이 활성화된 경우 무시됩니다. 기본값은 False입니다.", - "STT Model": "STT 모델", - "STT Settings": "STT 설정", - "Stylized PDF Export": "서식이 적용된 PDF 내보내기", - "Su_day_of_week": "Su_day_of_week", - "Submit question": "질문 제출", - "Submit suggestion": "제안 제출", - "Subtitle": "부제목", - "Success": "성공", - "Successfully imported {{userCount}} users.": "성공적으로 {{userCount}}명의 사용자를 가져왔습니다.", - "Successfully updated.": "성공적으로 업데이트되었습니다.", - "Suggest a change": "변경 제안", - "Suggested": "제안", - "Support": "지원", - "Support this plugin:": "플러그인 지원", - "Supported MIME Types": "지원하는 MIME 타입", - "Switch to JSON editor": "", - "Switch to visual editor": "", - "Sync": "동기화", - "Sync Complete!": "동기화 완료!", - "Sync directory": "디렉토리 연동", - "Sync Failed": "동기화 실패", - "Sync Usage Stats": "동기화 사용 통계", - "Syncing stats...": "동기화 통계...", - "Syncing...": "동기화 중...", - "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "마지막 동기화 타임스탬프 이후 업데이트된 채팅만 동기화합니다. 모든 채팅을 다시 동기화하려면 비활성화하세요.", - "System": "시스템", - "System Instructions": "시스템 지침", - "System Prompt": "시스템 프롬프트", - "Tag": "태그", - "Tags": "태그", - "Tags Generation": "태그 생성", - "Tags Generation Prompt": "태그 생성 프롬프트", - "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "꼬리 자유 샘플링은 출력에서 확률이 낮은 토큰의 영향을 줄이기 위해 사용됩니다. 값이 클수록(예: 2.0) 이러한 토큰의 영향이 더 줄어들며, 1.0으로 설정하면 이 기능은 비활성화됩니다.", - "Talk to Model": "모델과 대화", - "Tap to interrupt": "탭하여 중단", - "Task List": "작업 목록", - "Task Management": "작업 관리", - "Task Model": "작업 모델", - "Tasks": "작업", - "tasks completed": "작업 완료", - "Tavily API Key": "Tavily API 키", - "Tavily Extract Depth": "Tabily 깊이 추출", - "Tell us more:": "더 알려주세요:", - "Temperature": "온도", - "Temporary Chat": "임시 채팅", - "Temporary Chat by Default": "임시 채팅을 기본값으로", - "Terminal": "터미널", - "Terminal servers saved": "터미널 서버 저장됨", - "Text Splitter": "텍스트 나누기", - "Text-to-Speech": "텍스트-음성 변환", - "Text-to-Speech Engine": "텍스트-음성 변환 엔진", - "Th_day_of_week": "Th_day_of_week", - "Thanks for your feedback!": "피드백 감사합니다!", - "The Application Account DN you bind with for search": "검색을 위해 바인딩하는 애플리케이션 계정 DN", - "The base to search for users": "사용자를 검색할 수 있는 기반", - "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "배치 크기에 따라 한 번에 처리되는 텍스트 요청의 수가 결정됩니다. 배치 크기가 크면 모델의 성능과 속도가 향상될 수 있지만 더 많은 메모리가 필요하기도 합니다.", - "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "이 플러그인은 커뮤니티의 열정적인 자원봉사자들이 개발했습니다. 유용하게 사용하셨다면 개발에 기여해 주시는 것도 고려해 주세요.", - "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "평가 리더보드는 Elo 평가 시스템을 기반으로 하고 실시간으로 업데이트됩니다", - "The format to return a response in. Format can be json or a JSON schema.": "응답을 반환할 형식입니다. JSON 또는 JSON 스키마 형식이 될 수 있습니다.", - "The height in pixels to compress images to. Leave empty for no compression.": "이미지를 압축할 픽셀 높이입니다. 압축하지 않으려면 비워 두세요.", - "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "입력 오디오의 언어입니다. ISO-639-1 형식(예: en)으로 입력 언어를 지정하면 정확도와 지연 시간이 향상됩니다. 비워두면 자동으로 언어를 감지합니다.", - "The LDAP attribute that maps to the mail that users use to sign in.": "사용자가 로그인하는 데 사용하는 메일에 매핑되는 LDAP 속성입니다.", - "The LDAP attribute that maps to the username that users use to sign in.": "사용자가 로그인할 때 사용하는 사용자 이름에 매핑되는 LDAP 속성입니다.", - "The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "리더보드는 현재 베타 버전이며, 알고리즘 개선에 따라 평가 방식이 변경될 수 있습니다.", - "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "최대 파일 크기(MB). 만약 파일 크기가 한도를 초과할 시, 파일은 업로드되지 않습니다", - "The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "하나의 채팅에서는 사용가능한 최대 파일 수가 있습니다. 만약 파일 수가 한도를 초과할 시, 파일은 업로드되지 않습니다.", - "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'.": "텍스트의 출력 형식입니다. 'json', 'markdown', 또는 'html'이 될 수 있습니다. 기본값은 'markdown'입니다.", - "The passwords you entered don't quite match. Please double-check and try again.": "입력한 비밀번호가 일치하지 않습니다. 확인 후 다시 시도해 주세요.", - "The score should be a value between 0.0 (0%) and 1.0 (100%).": "점수는 0.0(0%)에서 1.0(100%) 사이의 값이어야 합니다.", - "The stream delta chunk size for the model. Increasing the chunk size will make the model respond with larger pieces of text at once.": "모델의 스트림 델타 청크 크기입니다. 청크 크기를 늘리면 모델이 한 번에 더 큰 텍스트 조각으로 응답하게 됩니다.", - "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "모델의 온도. 온도를 높이면 모델이 더 창의적으로 답변할 수 있습니다.", - "The Weight of BM25 Hybrid Search. 0 more semantic, 1 more lexical. Default 0.5": "BM25 하이브리드 검색의 가중치. 0에 가까울수록 의미(semantic) 기반, 1에 가까울수록 어휘(lexical) 기반. 기본값 0.5", - "The width in pixels to compress images to. Leave empty for no compression.": "이미지를 압축할 픽셀 너비입니다. 압축하지 않으려면 비워 두세요.", - "Theme": "테마", - "There was an error syncing your stats. Please try again.": "통계 동기화 중 오류가 발생했습니다. 다시 시도해 주세요.", - "Thinking...": "생각 중...", - "This action cannot be undone. Do you wish to continue?": "이 행동은 되돌릴 수 없습니다. 계속 하시겠습니까?", - "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "{{createdAt}}에 {{channelName}} 채널이 처음 만들어졌습니다. 대화를 시작해보세요.", - "This chat won't appear in history and your messages will not be saved.": "이 채팅은 기록에 나타나지 않으며 메시지가 저장되지 않습니다.", - "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "이렇게 하면 소중한 대화 내용이 백엔드 데이터베이스에 안전하게 저장됩니다. 감사합니다!", - "This feature is currently experimental and may not work as expected.": "이 기능은 현재 실험 중이며 예상대로 작동하지 않을 수 있습니다.", - "This feature is experimental and may be modified or discontinued without notice.": "이 기능은 실험 중이며, 사전 통보 없이 수정되거나 중단될 수 있습니다.", - "This folder is empty": "이 폴더는 비어 있습니다.", - "This is a default user permission and will remain enabled.": "이것은 기본 사용자 권한이며 계속 활성화됩니다.", - "This is an experimental feature, it may not function as expected and is subject to change at any time.": "이것은 실험적 기능으로, 예상대로 작동하지 않을 수 있으며 언제든지 변경될 수 있습니다.", - "This model is not publicly available. Please select another model.": "이 모델은 공개적으로 사용할 수 없습니다. 다른 모델을 선택해주세요.", - "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "이 옵션은 요청 처리 후 모델이 메모리에 유지하는 시간을 제어합니다. (기본값: 5분)", - "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "이 옵션은 컨텍스트를 새로 고칠 때 보존되는 토큰의 수를 제어합니다. 예를 들어 2로 설정하면 대화 컨텍스트의 마지막 2개 토큰이 유지됩니다. 컨텍스트를 보존하면 대화의 연속성을 유지하는 데 도움이 될 수 있지만 새로운 주제에 대한 응답 능력이 감소할 수 있습니다.", - "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "이 옵션은 Ollama에서 모델이 응답 생성 전에 사고할 수 있도록 돕는 '추론 기능'의 사용 여부를 설정합니다. 이 기능이 활성화되면, 모델은 대화 맥락을 처리하는 데 잠시 시간을 들여 더 사고적인 응답을 생성할 수 있습니다.", - "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "이 옵션은 모델이 응답에서 생성할 수 있는 최대 토큰 수를 설정합니다. 이 한도를 늘리면 모델이 더 긴 답변을 제공할 수 있지만, 도움이 되지 않거나 관련 없는 콘텐츠가 생성될 가능성도 높아질 수 있습니다.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "이 옵션을 선택하면 기존 컬렉션의 모든 파일이 삭제되고, 새로 업로드된 파일로 대체됩니다.", - "This response was generated by \"{{model}}\"": "\"{{model}}\"이 생성한 응답입니다", - "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", - "This will delete": "삭제합니다.", - "This will delete {{NAME}} and all its contents.": "{{NAME}}모든 내용을 삭제합니다.", - "This will delete all models including custom models": "이렇게 하면 사용자 지정 모델을 포함한 모든 모델이 삭제됩니다", - "This will delete all models including custom models and cannot be undone.": "이렇게 하면 사용자 지정 모델을 포함한 모든 모델이 삭제되며 실행 취소할 수 없습니다.", - "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "캘린더 \"{{name}}\"과 모든 이벤트가 영구적으로 삭제됩니다. 이 작업은 되돌릴 수 없습니다.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "지식 기반과 모든 파일 연동을 초기화합니다. 계속 하시겠습니까?", - "Thorough explanation": "완전한 설명", - "Thought": "생각", - "Thought for {{DURATION}}": "{{DURATION}} 동안 생각함", - "Thought for {{DURATION}} seconds": "{{DURATION}}초 동안 생각함", - "Thought for less than a second": "1초 미만 동안 생각함", - "Thread": "스레드", - "Thumbs up/down ratings from users on model responses": "모델 응답에 대한 사용자들의 좋아요/싫어요 평가", - "Tika": "Tika", - "Tika Server URL required.": "Tika 서버 URL이 필요합니다.", - "Tiktoken": "틱토큰 (Tiktoken)", - "Time": "시간", - "Time & Calculation": "시간 및 계산", - "Timeout": "시간 초과", - "Title": "제목", - "Title Auto-Generation": "제목 자동 생성", - "Title cannot be an empty string.": "제목은 빈 문자열일 수 없습니다.", - "Title Generation": "제목 생성", - "Title Generation Prompt": "제목 생성 프롬프트", - "Title is required": "제목이 필요합니다.", - "TLS": "TLS", - "To access the available model names for downloading,": "다운로드 가능한 모델명을 확인하려면,", - "To access the GGUF models available for downloading,": "다운로드 가능한 GGUF 모델을 확인하려면,", - "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "WebUI에 접속하려면 관리자에게 문의하십시오. 관리자는 관리자 패널에서 사용자 상태를 관리할 수 있습니다.", - "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "지식 기반을 여기에 첨부하려면. \"지식 기반\" 워크스페이스에 먼저 추가하세요", - "To learn more about available endpoints, visit our documentation.": "사용 가능한 엔드포인트에 대해 자세히 알아보려면 문서를 방문하세요.", - "To select skills here, add them to the \"Skills\" workspace first.": "여기서 스킬을 선택하려면, \"스킬\" 워크스페이스에 먼저 추가하세요.", - "To select toolkits here, add them to the \"Tools\" workspace first.": "여기서 도구를 선택하려면, \"도구\" 워크스페이스에 먼저 추가하세요.", - "Toast notifications for new updates": "새 업데이트 알림", - "Today": "오늘", - "Today at": "오늘은", - "Today at {{LOCALIZED_TIME}}": "오늘 {{LOCALIZED_TIME}}", - "Toggle {{COUNT}} sources": "{{COUNT}} 소스 토글", - "Toggle 1 source": "1 소스 토글", - "Toggle details": "세부 정보 토글", - "Toggle Dictation": "음성 입력 토글", - "Toggle Sidebar": "사이드바 토글", - "Toggle status history": "상태 기록 토글", - "Toggle whether current connection is active.": "현재 연결 활성화 여부 설정", - "Token": "토큰", - "Token counts are estimates and may not reflect actual API usage": "토큰 수는 추정치이며 실제 API 사용량을 반영하지 않을 수 있습니다.", - "tokens": "토큰", - "Tokens": "토큰", - "Too verbose": "너무 장황합니다", - "Tool created successfully": "성공적으로 도구가 생성되었습니다.", - "Tool deleted successfully": "성공적으로 도구가 삭제되었습니다.", - "Tool Description": "도구 설명", - "Tool ID": "도구 ID", - "Tool imported successfully": "성공적으로 도구를 가져왔습니다", - "Tool Name": "도구 이름", - "Tool Servers": "도구 서버", - "Tool updated successfully": "성공적으로 도구가 업데이트되었습니다", - "Tools": "도구", - "Tools Access": "도구 접근", - "Tools are a function calling system with arbitrary code execution": "도구는 임의 코드를 실행시키는 함수를 불러오는 시스템입니다", - "Tools Function Calling Prompt": "도구 함수 호출 프롬프트", - "Tools have a function calling system that allows arbitrary code execution.": "도구에 임의 코드 실행을 허용하는 함수가 포함되어 있습니다.", - "Tools Public Sharing": "도구 공개 및 공유", - "Tools Sharing": "도구 공유", - "Top": "상위", - "Top K": "Top K", - "Top K Reranker": "Top K 리랭커", - "Transformers": "트랜스포머", - "Trouble accessing Ollama?": "올라마(Ollama)에 접근하는 데 문제가 있나요?", - "Trust Proxy Environment": "신뢰 할 수 있는 프록시 환경", - "Try adjusting your search or filter to find what you are looking for.": "검색어 또는 필터를 변경하여 다시 시도해 보세요.", - "Try Again": "다시 시도하기", - "TTS Model": "TTS 모델", - "TTS Settings": "TTS 설정", - "TTS Voice": "TTS 음성", - "Tu_day_of_week": "Tu_day_of_week", - "Type": "입력", - "Type here...": "여기에 입력하세요...", - "Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (다운로드) URL 입력", - "Uh-oh! There was an issue with the response.": "이런! 응답에 문제가 발생했습니다.", - "UI": "UI", - "UI Scale": "UI 크기", - "Unarchive All": "모두 보관 해제", - "Unarchive All Archived Chats": "보관된 모든 채팅을 보관 해제", - "Unarchive Chat": "채팅 보관 해제", - "Underline": "밑줄", - "Unknown": "알 수 없음", - "Unknown User": "알 수 없는 사용자", - "Unloads {{FROM_NOW}}": "{{FROM_NOW}} 언로드", - "Unlock mysteries": "미스터리 풀기", - "Unmute": "", - "Unpin": "고정 해제", - "Unpin from Sidebar": "사이드바 고정 해제", - "Unravel secrets": "비밀 풀기", - "Unshare Chat": "채팅 공유 해제", - "Unsupported file type.": "지원하지 않는 파일 형식", - "Untagged": "태그 해제", - "Untitled": "제목 없음", - "Update": "업데이트", - "Update and Copy Link": "링크 업데이트 및 복사", - "Update for the latest features and improvements.": "이번 업데이트의 새로운 기능과 개선", - "Update password": "비밀번호 업데이트", - "Update your status": "상태 업데이트", - "Updated": "업데이트됨", - "Updated at": "업데이트 일시", - "Updated At": "업데이트 일시", - "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "맞춤형 테마 설정 및 브랜딩, 전용 지원을 포함한 향상된 기능을 위해 라이선스 플랜으로 업그레이드하세요.", - "Upload": "업로드", - "Upload a GGUF model": "GGUF 모델 업로드", - "Upload Audio": "오디오 업로드", - "Upload directory": "디렉토리 업로드", - "Upload files": "파일 업로드", - "Upload Files": "파일 업로드", - "Upload Model": "모델 업로드", - "Upload Pipeline": "업로드 파이프라인", - "Upload profile image": "프로필 이미지 업로드", - "Upload Progress": "업로드 진행 상황", - "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "업로드 진행 상황: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", - "Uploaded files or images": "업로드된 파일 또는 이미지", - "Uploading file...": "파일 업로드중...", - "Uploading...": "업로드 중...", - "URL": "URL", - "URL is required": "URL이 필요합니다.", - "URL Mode": "URL 모드", - "Usage": "사용량", - "Use": "사용", - "Use '#' in the prompt input to load and include your knowledge.": "프롬프트 입력에서 '#'를 사용하여 지식 기반을 불러오고 포함하세요.", - "Use /v1/chat/completions endpoint instead of /v1/audio/transcriptions for potentially better accuracy.": "더 정확한 결과를 얻으려면 /v1/audio/transcriptions 대신 /v1/chat/completions 엔드포인트를 사용해 보세요.", - "Use Chat Completions API": "Chat Completions API 사용", - "Use groups to organize your users and assign permissions.": "그룹을 사용하여 사용자를 조직하고 권한을 할당하세요.", - "Use LLM": "LLM 사용", - "Use no proxy to fetch page contents.": "페이지 콘텐츠를 가져오려면 프록시를 사용하지 마세요.", - "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "http_proxy 및 https_proxy 환경 변수로 지정된 프록시를 사용하여 페이지 콘텐츠를 가져옵니다.", - "user": "사용자", - "User": "사용자", - "User Activity": "사용자 활동", - "User Groups": "사용자 그룹", - "User location successfully retrieved.": "성공적으로 사용자의 위치를 불러왔습니다", - "User menu": "사용자 메뉴", - "User ratings (thumbs up/down)": "사용자 평가 (좋아요/싫어요)", - "User Status": "사용자 상태", - "User Webhooks": "사용자 웹훅", - "Username": "사용자 이름", - "users": "사용자", - "Users": "사용자", - "Uses DefaultAzureCredential to authenticate": "DefaultAzureCredential을 사용하여 인증합니다", - "Uses OAuth 2.1 Dynamic Client Registration": "OAuth 2.1 동적 클라이언트 등록을 사용합니다", - "Using Entire Document": "전체 문서 사용", - "Using Focused Retrieval": "집중 검색 사용", - "Using the default arena model with all models. Click the plus button to add custom models.": "모든 모델은 기본 아레나 모델을 사용중입니다. 플러스 버튼을 눌러 커스텀 모델을 추가하세요.", - "Valid time units:": "유효 시간 단위:", - "Validate certificate": "인증서 검증", - "Valves": "밸브", - "Valves updated": "밸브 업데이트됨", - "Valves updated successfully": "성공적으로 밸브가 업데이트되었습니다", - "variable": "변수", - "Verify Connection": "연결 확인", - "Verify SSL Certificate": "SSL 인증서 확인", - "Version": "버전", - "Version {{selectedVersion}} of {{totalVersions}}": "버전 {{totalVersions}}의 {{selectedVersion}}", - "Version deleted": "버전이 삭제되었습니다", - "View Replies": "답글 보기", - "View Result from **{{NAME}}**": "**{{NAME}}**의 결과 보기", - "View source: {{name}}": "소스 보기: {{name}}", - "View source: {{title}}": "소스 보기: {{title}}", - "Visibility": "공개 범위", - "Visible": "공개", - "Visible to all users": "모든 사용자에게 공개", - "Vision": "비전", - "Visual": "", - "Voice": "음성", - "Voice Input": "음성 입력", - "Voice mode": "음성 모드 사용", - "Voice Mode Prompt": "음성 모드 프롬프트", - "Waiting for upload...": "업로드 기다리는 중...", - "Warning": "경고", - "Warning:": "주의:", - "Warning: Enabling this will allow users to run scheduled prompts automatically.": "주의: 이 기능을 활성화하면 사용자가 예약된 프롬프트를 자동으로 실행할 수 있습니다.", - "Warning: Enabling this will allow users to upload arbitrary code on the server.": "주의: 이 기능을 활성화하면 사용자가 서버에 임의 코드를 업로드할 수 있습니다.", - "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "경고: Jupyter 실행은 임의의 코드 실행을 가능하게 하여 심각한 보안 위험을 초래합니다. — 매우 신중하게 진행하세요.", - "We_day_of_week": "We_day_of_week", - "Web": "웹", - "Web API": "웹 API", - "Web Loader Engine": "웹 로더 엔진", - "Web Search": "웹 검색", - "Web Search Engine": "웹 검색 엔진", - "Web Search in Chat": "채팅에서 웹 검색", - "Web Search Query Generation": "웹 검색 쿼리 생성", - "Webhook Name": "웹훅 이름", - "Webhook URL": "웹훅 URL", - "Webhooks": "웹훅", - "Webpage URLs": "웹페이지 URL", - "WebUI Settings": "WebUI 설정", - "WebUI URL": "WebUI URL", - "WebUI will make requests to \"{{url}}\"": "WebUI가 \"{{url}}\"로 요청을 보냅니다", - "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI가 \"{{url}}/api/chat\"로 요청을 보냅니다", - "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI가 \"{{url}}/chat/completions\"로 요청을 보냅니다", - "Week": "주", - "Weekly": "주간", - "What are you trying to achieve?": "무엇을 성취하고 싶으신가요?", - "What are you working on?": "어떤 작업을 하고 계신가요?", - "What is NOT shared:": "공유되지 않는 것:", - "What is shared:": "공유되는 것:", - "What's New in": "새로운 기능:", - "What's on your mind?": "무슨 생각을 하고 계신가요?", - "When": "", - "When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "활성화하면 모델이 각 채팅 메시지에 실시간으로 응답하여 사용자가 메시지를 보내는 즉시 응답을 생성합니다. 이 모드는 실시간 채팅 애플리케이션에 유용하지만, 느린 하드웨어에서는 성능에 영향을 미칠 수 있습니다.", - "wherever you are": "당신이 어디에 있든", - "Whether to paginate the output. Each page will be separated by a horizontal rule and page number. Defaults to False.": "출력을 페이지로 나눌지 여부입니다. 각 페이지는 구분선과 페이지 번호로 구분됩니다. 기본값은 False입니다.", - "Whisper (Local)": "Whisper (로컬)", - "Who can share to this group": "누가 이 그룹에 공유할 수 있나요", - "Why?": "이유는?", - "Widescreen Mode": "와이드스크린 모드", - "Width": "너비", - "Wikipedia": "위키피디아", - "Won": "승리", - "Working Directory": "작업 디렉토리", - "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "top-k와 함께 작동합니다. 값이 높을수록(예: 0.95) 더 다양한 텍스트가 생성되고, 값이 낮을수록(예: 0.5) 더 집중적이고 보수적인 텍스트가 생성됩니다.", - "Workspace": "워크스페이스", - "Workspace Permissions": "워크스페이스 권한", - "Write": "작성", - "Write a summary in 50 words that summarizes {{topic}}.": "{{topic}}에 대한 50단어 요약문을 작성하시오.", - "Write something...": "내용을 입력하세요…", - "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "여기에 모델 시스템 프롬프트 내용을 작성하세요\n예: 당신은 Super Mario Bros의 마리오로서, 어시스턴트 역할을 합니다.", - "Yacy Instance URL": "Yacy 인스턴스 URL", - "Yacy Password": "Yacy 비밀번호", - "Yacy Username": "Yacy 사용자 이름", - "Yahoo": "야후", - "Yandex": "얀덱스", - "Yandex Web Search API Key": "얀덱스 웹 검색 API 키", - "Yandex Web Search config": "얀덱스 웹 검색 구성", - "Yandex Web Search URL": "얀덱스 웹 검색 URL", - "Yesterday": "어제", - "Yesterday at {{LOCALIZED_TIME}}": "어제 {{LOCALIZED_TIME}}", - "You": "당신", - "You are currently using a trial license. Please contact support to upgrade your license.": "현재 평가판 라이선스를 사용 중입니다. 라이선스를 업그레이드하려면 지원팀에 문의하세요.", - "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "최대 {{maxCount}}개의 파일과만 동시에 대화할 수 있습니다 ", - "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "아래 '관리' 버튼으로 메모리를 추가하여 LLM들과의 상호작용을 개인화할 수 있습니다. 이를 통해 더 유용하고 맞춤화된 경험을 제공합니다.", - "You cannot upload an empty file.": "빈 파일을 업로드 할 수 없습니다", - "You do not have permission to edit this model": "이 모델을 편집할 권한이 없습니다", - "You do not have permission to edit this prompt.": "이 프롬프트를 편집할 권한이 없습니다", - "You do not have permission to edit this skill.": "이 기술을 편집할 권한이 없습니다", - "You do not have permission to edit this tool": "이 도구를 편집할 권한이 없습니다", - "You do not have permission to make this public": "이 것을 공개할 권한이 없습니다", - "You do not have permission to send messages in this channel.": "이 채널에 메시지를 보내할 권한이 없습니다", - "You do not have permission to send messages in this thread.": "이 스레드에 메시지를 보내할 권한이 없습니다", - "You do not have permission to upload files to this knowledge base.": "이 지식 베이스에 파일을 업로드할 권한이 없습니다", - "You do not have permission to upload files.": "파일을 업로드할 권한이 없습니다.", - "You do not have permission to upload web content.": "웹 콘텐츠를 업로드할 권한이 없습니다", - "You have no archived conversations.": "채팅을 보관한 적이 없습니다.", - "You have no shared conversations.": "공유된 대화가 없습니다.", - "You have shared this chat": "이 채팅을 공유했습니다.", - "You.com API Key": "You.com API 키", - "You're a helpful assistant.": "당신은 유용한 어시스턴트입니다.", - "You're now logged in.": "로그인되었습니다.", - "Your Account": "계정", - "Your account status is currently pending activation.": "현재 계정은 아직 활성화되지 않았습니다.", - "Your browser does not support the audio tag.": "당신의 브라우저는 오디오 태그를 지원하지 않습니다.", - "Your browser does not support the video tag.": "당신의 브라우저는 비디오 태그를 지원하지 않습니다.", - "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "당신의 모든 기여는 곧바로 플러그인 개발자에게 갑니다; Open WebUI는 수수료를 받지 않습니다. 다만, 선택한 후원 플랫폼은 수수료를 가져갈 수 있습니다.", - "Your message text or inputs": "당신의 메시지 텍스트 또는 입력값", - "Your usage stats have been successfully synced.": "당신의 사용 통계가 성공적으로 동기화되었습니다.", - "YouTube": "유튜브", - "Youtube Language": "Youtube 언어", - "Youtube Proxy URL": "Youtube 프록시 URL", - "{{count}} selected_one": "{{count}}개 선택됨", - "Retrieved {{count}} sources_one": "{{count}}개의 소스 검색됨", - "Starting in {{count}} minutes_one": "{{count}}분 후 시작" + "-1 for no limit, or a positive integer for a specific limit": "-1은 제한 없음을 의미하며, 양의 정수는 특정 제한을 나타냅니다", + "'s', 'm', 'h', 'd', 'w' or '-1' for no expiration.": "'s(초)', 'm(분)', 'h(시간)', 'd(일)', 'w(주)' 또는 '-1'(만료없음) 중 하나를 사용하세요.", + "(e.g. `sh webui.sh --api --api-auth username_password`)": "(예: `sh webui.sh --api --api-auth 사용자이름_비밀번호`)", + "(e.g. `sh webui.sh --api`)": "(예: `sh webui.sh --api`)", + "(latest)": "(최신)", + "(leave blank for to use commercial endpoint)": "(상용 엔드포인트를 사용하시려면 비워두세요)", + "[Last] dddd [at] h:mm A": "[지난] dddd A h:mm", + "[Today at] h:mm A": "[오늘] A h:mm", + "[Yesterday at] h:mm A": "[어제] A h:mm", + "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", + "{{COUNT}} Available Tools": "사용 가능한 도구 {{COUNT}}개", + "{{COUNT}} characters": "{{COUNT}} 문자", + "{{COUNT}} extracted lines": "추출된 줄 {{COUNT}}개", + "{{COUNT}} files": "{{COUNT}}개 파일", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", + "{{COUNT}} hidden lines": "숨겨진 줄 {{COUNT}}개", + "{{COUNT}} members": "{{COUNT}}명의 멤버", + "{{count}} of {{total}} accessible_other": "", + "{{COUNT}} Replies": "답글 {{COUNT}}개", + "{{COUNT}} Rows": "{{COUNT}}개 행", + "{{count}} selected_one": "{{count}}개 선택됨", + "{{count}} selected_other": "{{count}}개 선택됨", + "{{COUNT}} Sources": "{{COUNT}}개의 소스", + "{{COUNT}} words": "{{COUNT}} 단어", + "{{COUNT}}d_time_ago": "{{COUNT}}일 전", + "{{COUNT}}h_time_ago": "{{COUNT}}시간 전", + "{{COUNT}}m_time_ago": "{{COUNT}}분 전", + "{{COUNT}}w_time_ago": "{{COUNT}}주 전", + "{{COUNT}}y_time_ago": "{{COUNT}}년 전", + "{{LOCALIZED_DATE}} at {{LOCALIZED_TIME}}": "{{LOCALIZED_DATE}}일 {{LOCALIZED_TIME}}시", + "{{model}} download has been canceled": "{{model}} 다운로드가 취소되었습니다.", + "{{modelName}} profile image": "{{modelName}} 프로필 이미지", + "{{NAMES}} reacted with {{REACTION}}": "{{NAMES}} 님이 {{REACTION}}으로 반응했습니다", + "{{user}}'s Chats": "{{user}}의 채팅", + "{{webUIName}} Backend Required": "{{webUIName}} 백엔드가 필요합니다.", + "*Prompt node ID(s) are required for image generation": "이미지 생성에는 프롬프트 노드 ID가 필요합니다.", + "1 hour before": "1시간 전", + "1 Source": "소스 1", + "10 minutes before": "10분 전", + "15 minutes before": "15분 전", + "1m_time_ago": "1분 전", + "30 minutes before": "30분 전", + "5 minutes before": "5분 전", + "A collaboration channel where people join as members": "사람들이 멤버로 참여하는 협업 채널", + "A discussion channel where access is controlled by groups and permissions": "그룹과 권한으로 접근이 제어되는 토론 채널", + "A new version (v{{LATEST_VERSION}}) is now available.": "새로운 버전 (v{{LATEST_VERSION}})을 사용할 수 있습니다.", + "A private conversation between you and selected users": "나와 선택한 사용자 간의 비공개 대화", + "A task model is used when performing tasks such as generating titles for chats and web search queries": "작업 모델은 채팅 및 웹 검색 쿼리에 대한 제목 생성 등의 작업 수행 시 사용됩니다.", + "a user": "사용자", + "About": "정보", + "Accept Autocomplete Generation\nJump to Prompt Variable": "자동완성 생성 수락\n프롬프트 변수로 이동", + "Access": "접근", + "Access Control": "접근 제어", + "Access Grants": "접근 권한", + "Access List": "접근 목록", + "Access updated": "접근 업데이트", + "Accessible to all users": "모든 사용자가 이용할 수 있음", + "Account": "계정", + "Account Activation Pending": "계정 활성화 대기", + "Accurate information": "정확한 정보", + "Action": "작업", + "Action Required for Chat Log Storage": "채팅 로그 저장을 위해 조치가 필요합니다", + "Actions": "작업", + "Activate": "활성화", + "Activate this command by typing \"/{{COMMAND}}\" to chat input.": "채팅 입력창에 \"{{COMMAND}}\"을 입력해 명령을 실행하세요.", + "Active": "활성", + "Active Users": "활성 사용자", + "Activity": "활동", + "Add": "추가", + "Add a model ID": "모델 ID 추가", + "Add a short description about what this model does": "모델의 기능에 대한 간단한 설명 추가", + "Add a tag": "태그 추가", + "Add a tag...": "태그 추가...", + "Add Access": "접근 권한 추가", + "Add Arena Model": "아레나 모델 추가", + "Add Connection": "연결 추가", + "Add Content": "내용 추가", + "Add content here": "여기에 내용을 추가하세요", + "Add Custom Parameter": "사용자 정의 매개변수 추가", + "Add Custom Prompt": "사용자 정의 프롬프트 추가", + "Add description": "설명 추가", + "Add Details": "디테일 추가", + "Add Files": "파일 추가", + "Add Image": "이미지 추가", + "Add location": "위치 추가", + "Add Member": "멤버 추가", + "Add Members": "멤버 추가", + "Add Memory": "메모리 추가", + "Add Model": "모델 추가", + "Add Reaction": "리액션 추가", + "Add tag": "태그 추가", + "Add Tag": "태그 추가", + "Add Terminal": "터미널 추가", + "Add Terminal Connection": "터미널 연결 추가", + "Add text content": "글 추가", + "Add to favorites": "즐겨찾기에 추가", + "Add User": "사용자 추가", + "Add User Group": "사용자 그룹 추가", + "Add webpage": "웹페이지 추가", + "Add your Open Terminal URL and API key in Settings → Integrations.": "설정 → 통합에서 Open Terminal URL과 API 키를 추가하세요.", + "Additional Config": "추가 설정", + "Additional configuration options for marker. This should be a JSON string with key-value pairs. For example, '{\"key\": \"value\"}'. Supported keys include: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level": "Marker에 대한 추가 설정 옵션입니다. 키-값 쌍으로 이루어진 JSON 문자열이어야 합니다. 예를 들어, '{\"key\": \"value\"}'와 같습니다. 지원되는 키는 다음과 같습니다: disable_links, keep_pageheader_in_output, keep_pagefooter_in_output, filter_blank_pages, drop_repeated_text, layout_coverage_threshold, merge_threshold, height_tolerance, gap_threshold, image_threshold, min_line_length, level_count, default_level", + "Additional feedback comments": "추가 피드백 의견", + "Additional Parameters": "추가 매개변수", + "Adds filenames, titles, sections, and snippets into the BM25 text to improve lexical recall.": "어휘 검색 재현율을 높이기 위해 BM25 텍스트에 파일명, 제목, 섹션, 스니펫을 추가합니다.", + "Adjusting these settings will apply changes universally to all users.": "이 설정을 조정하면 모든 사용자에게 변경 사항이 일괄 적용됩니다.", + "admin": "관리자", + "Admin": "관리자", + "Admin Contact Email": "관리자 이메일", + "Admin Panel": "관리자 패널", + "Admin Settings": "관리자 설정", + "Admins have access to all tools at all times; users need tools assigned per model in the workspace.": "관리자는 항상 모든 도구에 접근할 수 있지만, 사용자는 워크스페이스에서 모델마다 도구를 할당받아야 합니다.", + "Advanced": "고급", + "Advanced Parameters": "고급 매개변수", + "Advanced parameters for MinerU parsing (enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)": "MinerU 파싱을 위한 고급 매개변수(enable_ocr, enable_formula, enable_table, language, model_version, page_ranges)", + "Advanced Params": "고급 매개변수", + "After updating or changing the embedding model, you must reindex the knowledge base for the changes to take effect. You can do this using the \"Reindex\" button below.": "임베딩 모델을 업데이트하거나 변경 후 변경 사항을 적용하려면 지식 베이스를 다시 인덱싱해야 합니다. 아래의 \"재색인\" 버튼을 사용하여 수행할 수 있습니다.", + "AI": "AI", + "All": "전체", + "All chats have been unarchived.": "모든 채팅이 보관 해제되었습니다.", + "All day": "하루 종일", + "All models are now hidden": "모든 모델이 이제 숨김 처리되었습니다", + "All models are now visible": "모든 모델이 이제 표시됩니다", + "All models deleted successfully": "성공적으로 모든 모델이 삭제되었습니다", + "All time": "전체 기간", + "All Users": "모든 사용자", + "Allow Call": "음성 통화 허용", + "Allow Chat Controls": "채팅 제어 허용", + "Allow Chat Delete": "채팅 삭제 허용", + "Allow Chat Edit": "채팅 수정 허용", + "Allow Chat Export": "채팅 내보내기 허용", + "Allow Chat Params": "채팅 매개변수 허용", + "Allow Chat Share": "채팅 공유 허용", + "Allow Chat System Prompt": "채팅 시스템 프롬프트 허용", + "Allow Chat Valves": "채팅 밸브 허용", + "Allow Continue Response": "계속 응답 허용", + "Allow Delete Messages": "메시지 삭제 허용", + "Allow File Upload": "파일 업로드 허용", + "Allow Multiple Models in Chat": "채팅에서 여러 모델 허용", + "Allow non-local voices": "외부 음성 허용", + "Allow public write access": "공개 쓰기 접근 허용", + "Allow Rate Response": "응답 평가 허용", + "Allow Regenerate Response": "응답 재생성 허용", + "Allow Sharing With Users": "사용자와 공유 허용", + "Allow Speech to Text": "음성 텍스트 변환 허용", + "Allow Temporary Chat": "임시 채팅 허용", + "Allow Text to Speech": "텍스트 음성 변환 허용", + "Allow User Location": "사용자 위치 활용 허용", + "Allow Voice Interruption in Call": "음성 기능에서 음성 방해 허용", + "Allow Web Upload": "웹 업로드 허용", + "Allowed Endpoints": "허용 엔드포인트", + "Allowed File Extensions": "허용 파일 확장자", + "Allowed file extensions for upload. Separate multiple extensions with commas. Leave empty for all file types.": "업로드할 수 있는 파일 확장자. 여러 확장자를 구분하기 위해 쉼표로 구분합니다. 모든 파일 유형을 허용하려면 비워두세요.", + "Already have an account?": "이미 계정이 있으신가요?", + "Alternative to the top_p, and aims to ensure a balance of quality and variety. The parameter p represents the minimum probability for a token to be considered, relative to the probability of the most likely token. For example, with p=0.05 and the most likely token having a probability of 0.9, logits with a value less than 0.045 are filtered out.": "top_p의 대안으로, 품질과 다양성 간의 균형을 보장하는 것을 목표로 합니다. 매개변수 p는 가장 가능성이 높은 토큰의 확률 대비 고려될 토큰의 최소 확률을 나타냅니다. 예를 들어, p=0.05이고 가장 가능성이 높은 토큰의 확률이 0.9인 경우, 값이 0.045보다 작은 로짓은 필터링됩니다.", + "Always": "항상", + "Always Collapse Code Blocks": "항상 코드 블록 접기", + "Always Expand Details": "항상 세부 정보 펼치기", + "Always Play Notification Sound": "항상 알림 소리 재생", + "Amazing": "놀라움", + "an assistant": "어시스턴트", + "Analytics": "분석", + "Analyzed": "분석됨", + "Analyzing...": "분석 중...", + "and {{COUNT}} more": "그리고 {{COUNT}}개 더", + "and create a new shared link.": "새로운 공유 링크를 생성합니다.", + "Android": "안드로이드", + "Anyone": "누구나", + "API Base URL": "API 기본 URL", + "API Base URL for Datalab Marker service. Defaults to: https://www.datalab.to/api/v1/marker": "Datalab Marker 서비스의 API URL. 기본값: https://www.datalab.to/api/v1/marker", + "API Key": "API 키", + "API Key created.": "API 키가 생성되었습니다.", + "API Key Endpoint Restrictions": "API 키 엔드포인트 제한", + "API keys": "API 키", + "API Keys": "API 키", + "API Mode": "API 모드", + "API Timeout": "API 시간 초과", + "API Type": "API 유형", + "API Version": "API 버전", + "API Version is required": "API 버전이 필요합니다", + "Application DN": "Application DN", + "Application DN Password": "Application DN 비밀번호", + "applies to all users with the \"user\" role": "\"사용자\" 권한의 모든 사용자에게 적용됩니다", + "April": "4월", + "Archive": "보관", + "Archive All": "모두 보관", + "Archive All Chats": "모든 채팅 보관", + "Archived Chats": "보관된 채팅", + "archived-chat-export": "보관된 채팅 내보내기", + "Are you sure you want to archive all chats? This action cannot be undone.": "정말 모든 채팅을 보관하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "Are you sure you want to clear all memories? This action cannot be undone.": "정말 모든 메모리를 지우시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "Are you sure you want to delete \"{{NAME}}\"?": "정말 \"{{NAME}}\"을 삭제하시겠습니까?", + "Are you sure you want to delete **{{modelName}}**?": "정말 **{{modelName}}**을(를) 삭제하시겠습니까?", + "Are you sure you want to delete all chats? This action cannot be undone.": "정말 모든 채팅을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "Are you sure you want to delete this channel?": "정말 이 채널을 삭제하시겠습니까?", + "Are you sure you want to delete this connection? This action cannot be undone.": "정말 이 연결을 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "Are you sure you want to delete this directory?": "", + "Are you sure you want to delete this memory? This action cannot be undone.": "정말 이 메모리를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", + "Are you sure you want to delete this message?": "정말 이 메시지를 삭제하시겠습니까?", + "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "정말 이 버전을 삭제하시겠습니까? 하위 버전은 이 버전의 상위 버전에 다시 연결됩니다.", + "Are you sure you want to delete this?": "정말 이 항목을 삭제하시겠습니까?", + "Are you sure you want to unarchive all archived chats?": "정말 보관된 모든 채팅을 보관 해제하시겠습니까?", + "Arena Models": "Arena 모델", + "Artifacts": "아티팩트", + "Asc": "오름차순", + "Ask": "질문", + "Ask a question": "질문하기", + "Assistant": "어시스턴트", + "Async Embedding Processing": "비동기 임베딩 처리", + "At time of event": "이벤트 발생 시", + "Attach File From Knowledge": "지식 기반에서 파일 첨부", + "Attach Files": "첨부 파일", + "Attach Knowledge": "지식 기반 첨부", + "Attach Notes": "노트 첨부", + "Attach Webpage": "웹페이지 첨부", + "Attention to detail": "세부 사항에 대한 주의", + "Attribute for Mail": "메일 속성", + "Attribute for Username": "사용자 이름 속성", + "Audio": "오디오", + "August": "8월", + "Auth": "인증", + "Authenticate": "인증하다", + "Authentication": "인증", + "Auto": "자동", + "Auto (Random)": "자동 (랜덤)", + "Auto-Copy Response to Clipboard": "응답을 클립보드에 자동 복사", + "Auto-playback response": "응답 자동 재생", + "Autocomplete Generation": "자동완성 생성", + "Autocomplete Generation Input Max Length": "자동완성 생성 입력 최대 길이", + "Automatic1111": "Automatic1111", + "AUTOMATIC1111 Api Auth String": "Automatic1111 API 인증 문자", + "AUTOMATIC1111 Base URL": "AUTOMATIC1111 기본 URL", + "AUTOMATIC1111 Base URL is required.": "AUTOMATIC1111 기본 URL 설정이 필요합니다.", + "Automatically inject system tools in native function calling mode (e.g., timestamps, memory, chat history, notes, etc.)": "네이티브 함수 호출 모드에서 시스템 도구(예: 타임스탬프, 메모리, 채팅 기록, 노트 등)를 자동으로 삽입합니다.", + "Automation": "자동", + "Automation created": "자동 생성", + "Automation Name": "자동 생성된 이름", + "Automation title": "자동 생성된 제목", + "Automation triggered": "자동 시행", + "Automation updated": "자동 업데이트", + "Automations": "자동", + "Available list": "가능한 목록", + "Available models": "사용 가능한 모델", + "Available Skills": "", + "Available Tools": "사용 가능한 도구", + "available users": "사용 가능 사용자", + "available!": "사용 가능!", + "Away": "자리 비움", + "Awful": "형편없음", + "Azure AI Speech": "Azure AI 음성", + "Azure OpenAI": "Azure OpenAI", + "Azure Region": "Azure 지역", + "Back": "뒤로", + "Bad Response": "잘못된 응답", + "Banners": "배너", + "Base Model (From)": "기본 모델(시작)", + "Base Model List Cache speeds up access by fetching base models only at startup or on settings save—faster, but may not show recent base model changes.": "기본 모델 목록 캐시는 시작 시 또는 설정 저장 시에만 기본 모델을 불러와 접근 속도를 높여줍니다. 이는 더 빠르지만, 최근 기본 모델 변경 사항이 반영되지 않을 수 있습니다.", + "Bearer": "보유자", + "before": "이전", + "Being lazy": "게으름 피우기", + "Beta": "베타", + "Bing": "Bing", + "Bing Search V7 Endpoint": "Bing Search V7 엔드포인트", + "Bing Search V7 Subscription Key": "Bing Search V7 구독 키", + "Bio": "소개", + "Birth Date": "생년월일", + "BM25 Weight": "BM25 가중치", + "Bocha Search API Key": "Bocha Search API 키", + "Bold": "굵게", + "Boosting or penalizing specific tokens for constrained responses. Bias values will be clamped between -100 and 100 (inclusive). (Default: none)": "특정 토큰을 가중 상향/하향하여 응답을 제약합니다. 값은 -100 ~ 100(기본값: 없음)", + "Brave": "Brave", + "Brave Search API Key": "Brave Search API 키", + "Break down complex requests into trackable steps": "복잡한 요청을 추적 가능한 단계로 나누세요", + "Browse and query knowledge bases": "지식 기반 탐색 및 쿼리", + "Builtin Tools": "내장(빌트인) 도구", + "Bullet List": "글머리 기호 목록", + "Button ID": "버튼 ID", + "Button Label": "버튼 레이블", + "Button Prompt": "버튼 프롬프트", + "by {{name}}": "작성자: {{name}}", + "By {{name}}": "작성자: {{name}}", + "Bypass Embedding and Retrieval": "임베딩 검색 우회", + "Bypass Web Loader": "웹 콘텐츠 불러오기 생략", + "Cache Base Model List": "기본 모델 목록 캐시", + "Calendar": "캘린더", + "Calendar created": "", + "Calendar deleted": "캘린더가 삭제되었습니다.", + "Calendar name": "", + "Calendars": "캘린더", + "Calendars Public Sharing": "", + "Call": "음성 기능", + "Call feature is not supported when using Web STT engine": "웹 STT 엔진 사용 시, 음성 기능은 지원되지 않습니다.", + "Camera": "카메라", + "Cancel": "취소", + "Cancel download of {{model}}": "{{model}} 다운로드 취소", + "Cannot create an empty note.": "빈 노트를 생성할 수 없습니다.", + "Cannot delete the production version": "이 프로덕션 버전은 삭제할 수 없습니다.", + "Capabilities": "기능", + "Capture": "캡처", + "Capture Audio": "오디오 캡처", + "Certificate Path": "인증서 경로", + "Change folder icon": "폴더 아이콘 변경", + "Change Password": "비밀번호 변경", + "Change User Role": "사용자 역할 변경", + "Channel": "채널", + "Channel deleted successfully": "채널 삭제 성공", + "Channel Name": "채널 이름", + "Channel name cannot be empty.": "채널 이름은 비워둘 수 없습니다.", + "Channel name must be less than 128 characters": "채널 이름은 128자 미만이어야 합니다", + "Channel Type": "채널 타입", + "Channel updated successfully": "채널 업데이트 성공", + "Channels": "채널", + "Character": "캐릭터", + "Character limit for autocomplete generation input": "자동 완성 생성 입력 문자 제한", + "Chart new frontiers": "새로운 영역 개척", + "Chat": "채팅", + "Chat archived.": "채팅 보관됨.", + "Chat Background Image": "채팅 배경 이미지", + "Chat Bubble UI": "버블형 채팅 UI", + "Chat Completions": "채팅 완성", + "Chat Conversation": "채팅 대화", + "Chat deleted.": "", + "Chat direction": "채팅 방향", + "Chat exported successfully": "채팅 내보내기 성공", + "Chat History": "채팅 기록", + "Chat ID": "채팅 ID", + "Chat moved successfully": "채팅 이동 성공", + "Chat Permissions": "채팅 권한", + "Chat Tags Auto-Generation": "채팅 태그 자동생성", + "Chat unshared successfully.": "채팅 공유 해제 성공", + "chats": "채팅", + "Chats": "채팅", + "Chats Public Sharing": "", + "Check Again": "다시 확인", + "Check for updates": "업데이트 확인", + "Checking for updates...": "업데이트 확인중...", + "Choose a model before saving...": "저장하기 전에 모델을 선택하세요...", + "Chunk Min Size Target": "최소 청크 크기 목표", + "Chunk Overlap": "청크 중첩", + "Chunk Size": "청크 크기", + "Chunks smaller than this threshold will be merged with neighboring chunks when possible. Set to 0 to disable merging.": "이 임계값보다 작은 청크는 가능한 경우 이웃한 청크와 병합됩니다. 병합을 비활성화하려면 0으로 설정하세요.", + "Ciphers": "암호", + "Citation": "인용", + "Citations": "인용", + "Clear memory": "메모리 초기화", + "Clear Memory": "메모리 지우기", + "Clear search": "검색 초기화", + "Clear status": "상태 초기화", + "click here": "여기를 클릭하세요", + "Click here for filter guides.": "필터 가이드를 보려면 여기를 클릭하세요.", + "Click here for help.": "도움말을 보려면 여기를 클릭하세요.", + "Click here to": "여기를 클릭하면", + "Click here to download user import template file.": "사용자 삽입 템플렛 파일을 다운받으려면 여기를 클릭하세요", + "Click here to learn more about faster-whisper and see the available models.": "빠른 속삭임에 대해 배우거나 가능한 모델을 보려면 여기를 클릭하세요", + "Click here to see available models.": "사용 가능한 모델을 보려면 여기를 클릭하세요.", + "Click here to select": "선택하려면 여기를 클릭하세요.", + "Click here to select a csv file.": "csv 파일을 선택하려면 여기를 클릭하세요.", + "Click here to select a py file.": "py 파일을 선택하려면 여기를 클릭하세요.", + "Click here to upload a workflow.json file.": "workflow.json 파일을 업로드하려면 여기를 클릭하세요", + "click here.": "여기를 클릭하세요.", + "Click on the user role button to change a user's role.": "사용자 역할 버튼을 클릭하여 사용자의 역할을 변경하세요.", + "Click to connect": "연결하려면 클릭하세요", + "Click to copy ID": "ID를 복사하려면 클릭하세요", + "Client ID": "클라이언트 ID", + "Client Secret": "클라이언트 시크릿", + "Clipboard write permission denied. Please check your browser settings to grant the necessary access.": "클립보드 쓰기 권한이 거부되었습니다. 브라우저 설정에서 권한을 허용해주세요.", + "Clone": "복제", + "Clone Chat": "채팅 복제", + "Clone of {{TITLE}}": "{{TITLE}}의 복제본", + "Close": "닫기", + "Close Banner": "배너 닫기", + "Close chat controls": "채팅 제어 닫기", + "Close citation modal": "인용 모달 닫기", + "Close Configure Connection Modal": "연결 설정 닫기", + "Close feedback": "피드백 닫기", + "Close modal": "닫기", + "Close Modal": "모달 닫기", + "Close settings modal": "설정 닫기", + "Close Sidebar": "사이드바 닫기", + "cloud": "클라우드", + "CMU ARCTIC speaker embedding name": "CMU ARCTIC 화자 임베딩 이름", + "Code Block": "코드 블록", + "Code Editor": "코드 편집기", + "Code execution": "코드 실행", + "Code Execution": "코드 실행", + "Code Execution Engine": "코드 실행 엔진", + "Code Execution Timeout": "코드 실행 시간 초과", + "Code formatted successfully": "코드 포맷팅이 성공적으로 완료되었습니다.", + "Code Interpreter": "코드 인터프리터", + "Code Interpreter Engine": "코드 인터프리터 엔진", + "Code Interpreter Prompt Template": "코드 인터프리터 프롬프트 템플릿", + "Collaboration channel where people join as members": "사람들이 멤버로 참여하는 협업 채널", + "Collapse": "접기", + "Collection": "컬렉션", + "Collections": "컬렉션", + "Color": "색상", + "ComfyUI": "ComfyUI", + "ComfyUI API Key": "ComfyUI API 키", + "ComfyUI Base URL": "ComfyUI 기본 URL", + "ComfyUI Base URL is required.": "ComfyUI 기본 URL이 필요합니다.", + "ComfyUI Workflow": "ComfyUI 워크플로", + "ComfyUI Workflow Nodes": "ComfyUI 워크플로 노드", + "Comma separated Node Ids (e.g. 1 or 1,2)": "쉼표로 구분된 노드 아이디 (예: 1 또는 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", + "command": "명령", + "Command": "명령", + "Comment": "주석", + "Commit Message": "커밋 메시지", + "Community Reviews": "커뮤니티 리뷰", + "Comparing with knowledge base...": "", + "Completions": "완성됨", + "Compress Images in Channels": "채널에 이미지들 압축하기", + "Computing checksums ({{count}} files)_other": "", + "Concurrent Requests": "동시 요청 수", + "Config": "구성", + "Config imported successfully": "구성을 성공적으로 가져왔습니다", + "Configuration": "구성", + "Configure": "구성", + "Confirm": "확인", + "Confirm Password": "비밀번호 확인", + "Confirm Prompt from Embed": "임베드에서 확인 프롬프트", + "Confirm your action": "작업 확인", + "Confirm your new password": "새로운 비밀번호를 한 번 더 입력해 주세요", + "Confirm Your Password": "비밀번호를 확인해주세요", + "Connect to an AI provider to start chatting": "AI 제공자에 연결하여 채팅을 시작하세요", + "Connect to Open Terminal instances to browse files and use them as always-on tools. Only one can be active at a time.": "파일을 탐색하고 항상 켜진 도구로 사용하려면 Open Terminal 인스턴스에 연결하세요. 한 번에 하나만 활성화할 수 있습니다.", + "Connect to Open Terminal instances. All users will have access to file browsing and terminal tools through these servers.": "Open Terminal 인스턴스에 연결합니다. 모든 사용자는 이 서버를 통해 파일 탐색과 터미널 도구를 사용할 수 있습니다.", + "Connect to your own OpenAI compatible API endpoints.": "OpenAI 호환 API 엔드포인트에 연결합니다.", + "Connect to your own OpenAPI compatible external tool servers.": "OpenAPI 호환 외부 도구 서버에 연결합니다.", + "Connected ({{type}})": "{{type}}에 연결됨", + "Connection failed": "연결 실패", + "Connection lost. Reconnecting...": "연결이 끊겼습니다. 재연결 중...", + "Connection successful": "연결 성공", + "Connection Type": "연결 방식", + "Connections": "연결", + "Connections saved successfully": "연결이 성공적으로 저장되었습니다", + "Connections settings updated": "연결 설정이 업데이트되었습니다", + "Constrains effort on reasoning for reasoning models. Only applicable to reasoning models from specific providers that support reasoning effort.": "추론 모델의 추론 난이도를 제한합니다. 추론 난이도를 지원하는 특정 공급자의 추론 모델에만 적용됩니다.", + "Contact Admin for WebUI Access": "WebUI 접속을 위해서는 관리자에게 연락에 연락하십시오", + "Content": "내용", + "Content Extraction Engine": "콘텐츠 추출 엔진", + "Content lengths (character counts only)": "콘텐츠 길이(문자 수만)", + "Context Tokens": "", + "Continue Response": "응답 이어 받기", + "Continue with {{provider}}": "{{provider}}로 계속", + "Continue with Email": "이메일로 계속", + "Continue with LDAP": "LDAP로 계속", + "Control how message text is split for TTS requests. 'Punctuation' splits into sentences, 'paragraphs' splits into paragraphs, and 'none' keeps the message as a single string.": "TTS 요청에 메시지가 어떻게 나눠지는지 제어하십시오. 'Punctuation'는 문장으로 나누고, 'paragraphs'은 문단으로 나누고, '없음'은 메시지를 하나의 문자열로 인식합니다.", + "Control the repetition of token sequences in the generated text. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 1.1) will be more lenient. At 1, it is disabled.": "생성된 텍스트에서 토큰 시퀀스의 반복을 제어합니다. 높은 값(예: 1.5)은 반복에 더 강한 페널티를 부과하고, 낮은 값(예: 1.1)은 더 관대합니다. 1일 경우 비활성화됩니다.", + "Controls": "제어", + "Controls the balance between coherence and diversity of the output. A lower value will result in more focused and coherent text.": "출력의 일관성과 다양성 간의 균형을 제어합니다. 낮은 값은 더 집중되고 일관성 있는 텍스트를 생성합니다.", + "Conversation saved successfully": "대화가 성공적으로 저장되었습니다", + "Copied": "복사됨", + "Copied link to clipboard": "클립보드에 링크가 복사되었습니다", + "Copied shared chat URL to clipboard!": "채팅 공유 URL이 클립보드에 복사되었습니다!", + "Copied to clipboard": "클립보드에 복사되었습니다", + "Copy": "복사", + "Copy API Key": "API 키 복사", + "Copy content": "콘텐츠 복사", + "Copy Formatted Text": "서식 있는 텍스트 복사", + "Copy Last Code Block": "마지막 코드 블록 복사", + "Copy Last Response": "마지막 응답 복사", + "Copy link": "링크 복사", + "Copy Link": "링크 복사", + "Copy Path": "경로 복사", + "Copy Prompt": "프롬프트 복사", + "Copy Share Link": "공유 링크 복사", + "Copy to clipboard": "클립보드에 복사", + "Copy Token": "토큰 복사", + "Copy URL": "URL 복사", + "Copying to clipboard was successful!": "성공적으로 클립보드에 복사되었습니다!", + "CORS must be properly configured by the provider to allow requests from Open WebUI.": "Open WebUI의 요청을 허용하려면 공급자가 CORS를 올바르게 구성해야 합니다.", + "Could not read file.": "파일을 읽을 수 없습니다.", + "CPU": "CPU", + "Create": "생성", + "Create a knowledge base": "지식 기반 생성", + "Create a model": "모델 생성", + "Create a new note": "새 노트 생성", + "Create Account": "계정 생성", + "Create Admin Account": "관리자 계정 생성", + "Create and manage scheduled automations": "예약된 자동화를 생성하고 관리합니다", + "Create Channel": "채널 생성", + "Create Folder": "폴더 생성", + "Create Image": "이미지 생성", + "Create Knowledge": "지식 생성", + "Create Model": "모델 생성", + "Create new key": "새로운 키 생성", + "Create new secret key": "새로운 비밀 키 생성", + "Create note": "노트 생성", + "Create Note": "노트 생성", + "Create scheduled prompts that run automatically on a recurring basis.": "반복적으로 자동으로 실행되는 예약 프롬프트를 생성합니다.", + "Create your first note by clicking on the plus button below.": "아래의 플러스 버튼을 클릭하여 첫 번째 노트를 생성하세요.", + "Created at": "생성일", + "Created At": "생성일", + "Created by": "작성자", + "Created by you": "당신이 생성함", + "Created on {{date}}": "{{date}}에 생성됨", + "CSV Import": "CSV 가져오기", + "Ctrl+Enter to Send": "Ctrl+Enter로 보내기", + "Current Model": "현재 모델", + "Current Password": "현재 비밀번호", + "Custom": "사용자 정의", + "Custom color": "", + "Custom description enabled": "사용자 정의 설명 활성화됨", + "Custom Gender": "사용자 정의 성별", + "Custom Parameter Name": "사용자 정의 매개변수 이름", + "Custom Parameter Value": "사용자 정의 매개변수 값", + "Daily": "매일", + "Daily Messages": "일일 메시지", + "Danger Zone": "위험 기능", + "Dark": "다크", + "Data Controls": "데이터 제어", + "Database": "데이터베이스", + "Datalab Marker API": "Datalab Marker API", + "Date Modified": "", + "Day": "일", + "DD/MM/YYYY": "YYYY/MM/DD", + "DDGS Backend": "DDGS 백엔드", + "December": "12월", + "Decrease UI Scale": "UI 크기 축소", + "Deepgram": "Deepgram", + "Default": "기본값", + "Default (Open AI)": "기본값 (Open AI)", + "Default (SentenceTransformers)": "기본값 (SentenceTransformers)", + "Default action buttons will be used.": "기본 작업 버튼이 사용됩니다.", + "Default description enabled": "기본 설명 활성화됨", + "Default Features": "기본 기능", + "Default Filters": "기본 필터", + "Default Group": "기본 그룹", + "Default mode works with a wider range of models by calling tools once before execution. Native mode leverages the model's built-in tool-calling capabilities, but requires the model to inherently support this feature.": "기본 모드는 실행 전에 도구를 한 번 호출하여 더 다양한 모델에서 작동합니다. 기본 모드는 모델에 내장된 도구 호출 기능을 활용하지만, 모델이 이 기능을 본질적으로 지원해야 합니다.", + "Default Model": "기본 모델", + "Default model updated": "기본 모델이 업데이트되었습니다.", + "Default permissions": "기본 권한", + "Default permissions updated successfully": "성공적으로 기본 권한이 수정되었습니다", + "Default Prompt Suggestions": "기본 프롬프트 제안", + "Default to 389 or 636 if TLS is enabled": "TLS가 활성화된 경우 기본값은 389 또는 636입니다", + "Default to ALL": "기본값: 전체", + "Default to segmented retrieval for focused and relevant content extraction, this is recommended for most cases.": "집중적이고 관련성 있는 콘텐츠 추출을 위해 세분화된 검색을 기본으로 하며, 대부분의 경우에 권장됩니다.", + "Default User Role": "기본 사용자 역할", + "Defaults": "기본값", + "Delete": "삭제", + "Delete {{name}}": "{{name}} 삭제", + "Delete a model": "모델 삭제", + "Delete All": "모두 삭제", + "Delete All Chats": "모든 채팅 삭제", + "Delete all contents inside this directory": "", + "Delete all contents inside this folder": "이 폴더 내 모든 콘텐츠 삭제", + "Delete automation?": "자동 삭제하시겠습니까?", + "Delete calendar": "캘린더 삭제", + "Delete Calendar": "캘린더 삭제", + "Delete Chat": "채팅 삭제", + "Delete chat?": "채팅을 삭제하시겠습니까?", + "Delete directory?": "", + "Delete Event": "이벤트 삭제", + "Delete File": "파일 삭제", + "Delete folder?": "폴더를 삭제하시겠습니까?", + "Delete function?": "함수를 삭제하시겠습니까?", + "Delete Memory?": "메모리를 삭제하시겠습니까?", + "Delete Message": "메시지 삭제", + "Delete message?": "메시지를 삭제하시겠습니까?", + "Delete Model": "모델 삭제", + "Delete note?": "노트를 삭제하시겠습니까?", + "Delete prompt?": "프롬프트를 삭제하시겠습니까?", + "Delete skill?": "스킬을 삭제하시겠습니까?", + "delete this link": "이 링크를 삭제합니다.", + "Delete tool?": "도구를 삭제하시겠습니까?", + "Delete User": "사용자 삭제", + "Delete Version": "버전 삭제", + "Deleted": "삭제됨", + "Deleted {{deleteModelTag}}": "{{deleteModelTag}} 삭제됨", + "Deleted {{name}}": "{{name}}을(를) 삭제했습니다.", + "Deleted {{ok}} of {{total}} items": "총 {{total}}개 항목 중 {{ok}}개가 삭제되었습니다.", + "Deleted User": "삭제된 사용자", + "Deployment names are required for Azure OpenAI": "Azure OpenAI 사용 시 배포 이름은 필수입니다.", + "Desc": "내림차순", + "Describe the edit...": "편집 내용 설명...", + "Describe the image...": "이미지 설명...", + "Describe what changed...": "변경 내용 설명...", + "Describe your knowledge base and objectives": "지식 기반에 대한 설명과 목적을 입력하세요", + "Description": "설명", + "Deselect": "선택 해제", + "Detect Artifacts Automatically": "아티팩트 자동 감지", + "Dictate": "마이크 사용", + "Didn't fully follow instructions": "완전히 지침을 따르지 않음", + "Direct": "직접", + "Direct Connections": "직접 연결", + "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "직접 연결을 통해 사용자는 자체 OpenAI 호환 API 엔드포인트에 연결할 수 있습니다.", + "Direct Message": "1:1 메시지", + "Direct Tool Servers": "다이렉트 도구 서버", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", + "Directory selection was cancelled": "디렉토리 선택이 취소되었습니다.", + "Disable All": "모두 비활성화", + "Disable Code Interpreter": "코드 인터프리터 비활성화", + "Disable Image Extraction": "이미지 추출 비활성화", + "Disable image extraction from the PDF. If Use LLM is enabled, images will be automatically captioned. Defaults to False.": "PDF에서 이미지 추출을 비활성화합니다. Use LLM이 활성화된 경우 이미지는 자동으로 캡션이 달립니다. 기본값은 False입니다.", + "Disabled": "제한됨", + "Disconnect OAuth": "", + "Discover a function": "함수 검색", + "Discover a model": "모델 검색", + "Discover a prompt": "프롬프트 검색", + "Discover a tool": "도구 검색", + "Discover how to use Open WebUI and seek support from the community.": "Open WebUI 사용 방법을 알아보고 커뮤니티에서 지원을 받으세요.", + "Discover wonders": "놀라움을 체험하세요", + "Discover, download, and explore custom functions": "사용자 정의 함수 검색, 다운로드 및 탐색", + "Discover, download, and explore custom prompts": "사용자 정의 프롬프트 검색, 다운로드 및 탐색", + "Discover, download, and explore custom tools": "사용자 정의 도구 검색, 다운로드 및 탐색", + "Discover, download, and explore model presets": "모델 사전 설정 검색, 다운로드 및 탐색", + "Discussion channel where access is based on groups and permissions": "그룹과 권한을 기반으로 액세스하는 토론 채널", + "Display": "표시", + "Display chat title in tab": "탭에 채팅 목록 표시", + "Display Emoji in Call": "음성기능에서 이모지 표시", + "Display Multi-model Responses in Tabs": "탭에 여러 모델 응답 표시", + "Display the username instead of You in the Chat": "채팅에서 '당신' 대신 사용자 이름 표시", + "Displays citations in the response": "응답에 인용 표시", + "Displays status updates (e.g., web search progress) in the response": "응답에 상태 업데이트(예: 웹 검색 진행 상황)를 표시합니다", + "Dive into knowledge": "지식 탐구", + "Do not install functions from sources you do not fully trust.": "불분명한 출처를 가진 함수를 설치하지마세요", + "Do not install tools from sources you do not fully trust.": "불분명한 출처를 가진 도구를 설치하지마세요", + "Do you want to sync your usage stats with Open WebUI Community?": "사용 통계를 Open WebUI 커뮤니티와 동기화하시겠습니까?", + "Docling": "Docling", + "Docling Parameters": "Docling 매개변수", + "Docling Server URL required.": "Docling 서버 URL이 필요합니다.", + "Document": "문서", + "Document Intelligence": "문서 인텔리전스", + "Document Intelligence endpoint required.": "문서 인텔리전스 엔드포인트가 필요합니다.", + "Document Intelligence Model": "문서 인텔리전스 모델", + "Documentation": "문서", + "Documents": "문서", + "does not make any external connections, and your data stays securely on your locally hosted server.": "외부와 어떠한 연결도 하지 않으며, 데이터는 로컬에서 호스팅되는 서버에 안전하게 유지됩니다.", + "Domain Filter List": "도메인 필터 목록", + "don't fetch random pipelines from sources you don't trust.": "신뢰하지 않는 출처에서 임의의 파이프라인을 가져오지 마세요.", + "Don't have an account?": "계정이 없으신가요?", + "don't install random functions from sources you don't trust.": "불분명한 출처를 가진 임의의 함수를 설치하지마세요", + "don't install random tools from sources you don't trust.": "불분명한 출처를 가진 임의의 도구를 설치하지마세요", + "Don't like the style": "스타일이 마음에 안 드시나요?", + "Done": "완료됨", + "Download": "다운로드", + "Download & Delete": "다운로드 및 삭제", + "Download as JSON": "JSON으로 다운로드", + "Download as SVG": "SVG로 다운로드", + "Download canceled": "다운로드 취소", + "Download Database": "데이터베이스 다운로드", + "Downloading stats...": "통계 다운로드 중...", + "Draw": "그리기", + "Drop any files here to upload": "여기에 파일을 끌어다 놓아 업로드하세요", + "Drop files here": "파일을 여기에 끌어다 놓으세요", + "Drop files here to upload": "업로드할 파일을 여기에 끌어다 놓으세요", + "DuckDuckGo": "DuckDuckGo", + "e.g. '30s','10m'. Valid time units are 's', 'm', 'h'.": "예: '30초','10분'. 올바른 시간 단위는 '초', '분', '시'입니다.", + "e.g. 'low', 'medium', 'high'": "예: '낮음', '중간', '높음'", + "e.g. \"json\" or a JSON schema": "예: \\\"json\\\" 또는 JSON 스키마", + "e.g. 60": "예: 60", + "e.g. A filter to remove profanity from text": "예: 텍스트에서 비속어를 제거하는 필터", + "e.g. about the Roman Empire": "예: 로마 제국에 대해", + "e.g. alloy, echo, shimmer": "예: alloy, echo, shimmer", + "e.g. Code Review Guidelines": "예: 코드 리뷰 가이드라인", + "e.g. code-review-guidelines": "예: code-review-guidelines", + "e.g. en": "예: en", + "e.g. My Filter": "예: 내 필터", + "e.g. My Tools": "예: 내 도구", + "e.g. my_filter": "예: my_filter", + "e.g. my_tools": "예: my_tools", + "e.g. pdf, docx, txt": "예: pdf, docx, txt", + "e.g. Step-by-step instructions for code reviews": "예: 코드 리뷰를 위한 단계별 지침", + "e.g. Tell me a fun fact": "예: 재미있는 사실을 말해주세요", + "e.g. Tell me a fun fact about the Roman Empire": "예: 로마 제국에 대한 재미있는 사실을 말해주세요", + "e.g. Tools for performing various operations": "예: 다양한 작업을 수행하는 도구", + "e.g., 3, 4, 5 (leave blank for default)": "예: 3, 4, 5 (기본값을 위해 비워 두세요)", + "e.g., audio/wav,audio/mpeg,video/* (leave blank for defaults)": "예: audio/wav,audio/mpeg,video/* (기본값은 빈칸)", + "e.g., en-US,ja-JP (leave blank for auto-detect)": "예: en-US, ja-JP (자동 감지를 위해 비워 두세요)", + "e.g., westus (leave blank for eastus)": "예: westus (eastus를 위해 비워 두세요)", + "Edit": "편집", + "Edit Arena Model": "아레나 모델 편집", + "Edit Channel": "채널 편집", + "Edit Connection": "연결 편집", + "Edit Default Permissions": "기본 권한 편집", + "Edit Folder": "폴더 편집", + "Edit Image": "이미지 편집", + "Edit Last Message": "마지막 메시지 편집", + "Edit Memory": "메모리 편집", + "Edit Prompt": "프롬프트 편집", + "Edit Terminal Connection": "터미널 연결 편집", + "Edit User": "사용자 편집", + "Edit User Group": "사용자 그룹 편집", + "Edit workflow.json content": "workflow.json 콘텐츠 편집", + "edited": "수정됨", + "Edited": "수정됨", + "Editing": "수정중", + "Eject": "추출", + "Eject model": "모델 추출", + "ElevenLabs": "ElevenLabs", + "Email": "이메일", + "Embark on adventures": "모험을 떠나기", + "Embedding": "임베딩", + "Embedding Batch Size": "임베딩 배치 크기", + "Embedding Concurrent Requests": "임베딩 동시 요청 수", + "Embedding Model": "임베딩 모델", + "Embedding Model Engine": "임베딩 모델 엔진", + "Emoji": "", + "Emojis": "이모티콘", + "Empty message": "빈 메시지", + "Enable All": "모두 활성화", + "Enable API Keys": "API 키 활성화", + "Enable autocomplete generation for chat messages": "채팅 메시지에 대한 자동 완성 생성 활성화", + "Enable Code Execution": "코드 실행 활성화", + "Enable Code Interpreter": "코드 인터프리터 활성화", + "Enable Community Sharing": "커뮤니티 공유 활성화", + "Enable Memory Locking (mlock) to prevent model data from being swapped out of RAM. This option locks the model's working set of pages into RAM, ensuring that they will not be swapped out to disk. This can help maintain performance by avoiding page faults and ensuring fast data access.": "모델 데이터가 RAM에서 스왑 아웃되는 것을 방지하기 위해 메모리 잠금(mlock)을 활성화합니다. 이 옵션은 모델의 작업 페이지 집합을 RAM에 잠가 디스크로 스왑 아웃되지 않도록 보장합니다. 이는 페이지 폴트를 피하고 빠른 데이터 액세스를 보장하여 성능을 유지하는 데 도움이 될 수 있습니다.", + "Enable Memory Mapping (mmap) to load model data. This option allows the system to use disk storage as an extension of RAM by treating disk files as if they were in RAM. This can improve model performance by allowing for faster data access. However, it may not work correctly with all systems and can consume a significant amount of disk space.": "모델 데이터를 로드하기 위해 메모리 매핑(mmap)을 활성화합니다. 이 옵션을 사용하면 시스템이 디스크 파일을 RAM에 있는 것처럼 처리하여 디스크 스토리지를 RAM의 확장으로 사용할 수 있습니다. 이는 더 빠른 데이터 액세스를 허용하여 모델 성능을 향상시킬 수 있습니다. 그러나 모든 시스템에서 올바르게 작동하지 않을 수 있으며 상당한 양의 디스크 공간을 소비할 수 있습니다.", + "Enable Message Queue": "메시지 큐 활성화", + "Enable Message Rating": "메시지 평가 활성화", + "Enable Mirostat sampling for controlling perplexity.": "퍼플렉서티 제어를 위해 Mirostat 샘플링 활성화", + "Enable New Sign Ups": "새 회원가입 활성화", + "Enable, disable, or customize the reasoning tags used by the model. \"Enabled\" uses default tags, \"Disabled\" turns off reasoning tags, and \"Custom\" lets you specify your own start and end tags.": "모델이 사용하는 추론 태그를 활성화, 비활성화 또는 사용자 지정할 수 있습니다. \"활성화됨\"은 기본 태그를 사용하고, \"비활성화됨\"은 추론 태그를 끄며, \"사용자 지정\"은 직접 시작 및 종료 태그를 지정할 수 있습니다.", + "Enabled": "활성화됨", + "End Tag": "종료 태그", + "Endpoint URL": "엔드포인트 URL", + "Enforce Temporary Chat": "임시 채팅 강제 적용", + "Enhance": "향상", + "Enrich Hybrid Search Text": "하이브리드 검색 텍스트 강화", + "Ensure your CSV file includes 4 columns in this order: Name, Email, Password, Role.": "CSV 파일에 이름, 이메일, 비밀번호, 역할 4개의 열이 순서대로 포함되어 있는지 확인하세요.", + "Enter {{role}} message here": "여기에 {{role}} 메시지 입력", + "Enter a detail about yourself for your LLMs to recall": "자신에 대한 세부사항을 입력하여 LLM들이 기억할 수 있도록 하세요.", + "Enter a title for the pending user info overlay. Leave empty for default.": "대기 중인 사용자 정보 오버레이의 제목을 입력하세요. 비워두면 기본값이 사용됩니다.", + "Enter a watermark for the response. Leave empty for none.": "응답에 사용할 워터마크를 입력하세요. 비워두면 워터마크가 적용되지 않습니다.", + "Enter additional headers in JSON format": "추가 헤더를 JSON 형식으로 입력하세요", + "Enter additional headers in JSON format (e.g. {\"X-Custom-Header\": \"value\"}": "추가 헤더를 JSON 형식으로 입력하세요(예: {\"X-Custom-Header\": \"value\"})", + "Enter additional parameters in JSON format": "추가 매개변수를 JSON 형식으로 입력하세요", + "Enter api auth string (e.g. username:password)": "API 인증 문자 입력 (예: 사용자 이름:비밀번호)", + "Enter Application DN": "애플리케이션 DN 입력", + "Enter Application DN Password": "애플리케이션 DN 비밀번호 입력", + "Enter Bing Search V7 Endpoint": "Bing Search V7 엔드포인트 입력", + "Enter Bing Search V7 Subscription Key": "Bing Search V7 구독 키 입력", + "Enter Bocha Search API Key": "Bocha 검색 API 키 입력", + "Enter Brave Search API Key": "Brave Search API Key 입력", + "Enter certificate path": "인증서 경로 입력", + "Enter Chunk Min Size Target": "청크 최소 크기 목표 입력", + "Enter Chunk Overlap": "청크 중첩 입력", + "Enter Chunk Size": "청크 크기 입력", + "Enter comma-separated \"token:bias_value\" pairs (example: 5432:100, 413:-100)": "쉼표로 구분된 \\\"토큰:편향_값\\\" 쌍 입력 (예: 5432:100, 413:-100)", + "Enter content for the pending user info overlay. Leave empty for default.": "대기 중인 사용자 정보 오버레이에 들어갈 내용을 입력하세요. 비워두면 기본값이 사용됩니다.", + "Enter coordinates (e.g. 51.505, -0.09)": "좌표 입력 (예: 51.505, -0.09)", + "Enter Datalab Marker API Base URL": "Datalab Marker API URL 입력", + "Enter Datalab Marker API Key": "Datalab Marker API 키 입력", + "Enter description": "설명 입력", + "Enter Docling API Key": "Docling API 키 입력", + "Enter Docling Server URL": "Docling 서버 URL 입력", + "Enter Document Intelligence Endpoint": "Document Intelligence 엔드포인트 입력", + "Enter Document Intelligence Key": "Document Intelligence 키 입력", + "Enter Document Intelligence Model": "Document Intelligence 모델 입력", + "Enter domains separated by commas (e.g., example.com,site.org,!excludedsite.com)": "쉼표로 구분하여 도메인을 입력하세요(예: example.com,site.org,!excludedsite.com)", + "Enter Exa API Key": "Exa API 키 입력", + "Enter External Document Loader API Key": "외부 문서 로더 API 키 입력", + "Enter External Document Loader URL": "외부 문서 로더 URL 입력", + "Enter External Web Loader API Key": "외부 웹 로더 API 키 입력", + "Enter External Web Loader URL": "외부 웹 로더 URL 입력", + "Enter External Web Search API Key": "외부 웹 검색 API 키 입력", + "Enter External Web Search URL": "외부 웹 검색 URL 입력", + "Enter Firecrawl API Base URL": "Firecrawl API 기본 URL 입력", + "Enter Firecrawl API Key": "Firecrawl API 키 입력", + "Enter Firecrawl Timeout": "Firecrawl 시간 초과 입력", + "Enter folder name": "폴더 이름 입력", + "Enter function name filter list (e.g. func1, !func2)": "함수 이름 필터 목록을 입력하세요(예: func1, !func2)", + "Enter Github Raw URL": "Github Raw URL 입력", + "Enter Google PSE API Key": "Google PSE API 키 입력", + "Enter Google PSE Engine Id": "Google PSE 엔진 ID 입력", + "Enter hex color (e.g. #FF0000)": "색상 hex 입력 (예: #FF0000)", + "Enter Image Size (e.g. 512x512)": "이미지 크기 입력(예: 512x512)", + "Enter Jina API Base URL": "Jina API 기본 URL 입력", + "Enter Jina API Key": "Jina API 키 입력", + "Enter JSON config (e.g., {\"disable_links\": true})": "JSON 설정 입력 (예: {\"disable_links\": true})", + "Enter Jupyter Password": "Jupyter 비밀번호 입력", + "Enter Jupyter Token": "Jupyter 토큰 입력", + "Enter Jupyter URL": "Jupyter URL 입력", + "Enter Kagi Search API Key": "Kagi Search API 키 입력", + "Enter Key Behavior": "키 동작 입력", + "Enter language codes": "언어 코드 입력", + "Enter Linkup API Key": "", + "Enter MinerU API Key": "MinerU API 키 입력", + "Enter Mistral API Base URL": "Mistral API Base URL 입력", + "Enter Mistral API Key": "Mistral API 키 입력", + "Enter Model ID": "모델 ID 입력", + "Enter model tag (e.g. {{modelTag}})": "모델 태그 입력(예: {{modelTag}})", + "Enter Mojeek Search API Key": "Mojeek Search API 키 입력", + "Enter name": "이름 입력", + "Enter New Password": "새로운 비밀번호 입력", + "Enter Number of Steps (e.g. 50)": "단계 수 입력(예: 50)", + "Enter Ollama Cloud API Key": "Ollama 클라우드 API 키 입력", + "Enter PaddleOCR-vl API Base URL": "", + "Enter PaddleOCR-vl API Token": "", + "Enter Perplexity API Key": "Perplexity API 키 입력", + "Enter Perplexity Search API URL": "Perplexity 검색 API URL 입력", + "Enter Playwright Timeout": "Playwright 시간 초과 입력", + "Enter Playwright WebSocket URL": "Playwright WebSocket URL 입력", + "Enter prompt here.": "여기에 프롬프트를 입력하세요.", + "Enter proxy URL (e.g. https://user:password@host:port)": "프록시 URL 입력(예: https://user:password@host:port)", + "Enter reasoning effort": "추론 난이도", + "Enter Score": "점수 입력", + "Enter SearchApi API Key": "SearchApi API 키 입력", + "Enter SearchApi Engine": "SearchApi 엔진 입력", + "Enter Searxng Query URL": "Searxng 쿼리 URL 입력", + "Enter Searxng search language": "Searxng 검색 언어 입력", + "Enter Seed": "Seed 입력", + "Enter SerpApi API Key": "SerpApi API 키 입력", + "Enter SerpApi Engine": "SerpApi 엔진 입력", + "Enter Serper API Key": "Serper API 키 입력", + "Enter Serply API Key": "Serply API 키 입력", + "Enter Serpstack API Key": "Serpstack API 키 입력", + "Enter server host": "서버 호스트 입력", + "Enter server label": "서버 레이블 입력", + "Enter server port": "서버 포트 입력", + "Enter skill instructions in markdown...": "마크다운 형식으로 스킬 지침을 입력하세요...", + "Enter Sougou Search API sID": "Sougou 검색 API sID 입력", + "Enter Sougou Search API SK": "Sougou 검색 API SK 입력", + "Enter stop sequence": "중지 시퀀스 입력", + "Enter system prompt": "시스템 프롬프트 입력", + "Enter system prompt here": "여기에 시스템 프롬프트 입력", + "Enter Tavily API Key": "Tavily API 키 입력", + "Enter Tavily Extract Depth": "Tavily 추출 깊이 입력", + "Enter the prompt instructions for this automation...": "이 자동화의 프롬프트 지침을 입력하세요...", + "Enter the public URL of your WebUI. This URL will be used to generate links in the notifications.": "WebUI의 공개 URL을 입력해 주세요. 이 URL은 알림에서 링크를 생성하는 데 사용합니다.", + "Enter the URL of the function to import": "가져올 함수의 URL 입력", + "Enter the URL to import": "가져올 URL 입력", + "Enter Tika Server URL": "Tika 서버 URL 입력", + "Enter timeout in seconds": "시간 초과(초) 입력", + "Enter to Send": "Enter로 보내기", + "Enter Top K": "Top K 입력", + "Enter Top K Reranker": "Top K 리랭커 입력", + "Enter URL (e.g. http://127.0.0.1:7860/)": "URL 입력(예: http://127.0.0.1:7860/)", + "Enter URL (e.g. http://localhost:11434)": "URL 입력(예: http://localhost:11434)", + "Enter value": "값 입력", + "Enter value (true/false)": "값 입력(true/false)", + "Enter Yacy Password": "Yacy 비밀번호 입력", + "Enter Yacy URL (e.g. http://yacy.example.com:8090)": "Yacy URL 입력(예: http://yacy.example.com:8090)", + "Enter Yacy Username": "Yacy 사용자 이름 입력", + "Enter Yandex Web Search API Key": "Yandex 웹 검색 API 키 입력", + "Enter Yandex Web Search URL": "Yandex 웹 검색 URL 입력", + "Enter You.com API Key": "You.com API 키 입력", + "Enter your code here...": "여기에 코드를 입력하세요...", + "Enter your current password": "현재 비밀번호를 입력해 주세요", + "Enter Your Email": "이메일 입력", + "Enter Your Full Name": "전체 이름 입력", + "Enter your gender": "성별 입력", + "Enter your message": "메시지 입력", + "Enter your name": "이름 입력", + "Enter Your Name": "이름 입력", + "Enter your new password": "새로운 비밀번호를 입력해 주세요", + "Enter Your Password": "비밀번호 입력", + "Enter Your Role": "역할 입력", + "Enter Your Username": "사용자 이름 입력", + "Enter your webhook URL": "웹훅 URL을 입력해 주세요", + "Entra ID": "Entra ID", + "Environment Variables": "환경 변수", + "Ephemeral": "임시", + "Error": "오류", + "ERROR": "오류", + "Error accessing directory": "디렉토리 액세스 오류", + "Error accessing Google Drive: {{error}}": "Google Drive 액세스 오류: {{error}}", + "Error accessing media devices.": "미디어 장치 액세스 오류", + "Error deleting model: {{error}}": "모델 삭제 중 오류: {{error}}", + "Error starting recording.": "녹화 시작 오류", + "Error unloading model: {{error}}": "모델 언로드 오류: {{error}}", + "Error uploading file: {{error}}": "파일 업로드 오류: {{error}}", + "Error: A model with the ID '{{modelId}}' already exists. Please select a different ID to proceed.": "오류: ID가 '{{modelId}}'인 모델이 이미 존재합니다. 계속하려면 다른 ID를 선택하세요.", + "Error: Model ID cannot be empty. Please enter a valid ID to proceed.": "오류: 모델 ID는 비워둘 수 없습니다. 계속하려면 유효한 ID를 입력하세요.", + "Evaluations": "평가", + "Event created": "이벤트가 생성되었습니다.", + "Event deleted": "이벤트가 삭제되었습니다.", + "Event title": "이벤트 제목", + "Event updated": "이벤트가 업데이트되었습니다.", + "Exa API Key": "Exa API 키", + "Example: (&(objectClass=inetOrgPerson)(uid=%s))": "예: (&(objectClass=inetOrgPerson)(uid=%s))", + "Example: ALL": "예: 전체", + "Example: mail": "예: 메일", + "Example: ou=users,dc=foo,dc=example": "예: ou=users,dc=foo,dc=example", + "Example: sAMAccountName or uid or userPrincipalName": "예: sAMAccountName or uid or userPrincipalName", + "Exceeded the number of seats in your license. Please contact support to increase the number of seats.": "라이선스의 좌석 수를 초과했습니다. 좌석 수를 늘리려면 지원팀에 문의해 주세요.", + "Exclude": "미포함", + "Execute code": "코드 실행", + "Execute code for analysis": "분석을 위한 코드 실행", + "Executing **{{NAME}}**...": "**{{NAME}}** 실행 중...", + "Execution Logs": "실행 로그", + "Expand": "확장", + "Experimental": "실험적", + "Explain": "설명", + "Explore the cosmos": "우주 탐험", + "Explored": "탐색 완료", + "Exploring": "탐색 중", + "Export": "내보내기", + "Export All Archived Chats": "모든 보관된 채팅 내보내기", + "Export All Chats (All Users)": "모든 채팅 내보내기(모든 사용자)", + "Export as CSV": "CSV로 내보내기", + "Export as JSON": "JSON으로 내보내기", + "Export chat (.json)": "채팅 내보내기 (.json)", + "Export Chats": "채팅 내보내기", + "Export Config": "설정 내보내기", + "Export Models": "모델 내보내기", + "Export Prompts": "프롬프트 내보내기", + "Export to CSV": "CSV로 내보내기", + "Export Tools": "도구 내보내기", + "Export Users": "사용자 정보 내보내기", + "External": "외부", + "External Document Loader URL required.": "외부 문서 로더 URL이 필요합니다.", + "External Task Model": "외부 작업 모델", + "External Web Loader API Key": "외부 웹 로더 API 키", + "External Web Loader URL": "외부 웹 로더 URL", + "External Web Search API Key": "외부 웹 검색 API 키", + "External Web Search URL": "외부 웹 검색 URL", + "Fade Effect for Streaming Text": "스트리밍 텍스트에 대한 페이드 효과", + "Failed to add file.": "파일추가에 실패했습니다", + "Failed to add members": "멤버 추가에 실패했습니다", + "Failed to archive chat.": "채팅 보관에 실패했습니다.", + "Failed to attach file": "파일 첨부에 실패했습니다", + "Failed to clear status": "상태 초기화에 실패했습니다", + "Failed to compare files.": "", + "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI 도구 서버 연결 실패", + "Failed to connect to {{URL}} terminal server": "{{URL}} 터미널 서버 연결에 실패했습니다", + "Failed to copy link": "링크 복사 실패", + "Failed to create API Key.": "API 키 생성에 실패했습니다.", + "Failed to delete calendar": "캘린더 삭제에 실패했습니다.", + "Failed to delete note": "노트 삭제 실패", + "Failed to disconnect": "", + "Failed to download image": "이미지 다운로드에 실패했습니다", + "Failed to extract content from the file: {{error}}": "파일 내용 추출 실패: {{error}}", + "Failed to extract content from the file.": "파일 내용 추출 실패.", + "Failed to fetch models": "모델 조회 실패", + "Failed to generate title": "제목 생성 실패", + "Failed to import models": "모델 가져오기 실패", + "Failed to load chat preview": "채팅 미리보기 로드 실패", + "Failed to load DOCX file. Please try downloading it instead.": "DOCX 파일을 불러오지 못했습니다. 대신 다운로드해 보세요.", + "Failed to load Excel/CSV file. Please try downloading it instead.": "Excel/CSV 파일을 불러오지 못했습니다. 대신 다운로드해 보세요.", + "Failed to load file content.": "파일 내용 로드 실패.", + "Failed to load Interface settings": "인터페이스 설정을 불러오지 못했습니다", + "Failed to load PPTX file. Please try downloading it instead.": "PPTX 파일을 불러오지 못했습니다. 대신 다운로드해 보세요.", + "Failed to move chat": "채팅 이동 실패", + "Failed to process URL: {{url}}": "URL 처리에 실패했습니다: {{url}}", + "Failed to read clipboard contents": "클립보드 내용 가져오기를 실패하였습니다", + "Failed to remove member": "멤버 삭제에 실패했습니다", + "Failed to render diagram": "다이어그램을 표시할 수 없습니다", + "Failed to render visualization": "시각화에 실패했습니다.", + "Failed to save connections": "연결 저장 실패", + "Failed to save conversation": "대화 저장 실패", + "Failed to save models configuration": "모델 구성 저장 실패", + "Failed to save policy: {{error}}": "정책 저장에 실패했습니다: {{error}}", + "Failed to save terminal servers": "터미널 서버 저장에 실패했습니다", + "Failed to unshare chat.": "채팅 공유 해제에 실패했습니다.", + "Failed to update settings": "설정 업데이트에 실패하였습니다", + "Failed to update status": "상태 업데이트에 실패하였습니다", + "Failed to upload file.": "파일 업로드에 실패했습니다.", + "Features": "기능", + "Features Permissions": "기능 권한", + "February": "2월", + "Feedback": "피드백", + "Feedback Activity": "피드백 활동", + "Feedback deleted successfully": "피드백이 성공적으로 삭제되었습니다", + "Feedback Details": "피드백 상세내용", + "Feedback History": "피드백 기록", + "Feel free to add specific details": "자세한 내용을 자유롭게 추가하세요.", + "Female": "여성", + "Fetch URL Content Length Limit": "URL 콘텐츠 길이 제한 가져오기", + "File": "파일", + "File added successfully.": "파일이 성공적으로 추가되었습니다", + "File attached to chat": "파일이 채팅에 첨부되었습니다", + "File browser": "파일 브라우저", + "File content": "파일 내용", + "File content updated successfully.": "내용이 성공적으로 업데이트되었습니다", + "File Context": "파일 컨텍스트", + "File deleted successfully.": "파일이 성공적으로 삭제되었습니다.", + "File Extensions": "", + "File Mode": "파일 모드", + "File moved.": "", + "File name": "파일 이름", + "File not found.": "파일을 찾을 수 없습니다.", + "File removed successfully.": "파일이 성공적으로 삭제되었습니다", + "File renamed.": "", + "File size should not exceed {{maxSize}} MB.": "파일 사이즈가 {{maxSize}} MB를 초과하면 안됩니다.", + "File Upload": "파일 업로드", + "File uploaded successfully": "파일이 성공적으로 업로드되었습니다", + "Filename": "파일명", + "Files": "파일", + "Filter": "필터", + "Filter is now globally disabled": "전반적으로 필터 비활성화됨", + "Filter is now globally enabled": "전반적으로 필터 활성화됨", + "Filters": "필터", + "Fingerprint spoofing detected: Unable to use initials as avatar. Defaulting to default profile image.": "Fingerprint spoofing 감지: 이니셜을 아바타로 사용할 수 없습니다. 기본 프로필 이미지로 설정합니다.", + "Firecrawl API Base URL": "Firecrawl API 기본 URL", + "Firecrawl API Key": "Firecrawl API 키", + "Firecrawl Timeout (s)": "Firecrawl 시간 초과(초)", + "Floating Quick Actions": "플로팅 퀵 액션", + "Focus Chat Input": "채팅 입력창에 포커스", + "Folder": "폴더", + "Folder Background Image": "폴더 배경 이미지", + "Folder created successfully": "폴더가 성공적으로 생성되었습니다", + "Folder deleted successfully": "성공적으로 폴더가 삭제되었습니다", + "Folder Max File Count": "폴더 최대 파일 수", + "Folder name": "폴더 이름", + "Folder Name": "폴더 이름", + "Folder name cannot be empty.": "폴더 이름을 작성해주세요", + "Folder name updated successfully": "성공적으로 폴더 이름이 저장되었습니다", + "Folder options": "폴더 옵션", + "Folder updated successfully": "폴더가 성공적으로 업데이트되었습니다", + "Folders": "폴더", + "Follow up": "후속 질문", + "Follow Up Generation": "후속 질문 생성", + "Follow Up Generation Prompt": "후속 질문 생성 프롬프트", + "Follow up: {{question}}": "후속 질문: {{question}}", + "Follow-Up Auto-Generation": "후속 질문 자동 생성", + "Followed instructions perfectly": "지시를 완벽히 수행함", + "for placeholders": "플레이스홀더용", + "Force OCR": "OCR 강제 적용", + "Force OCR on all pages of the PDF. This can lead to worse results if you have good text in your PDFs. Defaults to False.": "PDF의 모든 페이지에 대해 OCR을 강제로 적용합니다. PDF에 좋은 텍스트가 포함된 경우 결과가 더 나빠질 수 있습니다. 기본값은 False입니다.", + "Forge new paths": "새로운 경로 만들기", + "Form": "폼", + "Format Lines": "줄 서식", + "Format the lines in the output. Defaults to False. If set to True, the lines will be formatted to detect inline math and styles.": "출력되는 줄에 서식을 적용합니다. 기본값은 False입니다. 이 옵션을 True로 하면, 인라인 수식 및 스타일을 감지하도록 줄에 서식이 적용됩니다.", + "Formatting may be inconsistent from source.": "출처에서의 서식이 일관되지 않을 수 있습니다.", + "Forward": "전달", + "Forwards system user OAuth access token to authenticate": "인증을 위해 시스템 사용자 OAuth 액세스 토큰을 전달합니다.", + "Forwards system user session credentials to authenticate": "인증을 위해 시스템 사용자 세션 자격 증명 전달", + "Fr_day_of_week": "Fr_day_of_week", + "Full Context Mode": "전체 컨텍스트 모드", + "Function": "함수", + "Function Calling": "함수 호출", + "Function created successfully": "성공적으로 함수가 생성되었습니다", + "Function deleted successfully": "성공적으로 함수가 삭제되었습니다", + "Function Description": "함수 설명", + "Function ID": "함수 ID", + "Function imported successfully": "성공적으로 함수를 가져왔습니다", + "Function is now globally disabled": "전반적으로 함수 비활성화됨", + "Function is now globally enabled": "전반적으로 함수 활성화됨", + "Function Name": "함수 이름", + "Function Name Filter List": "함수 이름 필터 목록", + "Function updated successfully": "성공적으로 함수가 업데이트되었습니다", + "Functions": "함수", + "Functions allow arbitrary code execution.": "함수가 임의의 코드를 실행하도록 허용하였습니다", + "Functions imported successfully": "성공적으로 함수를 가져왔습니다", + "Gemini": "Gemini", + "Gemini API Key": "Gemini API 키", + "Gemini API Key is required.": "Gemini API 키가 필요합니다.", + "Gemini Base URL": "Gemini 기본 URL", + "Gemini Endpoint Method": "Gemini 엔드포인트 방식", + "Gender": "성별", + "General": "일반", + "Generate": "생성", + "Generate an image": "이미지 생성", + "Generate and edit images": "이미지 생성 및 편집", + "Generate Message Pair": "메시지 쌍 생성", + "Generated Image": "생성된 이미지", + "Generated images will appear here": "생성된 이미지가 여기에 표시됩니다", + "Generating search query": "검색 쿼리 생성", + "Generating...": "생성 중...", + "Get current time and perform date/time calculations": "현재 시간을 가져오고 날짜/시간 계산을 수행합니다", + "Get information on {{name}} in the UI": "UI에서 {{name}} 정보 확인", + "Get started": "시작하기", + "Get started with {{WEBUI_NAME}}": "{{WEBUI_NAME}} 시작하기", + "Global": "글로벌", + "Good Response": "좋은 응답", + "Google": "Google", + "Google Drive": "구글 드라이브", + "Google PSE API Key": "Google PSE API 키", + "Google PSE Engine Id": "Google PSE 엔진 ID", + "Gravatar": "Gravatar", + "Grid": "그리드", + "Grokipedia": "Grokipedia", + "Group Channel": "그룹 채널", + "Group created successfully": "성공적으로 그룹을 생성했습니다", + "Group deleted successfully": "성공적으로 그룹을 삭제했습니다", + "Group Description": "그룹 설명", + "Group Name": "그룹 명", + "Group updated successfully": "성공적으로 그룹을 수정했습니다", + "groups": "그룹들", + "Groups": "그룹", + "H1": "제목 1", + "H2": "제목 2", + "H3": "제목 3", + "Haptic Feedback": "햅틱 피드백", + "Headers": "헤더", + "Headers must be a valid JSON object": "헤더는 유효한 JSON 객체여야 합니다", + "Height": "높이", + "Hello, {{name}}": "안녕하세요, {{name}}", + "Help": "도움말", + "Help the community discover great models": "커뮤니티가 훌륭한 모델을 발견하도록 도와주세요", + "Hex Color": "Hex 색상", + "Hex Color - Leave empty for default color": "Hex 색상 - 기본 색상의 경우 빈 상태로 유지", + "Hidden": "숨겨짐", + "Hide": "숨기기", + "Hide All": "모두 숨기기", + "Hide from Sidebar": "사이드바에서 숨기기", + "Hide Model": "모델 숨기기", + "High": "높은", + "High Contrast Mode": "고대비 모드", + "History": "기록", + "Home": "홈", + "Host": "호스트", + "Hourly": "시간별", + "Hourly Messages": "시간별 메시지", + "How can I help you today?": "무엇을 도와드릴까요?", + "How would you rate this response?": "이 응답을 어떻게 평가하시겠어요?", + "HTML": "HTML", + "http://localhost:8000": "http://localhost:8000", + "https://mineru.net/api/v4": "https://mineru.net/api/v4", + "Hybrid Search": "하이브리드 검색", + "I acknowledge that I have read and I understand the implications of my action. I am aware of the risks associated with executing arbitrary code and I have verified the trustworthiness of the source.": "저는 제 행동의 의미를 읽고 이해했음을 인정합니다. 임의 코드 실행과 관련된 위험을 인지하고 있으며 출처의 신뢰성을 확인했습니다.", + "ID": "ID", + "ID cannot contain \":\" or \"|\" characters": "ID는 \":\" 또는 \"|\" 문자를 포함할 수 없습니다", + "ID copied to clipboard": "ID가 클립보드에 복사되었습닙다", + "Idle Timeout": "Idle 시간 초과", + "iframe Sandbox Allow Forms": "iframe 샌드박스 허용 양식", + "iframe Sandbox Allow Same Origin": "iframe 샌드박스에서 동일한 오리진 허용", + "Ignite curiosity": "호기심 자극", + "Image": "이미지", + "Image Compression": "이미지 압축", + "Image Compression Height": "이미지 압축 높이", + "Image Compression Width": "이미지 압축 너비", + "Image Edit": "이미지 편집", + "Image Edit Engine": "이미지 편집 엔진", + "Image Generation": "이미지 생성", + "Image Generation Engine": "이미지 생성 엔진", + "Image Max Compression Size": "이미지 최대 압축 크기", + "Image Max Compression Size height": "이미지 최대 압축 크기 높이", + "Image Max Compression Size width": "이미지 최대 압축 크기 너비", + "Image Prompt Generation": "이미지 프롬프트 생성", + "Image Prompt Generation Prompt": "이미지 프롬프트를 생성하기 위한 프롬프트", + "Image Size": "이미지 크기", + "Images": "이미지들", + "Import": "가져오기", + "Import Chats": "채팅 가져오기", + "Import Config": "구성 가져오기", + "Import From Link": "링크에서 가져오기", + "Import Models": "모델 가져오기", + "Import Prompts": "프롬프트 가져오기", + "Import successful": "가져오기 성공", + "Import Tools": "도구 가져오기", + "Important Update": "중요 업데이트", + "Inactive": "비활성화", + "Include": "포함", + "Include `--api-auth` flag when running stable-diffusion-webui": "stable-diffusion-webui를 실행 시 `--api-auth` 플래그를 포함하세요", + "Include `--api` flag when running stable-diffusion-webui": "stable-diffusion-webui를 실행 시 `--api` 플래그를 포함하세요", + "Includes SharePoint": "SharePoint 포함", + "Increase UI Scale": "UI 크기 증가", + "Influences how quickly the algorithm responds to feedback from the generated text. A lower learning rate will result in slower adjustments, while a higher learning rate will make the algorithm more responsive.": "생성된 텍스트의 피드백에 알고리즘이 얼마나 빨리 반응하는지에 영향을 미칩니다. 학습률이 낮을수록 조정 속도가 느려지고 학습률이 높아지면 알고리즘의 반응 속도가 빨라집니다.", + "Info": "정보", + "Initials": "초기", + "Inject file content into conversation context": "파일 콘텐츠를 대화 컨텍스트에 삽입", + "Inject the entire content as context for comprehensive processing, this is recommended for complex queries.": "전체 콘텐츠를 포괄적인 처리를 위해 컨텍스트로 삽입하세요. 이는 복잡한 쿼리에 권장됩니다.", + "Input": "입력", + "Input Key (e.g. text, unet_name, steps)": "입력 키 (예: text, unet_name, steps)", + "Input Variables": "변수 입력", + "Insert": "삽입", + "Insert Follow-Up Prompt to Input": "후속 질문을 메시지 입력란에 삽입(자동 전송 없이)", + "Insert Prompt as Rich Text": "프롬프트를 서식 있는 텍스트로 삽입", + "Insert Suggestion Prompt to Input": "입력할 제안 프롬프트 삽입", + "Install from Github URL": "Github URL에서 설치", + "Instant Auto-Send After Voice Transcription": "음성 변환 후 즉시 자동 전송", + "Instructions": "지침", + "Integration": "통합", + "Integrations": "통합", + "Interface": "인터페이스", + "Interface Settings Access": "인터페이스 설정 접근", + "Invalid file content": "잘못된 파일 내용", + "Invalid file format.": "잘못된 파일 형식", + "Invalid JSON file": "잘못된 JSON 파일", + "Invalid JSON format for ComfyUI Edit Workflow.": "잘못된 ComfyUI 편집 워크플로우 JSON 형식입니다.", + "Invalid JSON format for ComfyUI Workflow.": "잘못된 ComfyUI 워크플로우 JSON 형식입니다.", + "Invalid JSON format for Parameters": "잘못된 파라미터 JSON 형식입니다.", + "Invalid JSON format in {{NAME}}": "잘못된 JSON 형식 in {{NAME}}", + "Invalid JSON format in Additional Config": "추가 설정에 잘못된 JSON 형식 입력", + "Invalid JSON format in MinerU Parameters": "MinerU 파라미터에 잘못된 JSON 형식 입력", + "is typing...": "입력 중...", + "Italic": "기울임", + "January": "1월", + "Jina API Base URL": "Jina API 기본 URL", + "Jina API Key": "Jina API 키", + "join our Discord for help.": "도움말을 보려면 Discord에 가입하세요.", + "JSON": "JSON", + "JSON Preview": "JSON 미리 보기", + "JSON Spec": "JSON 스펙", + "July": "7월", + "June": "6월", + "Jupyter Auth": "Jupyter 인증", + "Jupyter URL": "Jupyter URL", + "JWT Expiration": "JWT 만료", + "JWT Token": "JWT 토큰", + "Kagi Search API Key": "Kagi Search API 키", + "Keep Follow-Up Prompts in Chat": "채팅마다 후속 질문이 항상 보이도록 유지", + "Keep in Sidebar": "사이드바에 유지", + "Key": "키", + "Key is required": "키가 필요합니다", + "Keyboard shortcuts": "키보드 단축키", + "Keyboard Shortcuts": "키보드 단축키", + "Knowledge": "지식 기반", + "Knowledge Access": "지식 기반 접근", + "Knowledge Base": "지식 기반", + "Knowledge base has been reset": "", + "Knowledge created successfully.": "성공적으로 지식 기반이 생성되었습니다", + "Knowledge deleted successfully.": "성공적으로 지식 기반이 삭제되었습니다", + "Knowledge Description": "지식 기반 설명", + "Knowledge exported successfully": "성공적으로 지식 기반이 내보내졌습니다", + "Knowledge Name": "지식 기반 이름", + "Knowledge Public Sharing": "지식 기반 공개 공유", + "Knowledge Sharing": "지식 기반 공유", + "Knowledge updated successfully": "성공적으로 지식 기반이 업데이트되었습니다", + "Kokoro.js (Browser)": "Kokoro.js (브라우저)", + "Kokoro.js Dtype": "Kokoro.js 데이터 유형", + "Label": "라벨", + "Landing Page Mode": "랜딩페이지 모드", + "Language": "언어", + "Language Locales": "언어 로케일", + "Last 24 hours": "최근 24시간", + "Last 30 days": "최근 30일", + "Last 7 days": "최근 7일", + "Last 90 days": "최근 90일", + "Last Active": "최근 활동", + "Last Modified": "마지막 수정", + "Last ran": "마지막 실행", + "Last reply": "마지막 답글", + "LDAP": "LDAP", + "LDAP server updated": "LDAP 서버가 업데이트되었습니다", + "Leaderboard": "리더보드", + "Learn more": "자세히 알아보기", + "Learn More": "자세히 알아보기", + "Learn more about Open Terminal": "Open Terminal에 대해 자세히 알아보기", + "Learn more about OpenAPI tool servers.": "OpenAPI 도구 서버에 대해 자세히 알아보세요.", + "Learn more about Voxtral transcription.": "Voxtral 변환에 대해 자세히 알아보세요.", + "Leave a public review for {{modelName}}": "{{modelName}}에 대한 공개 리뷰 남기기", + "Leave empty for no compression": "압축하지 않으려면 비워 두세요", + "Leave empty for unlimited": "제한하지 않으려면 비워 두세요", + "Leave empty to include all models from \"{{url}}\" endpoint": "\"{{url}}\" 엔드포인트의 모든 모델을 포함하려면 비워 두세요", + "Leave empty to include all models from \"{{url}}/api/tags\" endpoint": "\"{{url}}/api/tags\" 엔드포인트의 모든 모델을 포함하려면 비워 두세요", + "Leave empty to include all models from \"{{url}}/models\" endpoint": "\"{{url}}/models\" 엔드포인트의 모든 모델을 포함하려면 비워 두세요", + "Leave empty to include all models or select specific models": "비워두면 모든 모델이 포함되며, 특정 모델을 선택할 수도 있습니다.", + "Leave empty to use first admin user": "첫 번째 관리자 사용자로 사용하려면 비워 두세요", + "Leave empty to use the default config, or enter a valid json (see https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest)": "기본 구성을 사용하려면 비워 두세요, 또는 유효한 json을 입력하세요 (https://yandex.cloud/en/docs/search-api/api-ref/WebSearch/search#yandex.cloud.searchapi.v2.WebSearchRequest 참조)", + "Leave empty to use the default model (voxtral-mini-latest).": "비워두면 기본 모델(voxtral-mini-latest)을 사용합니다.", + "Leave empty to use the default prompt, or enter a custom prompt": "기본 프롬프트를 사용하기 위해 빈칸으로 남겨두거나, 커스텀 프롬프트를 입력하세요", + "Leave model field empty to use the default model.": "기본 모델을 사용하려면 모델 필드를 비워 두세요.", + "Legacy": "레거시", + "lexical": "어휘적", + "License": "라이선스", + "Lift List": "리스트 올리기", + "Light": "라이트", + "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "동시 검색 쿼리 수를 제한합니다. 0은 무제한(기본값)입니다. 순차 실행하려면 1로 설정하세요(Brave 무료 요금제처럼 엄격한 속도 제한이 있는 API에 권장됩니다).", + "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "동시 임베딩 요청 수를 제한합니다. 무제한은 0으로 설정하세요.", + "Linkup API Key": "", + "List": "목록", + "List calendars, search, create, update, and delete calendar events": "", + "Listening...": "듣는 중...", + "Live": "실시간", + "llama.cpp": "", + "Llama.cpp": "Llama.cpp", + "LLMs can make mistakes. Verify important information.": "LLM에 오류가 있을 수 있습니다. 중요한 정보는 확인이 필요합니다.", + "Loaded": "", + "Loader": "로더", + "Loading Kokoro.js...": "Kokoro.js 로딩 중...", + "Loading...": "로딩 중...", + "local": "로컬", + "Local": "로컬", + "Local Task Model": "로컬 작업 모델", + "Location": "위치", + "Location access not allowed": "위치 접근이 허용되지 않습니다", + "Lost": "패배", + "Low": "낮음", + "LTR": "LTR", + "Made by Open WebUI Community": "OpenWebUI 커뮤니티에 의해 개발됨", + "Make password visible in the user interface": "비밀번호 보이기", + "Make sure to export a workflow.json file as API format from ComfyUI.": "꼭 workflow.json 파일을 ComfyUI의 API 형식대로 내보내세요", + "Male": "남성", + "Manage": "관리", + "Manage Connections": "연결 관리", + "Manage Direct Connections": "다이렉트 연결 관리", + "Manage Files": "파일 관리", + "Manage Models": "모델 관리", + "Manage Ollama": "Ollama 관리", + "Manage Ollama API Connections": "Ollama API 연결 관리", + "Manage OpenAI API Connections": "OpenAI API 연결 관리", + "Manage Pipelines": "파이프라인 관리", + "Manage Tool Servers": "도구 서버 관리", + "Manage your account information.": "계정 정보를 관리하세요.", + "March": "3월", + "Markdown": "마크다운", + "Markdown Header Text Splitter": "마크다운 헤더 텍스트 분할기", + "Max Speakers": "최대 화자 수", + "Max tokens to retrieve (1024-32768, default 8192)": "", + "Max Upload Count": "업로드 최대 수", + "Max Upload Size": "업로드 최대 사이즈", + "Maximum characters to return from fetched URLs. Leave empty for no limit.": "가져온 URL에서 반환할 최대 문자 수입니다. 제한이 없으면 비워 두세요.", + "Maximum number of files allowed per folder.": "폴더당 허용되는 최대 파일 수입니다.", + "Maximum number of files per folder is {{max}}.": "폴더당 파일 수의 최대값은 {{max}}입니다.", + "Maximum of 3 models can be downloaded simultaneously. Please try again later.": "최대 3개의 모델을 동시에 다운로드할 수 있습니다. 나중에 다시 시도하세요.", + "May": "5월", + "MBR": "MBR", + "MCP": "MCP", + "MCP support is experimental and its specification changes often, which can lead to incompatibilities. OpenAPI specification support is directly maintained by the Open WebUI team, making it the more reliable option for compatibility.": "MCP 지원은 실험적이며 명세가 자주 변경되므로, 호환성 문제가 발생할 수 있습니다. Open WebUI 팀이 OpenAPI 명세 지원을 직접 유지·관리하고 있어, 호환성 측면에서는 더 신뢰할 수 있는 선택입니다.", + "Medium": "중간", + "Member removed successfully": "멤버 삭제에 성공했습니다", + "members": "멤버들", + "Members": "멤버", + "Members added successfully": "멤버 추가에 성공했습니다", + "Memories": "메모리", + "Memories accessible by LLMs will be shown here.": "LLM에서 접근할 수 있는 메모리는 여기에 표시됩니다.", + "Memory": "메모리", + "Memory added successfully": "성공적으로 메모리가 추가되었습니다", + "Memory cleared successfully": "성공적으로 메모리가 정리되었습니다", + "Memory deleted successfully": "성공적으로 메모리가 삭제되었습니다", + "Memory updated successfully": "성공적으로 메모리가 업데이트되었습니다", + "Merge Responses": "응답들 결합하기", + "Merged Response": "결합된 응답", + "Message": "메시지", + "Message counts and response timestamps": "메시지 수와 응답 타임스탬프", + "Message counts are based on assistant responses.": "메시지 수는 어시스턴트 응답을 기준으로 계산됩니다.", + "Message rating should be enabled to use this feature": "이 기능을 사용하려면 메시지 평가가 활성화되어야합니다", + "Message text...": "", + "messages": "메시지들", + "Messages": "메시지", + "Messages you send after creating your link won't be shared. Users with the URL will be able to view the shared chat.": "링크 생성 후에 보낸 메시지는 공유되지 않습니다. URL이 있는 사용자는 공유된 채팅을 볼 수 있습니다.", + "Microsoft OneDrive": "Microsoft OneDrive", + "Microsoft OneDrive (personal)": "Microsoft OneDrive (개인용)", + "Microsoft OneDrive (work/school)": "Microsoft OneDrive (회사/학교용)", + "min": "분", + "MinerU": "MinerU", + "MinerU API Key required for Cloud API mode.": "클라우드 API 모드를 사용하려면 MinerU API 키가 필요합니다.", + "Mistral OCR": "Mistral OCR", + "Mistral OCR API Key required.": "Mistral OCR API Key가 필요합니다.", + "MistralAI": "MistralAI", + "Mo_day_of_week": "Mo_day_of_week", + "Model": "모델", + "Model '{{modelName}}' has been successfully downloaded.": "모델 '{{modelName}}'이/가 성공적으로 다운로드되었습니다.", + "Model '{{modelTag}}' is already in queue for downloading.": "모델 '{{modelTag}}'은/는 이미 다운로드 대기열에 있습니다.", + "Model {{modelId}} not found": "모델 {{modelId}}을/를 찾을 수 없습니다", + "Model {{modelName}} deleted successfully": "모델 {{modelName}}이/가 성공적으로 삭제되었습니다", + "Model {{modelName}} is not vision capable": "모델 {{modelName}}은/는 비전을 사용할 수 없습니다.", + "Model {{name}} is now {{status}}": "모델 {{name}}은/는 이제 {{status}} 상태입니다.", + "Model {{name}} is now hidden": "모델 {{name}}은/는 이제 숨겨졌습니다.", + "Model {{name}} is now visible": "모델 {{name}}은/는 이제 볼 수 있습니다.", + "Model accepts file inputs": "모델에 파일 입력을 허용합니다", + "Model accepts image inputs": "모델에 이미지 입력을 허용합니다", + "Model can access Open Terminal for command execution and file management": "모델이 명령 실행과 파일 관리를 위해 Open Terminal에 접근할 수 있습니다.", + "Model can execute code and perform calculations": "모델이 코드를 실행하고 계산을 수행할 수 있습니다.", + "Model can generate images based on text prompts": "모델이 텍스트 프롬프트를 기반으로 이미지를 생성할 수 있습니다.", + "Model can search the web for information": "모델이 웹에서 정보를 검색할 수 있습니다.", + "Model Capabilities": "모델 성능", + "Model created successfully!": "성공적으로 모델이 생성되었습니다", + "Model filesystem path detected. Model shortname is required for update, cannot continue.": "모델 파일 시스템 경로가 감지되었습니다. 업데이트하려면 모델 단축 이름이 필요하며 계속할 수 없습니다.", + "Model Filtering": "모델 필터링", + "Model ID": "모델 ID", + "Model ID is required.": "모델 ID가 필요합니다", + "Model IDs": "모델 IDs", + "Model Name": "모델 이름", + "Model name already exists, please choose a different one": "이 모델 이름은 이미 존재합니다. 다른 이름을 선택해주세요.", + "Model Name is required.": "모델 이름이 필요합니다", + "Model names and usage frequency": "모델 이름과 사용 빈도", + "Model not found": "모델을 찾을 수 없습니다", + "Model not selected": "모델이 선택되지 않았습니다.", + "Model Parameters": "모델 매개변수", + "Model Params": "모델 매개변수", + "Model Permissions": "모델 권한", + "Model responses or outputs": "모델 응답 또는 출력", + "Model unloaded successfully": "성공적으로 모델이 언로드되었습니다", + "Model updated successfully": "성공적으로 모델이 업데이트되었습니다", + "Model Usage": "모델 사용량", + "Model(s) do not support file upload": "모델이 파일 업로드를 지원하지 않습니다", + "Modelfile Content": "모델 파일 내용", + "Models": "모델", + "Models Access": "모델 접근", + "Models configuration saved successfully": "모델 구성이 성공적으로 저장되었습니다", + "Models imported successfully": "모델을 성공적으로 가져왔습니다.", + "Models Public Sharing": "모델 공개 공유", + "Models Sharing": "모델 공유", + "Mojeek": "Mojeek", + "Mojeek Search API Key": "Mojeek Search API 키", + "Month": "월", + "Monthly": "월간", + "More": "더보기", + "More Concise": "더 간결하게", + "More options": "추가 옵션", + "More Options": "추가 설정", + "Move": "이동", + "Moved {{name}}": "{{name}} 이동됨", + "Mute": "", + "Muted": "", + "My Terminal": "내 터미널", + "Name": "이름", + "Name and ID are required, please fill them out": "이름과 ID는 필수입니다. 작성해주세요", + "Name is required": "", + "Name your knowledge base": "지식 기반 이름을 지정하세요", + "Name, prompt, and model are required": "이름, 프롬프트, 및 모델은 필수입니다", + "Native": "네이티브", + "Never": "절대", + "New": "새로 만들기", + "New Automation": "새로운 자동", + "New Button": "새 버튼", + "New calendar": "", + "New Calendar": "", + "New Chat": "새 채팅", + "New directory": "", + "New Directory": "", + "New Event": "새 이벤트", + "New File": "새 파일", + "New Folder": "새 폴더", + "New Function": "새 함수", + "New Group": "새 그룹", + "New Knowledge": "새 지식 기반", + "New Model": "새 모델", + "New Note": "새 노트", + "New Password": "새 비밀번호", + "New Prompt": "새 프롬프트", + "New Skill": "새 기능", + "New Temporary Chat": "새 임시 채팅", + "New Terminal": "새 터미널", + "New Tool": "새 도구", + "New Webhook": "새 Webhook", + "new-channel": "새 채널", + "Next message": "다음 메시지", + "Next run": "다음 실행", + "No access grants. Private to you.": "접근 권한이 없습니다. 개인용입니다.", + "No activity data": "활동 데이터가 없습니다", + "No authentication": "권한 인증이 없습니다", + "No automations found": "자동화된 항목을 찾을 수 없습니다.", + "No chats found": "채팅을 찾을 수 없습니다", + "No chats found for this user.": "이 사용자에 대한 채팅을 찾을 수 없습니다.", + "No chats found.": "채팅을 찾을 수 없습니다.", + "No content": "내용이 없습니다", + "No content found": "내용을 찾을 수 없습니다", + "No content to speak": "음성 출력할 내용을 찾을 수 없습니다", + "No conversation to save": "저장할 대화가 없습니다", + "No data": "데이터가 없습니다", + "No data found": "데이터를 찾을 수 없습니다", + "No distance available": "거리 불가능", + "No execution logs available yet": "아직 실행 로그가 없습니다", + "No expiration can pose security risks.": "만료 기한이 없으면 보안 위험이 발생할 수 있습니다.", + "No feedback found": "피드백을 찾을 수 없습니다", + "No file selected": "파일이 선택되지 않았습니다", + "No files found": "파일을 찾을 수 없습니다", + "No files in this knowledge base.": "이 지식 기반에 파일이 없습니다.", + "No files yet. Upload files or run Python code to create them.": "아직 파일이 없습니다. 파일을 업로드하거나 Python 코드를 실행하여 생성하세요.", + "No functions found": "함수를 찾을 수 없습니다", + "No groups found": "그룹을 찾을 수 없습니다", + "No history available": "사용 기록이 없습니다", + "No HTML, CSS, or JavaScript content found.": "HTML, CSS, JavaScript이 발견되지 않았습니다", + "No inference engine with management support found": "관리 지원이 포함된 추론 엔진을 찾을 수 없습니다", + "No kernel": "커널이 없습니다", + "No knowledge bases accessible": "", + "No knowledge bases found.": "지식 기반을 찾을 수 없습니다", + "No knowledge found": "지식 기반을 찾을 수 없습니다", + "No limit": "제한이 없습니다", + "No memories to clear": "메모리를 정리할 수 없습니다", + "No model IDs": "모델 ID가 없습니다", + "No models accessible": "", + "No models available": "사용 가능한 모델이 없습니다", + "No models found": "모델을 찾을 수 없습니다", + "No models selected": "모델이 선택되지 않았습니다", + "No Notes": "노트가 없습니다", + "No notes found": "노트를 찾을 수 없습니다", + "No one": "없음", + "No output items": "", + "No pinned messages": "고정된 메시지가 없습니다", + "No prompts found": "프롬프트를 찾을 수 없습니다", + "No results": "결과가 없습니다", + "No results found": "결과를 찾을 수 없습니다", + "No search query generated": "검색어가 생성되지 않았습니다", + "No servers detected": "서버가 감지되지 않았습니다", + "No skills found": "기능을 찾을 수 없습니다", + "No source available": "사용 가능한 소스가 없습니다.", + "No sources found": "소스를 찾을 수 없습니다", + "No suggestion prompts": "추천 프롬프트가 없습니다", + "No Terminal connection configured.": "터미널 연결이 구성되지 않았습니다.", + "No terminal connections configured.": "터미널 연결이 구성되지 않았습니다.", + "No tool server connections configured.": "도구 서버 연결이 구성되지 않았습니다.", + "No tools accessible": "", + "No tools found": "도구를 찾을 수 없습니다", + "No users were found.": "사용자를 찾을 수 없습니다", + "No valves": "밸브가 없습니다", + "No valves to update": "업데이트 할 밸브가 없습니다", + "No webhooks yet": "webhook이 아직 없습니다", + "Node Ids": "노드 ID", + "None": "없음", + "Not factually correct": "사실상 맞지 않습니다", + "Not helpful": "도움이 되지않습니다", + "Not Registered": "등록되지 않았습니다", + "Not scheduled": "예약되지 않았습니다", + "Note": "노트", + "Note deleted successfully": "노트가 성공적으로 삭제되었습니다", + "Note: If you set a minimum score, the search will only return documents with a score greater than or equal to the minimum score.": "참고: 최소 점수를 설정하면, 검색 결과로 최소 점수 이상의 점수를 가진 문서만 반환합니다.", + "Notes": "노트", + "Notes Public Sharing": "노트 공개 공유", + "Notes Sharing": "노트 공유", + "Notification Sound": "알림 소리", + "Notification Webhook": "알림 웹훅", + "Notifications": "알림", + "November": "11월", + "OAuth": "OAuth", + "OAuth 2.1": "OAuth 2.1", + "OAuth 2.1 (Static)": "OAuth 2.1 (Static)", + "OAuth ID": "OAuth ID", + "OAuth Server URL": "", + "OAuth session disconnected": "", + "October": "10월", + "Off": "끄기", + "Okay, Let's Go!": "좋아요, 시작합시다!", + "OLED Dark": "OLED 다크", + "Ollama": "Ollama", + "Ollama API": "Ollama API", + "Ollama API settings updated": "Ollama API 세팅이 업데이트 되었습니다.", + "Ollama Cloud API Key": "Ollama Cloud API Key", + "Ollama Version": "Ollama 버전", + "On": "켜기", + "Once": "Once", + "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", + "Only active when \"Paste Large Text as File\" setting is toggled on.": "\"긴 텍스트를 파일로 붙여넣기\" 설정이 켜져 있을 때만 작동합니다.", + "Only active when the chat input is in focus and an LLM is generating a response.": "채팅 입력창이 선택되어 있고 LLM이 응답을 생성 중일 때만 작동합니다.", + "Only active when the chat input is in focus.": "채팅 입력창이 선택된 상태에서만 작동합니다.", + "Only alphanumeric characters and hyphens are allowed": "영문자, 숫자 및 하이픈(-)만 허용됩니다.", + "Only alphanumeric characters and hyphens are allowed in the command string.": "명령어 문자열에는 영문자, 숫자 및 하이픈(-)만 허용됩니다.", + "Only can be triggered when the chat input is in focus.": "채팅 입력창이 선택된 상태에서만 작동합니다.", + "Only collections can be edited, create a new knowledge base to edit/add documents.": "가지고 있는 컬렉션만 수정 가능합니다, 새 지식 기반을 생성하여 문서를 수정 혹은 추가하십시오.", + "Only invited users can access": "초대된 사용자만 접근할 수 있습니다.", + "Only markdown files are allowed": "마크다운 파일만 허용됩니다", + "Only select users and groups with permission can access": "권한이 있는 사용자와 그룹만 접근 가능합니다.", + "Only sync new/updated chats": "새로운/업데이트된 채팅만 동기화", + "Oops! Looks like the URL is invalid. Please double-check and try again.": "이런! URL이 잘못된 것 같습니다. 다시 한번 확인하고 다시 시도해주세요.", + "Oops! There are files still uploading. Please wait for the upload to complete.": "이런! 파일이 계속 업로드중 입니다. 업로드가 완료될 때까지 잠시만 기다려주세요.", + "Oops! There was an error in the previous response.": "이런! 이전 응답에 에러가 있었던 것 같습니다.", + "Oops! You're using an unsupported method (frontend only). Please serve the WebUI from the backend.": "이런! 지원되지 않는 방식(프론트엔드만)을 사용하고 계십니다. 백엔드에서 WebUI를 제공해주세요.", + "Open file": "파일 열기", + "Open in full screen": "전체화면으로 열기", + "Open in new tab": "새 탭에서 열기", + "Open link": "링크 열기", + "Open modal to configure connection": "연결 설정 열기", + "Open Modal To Manage Floating Quick Actions": "플로팅 빠른 작업 관리를 위한 모달 열기", + "Open Modal To Manage Image Compression": "이미지 압축 관리를 위한 모달 열기", + "Open Model Selector": "모델 선택기 열기", + "Open Settings": "설정 열기", + "Open Sidebar": "사이드바 열기", + "Open Terminal": "터미널 열기", + "Open User Profile Menu": "사용자 프로필 메뉴 열기", + "Open WebUI can use tools provided by any OpenAPI server.": "Open WebUI는 모든 OpenAPI 서버에서 제공하는 도구를 사용할 수 있습니다.", + "Open WebUI uses faster-whisper internally.": "Open WebUI는 내부적으로 패스트 위스퍼를 사용합니다.", + "Open WebUI uses SpeechT5 and CMU Arctic speaker embeddings.": "Open WebUI는 SpeechT5와 CMU Arctic 스피커 임베딩을 사용합니다.", + "Open WebUI version": "Open WebUI 버전", + "Open WebUI version (v{{OPEN_WEBUI_VERSION}}) is lower than required version (v{{REQUIRED_VERSION}})": "열린 WebUI 버젼(v{{OPEN_WEBUI_VERSION}})은 최소 버젼 (v{{REQUIRED_VERSION}})보다 낮습니다", + "OpenAI": "OpenAI", + "OpenAI API": "OpenAI API", + "OpenAI API Base URL": "OpenAI API 기본 URL", + "OpenAI API Key": "OpenAI API 키", + "OpenAI API Key is required.": "OpenAI API 키가 필요합니다.", + "OpenAI API settings updated": "OpenAI API 설정이 업데이트되었습니다.", + "OpenAI API Version": "OpenAI API 버전", + "OpenAI URL/Key required.": "OpenAI URL/키가 필요합니다.", + "OpenAPI": "OpenAPI", + "OpenAPI Spec": "OpenAPI 사양", + "openapi.json URL or Path": "openapi.json URL 또는 경로", + "optional": "선택 사항", + "Optional": "선택 사항", + "or": "또는", + "Ordered List": "번호 목록", + "Other": "기타", + "out of": "의", + "Output": "출력", + "OUTPUT": "출력", + "Output format": "출력 형식", + "Output Format": "출력 형식", + "Overview": "개요", + "PaddleOCR-vl": "", + "PaddleOCR-vl API URL required.": "", + "page": "페이지", + "Page": "페이지", + "Page mode creates one document per page. Single mode combines all pages into one document for better chunking across page boundaries.": "페이지 모드는 페이지마다 하나의 문서를 생성합니다. 단일 모드는 모든 페이지를 하나의 문서로 결합하여 페이지 경계를 넘어 더 나은 청킹을 제공합니다.", + "Paginate": "페이지 나누기", + "Parameters": "매개변수", + "Parent message not found": "상위 메시지를 찾을 수 없습니다.", + "Participate in community leaderboards and evaluations! Syncing aggregated usage stats helps drive research and improvements to Open WebUI. Your privacy is paramount: no message content is ever shared.": "커뮤니티 리더보드와 평가에 참여하세요! 집계된 사용 통계를 동기화하면 Open WebUI의 연구과 개선을 지원합니다. 귀하의 개인정보는 최우선으로 보호됩니다: 메시지 내용은 절대 공유되지 않습니다.", + "Password": "비밀번호", + "Passwords do not match.": "비밀번호가 일치하지 않습니다.", + "Paste Large Text as File": "큰 텍스트를 파일로 붙여넣기", + "Path copied": "경로가 복사되었습니다.", + "Paused": "일시정지됨", + "PDF document (.pdf)": "PDF 문서(.pdf)", + "PDF Extract Images (OCR)": "PDF 이미지 추출(OCR)", + "PDF Loader Mode": "PDF 로더 모드", + "pdf, docx, pptx, xlsx": "", + "pending": "보류 중", + "Pending": "보류", + "Pending User Overlay Content": "대기 중인 사용자 오버레이 내용", + "Pending User Overlay Title": "대기 중인 사용자 오버레이 제목", + "Permission denied when accessing media devices": "미디어 장치 접근 권한이 거부되었습니다.", + "Permission denied when accessing microphone": "마이크 접근 권한이 거부되었습니다.", + "Permission denied when accessing microphone: {{error}}": "마이크 접근 권한이 거부되었습니다: {{error}}", + "Permissions": "권한", + "Perplexity API Key": "Perplexity API 키", + "Perplexity Model": "Perplexity 모델", + "Perplexity Search API URL": "Perplexity 검색 API URL", + "Perplexity Search Context Usage": "Perplexity 검색 컨텍스트 사용", + "Persistent": "지속적", + "Personalization": "개인화", + "Pin": "고정", + "Pin to Sidebar": "사이드바에 고정", + "Pinned": "고정됨", + "Pinned Messages": "고정된 메시지", + "Pinned Models": "고정된 모델", + "Pioneer insights": "혁신적인 발견", + "Pipe": "파이프", + "Pipeline deleted successfully": "성공적으로 파이프라인이 삭제되었습니다.", + "Pipeline downloaded successfully": "성공적으로 파이프라인이 설치되었습니다.", + "Pipelines": "파이프라인", + "Pipelines are a plugin system with arbitrary code execution —": "Pipelines는 임의 코드 실행이 가능한 플러그인 시스템입니다 —", + "Pipelines Not Detected": "파이프라인이 발견되지 않았습니다.", + "Pipelines Valves": "파이프라인 밸브", + "Plain text (.md)": "일반 텍스트(.md)", + "Plain text (.txt)": "일반 텍스트(.txt)", + "Playground": "플레이그라운드", + "Playwright Timeout (ms)": "Playwright 시간 초과 (ms)", + "Playwright WebSocket URL": "Playwright WebSocket URL", + "Please carefully review the following warnings:": "다음 주의를 조심히 확인해주십시오", + "Please connect all required integrations before sending a message": "모든 필요한 통합을 연결한 후 메시지를 보내세요", + "Please do not close the settings page while loading the model.": "모델을 로드하는 동안 설정 페이지를 닫지 마세요.", + "Please enter a message or attach a file.": "메시지를 입력하거나 파일을 첨부해 주세요.", + "Please enter a prompt": "프롬프트를 입력해주세요", + "Please enter a valid ID": "올바른 ID를 입력하세요", + "Please enter a valid JSON spec": "올바른 JSON spec을 입력하세요", + "Please enter a valid path": "올바른 경로를 입력하세요", + "Please enter a valid URL": "올바른 URL을 입력하세요", + "Please enter a valid URL.": "올바른 URL을 입력하세요.", + "Please enter Client ID and Client Secret": "Client ID와 Client Secret을 입력하세요", + "Please fill in all fields.": "모두 빈칸없이 채워주세요", + "Please register the OAuth client": "OAuth clith를 등록해주세요", + "Please save the connection to persist the OAuth client information and do not change the ID": "OAuth 클라이언트 정보를 저장하려면 연결을 저장하고 ID를 변경하지 마세요.", + "Please select a model first.": "먼저 모델을 선택하세요.", + "Please select a model.": "모델을 선택하세요.", + "Please select a reason": "이유를 선택해주세요", + "Please select a valid JSON file": "올바른 Json 파일을 선택해 주세요", + "Please select at least one user for Direct Message channel.": "1:1 메시지 채널에 참여할 사용자를 최소 한 명 선택해주세요.", + "Please wait until all files are uploaded.": "모든 파일이 업로드될 때까지 기다려 주세요.", + "Policy ID": "정책 ID", + "Port": "포트", + "Ports": "포트", + "Positive attitude": "긍정적인 자세", + "Prefer not to say": "언급하고 싶지 않습니다.", + "Prefix ID": "Prefix ID", + "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID는 모델 ID에 접두사를 추가하여 다른 연결과의 충돌을 방지하는 데 사용됩니다. - 비활성화하려면 비워 둡니다.", + "Prevent File Creation": "파일 생성 방지", + "Preview": "미리보기", + "Preview Access": "", + "Previous 30 days": "이전 30일", + "Previous 7 days": "이전 7일", + "Previous message": "이전 메시지", + "Private": "비공개", + "Private conversation between selected users": "선택한 사용자 간의 비공개 대화", + "Production version updated": " production 버전이 업데이트되었습니다.", + "Profile": "프로필", + "Prompt": "프롬프트", + "Prompt Autocompletion": "프롬프트 자동 완성", + "Prompt Content": "프롬프트 내용", + "Prompt created successfully": "성공적으로 프롬프트를 생성했습니다", + "Prompt Name": "프롬프트 이름", + "Prompt Suggestions": "프롬프트 제안", + "Prompt Template": "", + "Prompt updated successfully": "성공적으로 프롬프트를 수정했습니다", + "Prompts": "프롬프트", + "Prompts Access": "프롬프트 접근", + "Prompts Public Sharing": "프롬프트 공개 공유", + "Prompts Sharing": "프롬프트 공유", + "Provider": "", + "Public": "공개", + "Pull \"{{searchValue}}\" from Ollama.com": "Ollama.com에서 \"{{searchValue}}\" 가져오기", + "Pull a model from Ollama.com": "Ollama.com에서 모델 가져오기(pull)", + "Pull Model": "모델 pull", + "Pyodide file browser": "Pyodide 파일 브라우저", + "Query Generation Prompt": "쿼리 생성 프롬프트", + "Querying": "쿼리 진행중", + "Quick Actions": "빠른 작업", + "RAG Template": "RAG 템플릿", + "Ran {{COUNT}} analyses": "{{COUNT}}개의 분석이 실행되었습니다", + "Ran {{COUNT}} analysis": "{{COUNT}}개의 분석이 실행되었습니다", + "Rate {{rating}} out of 10": "{{rating}}/10 점 평가", + "Rating": "평가", + "Re-rank models by topic similarity": "주제 유사성으로 모델을 재정렬하기", + "Read": "읽기", + "Read Aloud": "읽어주기", + "Read more →": "더 읽기 →", + "Read Only": "읽기 전용", + "Read-Only Access": "읽기 전용 접근", + "Reason": "근거", + "Reasoning Effort": "추론 난이도", + "Reasoning Tags": "추론 태그", + "Reasoning text...": "", + "Recently Used": "최근 사용", + "Reconnected": "재연결됨", + "Record": "녹음", + "Record voice": "음성 녹음", + "Redirecting you to Open WebUI Community": "OpenWebUI 커뮤니티로 리디렉션 중", + "Reduces the probability of generating nonsense. A higher value (e.g. 100) will give more diverse answers, while a lower value (e.g. 10) will be more conservative.": "넌센스를 생성할 확률을 줄입니다. 값이 높을수록(예: 100) 더 다양한 답변을 제공하는 반면, 값이 낮을수록(예: 10) 더 보수적입니다.", + "Refer to yourself as \"User\" (e.g., \"User is learning Spanish\")": "스스로를 \"사용자\" 라고 지칭하세요. (예: \"사용자는 영어를 배우고 있습니다\")", + "Reference Chats": "채팅 참조", + "Refresh": "새로 고침", + "Refused when it shouldn't have": "허용되지 않았지만 허용되어야 합니다.", + "Regenerate": "재생성", + "Regenerate Menu": "메뉴 재생성", + "Regenerate Response": "응답 재생성", + "Register Again": "재등록", + "Register Client": "클라이언트 등록", + "Registered": "등록됨", + "Registration failed": "등록 실패", + "Registration successful": "등록 성공", + "Reindex": "재색인", + "Reindex Knowledge Base Vectors": "전체 지식 베이스 재색인", + "Release Notes": "릴리스 노트", + "Releases": "릴리스", + "Relevance": "관련도", + "Relevance Threshold": "관련성 임계값", + "Remember Dismissal": "다시 보지 않기", + "Reminder": "알림", + "Remove": "삭제", + "Remove {{MODELID}} from list.": "{{MODELID}}를 목록에서 제거.", + "Remove action": "작업 제거", + "Remove file": "파일 삭제", + "Remove File": "파일 삭제", + "Remove from favorites": "즐겨찾기에서 제거", + "Remove image": "이미지 삭제", + "Remove Model": "모델 삭제", + "Removing {{count}} stale files..._other": "", + "Rename": "이름 변경", + "Renamed to {{name}}": "{{name}}(으)로 이름 변경", + "Render Markdown in Assistant Messages": "", + "Render Markdown in Previews": "미리보기에서 마크다운 렌더링", + "Render Markdown in User Messages": "", + "Reorder Models": "모델 재정렬", + "Repeats": "반복", + "Reply": "답장", + "Reply in Thread": "스레드로 답장하기", + "Reply to thread...": "스레드로 답장하기...", + "Replying to {{NAME}}": "{{NAME}}에게 답장하는 중", + "required": "필수", + "Reranking Batch Size": "리랭킹 배치 사이즈", + "Reranking Engine": "Reranking 엔진", + "Reranking Model": "Reranking 모델", + "Reset": "초기화", + "Reset All Models": "모든 모델 초기화", + "Reset Image": "이미지 초기화", + "Reset knowledge base?": "", + "Reset Upload Directory": "업로드 디렉토리 초기화", + "Reset Vector Storage/Knowledge": "벡터 저장 공간/지식 기반 초기화", + "Reset view": "보기 초기화", + "Response": "응답", + "Response notifications cannot be activated as the website permissions have been denied. Please visit your browser settings to grant the necessary access.": "웹사이트 권한이 거부되어 응답 알림을 활성화할 수 없습니다. 필요한 접근 권한을 부여하려면 브라우저 설정을 확인해 주세요.", + "Response splitting": "응답 나누기", + "Response Watermark": "응답 워터마크", + "Responses": "응답", + "Restart": "재시작", + "Result": "결과", + "RESULT": "결과", + "Retrieval": "검색", + "Retrieval Query Generation": "검색 쿼리 생성", + "Retrieved {{count}} sources": "{{count}}개의 소스 검색됨", + "Retrieved {{count}} sources_one": "{{count}}개의 소스 검색됨", + "Retrieved {{count}} sources_other": "{{count}}개의 소스 검색됨", + "Retrieved 1 source": "검색된 source 1개", + "Rich Text Input for Chat": "다양한 텍스트 서식 사용", + "Role": "역할", + "RTL": "RTL", + "Run": "실행", + "Run All": "모두 실행", + "Run now": "지금 실행", + "Run Now": "지금 실행", + "Running": "실행 중", + "Running...": "실행 중...", + "Runs embedding tasks concurrently to speed up processing. Turn off if rate limits become an issue.": "임베딩 작업을 동시에 실행하여 처리 속도를 높입니다. 속도 제한이 문제가 되면 끄세요.", + "Sa_day_of_week": "Sa_day_of_week", + "Save": "저장", + "Save & Create": "저장 및 생성", + "Save & Update": "저장 및 업데이트", + "Save As Copy": "다른 이름으로 저장", + "Save Chat": "채팅 저장", + "Saved": "저장됨", + "Saving chat logs directly to your browser's storage is no longer supported. Please take a moment to download and delete your chat logs by clicking the button below. Don't worry, you can easily re-import your chat logs to the backend through": "브라우저의 저장소에 채팅 로그를 직접 저장하는 것은 더 이상 지원되지 않습니다. 아래 버튼을 클릭하여 채팅 로그를 다운로드하고 삭제하세요. 걱정 마세요. 백엔드를 통해 채팅 로그를 쉽게 다시 가져올 수 있습니다.", + "Schedule": "일정", + "Scheduled time must be in the future": "예약 시간은 미래여야 합니다", + "Scroll On Branch Change": "브랜치 변경 시 스크롤", + "Scroll to Top": "", + "Search": "검색", + "Search a model": "모델 검색", + "Search all emojis": "모든 이모지 검색", + "Search and manage user memories": "사용자 기억 검색 및 관리", + "Search and view user chat history": "사용자 채팅 기록 검색 및 보기", + "Search Automations": "자동 검색", + "Search Base": "검색 기반", + "Search channels and channel messages": "채널 및 채널 메시지 검색", + "Search Chats": "채팅 검색", + "Search Collection": "컬렉션 검색", + "Search Files": "파일 검색", + "Search Filters": "필터 검색", + "search for archived chats": "보관된 채팅 검색", + "search for folders": "폴더 검색", + "search for pinned chats": "고정된 채팅 검색", + "search for shared chats": "공유된 채팅 검색", + "search for tags": "태그 검색", + "Search Functions": "함수 검색", + "Search Groups": "그룹 검색", + "Search In Models": "모델에서 검색", + "Search Knowledge": "지식 기반 검색", + "Search Memories": "메모리 검색", + "Search Models": "모델 검색", + "Search Notes": "노트 검색", + "Search options": "검색 옵션", + "Search Prompts": "프롬프트 검색", + "Search Result Count": "검색 결과 수", + "Search Skills": "스킬 검색", + "Search skills...": "", + "Search the internet": "인터넷 검색", + "Search the web and fetch URLs": "웹에서 검색하고 URL 가져오기", + "Search Tools": "검색 도구", + "Search, view, and manage user notes": "사용자 노트 검색, 보기, 및 관리", + "SearchApi API Key": "SearchApi API 키", + "SearchApi Engine": "SearchApi 엔진", + "Searched {{count}} sites": "{{count}}개 사이트 검색됨", + "Searching": "검색 중", + "Searching \"{{searchQuery}}\"": "\"{{searchQuery}}\" 검색 중", + "Searching Knowledge for \"{{searchQuery}}\"": "\"{{searchQuery}}\"에 대한 지식 기반 검색 중", + "Searching the web": "웹에서 검색 중...", + "Searxng Query URL": "Searxng 쿼리 URL", + "Searxng search language (all, en, es, de, fr, etc.)": "Searxng 검색 언어 (all, en, es, de, fr, etc.)", + "See readme.md for instructions": "설명은 readme.md를 참조하세요.", + "See what's new": "새로운 기능 보기", + "Seed": "시드", + "Select": "선택", + "Select {{modelName}} model": "{{modelName}} 모델 선택", + "Select a base model": "기본 모델 선택", + "Select a base model (e.g. llama3, gpt-4o)": "기본 모델 선택 (예: llama3, gpt-4o)", + "Select a conversation to preview": "대화를 선택하여 미리 보기", + "Select a engine": "엔진 선택", + "Select a function": "함수 선택", + "Select a group": "그룹 선택", + "Select a language": "언어 선택", + "Select a mode": "모드 선택", + "Select a model": "모델 선택", + "Select a model (optional)": "모델 선택 (선택사항)", + "Select a pipeline": "파이프라인 선택", + "Select a pipeline url": "파이프라인 URL 선택", + "Select a reranking model engine": "리랭킹 모델 엔진 선택", + "Select a role": "역할 선택", + "Select a theme": "테마 선택", + "Select a tool": "도구 선택", + "Select a voice": "음성 선택", + "Select All": "모두 선택", + "Select an auth method": "인증 방법 선택", + "Select an embedding model engine": "임베딩 모델 엔진 선택", + "Select an engine": "엔진 선택", + "Select an Ollama instance": "Ollama 인스턴스 선택", + "Select an option": "옵션 선택", + "Select an output format": "출력 형식 선택", + "Select dtype": "dtype 선택", + "Select Engine": "엔진 선택", + "Select how to split message text for TTS requests": "TTS 요청에 대한 메시지 텍스트 분할 방법 선택", + "Select Knowledge": "지식 기반 선택", + "Select Method": "방법 선택", + "Select model": "모델 선택", + "Select only one model to call": "음성 기능을 위해서는 모델을 하나만 선택해야 합니다.", + "Select view": "보기 선택", + "Selected model: {{modelName}}": "선택된 모델: {{modelName}}", + "Selected model(s) do not support image inputs": "선택한 모델은 이미지 입력을 지원하지 않습니다.", + "Selected Models": "선택된 모델들", + "semantic": "의미적", + "Send": "보내기", + "Send a Message": "메시지 보내기", + "Send message": "메시지 보내기", + "Send now": "지금 보내기", + "Sends `stream_options: { include_usage: true }` in the request.\nSupported providers will return token usage information in the response when set.": "'stream_options: { include_usage: true }' 요청 보내기 \n지원되는 제공자가 토큰 사용 정보를 응답할 예정입니다", + "September": "9월", + "SerpApi API Key": "SerpApi API 키", + "SerpApi Engine": "SerpApi 엔진", + "Serper API Key": "Serper API 키", + "Serply API Key": "Serply API 키", + "Serpstack API Key": "Serpstack API 키", + "Server connection failed": "서버 연결 실패", + "Server connection verified": "서버 연결 확인됨", + "Session": "세션", + "Set as default": "기본값으로 설정", + "Set as Production": "프로덕션으로 설정", + "Set embedding model": "임베딩 모델 설정", + "Set embedding model (e.g. {{model}})": "임베딩 모델 설정 (예: {{model}})", + "Set reranking model (e.g. {{model}})": "Reranking 모델 설정 (예: {{model}})", + "Set the default models that are automatically selected for all users when a new chat is created.": "새 채팅이 생성될 때 모든 사용자에게 자동으로 선택되는 기본 모델을 설정합니다.", + "Set the models that are automatically pinned to the sidebar for all users.": "모든 사용자에게 자동으로 사이드바에 고정되는 모델을 설정합니다.", + "Set the number of layers, which will be off-loaded to GPU. Increasing this value can significantly improve performance for models that are optimized for GPU acceleration but may also consume more power and GPU resources.": "GPU에 오프로드될 레이어 수를 설정합니다. 이 값을 높이면 GPU 가속에 최적화된 모델의 성능이 크게 향상될 수 있지만 더 많은 전력과 GPU 리소스를 소비할 수도 있습니다.", + "Set the number of worker threads used for computation. This option controls how many threads are used to process incoming requests concurrently. Increasing this value can improve performance under high concurrency workloads but may also consume more CPU resources.": "계산에 사용되는 작업자 스레드 수를 설정합니다. 이 옵션은 들어오는 요청을 동시에 처리하는 데 사용되는 스레드 수를 제어합니다. 이 값을 높이면 동시성이 높은 워크로드에서 성능을 향상시킬 수 있지만 더 많은 CPU 리소스를 소비할 수도 있습니다.", + "Set Voice": "음성 설정", + "Set whisper model": "자막 생성기 모델 설정", + "Set your status": "내 상태 설정", + "Sets a flat bias against tokens that have appeared at least once. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "적어도 한 번 이상 나타난 토큰에 대해 평평한 편향을 설정합니다. 값이 높을수록 반복에 더 강력한 불이익을 주는 반면, 값이 낮을수록(예: 0.9) 더 관대해집니다. 0에서는 비활성화됩니다.", + "Sets a scaling bias against tokens to penalize repetitions, based on how many times they have appeared. A higher value (e.g., 1.5) will penalize repetitions more strongly, while a lower value (e.g., 0.9) will be more lenient. At 0, it is disabled.": "토큰에 대한 스케일링 편향을 설정하여 반복 횟수에 따라 반복 횟수에 불이익을 줍니다. 값이 높을수록(예: 1.5) 반복 횟수에 더 강하게 불이익을 주는 반면, 값이 낮을수록(예: 0.9) 더 관대해집니다. 0에서는 반복 횟수가 비활성화됩니다.", + "Sets how far back for the model to look back to prevent repetition.": "모델이 반복을 방지하기 위해 되돌아볼 수 있는 거리를 설정합니다.", + "Sets the random number seed to use for generation. Setting this to a specific number will make the model generate the same text for the same prompt.": "생성에 사용할 난수 시드를 설정합니다. 이를 특정 숫자로 설정하면 모델이 동일한 프롬프트에 대해 동일한 텍스트를 생성하게 됩니다.", + "Sets the size of the context window used to generate the next token.": "다음 토큰을 생성하는 데 사용되는 컨텍스트 창의 크기를 설정합니다.", + "Sets the stop sequences to use. When this pattern is encountered, the LLM will stop generating text and return. Multiple stop patterns may be set by specifying multiple separate stop parameters in a modelfile.": "중단 시퀀스를 설정합니다. 이 패턴이 발생하면 LLM은 텍스트 생성을 중단하고 반환합니다. 여러 중단 패턴은 모델 파일에서 여러 개의 별도 중단 매개변수를 지정하여 설정할 수 있습니다.", + "Setting": "설정", + "Settings": "설정", + "Settings Permissions": "설정 권한", + "Settings saved successfully!": "설정이 성공적으로 저장되었습니다!", + "Share": "공유", + "Share Chat": "채팅 공유", + "Share link copied to clipboard.": "공유 링크가 클립보드에 복사되었습니다.", + "Share to Open WebUI Community": "OpenWebUI 커뮤니티에 공유", + "Share your background and interests": "당신의 배경과 관심사를 공유하세요", + "Shared Chats": "공유된 채팅", + "Shared with you": "당신과 공유됨", + "Sharing Permissions": "권한 공유", + "Show": "보기", + "Show \"What's New\" modal on login": "로그인시 \"새로운 기능\" 모달 보기", + "Show Admin Details in Account Pending Overlay": "사용자용 계정 보류 설명창에, 관리자 상세 정보 노출", + "Show All": "모두 보기", + "Show all ({{COUNT}} characters)": "모든 ({{COUNT}} 문자) 보기", + "Show Files": "파일 보기", + "Show Formatting Toolbar": "서식 툴바 표시", + "Show image preview": "이미지 미리보기", + "Show Model": "모델 보기", + "Show Shortcuts": "단축키 보기", + "Show your support!": "당신의 응원을 보내주세요!", + "Showcased creativity": "창의성 발휘", + "Showing all messages (user + assistant) per user.": "사용자당 모든 메시지(사용자 + 어시스턴트) 표시.", + "Sign in": "로그인", + "Sign in to {{WEBUI_NAME}}": "{{WEBUI_NAME}} 로그인", + "Sign in to {{WEBUI_NAME}} with LDAP": "LDAP로 {{WEBUI_NAME}}에 로그인", + "Sign Out": "로그아웃", + "Sign up": "가입", + "Sign up to {{WEBUI_NAME}}": "{{WEBUI_NAME}} 가입", + "Significantly improves accuracy by using an LLM to enhance tables, forms, inline math, and layout detection. Will increase latency. Defaults to False.": "LLM을 활용하여 표, 양식, 인라인 수식 및 레이아웃 감지 정확도를 대폭 개선합니다. 하지만 지연 시간이 증가할 수 있습니다. 기본값은 False입니다.", + "Signing in to {{WEBUI_NAME}}": "{{WEBUI_NAME}}로 가입중", + "Single": "단일", + "Sink List": "리스트 내리기", + "sk-1234": "sk-1234", + "Skill created successfully": "스킬이 성공적으로 생성되었습니다.", + "Skill deleted successfully": "스킬이 성공적으로 삭제되었습니다.", + "Skill Description": "스킬 설명", + "Skill ID": "스킬 ID", + "Skill imported successfully": "스킬이 성공적으로 가져와졌습니다.", + "Skill Instructions": "스킬 지침", + "Skill Name": "스킬 이름", + "Skill updated successfully": "스킬이 성공적으로 업데이트되었습니다.", + "Skills": "스킬", + "Skills Access": "스킬 접근", + "Skills Public Sharing": "스킬 공개 공유", + "Skills Sharing": "스킬 공유", + "Skip Cache": "캐시 무시", + "Skip the cache and re-run the inference. Defaults to False.": "캐시를 무시하고 추론을 다시 실행합니다. 기본값은 False입니다.", + "Something went wrong :/": "무언가 잘못 되었습니다 :/", + "Sonar": "Sonar", + "Sonar Deep Research": "Sonar Deep Research", + "Sonar Pro": "Sonar Pro", + "Sonar Reasoning": "Sonar Reasoning", + "Sonar Reasoning Pro": "Sonar Reasoning Pro", + "Sort": "정렬", + "Sort by": "정렬 기준", + "Sougou Search API sID": "Sougou Search API sID", + "Sougou Search API SK": "Sougou Search API SK", + "Source": "출처", + "Speech Playback Speed": "음성 재생 속도", + "Speech recognition error: {{error}}": "음성 인식 오류: {{error}}", + "Speech-to-Text": "음성-텍스트 변환", + "Speech-to-Text Engine": "음성-텍스트 변환 엔진", + "Speech-to-Text Language": "음성-텍스트 변환 언어", + "Split documents by markdown headers before applying character/token splitting.": "문자/토큰 분할을 적용하기 전에 마크다운 헤더로 문서를 분할합니다.", + "Start a new conversation": "새 대화 시작", + "Start of the channel": "채널 시작", + "Start Tag": "시작 태그", + "Starting in {{count}} minutes_one": "{{count}}분 후 시작", + "Starting in {{count}} minutes_other": "{{count}}분 후 시작", + "Starting in 1 minute": "1분 후 시작", + "Starting kernel...": "커널 시작 중...", + "Starting now": "지금 시작", + "State": "상태", + "Status": "상태", + "Status cleared successfully": "상태 초기화에 성공했습니다", + "Status updated successfully": "상태 업데이트에 성공했습니다", + "Status Updates": "상태 업데이트", + "STDOUT/STDERR": "STDOUT/STDERR", + "Steps": "단계", + "Stop": "정지", + "Stop Download": "다운로드 중지", + "Stop Generating": "생성 중지", + "Stop Sequence": "중지 시퀀스", + "Storage": "저장소", + "Stream Chat Response": "스트림 채팅 응답", + "Stream Delta Chunk Size": "스트림 델타 청크 크기", + "Streamable HTTP": "스트림 가능한 HTTP", + "Strikethrough": "취소선", + "Strip Existing OCR": "기존 OCR 제거", + "Strip existing OCR text from the PDF and re-run OCR. Ignored if Force OCR is enabled. Defaults to False.": "PDF에서 기존 OCR 텍스트를 제거하고 OCR을 다시 실행합니다. Force OCR이 활성화된 경우 무시됩니다. 기본값은 False입니다.", + "STT Model": "STT 모델", + "STT Settings": "STT 설정", + "Stylized PDF Export": "서식이 적용된 PDF 내보내기", + "Su_day_of_week": "Su_day_of_week", + "Submit question": "질문 제출", + "Submit suggestion": "제안 제출", + "Subtitle": "부제목", + "Success": "성공", + "Successfully imported {{userCount}} users.": "성공적으로 {{userCount}}명의 사용자를 가져왔습니다.", + "Successfully updated.": "성공적으로 업데이트되었습니다.", + "Suggest a change": "변경 제안", + "Suggested": "제안", + "Support": "지원", + "Support this plugin:": "플러그인 지원", + "Supported MIME Types": "지원하는 MIME 타입", + "Switch to JSON editor": "", + "Switch to visual editor": "", + "Sync": "동기화", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", + "Sync Complete!": "동기화 완료!", + "Sync directory": "디렉토리 연동", + "Sync Failed": "동기화 실패", + "Sync Usage Stats": "동기화 사용 통계", + "Syncing stats...": "동기화 통계...", + "Syncing...": "동기화 중...", + "Syncs only chats with updates after your last sync timestamp. Disable to re-sync all chats.": "마지막 동기화 타임스탬프 이후 업데이트된 채팅만 동기화합니다. 모든 채팅을 다시 동기화하려면 비활성화하세요.", + "System": "시스템", + "System Instructions": "시스템 지침", + "System Prompt": "시스템 프롬프트", + "Tag": "태그", + "Tags": "태그", + "Tags Generation": "태그 생성", + "Tags Generation Prompt": "태그 생성 프롬프트", + "Tail free sampling is used to reduce the impact of less probable tokens from the output. A higher value (e.g., 2.0) will reduce the impact more, while a value of 1.0 disables this setting.": "꼬리 자유 샘플링은 출력에서 확률이 낮은 토큰의 영향을 줄이기 위해 사용됩니다. 값이 클수록(예: 2.0) 이러한 토큰의 영향이 더 줄어들며, 1.0으로 설정하면 이 기능은 비활성화됩니다.", + "Talk to Model": "모델과 대화", + "Tap to interrupt": "탭하여 중단", + "Task List": "작업 목록", + "Task Management": "작업 관리", + "Task Model": "작업 모델", + "Tasks": "작업", + "tasks completed": "작업 완료", + "Tavily API Key": "Tavily API 키", + "Tavily Extract Depth": "Tabily 깊이 추출", + "Tell us more:": "더 알려주세요:", + "Temperature": "온도", + "Temporary Chat": "임시 채팅", + "Temporary Chat by Default": "임시 채팅을 기본값으로", + "Terminal": "터미널", + "Terminal servers saved": "터미널 서버 저장됨", + "Text Splitter": "텍스트 나누기", + "Text-to-Speech": "텍스트-음성 변환", + "Text-to-Speech Engine": "텍스트-음성 변환 엔진", + "Th_day_of_week": "Th_day_of_week", + "Thanks for your feedback!": "피드백 감사합니다!", + "The Application Account DN you bind with for search": "검색을 위해 바인딩하는 애플리케이션 계정 DN", + "The base to search for users": "사용자를 검색할 수 있는 기반", + "The batch size determines how many text requests are processed together at once. A higher batch size can increase the performance and speed of the model, but it also requires more memory.": "배치 크기에 따라 한 번에 처리되는 텍스트 요청의 수가 결정됩니다. 배치 크기가 크면 모델의 성능과 속도가 향상될 수 있지만 더 많은 메모리가 필요하기도 합니다.", + "The developers behind this plugin are passionate volunteers from the community. If you find this plugin helpful, please consider contributing to its development.": "이 플러그인은 커뮤니티의 열정적인 자원봉사자들이 개발했습니다. 유용하게 사용하셨다면 개발에 기여해 주시는 것도 고려해 주세요.", + "The evaluation leaderboard is based on the Elo rating system and is updated in real-time.": "평가 리더보드는 Elo 평가 시스템을 기반으로 하고 실시간으로 업데이트됩니다", + "The format to return a response in. Format can be json or a JSON schema.": "응답을 반환할 형식입니다. JSON 또는 JSON 스키마 형식이 될 수 있습니다.", + "The height in pixels to compress images to. Leave empty for no compression.": "이미지를 압축할 픽셀 높이입니다. 압축하지 않으려면 비워 두세요.", + "The language of the input audio. Supplying the input language in ISO-639-1 (e.g. en) format will improve accuracy and latency. Leave blank to automatically detect the language.": "입력 오디오의 언어입니다. ISO-639-1 형식(예: en)으로 입력 언어를 지정하면 정확도와 지연 시간이 향상됩니다. 비워두면 자동으로 언어를 감지합니다.", + "The LDAP attribute that maps to the mail that users use to sign in.": "사용자가 로그인하는 데 사용하는 메일에 매핑되는 LDAP 속성입니다.", + "The LDAP attribute that maps to the username that users use to sign in.": "사용자가 로그인할 때 사용하는 사용자 이름에 매핑되는 LDAP 속성입니다.", + "The leaderboard is currently in beta, and we may adjust the rating calculations as we refine the algorithm.": "리더보드는 현재 베타 버전이며, 알고리즘 개선에 따라 평가 방식이 변경될 수 있습니다.", + "The maximum file size in MB. If the file size exceeds this limit, the file will not be uploaded.": "최대 파일 크기(MB). 만약 파일 크기가 한도를 초과할 시, 파일은 업로드되지 않습니다", + "The maximum number of files that can be used at once in chat. If the number of files exceeds this limit, the files will not be uploaded.": "하나의 채팅에서는 사용가능한 최대 파일 수가 있습니다. 만약 파일 수가 한도를 초과할 시, 파일은 업로드되지 않습니다.", + "The output format for the text. Can be 'json', 'markdown', or 'html'. Defaults to 'markdown'.": "텍스트의 출력 형식입니다. 'json', 'markdown', 또는 'html'이 될 수 있습니다. 기본값은 'markdown'입니다.", + "The passwords you entered don't quite match. Please double-check and try again.": "입력한 비밀번호가 일치하지 않습니다. 확인 후 다시 시도해 주세요.", + "The score should be a value between 0.0 (0%) and 1.0 (100%).": "점수는 0.0(0%)에서 1.0(100%) 사이의 값이어야 합니다.", + "The stream delta chunk size for the model. Increasing the chunk size will make the model respond with larger pieces of text at once.": "모델의 스트림 델타 청크 크기입니다. 청크 크기를 늘리면 모델이 한 번에 더 큰 텍스트 조각으로 응답하게 됩니다.", + "The temperature of the model. Increasing the temperature will make the model answer more creatively.": "모델의 온도. 온도를 높이면 모델이 더 창의적으로 답변할 수 있습니다.", + "The Weight of BM25 Hybrid Search. 0 more semantic, 1 more lexical. Default 0.5": "BM25 하이브리드 검색의 가중치. 0에 가까울수록 의미(semantic) 기반, 1에 가까울수록 어휘(lexical) 기반. 기본값 0.5", + "The width in pixels to compress images to. Leave empty for no compression.": "이미지를 압축할 픽셀 너비입니다. 압축하지 않으려면 비워 두세요.", + "Theme": "테마", + "There was an error syncing your stats. Please try again.": "통계 동기화 중 오류가 발생했습니다. 다시 시도해 주세요.", + "Thinking...": "생각 중...", + "This action cannot be undone. Do you wish to continue?": "이 행동은 되돌릴 수 없습니다. 계속 하시겠습니까?", + "This channel was created on {{createdAt}}. This is the very beginning of the {{channelName}} channel.": "{{createdAt}}에 {{channelName}} 채널이 처음 만들어졌습니다. 대화를 시작해보세요.", + "This chat won't appear in history and your messages will not be saved.": "이 채팅은 기록에 나타나지 않으며 메시지가 저장되지 않습니다.", + "This ensures that your valuable conversations are securely saved to your backend database. Thank you!": "이렇게 하면 소중한 대화 내용이 백엔드 데이터베이스에 안전하게 저장됩니다. 감사합니다!", + "This feature is currently experimental and may not work as expected.": "이 기능은 현재 실험 중이며 예상대로 작동하지 않을 수 있습니다.", + "This feature is experimental and may be modified or discontinued without notice.": "이 기능은 실험 중이며, 사전 통보 없이 수정되거나 중단될 수 있습니다.", + "This folder is empty": "이 폴더는 비어 있습니다.", + "This is a default user permission and will remain enabled.": "이것은 기본 사용자 권한이며 계속 활성화됩니다.", + "This is an experimental feature, it may not function as expected and is subject to change at any time.": "이것은 실험적 기능으로, 예상대로 작동하지 않을 수 있으며 언제든지 변경될 수 있습니다.", + "This model is not publicly available. Please select another model.": "이 모델은 공개적으로 사용할 수 없습니다. 다른 모델을 선택해주세요.", + "This option controls how long the model will stay loaded into memory following the request (default: 5m)": "이 옵션은 요청 처리 후 모델이 메모리에 유지하는 시간을 제어합니다. (기본값: 5분)", + "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "이 옵션은 컨텍스트를 새로 고칠 때 보존되는 토큰의 수를 제어합니다. 예를 들어 2로 설정하면 대화 컨텍스트의 마지막 2개 토큰이 유지됩니다. 컨텍스트를 보존하면 대화의 연속성을 유지하는 데 도움이 될 수 있지만 새로운 주제에 대한 응답 능력이 감소할 수 있습니다.", + "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "이 옵션은 Ollama에서 모델이 응답 생성 전에 사고할 수 있도록 돕는 '추론 기능'의 사용 여부를 설정합니다. 이 기능이 활성화되면, 모델은 대화 맥락을 처리하는 데 잠시 시간을 들여 더 사고적인 응답을 생성할 수 있습니다.", + "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "이 옵션은 모델이 응답에서 생성할 수 있는 최대 토큰 수를 설정합니다. 이 한도를 늘리면 모델이 더 긴 답변을 제공할 수 있지만, 도움이 되지 않거나 관련 없는 콘텐츠가 생성될 가능성도 높아질 수 있습니다.", + "This response was generated by \"{{model}}\"": "\"{{model}}\"이 생성한 응답입니다", + "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", + "This will delete": "삭제합니다.", + "This will delete {{NAME}} and all its contents.": "{{NAME}}모든 내용을 삭제합니다.", + "This will delete all models including custom models": "이렇게 하면 사용자 지정 모델을 포함한 모든 모델이 삭제됩니다", + "This will delete all models including custom models and cannot be undone.": "이렇게 하면 사용자 지정 모델을 포함한 모든 모델이 삭제되며 실행 취소할 수 없습니다.", + "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "캘린더 \"{{name}}\"과 모든 이벤트가 영구적으로 삭제됩니다. 이 작업은 되돌릴 수 없습니다.", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", + "Thorough explanation": "완전한 설명", + "Thought": "생각", + "Thought for {{DURATION}}": "{{DURATION}} 동안 생각함", + "Thought for {{DURATION}} seconds": "{{DURATION}}초 동안 생각함", + "Thought for less than a second": "1초 미만 동안 생각함", + "Thread": "스레드", + "Thumbs up/down ratings from users on model responses": "모델 응답에 대한 사용자들의 좋아요/싫어요 평가", + "Tika": "Tika", + "Tika Server URL required.": "Tika 서버 URL이 필요합니다.", + "Tiktoken": "틱토큰 (Tiktoken)", + "Time": "시간", + "Time & Calculation": "시간 및 계산", + "Timeout": "시간 초과", + "Title": "제목", + "Title Auto-Generation": "제목 자동 생성", + "Title cannot be an empty string.": "제목은 빈 문자열일 수 없습니다.", + "Title Generation": "제목 생성", + "Title Generation Prompt": "제목 생성 프롬프트", + "Title is required": "제목이 필요합니다.", + "TLS": "TLS", + "To access the available model names for downloading,": "다운로드 가능한 모델명을 확인하려면,", + "To access the GGUF models available for downloading,": "다운로드 가능한 GGUF 모델을 확인하려면,", + "To access the WebUI, please reach out to the administrator. Admins can manage user statuses from the Admin Panel.": "WebUI에 접속하려면 관리자에게 문의하십시오. 관리자는 관리자 패널에서 사용자 상태를 관리할 수 있습니다.", + "To attach knowledge base here, add them to the \"Knowledge\" workspace first.": "지식 기반을 여기에 첨부하려면. \"지식 기반\" 워크스페이스에 먼저 추가하세요", + "To learn more about available endpoints, visit our documentation.": "사용 가능한 엔드포인트에 대해 자세히 알아보려면 문서를 방문하세요.", + "To select skills here, add them to the \"Skills\" workspace first.": "여기서 스킬을 선택하려면, \"스킬\" 워크스페이스에 먼저 추가하세요.", + "To select toolkits here, add them to the \"Tools\" workspace first.": "여기서 도구를 선택하려면, \"도구\" 워크스페이스에 먼저 추가하세요.", + "Toast notifications for new updates": "새 업데이트 알림", + "Today": "오늘", + "Today at": "오늘은", + "Today at {{LOCALIZED_TIME}}": "오늘 {{LOCALIZED_TIME}}", + "Toggle {{COUNT}} sources": "{{COUNT}} 소스 토글", + "Toggle 1 source": "1 소스 토글", + "Toggle details": "세부 정보 토글", + "Toggle Dictation": "음성 입력 토글", + "Toggle Mute": "", + "Toggle Sidebar": "사이드바 토글", + "Toggle status history": "상태 기록 토글", + "Toggle whether current connection is active.": "현재 연결 활성화 여부 설정", + "Token": "토큰", + "Token counts are estimates and may not reflect actual API usage": "토큰 수는 추정치이며 실제 API 사용량을 반영하지 않을 수 있습니다.", + "tokens": "토큰", + "Tokens": "토큰", + "Too verbose": "너무 장황합니다", + "Tool created successfully": "성공적으로 도구가 생성되었습니다.", + "Tool deleted successfully": "성공적으로 도구가 삭제되었습니다.", + "Tool Description": "도구 설명", + "Tool ID": "도구 ID", + "Tool imported successfully": "성공적으로 도구를 가져왔습니다", + "Tool Name": "도구 이름", + "Tool Servers": "도구 서버", + "Tool updated successfully": "성공적으로 도구가 업데이트되었습니다", + "Tools": "도구", + "Tools Access": "도구 접근", + "Tools are a function calling system with arbitrary code execution": "도구는 임의 코드를 실행시키는 함수를 불러오는 시스템입니다", + "Tools Function Calling Prompt": "도구 함수 호출 프롬프트", + "Tools have a function calling system that allows arbitrary code execution.": "도구에 임의 코드 실행을 허용하는 함수가 포함되어 있습니다.", + "Tools Public Sharing": "도구 공개 및 공유", + "Tools Sharing": "도구 공유", + "Top": "상위", + "Top K": "Top K", + "Top K Reranker": "Top K 리랭커", + "Transformers": "트랜스포머", + "Trouble accessing Ollama?": "올라마(Ollama)에 접근하는 데 문제가 있나요?", + "Trust Proxy Environment": "신뢰 할 수 있는 프록시 환경", + "Try adjusting your search or filter to find what you are looking for.": "검색어 또는 필터를 변경하여 다시 시도해 보세요.", + "Try Again": "다시 시도하기", + "TTS Model": "TTS 모델", + "TTS Settings": "TTS 설정", + "TTS Voice": "TTS 음성", + "Tu_day_of_week": "Tu_day_of_week", + "Type": "입력", + "Type here...": "여기에 입력하세요...", + "Type Hugging Face Resolve (Download) URL": "Hugging Face Resolve (다운로드) URL 입력", + "Uh-oh! There was an issue with the response.": "이런! 응답에 문제가 발생했습니다.", + "UI": "UI", + "UI Scale": "UI 크기", + "Unarchive All": "모두 보관 해제", + "Unarchive All Archived Chats": "보관된 모든 채팅을 보관 해제", + "Unarchive Chat": "채팅 보관 해제", + "Underline": "밑줄", + "Unknown": "알 수 없음", + "Unknown User": "알 수 없는 사용자", + "Unloads {{FROM_NOW}}": "{{FROM_NOW}} 언로드", + "Unlock mysteries": "미스터리 풀기", + "Unmute": "", + "Unpin": "고정 해제", + "Unpin from Sidebar": "사이드바 고정 해제", + "Unravel secrets": "비밀 풀기", + "Unshare Chat": "채팅 공유 해제", + "Unsupported file type.": "지원하지 않는 파일 형식", + "Untagged": "태그 해제", + "Untitled": "제목 없음", + "Update": "업데이트", + "Update and Copy Link": "링크 업데이트 및 복사", + "Update for the latest features and improvements.": "이번 업데이트의 새로운 기능과 개선", + "Update password": "비밀번호 업데이트", + "Update your status": "상태 업데이트", + "Updated": "업데이트됨", + "Updated at": "업데이트 일시", + "Updated At": "업데이트 일시", + "Upgrade to a licensed plan for enhanced capabilities, including custom theming and branding, and dedicated support.": "맞춤형 테마 설정 및 브랜딩, 전용 지원을 포함한 향상된 기능을 위해 라이선스 플랜으로 업그레이드하세요.", + "Upload": "업로드", + "Upload a GGUF model": "GGUF 모델 업로드", + "Upload Audio": "오디오 업로드", + "Upload directory": "디렉토리 업로드", + "Upload files": "파일 업로드", + "Upload Files": "파일 업로드", + "Upload Model": "모델 업로드", + "Upload Pipeline": "업로드 파이프라인", + "Upload profile image": "프로필 이미지 업로드", + "Upload Progress": "업로드 진행 상황", + "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "업로드 진행 상황: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", + "Uploaded files or images": "업로드된 파일 또는 이미지", + "Uploading {{current}}/{{total}}: {{file}}": "", + "Uploading...": "업로드 중...", + "URL": "URL", + "URL is required": "URL이 필요합니다.", + "URL Mode": "URL 모드", + "Usage": "사용량", + "Use": "사용", + "Use '#' in the prompt input to load and include your knowledge.": "프롬프트 입력에서 '#'를 사용하여 지식 기반을 불러오고 포함하세요.", + "Use /v1/chat/completions endpoint instead of /v1/audio/transcriptions for potentially better accuracy.": "더 정확한 결과를 얻으려면 /v1/audio/transcriptions 대신 /v1/chat/completions 엔드포인트를 사용해 보세요.", + "Use Chat Completions API": "Chat Completions API 사용", + "Use groups to organize your users and assign permissions.": "그룹을 사용하여 사용자를 조직하고 권한을 할당하세요.", + "Use LLM": "LLM 사용", + "Use no proxy to fetch page contents.": "페이지 콘텐츠를 가져오려면 프록시를 사용하지 마세요.", + "Use proxy designated by http_proxy and https_proxy environment variables to fetch page contents.": "http_proxy 및 https_proxy 환경 변수로 지정된 프록시를 사용하여 페이지 콘텐츠를 가져옵니다.", + "user": "사용자", + "User": "사용자", + "User Activity": "사용자 활동", + "User Groups": "사용자 그룹", + "User location successfully retrieved.": "성공적으로 사용자의 위치를 불러왔습니다", + "User menu": "사용자 메뉴", + "User Preview": "", + "User ratings (thumbs up/down)": "사용자 평가 (좋아요/싫어요)", + "User Status": "사용자 상태", + "User Webhooks": "사용자 웹훅", + "Username": "사용자 이름", + "users": "사용자", + "Users": "사용자", + "Uses DefaultAzureCredential to authenticate": "DefaultAzureCredential을 사용하여 인증합니다", + "Uses OAuth 2.1 Dynamic Client Registration": "OAuth 2.1 동적 클라이언트 등록을 사용합니다", + "Using Entire Document": "전체 문서 사용", + "Using Focused Retrieval": "집중 검색 사용", + "Using the default arena model with all models. Click the plus button to add custom models.": "모든 모델은 기본 아레나 모델을 사용중입니다. 플러스 버튼을 눌러 커스텀 모델을 추가하세요.", + "Valid time units:": "유효 시간 단위:", + "Validate certificate": "인증서 검증", + "Valves": "밸브", + "Valves updated": "밸브 업데이트됨", + "Valves updated successfully": "성공적으로 밸브가 업데이트되었습니다", + "variable": "변수", + "Verify Connection": "연결 확인", + "Verify SSL Certificate": "SSL 인증서 확인", + "Version": "버전", + "Version {{selectedVersion}} of {{totalVersions}}": "버전 {{totalVersions}}의 {{selectedVersion}}", + "Version deleted": "버전이 삭제되었습니다", + "View Replies": "답글 보기", + "View Result from **{{NAME}}**": "**{{NAME}}**의 결과 보기", + "View source: {{name}}": "소스 보기: {{name}}", + "View source: {{title}}": "소스 보기: {{title}}", + "Visibility": "공개 범위", + "Visible": "공개", + "Visible to all users": "모든 사용자에게 공개", + "Vision": "비전", + "Visual": "", + "Voice": "음성", + "Voice Input": "음성 입력", + "Voice mode": "음성 모드 사용", + "Voice Mode Prompt": "음성 모드 프롬프트", + "Waiting for upload...": "업로드 기다리는 중...", + "Warning": "경고", + "Warning:": "주의:", + "Warning: Enabling this will allow users to run scheduled prompts automatically.": "주의: 이 기능을 활성화하면 사용자가 예약된 프롬프트를 자동으로 실행할 수 있습니다.", + "Warning: Enabling this will allow users to upload arbitrary code on the server.": "주의: 이 기능을 활성화하면 사용자가 서버에 임의 코드를 업로드할 수 있습니다.", + "Warning: Jupyter execution enables arbitrary code execution, posing severe security risks—proceed with extreme caution.": "경고: Jupyter 실행은 임의의 코드 실행을 가능하게 하여 심각한 보안 위험을 초래합니다. — 매우 신중하게 진행하세요.", + "We_day_of_week": "We_day_of_week", + "Web": "웹", + "Web API": "웹 API", + "Web Loader Engine": "웹 로더 엔진", + "Web Search": "웹 검색", + "Web Search Engine": "웹 검색 엔진", + "Web Search in Chat": "채팅에서 웹 검색", + "Web Search Query Generation": "웹 검색 쿼리 생성", + "Webhook Name": "웹훅 이름", + "Webhook URL": "웹훅 URL", + "Webhooks": "웹훅", + "Webpage URLs": "웹페이지 URL", + "WebUI Settings": "WebUI 설정", + "WebUI URL": "WebUI URL", + "WebUI will make requests to \"{{url}}\"": "WebUI가 \"{{url}}\"로 요청을 보냅니다", + "WebUI will make requests to \"{{url}}/api/chat\"": "WebUI가 \"{{url}}/api/chat\"로 요청을 보냅니다", + "WebUI will make requests to \"{{url}}/chat/completions\"": "WebUI가 \"{{url}}/chat/completions\"로 요청을 보냅니다", + "Week": "주", + "Weekly": "주간", + "What are you trying to achieve?": "무엇을 성취하고 싶으신가요?", + "What are you working on?": "어떤 작업을 하고 계신가요?", + "What is NOT shared:": "공유되지 않는 것:", + "What is shared:": "공유되는 것:", + "What's New in": "새로운 기능:", + "What's on your mind?": "무슨 생각을 하고 계신가요?", + "When": "", + "When enabled, the model will respond to each chat message in real-time, generating a response as soon as the user sends a message. This mode is useful for live chat applications, but may impact performance on slower hardware.": "활성화하면 모델이 각 채팅 메시지에 실시간으로 응답하여 사용자가 메시지를 보내는 즉시 응답을 생성합니다. 이 모드는 실시간 채팅 애플리케이션에 유용하지만, 느린 하드웨어에서는 성능에 영향을 미칠 수 있습니다.", + "wherever you are": "당신이 어디에 있든", + "Whether to paginate the output. Each page will be separated by a horizontal rule and page number. Defaults to False.": "출력을 페이지로 나눌지 여부입니다. 각 페이지는 구분선과 페이지 번호로 구분됩니다. 기본값은 False입니다.", + "Whisper (Local)": "Whisper (로컬)", + "Who can share to this group": "누가 이 그룹에 공유할 수 있나요", + "Why?": "이유는?", + "Widescreen Mode": "와이드스크린 모드", + "Width": "너비", + "Wikipedia": "위키피디아", + "Won": "승리", + "Working Directory": "작업 디렉토리", + "Works together with top-k. A higher value (e.g., 0.95) will lead to more diverse text, while a lower value (e.g., 0.5) will generate more focused and conservative text.": "top-k와 함께 작동합니다. 값이 높을수록(예: 0.95) 더 다양한 텍스트가 생성되고, 값이 낮을수록(예: 0.5) 더 집중적이고 보수적인 텍스트가 생성됩니다.", + "Workspace": "워크스페이스", + "Workspace Permissions": "워크스페이스 권한", + "Write": "작성", + "Write a summary in 50 words that summarizes {{topic}}.": "{{topic}}에 대한 50단어 요약문을 작성하시오.", + "Write something...": "내용을 입력하세요…", + "Write your model system prompt content here\ne.g.) You are Mario from Super Mario Bros, acting as an assistant.": "여기에 모델 시스템 프롬프트 내용을 작성하세요\n예: 당신은 Super Mario Bros의 마리오로서, 어시스턴트 역할을 합니다.", + "Yacy Instance URL": "Yacy 인스턴스 URL", + "Yacy Password": "Yacy 비밀번호", + "Yacy Username": "Yacy 사용자 이름", + "Yahoo": "야후", + "Yandex": "얀덱스", + "Yandex Web Search API Key": "얀덱스 웹 검색 API 키", + "Yandex Web Search config": "얀덱스 웹 검색 구성", + "Yandex Web Search URL": "얀덱스 웹 검색 URL", + "Yesterday": "어제", + "Yesterday at {{LOCALIZED_TIME}}": "어제 {{LOCALIZED_TIME}}", + "You": "당신", + "You are currently using a trial license. Please contact support to upgrade your license.": "현재 평가판 라이선스를 사용 중입니다. 라이선스를 업그레이드하려면 지원팀에 문의하세요.", + "You can only chat with a maximum of {{maxCount}} file(s) at a time.": "최대 {{maxCount}}개의 파일과만 동시에 대화할 수 있습니다 ", + "You can personalize your interactions with LLMs by adding memories through the 'Manage' button below, making them more helpful and tailored to you.": "아래 '관리' 버튼으로 메모리를 추가하여 LLM들과의 상호작용을 개인화할 수 있습니다. 이를 통해 더 유용하고 맞춤화된 경험을 제공합니다.", + "You cannot upload an empty file.": "빈 파일을 업로드 할 수 없습니다", + "You do not have permission to edit this model": "이 모델을 편집할 권한이 없습니다", + "You do not have permission to edit this prompt.": "이 프롬프트를 편집할 권한이 없습니다", + "You do not have permission to edit this skill.": "이 기술을 편집할 권한이 없습니다", + "You do not have permission to edit this tool": "이 도구를 편집할 권한이 없습니다", + "You do not have permission to make this public": "이 것을 공개할 권한이 없습니다", + "You do not have permission to send messages in this channel.": "이 채널에 메시지를 보내할 권한이 없습니다", + "You do not have permission to send messages in this thread.": "이 스레드에 메시지를 보내할 권한이 없습니다", + "You do not have permission to upload files to this knowledge base.": "이 지식 베이스에 파일을 업로드할 권한이 없습니다", + "You do not have permission to upload files.": "파일을 업로드할 권한이 없습니다.", + "You do not have permission to upload web content.": "웹 콘텐츠를 업로드할 권한이 없습니다", + "You have no archived conversations.": "채팅을 보관한 적이 없습니다.", + "You have no shared conversations.": "공유된 대화가 없습니다.", + "You have shared this chat": "이 채팅을 공유했습니다.", + "You.com API Key": "You.com API 키", + "You're a helpful assistant.": "당신은 유용한 어시스턴트입니다.", + "You're now logged in.": "로그인되었습니다.", + "Your Account": "계정", + "Your account status is currently pending activation.": "현재 계정은 아직 활성화되지 않았습니다.", + "Your browser does not support the audio tag.": "당신의 브라우저는 오디오 태그를 지원하지 않습니다.", + "Your browser does not support the video tag.": "당신의 브라우저는 비디오 태그를 지원하지 않습니다.", + "Your entire contribution will go directly to the plugin developer; Open WebUI does not take any percentage. However, the chosen funding platform might have its own fees.": "당신의 모든 기여는 곧바로 플러그인 개발자에게 갑니다; Open WebUI는 수수료를 받지 않습니다. 다만, 선택한 후원 플랫폼은 수수료를 가져갈 수 있습니다.", + "Your message text or inputs": "당신의 메시지 텍스트 또는 입력값", + "Your usage stats have been successfully synced.": "당신의 사용 통계가 성공적으로 동기화되었습니다.", + "YouTube": "유튜브", + "Youtube Language": "Youtube 언어", + "Youtube Proxy URL": "Youtube 프록시 URL" } diff --git a/src/lib/i18n/locales/lt-LT/translation.json b/src/lib/i18n/locales/lt-LT/translation.json index 0c864a6810..d27a340f34 100644 --- a/src/lib/i18n/locales/lt-LT/translation.json +++ b/src/lib/i18n/locales/lt-LT/translation.json @@ -9,12 +9,21 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -195,6 +204,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -241,6 +251,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "galimi naudotojai", "available!": "prieinama!", @@ -400,13 +411,19 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Command", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Kelios užklausos vienu metu", "Config": "", "Config imported successfully": "", @@ -539,12 +556,14 @@ "Delete a model": "Ištrinti modėlį", "Delete All": "", "Delete All Chats": "Ištrinti visus pokalbius", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Ištrinti pokalbį", "Delete chat?": "Ištrinti pokalbį?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -581,6 +600,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -689,6 +713,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Embedding modelis", "Embedding Model Engine": "Embedding modelio variklis", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -767,6 +792,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "Įveskite kalbos kodus", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -903,6 +929,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -956,14 +983,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Rinkmenų rėžimas", + "File moved.": "", "File name": "", "File not found.": "Failas nerastas.", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "Rinkmenos", "Filter": "", @@ -1179,13 +1208,13 @@ "Knowledge": "Žinios", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1229,6 +1258,7 @@ "Light": "Šviesus", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Klausoma...", @@ -1379,6 +1409,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Naujas pokalbis", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1424,11 +1456,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1449,6 +1483,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1488,6 +1523,7 @@ "On": "Aktyvuota", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1559,6 +1595,7 @@ "PDF document (.pdf)": "PDF dokumentas (.pdf)", "PDF Extract Images (OCR)": "PDF paveikslėlių skaitymas (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "laukiama", "Pending": "", "Pending User Overlay Content": "", @@ -1620,6 +1657,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Paskutinės 30 dienų", "Previous 7 days": "Paskutinės 7 dienos", "Previous message": "", @@ -1697,6 +1735,10 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Pašalinti modelį", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Pervadinti", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1715,6 +1757,7 @@ "Reset": "Atkurti", "Reset All Models": "", "Reset Image": "Atstatyti vaizdą", + "Reset knowledge base?": "", "Reset Upload Directory": "Atkurti įkėlimų direktoiją", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1784,6 +1827,7 @@ "Search Prompts": "Ieškoti užklausų", "Search Result Count": "Paieškos rezultatų skaičius", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "Paieškos įrankiai", @@ -1983,6 +2027,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2055,7 +2101,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Tai ištrins", @@ -2063,7 +2108,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Platus paaiškinimas", "Thought": "", "Thought for {{DURATION}}": "", @@ -2099,6 +2144,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2177,7 +2223,7 @@ "Upload Progress": "Įkėlimo progresas", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2197,6 +2243,7 @@ "User Groups": "", "User location successfully retrieved.": "Naudotojo vieta sėkmingai gauta", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/lv-LV/translation.json b/src/lib/i18n/locales/lv-LV/translation.json index df7f0297ed..48c0595bfe 100644 --- a/src/lib/i18n/locales/lv-LV/translation.json +++ b/src/lib/i18n/locales/lv-LV/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "[Šodien plkst.] H:mm", "[Yesterday at] h:mm A": "[Vakar plkst.] H:mm", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} pieejamie rīki", "{{COUNT}} characters": "{{COUNT}} rakstzīmes", "{{COUNT}} extracted lines": "{{COUNT}} izvilktās rindas", "{{COUNT}} files": "{{COUNT}} faili", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_zero": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} slēptās rindas", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_zero": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} atbildes", "{{COUNT}} Rows": "{{COUNT}} rindas", "{{count}} selected_zero": "", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Vai tiešām vēlaties dzēst šo kanālu?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Vai tiešām vēlaties dzēst šo ziņojumu?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -240,6 +248,7 @@ "Automations": "", "Available list": "Pieejamo saraksts", "Available models": "", + "Available Skills": "", "Available Tools": "Pieejamie rīki", "available users": "pieejamie lietotāji", "available!": "pieejams!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "ComfyUI darbplūsma", "ComfyUI Workflow Nodes": "ComfyUI darbplūsmas mezgli", "Comma separated Node Ids (e.g. 1 or 1,2)": "Ar komatu atdalīti mezglu ID (piem., 1 vai 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Komanda", "Comment": "Komentārs", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Pabeigšanas", "Compress Images in Channels": "Saspiest attēlus kanālos", + "Computing checksums ({{count}} files)_zero": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Vienlaicīgie pieprasījumi", "Config": "", "Config imported successfully": "Konfigurācija veiksmīgi importēta", @@ -538,12 +552,14 @@ "Delete a model": "Dzēst modeli", "Delete All": "", "Delete All Chats": "Dzēst visas tērzēšanas", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Dzēst visu saturu šajā mapē", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Dzēst tērzēšanu", "Delete chat?": "Dzēst tērzēšanu?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Dzēst mapi?", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Tiešie savienojumi ļauj lietotājiem savienoties ar saviem OpenAI saderīgajiem API galapunktiem.", "Direct Message": "Tiešais ziņojums", "Direct Tool Servers": "Tiešo rīku serveri", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Direktorijas izvēle tika atcelta", "Disable All": "", "Disable Code Interpreter": "Atspējot koda interpretatoru", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Iegulšanas modelis", "Embedding Model Engine": "Iegulšanas modeļa dzinējs", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "Ievadiet Kagi Search API atslēgu", "Enter Key Behavior": "Ievadiet taustiņa uzvedību", "Enter language codes": "Ievadiet valodu kodus", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Ievadiet MinerU API atslēgu", "Enter Mistral API Base URL": "Ievadiet Mistral API bāzes URL", "Enter Mistral API Key": "Ievadiet Mistral API atslēgu", @@ -902,6 +925,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "Neizdevās notīrīt statusu", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Neizdevās savienoties ar {{URL}} OpenAPI rīku serveri", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "Neizdevās nokopēt saiti", @@ -955,14 +979,16 @@ "File content updated successfully.": "Faila saturs veiksmīgi atjaunināts.", "File Context": "Faila konteksts", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Faila režīms", + "File moved.": "", "File name": "", "File not found.": "Fails nav atrasts.", "File removed successfully.": "Fails veiksmīgi noņemts.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Faila izmērs nedrīkst pārsniegt {{maxSize}} MB.", "File Upload": "Faila augšupielāde", "File uploaded successfully": "Fails veiksmīgi augšupielādēts", - "File uploaded!": "Fails augšupielādēts!", "Filename": "", "Files": "Faili", "Filter": "Filtrs", @@ -1178,13 +1204,13 @@ "Knowledge": "Zināšanas", "Knowledge Access": "Zināšanu piekļuve", "Knowledge Base": "Zināšanu bāze", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Zināšanas veiksmīgi izveidotas.", "Knowledge deleted successfully.": "Zināšanas veiksmīgi dzēstas.", "Knowledge Description": "Zināšanu apraksts", "Knowledge exported successfully": "Zināšanas veiksmīgi eksportētas", "Knowledge Name": "Zināšanu nosaukums", "Knowledge Public Sharing": "Zināšanu publiska kopīgošana", - "Knowledge reset successfully.": "Zināšanas veiksmīgi atiestatītas.", "Knowledge Sharing": "Zināšanu kopīgošana", "Knowledge updated successfully": "Zināšanas veiksmīgi atjauninātas", "Kokoro.js (Browser)": "Kokoro.js (pārlūks)", @@ -1228,6 +1254,7 @@ "Light": "Gaišs", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Ierobežot vienlaicīgos meklēšanas vaicājumus. 0 = neierobežots (noklusējums). Iestatiet 1 secīgai izpildei (ieteicams API ar stingriem ātruma ierobežojumiem, piemēram, Brave bezmaksas līmenim).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "Saraksts", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Klausās...", @@ -1378,6 +1405,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Jauna tērzēšana", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Jauna mape", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML, CSS vai JavaScript saturs nav atrasts.", "No inference engine with management support found": "Nav atrasts secinājumu dzinējs ar pārvaldības atbalstu", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "Zināšanu bāzes nav atrastas.", "No knowledge found": "Zināšanau bāze nav atrasta", "No limit": "", "No memories to clear": "Nav atmiņu, ko notīrīt", "No model IDs": "Nav modeļu ID", + "No models accessible": "", "No models available": "", "No models found": "Modeļi nav atrasti", "No models selected": "Modeļi nav izvēlēti", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "Rīki nav atrasti", "No users were found.": "Lietotāji nav atrasti.", "No valves": "Nav vārstu", @@ -1487,6 +1519,7 @@ "On": "Ieslēgts", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Aktīvs tikai, ja ir ieslēgts iestatījums \"Ielīmēt lielu tekstu kā failu\".", "Only active when the chat input is in focus and an LLM is generating a response.": "Aktīvs tikai, kad tērzēšanas ievade ir fokusā un LLM ģenerē atbildi.", "Only active when the chat input is in focus.": "Aktīvs tikai, kad tērzēšanas ievade ir fokusā.", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "PDF dokuments (.pdf)", "PDF Extract Images (OCR)": "PDF attēlu ekstrakcija (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "gaida", "Pending": "Gaida", "Pending User Overlay Content": "Gaidošā lietotāja pārklājuma saturs", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefiksa ID tiek izmantots, lai izvairītos no konfliktiem ar citiem savienojumiem, pievienojot prefiksu modeļu ID - atstājiet tukšu, lai atspējotu", "Prevent File Creation": "Novērst failu izveidi", "Preview": "Priekšskatījums", + "Preview Access": "", "Previous 30 days": "Iepriekšējās 30 dienas", "Previous 7 days": "Iepriekšējās 7 dienas", "Previous message": "Iepriekšējais ziņojums", @@ -1696,6 +1731,9 @@ "Remove from favorites": "", "Remove image": "Noņemt attēlu", "Remove Model": "Noņemt modeli", + "Removing {{count}} stale files..._zero": "", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Pārdēvēt", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "Atiestatīt", "Reset All Models": "Atiestatīt visus modeļus", "Reset Image": "Atiestatīt attēlu", + "Reset knowledge base?": "", "Reset Upload Directory": "Atiestatīt augšupielādes direktoriju", "Reset Vector Storage/Knowledge": "Atiestatīt vektoru krātuvi/zināšanas", "Reset view": "Atiestatīt skatu", @@ -1782,6 +1821,7 @@ "Search Prompts": "Meklēt uzvednes", "Search Result Count": "Meklēšanas rezultātu skaits", "Search Skills": "", + "Search skills...": "", "Search the internet": "Meklēt internetā", "Search the web and fetch URLs": "", "Search Tools": "Meklēt rīkus", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "Sinhronizēt", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Sinhronizācija pabeigta!", "Sync directory": "Sinhronizēt direktoriju", "Sync Failed": "Sinhronizācija neizdevās", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Šī opcija kontrolē, cik tokenu tiek saglabāti, atsvaidzinot kontekstu. Piemēram, ja iestatīts uz 2, tiks saglabāti pēdējie 2 sarunas konteksta tokeni. Konteksta saglabāšana var palīdzēt uzturēt sarunas nepārtrauktību, bet var samazināt spēju atbildēt uz jaunām tēmām.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Šī opcija iespējo vai atspējo spriedumu funkcijas izmantošanu Ollama, kas ļauj modelim padomāt pirms atbildes ģenerēšanas. Ja iespējots, modelis var veltīt brīdi sarunas konteksta apstrādei un ģenerēt pārdomātāku atbildi.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Šī opcija iestata maksimālo tokenu skaitu, ko modelis var ģenerēt savā atbildē. Šī ierobežojuma palielināšana ļauj modelim sniegt garākas atbildes, bet var arī palielināt nevēlama vai neatbilstoša satura ģenerēšanas iespējamību.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Šī opcija dzēsīs visus esošos failus kolekcijā un aizstās tos ar jaunaugšupielādētiem failiem.", "This response was generated by \"{{model}}\"": "Šo atbildi ģenerēja \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Tas dzēsīs", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "Tas dzēsīs visus modeļus, ieskaitot pielāgotos modeļus", "This will delete all models including custom models and cannot be undone.": "Tas dzēsīs visus modeļus, ieskaitot pielāgotos modeļus, un to nevar atsaukt.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Tas atiestatīs zināšanu bāzi un sinhronizēs visus failus. Vai vēlaties turpināt?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Pamatīgs skaidrojums", "Thought": "", "Thought for {{DURATION}}": "Domāja {{DURATION}}", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "Pārslēgt sānjoslu", "Toggle status history": "", "Toggle whether current connection is active.": "Pārslēgt, vai pašreizējais savienojums ir aktīvs.", @@ -2174,7 +2216,7 @@ "Upload Progress": "Augšupielādes progress", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Augšupielādes progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Augšupielādēti faili vai attēli", - "Uploading file...": "Augšupielādē failu...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "URL ir nepieciešams", @@ -2194,6 +2236,7 @@ "User Groups": "Lietotāju grupas", "User location successfully retrieved.": "Lietotāja atrašanās vieta veiksmīgi iegūta.", "User menu": "Lietotāja izvēlne", + "User Preview": "", "User ratings (thumbs up/down)": "Lietotāju vērtējumi (patīk/nepatīk)", "User Status": "Lietotāja statuss", "User Webhooks": "Lietotāja webhook", diff --git a/src/lib/i18n/locales/ms-MY/translation.json b/src/lib/i18n/locales/ms-MY/translation.json index 6574e554af..d9d508415b 100644 --- a/src/lib/i18n/locales/ms-MY/translation.json +++ b/src/lib/i18n/locales/ms-MY/translation.json @@ -9,12 +9,15 @@ "[Today at] h:mm A": "[Hari ini pada] h:mm A", "[Yesterday at] h:mm A": "[Semalam pada] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Alat Tersedia", "{{COUNT}} characters": "{{COUNT}} aksara", "{{COUNT}} extracted lines": "{{COUNT}} baris yang diekstrak", "{{COUNT}} files": "{{COUNT}} fail", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} baris tersembunyi", "{{COUNT}} members": "{{COUNT}} ahli", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Balasan", "{{COUNT}} Rows": "{{COUNT}} Baris", "{{count}} selected_other": "{{count}} terpilih", @@ -192,6 +195,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Adakah anda pasti ingin memadam semua perbualan? Tindakan ini tidak boleh dibuat asal.", "Are you sure you want to delete this channel?": "Adakah anda pasti ingin memadam saluran ini?", "Are you sure you want to delete this connection? This action cannot be undone.": "Adakah anda pasti ingin memadam sambungan ini? Tindakan ini tidak boleh dibuat asal.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "Adakah anda pasti ingin memadam ingatan ini? Tindakan ini tidak boleh dibuat asal.", "Are you sure you want to delete this message?": "Adakah anda pasti ingin memadam mesej ini?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Adakah anda pasti ingin memadam versi ini? Versi anak akan dipautkan semula ke induk versi ini.", @@ -238,6 +242,7 @@ "Automations": "Automasi", "Available list": "Senarai tersedia", "Available models": "Model tersedia", + "Available Skills": "", "Available Tools": "Alat Tersedia", "available users": "pengguna tersedia", "available!": "tersedia!", @@ -397,13 +402,16 @@ "ComfyUI Workflow": "Aliran Kerja ComfyUI", "ComfyUI Workflow Nodes": "Nod Aliran Kerja ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "ID Nod yang dipisahkan dengan koma (cth. 1 atau 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "arahan", "Command": "Arahan", "Comment": "Komen", "Commit Message": "Mesej Komit", "Community Reviews": "Ulasan Komuniti", + "Comparing with knowledge base...": "", "Completions": "Penyelesaian", "Compress Images in Channels": "Mampat Imej dalam Saluran", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Permintaan Serentak", "Config": "Konfigurasi", "Config imported successfully": "Konfigurasi diimport dengan berjaya", @@ -536,12 +544,14 @@ "Delete a model": "Padam Model", "Delete All": "Padam Semua", "Delete All Chats": "Padam Semua Perbualan", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Padam semua kandungan dalam folder ini", "Delete automation?": "Padam automasi?", "Delete calendar": "Padam kalendar", "Delete Calendar": "Padam Kalendar", "Delete Chat": "Padam Perbualan", "Delete chat?": "Padam perbualan?", + "Delete directory?": "", "Delete Event": "Padam Acara", "Delete File": "Padam Fail", "Delete folder?": "Padam folder?", @@ -578,6 +588,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Sambungan Langsung membenarkan pengguna untuk menyambung ke titik akhir API yang serasi dengan OpenAI mereka sendiri.", "Direct Message": "Mesej Langsung", "Direct Tool Servers": "Pelayan Alat Langsung", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Pemilihan direktori telah dibatalkan", "Disable All": "Nyahaktifkan Semua", "Disable Code Interpreter": "Nyahaktifkan Pentafsir Kod", @@ -686,6 +701,7 @@ "Embedding Concurrent Requests": "Permintaan Serentak Embedding", "Embedding Model": "Model Embedding", "Embedding Model Engine": "Enjin Model Embedding", + "Emoji": "", "Emojis": "Emoji", "Empty message": "Mesej kosong", "Enable All": "Aktifkan Semua", @@ -764,6 +780,7 @@ "Enter Kagi Search API Key": "Masukkan Kunci API Pencarian Kagi", "Enter Key Behavior": "Kelakuan Kekunci Enter", "Enter language codes": "Masukkan kod bahasa", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Masukkan Kunci API MinerU", "Enter Mistral API Base URL": "Masukkan URL Asas API Mistral", "Enter Mistral API Key": "Masukkan Kunci API Mistral", @@ -900,6 +917,7 @@ "Failed to archive chat.": "Gagal mengarkibkan perbualan.", "Failed to attach file": "Gagal melampirkan fail", "Failed to clear status": "Gagal mengosongkan status", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Gagal menyambung ke pelayan alat OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "Gagal menyambung ke pelayan terminal {{URL}}", "Failed to copy link": "Gagal menyalin pautan", @@ -953,14 +971,16 @@ "File content updated successfully.": "Kandungan fail dikemas kini dengan berjaya.", "File Context": "Konteks Fail", "File deleted successfully.": "Fail telah dipadamkan dengan berjaya.", + "File Extensions": "", "File Mode": "Mod Fail", + "File moved.": "", "File name": "Nama fail", "File not found.": "Fail tidak dijumpai", "File removed successfully.": "Fail telah dialihkan dengan berjaya.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Saiz fail tidak boleh melebihi {{maxSize}} MB.", "File Upload": "Muat Naik Fail", "File uploaded successfully": "Fail dimuat naik dengan berjaya", - "File uploaded!": "Fail dimuat naik!", "Filename": "Nama fail", "Files": "Fail-Fail", "Filter": "Penapis", @@ -1176,13 +1196,13 @@ "Knowledge": "Pengetahuan", "Knowledge Access": "Akses Pengetahuan", "Knowledge Base": "Pangkalan Pengetahuan", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Pengetahuan berjaya dibuat.", "Knowledge deleted successfully.": "Pengetahuan berjaya dipadam.", "Knowledge Description": "Penerangan Pengetahuan", "Knowledge exported successfully": "Pengetahuan berjaya dieksport", "Knowledge Name": "Nama Pengetahuan", "Knowledge Public Sharing": "Perkongsian Awam Pengetahuan", - "Knowledge reset successfully.": "Pengetahuan telah direset dengan berjaya.", "Knowledge Sharing": "Perkongsian Pengetahuan", "Knowledge updated successfully": "Pengetahuan telah dikemas kini dengan berjaya", "Kokoro.js (Browser)": "Kokoro.js (Penyemak Imbas)", @@ -1226,6 +1246,7 @@ "Light": "Cerah", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Hadkan pertanyaan carian serentak. 0 = tanpa had (lalai). Tetapkan kepada 1 untuk pelaksanaan berurutan (disyorkan untuk API dengan had kadar ketat seperti peringkat percuma Brave).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Mengehadkan jumlah permintaan Embedding serentak. Tetapkan kepada 0 untuk tanpa had.", + "Linkup API Key": "", "List": "Senarai", "List calendars, search, create, update, and delete calendar events": "Senaraikan kalendar, cari, cipta, kemas kini, dan padamkan acara kalendar", "Listening...": "Mendengar...", @@ -1376,6 +1397,8 @@ "New calendar": "Kalendar baharu", "New Calendar": "Kalendar Baharu", "New Chat": "Perbualan Baharu", + "New directory": "", + "New Directory": "", "New Event": "Acara Baharu", "New File": "Fail Baharu", "New Folder": "Folder Baharu", @@ -1421,11 +1444,13 @@ "No HTML, CSS, or JavaScript content found.": "Tiada kandungan HTML, CSS, atau JavaScript ditemui.", "No inference engine with management support found": "Tiada enjin inferens dengan sokongan pengurusan ditemui", "No kernel": "Tiada kernel", + "No knowledge bases accessible": "", "No knowledge bases found.": "Tiada pangkalan pengetahuan ditemui.", "No knowledge found": "Tiada pengetahuan ditemui", "No limit": "Tiada had", "No memories to clear": "Tiada ingatan untuk dipadam", "No model IDs": "Tiada ID model", + "No models accessible": "", "No models available": "Tiada model tersedia", "No models found": "Tiada model ditemui", "No models selected": "Tiada model dipilih", @@ -1446,6 +1471,7 @@ "No Terminal connection configured.": "Tiada sambungan Terminal dikonfigurasi.", "No terminal connections configured.": "Tiada sambungan terminal dikonfigurasi.", "No tool server connections configured.": "Tiada sambungan pelayan alat dikonfigurasi.", + "No tools accessible": "", "No tools found": "Tiada alat ditemui", "No users were found.": "Tiada pengguna ditemui.", "No valves": "Tiada Valves", @@ -1485,6 +1511,7 @@ "On": "Hidup", "Once": "Sekali", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Hanya aktif apabila tetapan \"Tampal Teks Besar sebagai Fail\" dihidupkan.", "Only active when the chat input is in focus and an LLM is generating a response.": "Hanya aktif apabila input perbualan berada dalam fokus dan LLM sedang menjana respons.", "Only active when the chat input is in focus.": "Hanya aktif apabila input perbualan berada dalam fokus.", @@ -1556,6 +1583,7 @@ "PDF document (.pdf)": "Dokumen PDF (.pdf)", "PDF Extract Images (OCR)": "Imej Ekstrak PDF (OCR)", "PDF Loader Mode": "Mod Pemuat PDF", + "pdf, docx, pptx, xlsx": "", "pending": "tertangguh", "Pending": "Tertangguh", "Pending User Overlay Content": "Kandungan Lapisan Pengguna Tertangguh", @@ -1617,6 +1645,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "ID Awalan digunakan untuk mengelakkan konflik dengan sambungan lain dengan menambah awalan pada ID model - biarkan kosong untuk menyahaktifkan", "Prevent File Creation": "Cegah Penciptaan Fail", "Preview": "Pratonton", + "Preview Access": "", "Previous 30 days": "30 hari sebelumnya", "Previous 7 days": "7 hari sebelumnya", "Previous message": "Mesej sebelumnya", @@ -1694,6 +1723,7 @@ "Remove from favorites": "Buang daripada kegemaran", "Remove image": "Buang imej", "Remove Model": "Buang Model", + "Removing {{count}} stale files..._other": "", "Rename": "Namakan Semula", "Renamed to {{name}}": "Dinamakan semula kepada {{name}}", "Render Markdown in Assistant Messages": "Papar Markdown dalam Mesej Pembantu", @@ -1712,6 +1742,7 @@ "Reset": "Tetapkan Semula", "Reset All Models": "Tetapkan Semula Semua Model", "Reset Image": "Tetapkan Semula Imej", + "Reset knowledge base?": "", "Reset Upload Directory": "Tetapkan Semula Direktori Muat Naik", "Reset Vector Storage/Knowledge": "Tetapkan Semula Storan Vektor/Pengetahuan", "Reset view": "Tetapkan Semula Paparan", @@ -1778,6 +1809,7 @@ "Search Prompts": "Carian arahan", "Search Result Count": "Kiraan Hasil Carian", "Search Skills": "Cari Kemahiran", + "Search skills...": "", "Search the internet": "Cari di internet", "Search the web and fetch URLs": "Cari di web dan ambil URL", "Search Tools": "Alat Carian", @@ -1974,6 +2006,8 @@ "Switch to JSON editor": "Tukar ke penyunting JSON", "Switch to visual editor": "Tukar ke penyunting visual", "Sync": "Segerak", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Segerak Selesai!", "Sync directory": "Direktori Segerak", "Sync Failed": "Segerak Gagal", @@ -2046,7 +2080,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Pilihan ini mengawal berapa banyak token yang disimpan apabila menyegarkan konteks. Sebagai contoh, jika ditetapkan kepada 2, 2 token terakhir konteks perbualan akan dikekalkan. Memelihara konteks boleh membantu mengekalkan kesinambungan perbualan, tetapi ia mungkin mengurangkan keupayaan untuk bertindak balas terhadap topik baru.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Pilihan ini mengaktifkan atau menyahaktifkan penggunaan ciri penaakulan dalam Ollama, yang membenarkan model untuk berfikir sebelum menjana respons. Apabila diaktifkan, model boleh mengambil masa untuk memproses konteks perbualan dan menjana respons yang lebih teliti.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Pilihan ini menetapkan bilangan maksimum token yang boleh dijana oleh model dalam responsnya. Meningkatkan had ini membenarkan model memberikan jawapan yang lebih panjang, tetapi ia juga mungkin meningkatkan kemungkinan kandungan yang tidak berguna atau tidak relevan dijana.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Pilihan ini akan memadamkan semua fail sedia ada dalam koleksi dan menggantinya dengan fail yang baru dimuat naik.", "This response was generated by \"{{model}}\"": "Respons ini dijana oleh \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Templat ini mengandungi pemegang tempat konteks berganda ([context] atau {{CONTEXT}}). Konteks akan disuntikkan pada setiap kemunculan.", "This will delete": "Ini akan memadam", @@ -2054,7 +2087,7 @@ "This will delete all models including custom models": "Ini akan memadam semua model termasuk model tersuai", "This will delete all models including custom models and cannot be undone.": "Ini akan memadam semua model termasuk model tersuai dan tidak boleh dibuat asal.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Ini akan memadam secara kekal kalendar \"{{name}}\" dan semua acaranya. Tindakan ini tidak boleh dibuat asal.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Ini akan menetapkan semula pangkalan pengetahuan dan menyegerakkan semua fail. Adakah anda ingin meneruskan?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Penjelasan menyeluruh", "Thought": "Fikiran", "Thought for {{DURATION}}": "Berfikir selama {{DURATION}}", @@ -2090,6 +2123,7 @@ "Toggle 1 source": "Suis 1 sumber", "Toggle details": "Suis butiran", "Toggle Dictation": "Suis Diktasi", + "Toggle Mute": "", "Toggle Sidebar": "Suis Bar Sisi", "Toggle status history": "Suis sejarah status", "Toggle whether current connection is active.": "Togol sama ada sambungan semasa aktif.", @@ -2168,7 +2202,7 @@ "Upload Progress": "Kemajuan Muat Naik", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Kemajuan Muat Naik: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Fail atau imej yang dimuat naik", - "Uploading file...": "Memuat naik fail...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Memuat naik...", "URL": "URL", "URL is required": "URL diperlukan", @@ -2188,6 +2222,7 @@ "User Groups": "Kumpulan Pengguna", "User location successfully retrieved.": "Lokasi pengguna berjaya diambil.", "User menu": "Menu Pengguna", + "User Preview": "", "User ratings (thumbs up/down)": "Penilaian Pengguna (ibu jari naik/turun)", "User Status": "Status Pengguna", "User Webhooks": "Webhook Pengguna", diff --git a/src/lib/i18n/locales/nb-NO/translation.json b/src/lib/i18n/locales/nb-NO/translation.json index 0514fc3d77..4c540d4a48 100644 --- a/src/lib/i18n/locales/nb-NO/translation.json +++ b/src/lib/i18n/locales/nb-NO/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ modeller }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} svar", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Er du sikker på at du vil slette denne kanalen?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Er du sikker på at du vil slette denne meldingen?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Tilgjengelig liste", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "tilgjengelige brukere", "available!": "tilgjengelig!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI-arbeidsflyt", "ComfyUI Workflow Nodes": "ComfyUI-arbeidsflytnoder", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Kommando", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Fullføringer", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Samtidige forespørsler", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "Slett en modell", "Delete All": "", "Delete All Chats": "Slett alle chatter", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Slett chat", "Delete chat?": "Slette chat?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Slette mappe?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Med direkte koblinger kan brukerne koble til egne OpenAI-kompatible API-endepunkter.", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Innbyggingsmodell", "Embedding Model Engine": "Motor for innbygging av modeller", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Angi API-nøkkel for Kagi Search", "Enter Key Behavior": "", "Enter language codes": "Angi språkkoder", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "Filens innhold er oppdatert.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Filmodus", + "File moved.": "", "File name": "", "File not found.": "Finner ikke filen.", "File removed successfully.": "Filen er fjernet.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Filstørrelser kan ikke være på mer enn {{maxSize} MB", "File Upload": "", "File uploaded successfully": "Filen er lastet opp", - "File uploaded!": "", "Filename": "", "Files": "Filer", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "Kunnskap", "Knowledge Access": "Tilgang til kunnskap", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Kunnskap opprettet.", "Knowledge deleted successfully.": "Kunnskap slettet.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "Tilbakestilling av kunnskap vellykket.", "Knowledge Sharing": "", "Knowledge updated successfully": "Kunnskap oppdatert", "Kokoro.js (Browser)": "Kokoro.js (nettleser)", @@ -1227,6 +1250,7 @@ "Light": "Lys", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Lytter ...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Ny chat", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Ny mappe", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Finner ikke noe HTML, CSS- eller JavaScript-innhold.", "No inference engine with management support found": "Fant ingen konklusjonsmotor med støtte for administrasjon", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Finner ingen kunnskaper", "No limit": "", "No memories to clear": "", "No model IDs": "Ingen modell-ID-er", + "No models accessible": "", "No models available": "", "No models found": "Finner ingen modeller", "No models selected": "Ingen modeller er valgt", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Finner ingen brukere", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "Aktivert", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF-dokument (.pdf)", "PDF Extract Images (OCR)": "Uthenting av PDF-bilder (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "avventer", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefiks-ID brukes for å unngå konflikter med andre tilkoblinger ved å legge til et prefiks til modell-ID-ene. La det stå tomt for å deaktivere", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Siste 30 dager", "Previous 7 days": "Siste 7 dager", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Fjern modell", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Gi nytt navn", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Tilbakestill", "Reset All Models": "Tilbakestill alle modeller", "Reset Image": "Tilbakestill bilde", + "Reset knowledge base?": "", "Reset Upload Directory": "Tilbakestill opplastingskatalog", "Reset Vector Storage/Knowledge": "Tilbakestill Vector-lagring/kunnskap", "Reset view": "Tilbakestill visning", @@ -1780,6 +1815,7 @@ "Search Prompts": "Søk etter ledetekster", "Search Result Count": "Antall søkeresultater", "Search Skills": "", + "Search skills...": "", "Search the internet": "Søk på Internett", "Search the web and fetch URLs": "", "Search Tools": "Søkeverktøy", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Synkroniseringsmappe", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Dette alternativet sletter alle eksisterende filer i samlingen og erstatter dem med nyopplastede filer.", "This response was generated by \"{{model}}\"": "Dette svaret er generert av \"{{modell}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Dette sletter", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Dette sletter alle modeller, inkludert tilpassede modeller", "This will delete all models including custom models and cannot be undone.": "Dette sletter alle modeller, inkludert tilpassede modeller, og kan ikke angres.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Dette tilbakestiller kunnskapsbasen og synkroniserer alle filer. Vil du fortsette?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Grundig forklaring", "Thought": "", "Thought for {{DURATION}}": "Tenkte i {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "Opplastingsfremdrift", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "Brukerens lokasjon hentet", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/nl-NL/translation.json b/src/lib/i18n/locales/nl-NL/translation.json index 2216f24c84..1290a617d2 100644 --- a/src/lib/i18n/locales/nl-NL/translation.json +++ b/src/lib/i18n/locales/nl-NL/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[Vandaag om] h:mm A", "[Yesterday at] h:mm A": "[Gisteren om] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} beschikbare tools", "{{COUNT}} characters": "{{COUNT}} karakters", "{{COUNT}} extracted lines": "{{COUNT}} geextraheerde regels", "{{COUNT}} files": "{{COUNT}} bestanden", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} verborgen regels", "{{COUNT}} members": "{{COUNT}} leden", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} antwoorden", "{{COUNT}} Rows": "{{COUNT}} rijen", "{{count}} selected_one": "{{count}} geselecteerd", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Weet je zeker dat je alle chats wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", "Are you sure you want to delete this channel?": "Weet je zeker dat je dit kanaal wil verwijderen?", "Are you sure you want to delete this connection? This action cannot be undone.": "Weet je zeker dat je deze verbinding wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "Weet je zeker dat je dit geheugen wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", "Are you sure you want to delete this message?": "Weet je zeker dat je dit bericht wil verwijderen?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Weet je zeker dat je deze versie wilt verwijderen? Onderliggende versies worden opnieuw gekoppeld aan de bovenliggende versie.", @@ -239,6 +245,7 @@ "Automations": "Automatiseringen", "Available list": "Beschikbare lijst", "Available models": "Beschikbare modellen", + "Available Skills": "", "Available Tools": "Beschikbare tools", "available users": "beschikbare gebruikers", "available!": "beschikbaar!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI workflow", "ComfyUI Workflow Nodes": "ComfyUI workflowknopen", "Comma separated Node Ids (e.g. 1 or 1,2)": "Door komma's gescheiden node-ID's (bijv. 1 of 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "commando", "Command": "Commando", "Comment": "Reactie", "Commit Message": "Commitbericht", "Community Reviews": "Communitybeoordelingen", + "Comparing with knowledge base...": "", "Completions": "Voltooiingen", "Compress Images in Channels": "Afbeeldingen in kanalen comprimeren", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Gelijktijdige verzoeken", "Config": "Configuratie", "Config imported successfully": "Configuratie succesvol geimporteerd", @@ -537,12 +548,14 @@ "Delete a model": "Verwijder een model", "Delete All": "Alles verwijderen", "Delete All Chats": "Verwijder alle chats", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Alle inhoud in deze map verwijderen", "Delete automation?": "Verwijder automatisering?", "Delete calendar": "Verwijder kalender", "Delete Calendar": "Verwijder kalender", "Delete Chat": "Verwijder chat", "Delete chat?": "Verwijder chat?", + "Delete directory?": "", "Delete Event": "Verwijder gebeurtenis?", "Delete File": "Bestand verwijderen", "Delete folder?": "Verwijder map?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Directe verbindingen stellen gebruikers in staat om met hun eigen OpenAI compatibele API-endpoints te verbinden.", "Direct Message": "Direct bericht", "Direct Tool Servers": "Directe toolservers", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Mapselectie is geannuleerd", "Disable All": "Alles uitschakelen", "Disable Code Interpreter": "Code-interpretatie uitschakelen", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "Gelijktijdige embeddingverzoeken", "Embedding Model": "Embedding Model", "Embedding Model Engine": "Embedding Model Engine", + "Emoji": "", "Emojis": "Emojis", "Empty message": "Leeg bericht", "Enable All": "Alles inschakelen", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Voer Kagi Search API-sleutel in", "Enter Key Behavior": "Voer sleutelgedrag in", "Enter language codes": "Voeg taalcodes toe", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Voer MinerU API-sleutel in", "Enter Mistral API Base URL": "Voer Mistral API-basis-URL in", "Enter Mistral API Key": "Voer Mistral API-sleutel in", @@ -901,6 +921,7 @@ "Failed to archive chat.": "Chat archiveren mislukt.", "Failed to attach file": "Bestand toevoegen mislukt", "Failed to clear status": "Status wissen mislukt", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Kan geen verbinding maken met {{URL}} OpenAPI gereedschapserver", "Failed to connect to {{URL}} terminal server": "Kan geen verbinding maken met {{URL}} terminalserver", "Failed to copy link": "Link kopiëren mislukt", @@ -954,14 +975,16 @@ "File content updated successfully.": "Bestandsinhoud succesvol bijgewerkt.", "File Context": "Bestandscontext", "File deleted successfully.": "Bestand succesvol verwijderd.", + "File Extensions": "", "File Mode": "Bestandsmodus", + "File moved.": "", "File name": "Bestandsnaam", "File not found.": "Bestand niet gevonden.", "File removed successfully.": "Bestand succesvol verwijderd.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Bestandsgrootte mag niet groter zijn dan {{maxSize}} MB.", "File Upload": "Bestandsupload", "File uploaded successfully": "Bestand succesvol geüpload", - "File uploaded!": "Bestand geüpload!", "Filename": "Bestandsnaam", "Files": "Bestanden", "Filter": "Filter", @@ -1177,13 +1200,13 @@ "Knowledge": "Kennis", "Knowledge Access": "Kennistoegang", "Knowledge Base": "Kennisbank", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Kennis succesvol aangemaakt", "Knowledge deleted successfully.": "Kennis succesvol verwijderd", "Knowledge Description": "Kennisbeschrijving", "Knowledge exported successfully": "Kennis succesvol geexporteerd", "Knowledge Name": "Kennisnaam", "Knowledge Public Sharing": "Publieke kennisdeling", - "Knowledge reset successfully.": "Kennis succesvol gereset", "Knowledge Sharing": "Kennisdeling", "Knowledge updated successfully": "Kennis succesvol bijgewerkt", "Kokoro.js (Browser)": "Kokoro.js (Browser)", @@ -1227,6 +1250,7 @@ "Light": "Licht", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Beperk gelijktijdige zoekopdrachten. 0 = onbeperkt (standaard). Stel in op 1 voor sequentiele uitvoering (aanbevolen voor API's met strikte rate limits, zoals Brave free tier).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Beperkt het aantal gelijktijdige embeddingverzoeken. Stel in op 0 voor onbeperkt.", + "Linkup API Key": "", "List": "Lijst", "List calendars, search, create, update, and delete calendar events": "Agenda's weergeven, zoeken, maken, bijwerken en agenda-afspraken verwijderen", "Listening...": "Aan het luisteren...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Nieuwe Chat", + "New directory": "", + "New Directory": "", "New Event": "Nieuwe gebeurtenis", "New File": "Nieuw bestand", "New Folder": "Nieuwe map", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Geen HTML, CSS, of JavaScript inhoud gevonden", "No inference engine with management support found": "Geen inferentie-engine met beheerondersteuning gevonden", "No kernel": "Geen kernel", + "No knowledge bases accessible": "", "No knowledge bases found.": "Geen kennisbanken gevonden.", "No knowledge found": "Geen kennis gevonden", "No limit": "Geen limiet", "No memories to clear": "Geen herinneringen om op te ruimen", "No model IDs": "Geen model-ID's", + "No models accessible": "", "No models available": "Geen modellen beschikbaar", "No models found": "Geen modellen gevonden", "No models selected": "Geen modellen geselecteerd", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "Geen terminalverbinding geconfigureerd.", "No terminal connections configured.": "Geen terminalverbindingen geconfigureerd.", "No tool server connections configured.": "Geen toolserververbindingen geconfigureerd.", + "No tools accessible": "", "No tools found": "Geen tools gevonden", "No users were found.": "Geen gebruikers gevonden", "No valves": "Geen kleppen", @@ -1486,6 +1515,7 @@ "On": "Aan", "Once": "Eenmalig", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Alleen actief wanneer de instelling \"Grote tekst als bestand plakken\" is ingeschakeld.", "Only active when the chat input is in focus and an LLM is generating a response.": "Alleen actief wanneer de chatinvoer focus heeft en een LLM een antwoord genereert.", "Only active when the chat input is in focus.": "Alleen actief wanneer de chatinvoer focus heeft.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF document (.pdf)", "PDF Extract Images (OCR)": "PDF extraheer afbeeldingen (OCR)", "PDF Loader Mode": "PDF-loadermodus", + "pdf, docx, pptx, xlsx": "", "pending": "wachtend", "Pending": "In afwachting", "Pending User Overlay Content": "Inhoud van overlay voor wachtende gebruiker", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Voorvoegsel-ID wordt gebruikt om conflicten met andere verbindingen te vermijden door een voorvoegsel aan het model-ID toe te voegen - laat leeg om uit te schakelen", "Prevent File Creation": "Bestandsaanmaak voorkomen", "Preview": "Voorvertoning", + "Preview Access": "", "Previous 30 days": "Afgelopen 30 dagen", "Previous 7 days": "Afgelopen 7 dagen", "Previous message": "Vorige bericht", @@ -1695,6 +1727,8 @@ "Remove from favorites": "Verwijderen uit favorieten", "Remove image": "Afbeelding verwijderen", "Remove Model": "Verwijder model", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Hernoemen", "Renamed to {{name}}": "Hernoemd naar {{name}}", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Herstellen", "Reset All Models": "Herstel alle modellen", "Reset Image": "Afbeelding resetten", + "Reset knowledge base?": "", "Reset Upload Directory": "Herstel Uploadmap", "Reset Vector Storage/Knowledge": "Herstel Vectoropslag/-kennis", "Reset view": "Herstel zicht", @@ -1780,6 +1815,7 @@ "Search Prompts": "Prompts zoeken", "Search Result Count": "Aantal zoekresultaten", "Search Skills": "Vaardigheden zoeken", + "Search skills...": "", "Search the internet": "Zoek op het internet", "Search the web and fetch URLs": "Doorzoek het web en haal URL's op", "Search Tools": "Zoek gereedschappen", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "Synchroniseren", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Synchronisatie voltooid!", "Sync directory": "Synchroniseer map", "Sync Failed": "Synchronisatie mislukt", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Deze optie bepaalt hoeveel tokens bewaard blijven bij het verversen van de context. Als deze bijvoorbeeld op 2 staat, worden de laatste 2 tekens van de context van het gesprek bewaard. Het behouden van de context kan helpen om de continuïteit van een gesprek te behouden, maar het kan de mogelijkheid om te reageren op nieuwe onderwerpen verminderen.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Deze optie schakelt het gebruik van de redeneermogelijkheid in Ollama in of uit, waardoor het model eerst kan nadenken voordat het een antwoord genereert. Wanneer ingeschakeld, kan het model even de tijd nemen om de gesprekscontext te verwerken en een doordachter antwoord te genereren.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Deze optie stelt het maximum aantal tokens in dat het model kan genereren in zijn antwoord. Door deze limiet te verhogen, kan het model langere antwoorden geven, maar het kan ook de kans vergroten dat er onbehulpzame of irrelevante inhoud wordt gegenereerd.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Deze optie verwijdert alle bestaande bestanden in de collectie en vervangt ze door nieuw geüploade bestanden.", "This response was generated by \"{{model}}\"": "Dit antwoord is gegenereerd door \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Dit zal verwijderen", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Dit zal alle modellen, ook aangepaste modellen, verwijderen", "This will delete all models including custom models and cannot be undone.": "Dit zal alle modellen, ook aangepaste modellen, verwijderen en kan niet ongedaan worden gemaakt", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Dit zal de kalender \"{{name}}\" en alle gebeurtenissen permanent verwijderen. Deze actie kan niet ongedaan worden gemaakt.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Dit zal de kennisdatabase resetten en alle bestanden synchroniseren. Wil je doorgaan?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Grondige uitleg", "Thought": "Gedachte", "Thought for {{DURATION}}": "Dacht {{DURATION}} na", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "Schakel 1 bron om", "Toggle details": "Details omzetten", "Toggle Dictation": "Dicteren omzetten", + "Toggle Mute": "", "Toggle Sidebar": "Zijbalk omzetten", "Toggle status history": "Statusgeschiedenis omzetten", "Toggle whether current connection is active.": "Schakel in of de huidige verbinding actief is.", @@ -2171,7 +2209,7 @@ "Upload Progress": "Upload Voortgang", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Uploadvoortgang: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Geüploade bestanden of afbeeldingen", - "Uploading file...": "Bestand aan het uploaden...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Aan het uploaden...", "URL": "URL", "URL is required": "URL is vereist", @@ -2191,6 +2229,7 @@ "User Groups": "Gebruikersgroepen", "User location successfully retrieved.": "Gebruikerslocatie succesvol opgehaald", "User menu": "Gebruikersmenu", + "User Preview": "", "User ratings (thumbs up/down)": "Gebruikersbeoordelingen (duim omhoog/omlaag)", "User Status": "Gebruikersstatus", "User Webhooks": "Gebruiker-webhooks", diff --git a/src/lib/i18n/locales/pa-IN/translation.json b/src/lib/i18n/locales/pa-IN/translation.json index 26a2b58241..ac0a80061f 100644 --- a/src/lib/i18n/locales/pa-IN/translation.json +++ b/src/lib/i18n/locales/pa-IN/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ ਮਾਡਲ }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "ਉਪਲਬਧ ਯੂਜ਼ਰ", "available!": "ਉਪਲਬਧ ਹੈ!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "ਕਮਾਂਡ", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "ਸਮਕਾਲੀ ਬੇਨਤੀਆਂ", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "ਇੱਕ ਮਾਡਲ ਮਿਟਾਓ", "Delete All": "", "Delete All Chats": "ਸਾਰੀਆਂ ਚੈਟਾਂ ਨੂੰ ਮਿਟਾਓ", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "ਗੱਲਬਾਤ ਮਿਟਾਓ", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ", "Embedding Model Engine": "ਐਮਬੈੱਡਿੰਗ ਮਾਡਲ ਇੰਜਣ", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "ਭਾਸ਼ਾ ਕੋਡ ਦਰਜ ਕਰੋ", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "ਫਾਈਲ ਮੋਡ", + "File moved.": "", "File name": "", "File not found.": "ਫਾਈਲ ਨਹੀਂ ਮਿਲੀ।", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1227,6 +1250,7 @@ "Light": "ਹਲਕਾ", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "ਨਵੀਂ ਗੱਲਬਾਤ", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "ਚਾਲੂ", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF ਡਾਕੂਮੈਂਟ (.pdf)", "PDF Extract Images (OCR)": "PDF ਚਿੱਤਰ ਕੱਢੋ (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "ਬਕਾਇਆ", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "ਪਿਛਲੇ 30 ਦਿਨ", "Previous 7 days": "ਪਿਛਲੇ 7 ਦਿਨ", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "ਮਾਡਲ ਹਟਾਓ", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "ਨਾਮ ਬਦਲੋ", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "", "Reset All Models": "", "Reset Image": "ਚਿੱਤਰ ਰੀਸੈਟ ਕਰੋ", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1780,6 +1815,7 @@ "Search Prompts": "ਪ੍ਰੰਪਟ ਖੋਜੋ", "Search Result Count": "ਖੋਜ ਨਤੀਜੇ ਦੀ ਗਿਣਤੀ", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "ਵਿਸਥਾਰ ਨਾਲ ਵਿਆਖਿਆ", "Thought": "", "Thought for {{DURATION}}": "", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "ਅਪਲੋਡ ਪ੍ਰਗਤੀ", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/pl-PL/translation.json b/src/lib/i18n/locales/pl-PL/translation.json index 22d55b0824..061a53f5a3 100644 --- a/src/lib/i18n/locales/pl-PL/translation.json +++ b/src/lib/i18n/locales/pl-PL/translation.json @@ -9,12 +9,21 @@ "[Today at] h:mm A": "[Dziś o] H:mm", "[Yesterday at] h:mm A": "[Wczoraj o] H:mm", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} dostępnych narzędzi", "{{COUNT}} characters": "{{COUNT}} znaków", "{{COUNT}} extracted lines": "{{COUNT}} wyodrębnionych linii", "{{COUNT}} files": "{{COUNT}} plików", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} ukrytych linii", "{{COUNT}} members": "{{COUNT}} członków", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} odpowiedzi", "{{COUNT}} Rows": "{{COUNT}} wierszy", "{{count}} selected_one": "{{count}} zaznaczony", @@ -195,6 +204,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Czy na pewno chcesz usunąć wszystkie czaty? Tej operacji nie można cofnąć.", "Are you sure you want to delete this channel?": "Czy na pewno chcesz usunąć ten kanał?", "Are you sure you want to delete this connection? This action cannot be undone.": "Czy na pewno chcesz usunąć to połączenie? Tej operacji nie można cofnąć.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "Czy na pewno chcesz usunąć to wspomnienie? Tej operacji nie można cofnąć.", "Are you sure you want to delete this message?": "Czy na pewno chcesz usunąć tę wiadomość?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Czy na pewno chcesz usunąć tę wersję? Wersje podrzędne zostaną przypisane do wersji nadrzędnej.", @@ -241,6 +251,7 @@ "Automations": "Automatyzacje", "Available list": "Dostępna lista", "Available models": "Dostępne modele", + "Available Skills": "", "Available Tools": "Dostępne narzędzia", "available users": "dostępni użytkownicy", "available!": "dostępne!", @@ -400,13 +411,19 @@ "ComfyUI Workflow": "Workflow ComfyUI", "ComfyUI Workflow Nodes": "Węzły Workflow ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "ID węzłów oddzielone przecinkami (np. 1 lub 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "polecenie", "Command": "Komenda", "Comment": "Komentarz", "Commit Message": "Wiadomość commita", "Community Reviews": "Recenzje społeczności", + "Comparing with knowledge base...": "", "Completions": "Completions (Uzupełnianie)", "Compress Images in Channels": "Kompresuj obrazy w kanałach", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Jednoczesne żądania", "Config": "Konfiguracja", "Config imported successfully": "Konfiguracja zaimportowana pomyślnie", @@ -539,12 +556,14 @@ "Delete a model": "Usuń model", "Delete All": "Usuń wszystko", "Delete All Chats": "Usuń wszystkie czaty", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Usuń całą zawartość tego folderu", "Delete automation?": "Usunąć automatyzację?", "Delete calendar": "Usuń kalendarz", "Delete Calendar": "Usuń kalendarz", "Delete Chat": "Usuń czat", "Delete chat?": "Usunąć czat?", + "Delete directory?": "", "Delete Event": "Usuń wydarzenie", "Delete File": "Usuń plik", "Delete folder?": "Usunąć folder?", @@ -581,6 +600,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Połączenia bezpośrednie pozwalają użytkownikom łączyć się z własnymi API kompatybilnymi z OpenAI.", "Direct Message": "Wiadomość prywatna", "Direct Tool Servers": "Bezpośrednie serwery narzędzi", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Anulowano wybór katalogu", "Disable All": "Wyłącz wszystkie", "Disable Code Interpreter": "Wyłącz interpreter kodu", @@ -689,6 +713,7 @@ "Embedding Concurrent Requests": "Równoległe żądania osadzania", "Embedding Model": "Model embeddingów", "Embedding Model Engine": "Silnik modelu embeddingów", + "Emoji": "", "Emojis": "Emoji", "Empty message": "Pusta wiadomość", "Enable All": "Włącz wszystkie", @@ -767,6 +792,7 @@ "Enter Kagi Search API Key": "Wprowadź klucz API Kagi Search", "Enter Key Behavior": "Zachowanie klawisza Enter", "Enter language codes": "Wprowadź kody języków", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Wprowadź klucz MinerU API", "Enter Mistral API Base URL": "Wprowadź Base URL Mistral API", "Enter Mistral API Key": "Wprowadź klucz API Mistral", @@ -903,6 +929,7 @@ "Failed to archive chat.": "Nie udało się zarchiwizować czatu.", "Failed to attach file": "Nie udało się dołączyć pliku", "Failed to clear status": "Nie udało się wyczyścić statusu", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Nie udało się połączyć z serwerem narzędzi OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "Nie udało się połączyć z serwerem terminalowym {{URL}}", "Failed to copy link": "Nie udało się skopiować linku", @@ -956,14 +983,16 @@ "File content updated successfully.": "Treść pliku zaktualizowana pomyślnie.", "File Context": "Kontekst pliku", "File deleted successfully.": "Plik usunięty pomyślnie.", + "File Extensions": "", "File Mode": "Tryb pliku", + "File moved.": "", "File name": "Nazwa pliku", "File not found.": "Plik nie znaleziony.", "File removed successfully.": "Plik usunięty pomyślnie.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Rozmiar pliku nie może przekraczać {{maxSize}} MB.", "File Upload": "Przesyłanie plików", "File uploaded successfully": "Plik przesłany pomyślnie", - "File uploaded!": "Plik przesłany!", "Filename": "Nazwa pliku", "Files": "Pliki", "Filter": "Filtr", @@ -1179,13 +1208,13 @@ "Knowledge": "Baza wiedzy", "Knowledge Access": "Dostęp do bazy wiedzy", "Knowledge Base": "Baza wiedzy", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Wiedza utworzona pomyślnie.", "Knowledge deleted successfully.": "Wiedza usunięta pomyślnie.", "Knowledge Description": "Opis wiedzy", "Knowledge exported successfully": "Wiedza wyeksportowana pomyślnie", "Knowledge Name": "Nazwa wiedzy", "Knowledge Public Sharing": "Publiczne udostępnianie wiedzy", - "Knowledge reset successfully.": "Wiedza zresetowana pomyślnie.", "Knowledge Sharing": "Udostępnianie wiedzy", "Knowledge updated successfully": "Wiedza zaktualizowana pomyślnie", "Kokoro.js (Browser)": "Kokoro.js (Przeglądarka)", @@ -1229,6 +1258,7 @@ "Light": "Jasny", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Limit jednoczesnych zapytań. 0 = brak (domyślnie). Ustaw 1 dla sekwencyjnego wykonywania (zalecane dla darmowych API np. Brave).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Ogranicza liczbę równoległych żądań osadzania. Ustaw 0 dla braku limitu.", + "Linkup API Key": "", "List": "Lista", "List calendars, search, create, update, and delete calendar events": "Wyświetlaj kalendarze, wyszukuj, twórz, aktualizuj i usuwaj wydarzenia", "Listening...": "Słucham...", @@ -1379,6 +1409,8 @@ "New calendar": "Nowy kalendarz", "New Calendar": "Nowy kalendarz", "New Chat": "Nowy czat", + "New directory": "", + "New Directory": "", "New Event": "Nowe wydarzenie", "New File": "Nowy plik", "New Folder": "Nowy folder", @@ -1424,11 +1456,13 @@ "No HTML, CSS, or JavaScript content found.": "Nie znaleziono treści HTML, CSS ani JS.", "No inference engine with management support found": "Nie znaleziono silnika wnioskowania ze wsparciem zarządzania", "No kernel": "Brak jądra", + "No knowledge bases accessible": "", "No knowledge bases found.": "Nie znaleziono baz wiedzy.", "No knowledge found": "Nie znaleziono wiedzy", "No limit": "Brak limitu", "No memories to clear": "Brak danych w pamięci do wyczyszczenia", "No model IDs": "Brak ID modeli", + "No models accessible": "", "No models available": "Brak dostępnych modeli", "No models found": "Nie znaleziono modeli", "No models selected": "Nie wybrano modeli", @@ -1449,6 +1483,7 @@ "No Terminal connection configured.": "Nie skonfigurowano połączenia z terminalem.", "No terminal connections configured.": "Nie skonfigurowano połączeń z terminalem.", "No tool server connections configured.": "Nie skonfigurowano połączeń z serwerem narzędzi.", + "No tools accessible": "", "No tools found": "Nie znaleziono narzędzi", "No users were found.": "Nie znaleziono użytkowników.", "No valves": "Brak valves", @@ -1488,6 +1523,7 @@ "On": "Wł.", "Once": "Jednorazowo", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Aktywne tylko gdy opcja \"Wklej duży tekst jako plik\" jest włączona.", "Only active when the chat input is in focus and an LLM is generating a response.": "Aktywne tylko gdy pole czatu jest aktywne a LLM generuje odpowiedź.", "Only active when the chat input is in focus.": "Aktywne tylko gdy pole czatu jest wybrane.", @@ -1559,6 +1595,7 @@ "PDF document (.pdf)": "Dokument PDF (.pdf)", "PDF Extract Images (OCR)": "Wyodrębnij obrazy z PDF (OCR)", "PDF Loader Mode": "Tryb ładowania PDF", + "pdf, docx, pptx, xlsx": "", "pending": "oczekuje", "Pending": "Oczekujące", "Pending User Overlay Content": "Treść nakładki dla oczekującego użytkownika", @@ -1620,6 +1657,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID służy do unikania konfliktów (dodawany do ID modelu). Zostaw puste aby wyłączyć", "Prevent File Creation": "Zapobiegaj tworzeniu plików", "Preview": "Podgląd", + "Preview Access": "", "Previous 30 days": "Ostatnie 30 dni", "Previous 7 days": "Ostatnie 7 dni", "Previous message": "Poprzednia wiadomość", @@ -1697,6 +1735,10 @@ "Remove from favorites": "Usuń z ulubionych", "Remove image": "Usuń obraz", "Remove Model": "Usuń model", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Zmień nazwę", "Renamed to {{name}}": "Zmieniono nazwę na {{name}}", "Render Markdown in Assistant Messages": "Renderuj Markdown w wiadomościach asystenta", @@ -1715,6 +1757,7 @@ "Reset": "Resetuj", "Reset All Models": "Resetuj wszystkie modele", "Reset Image": "Resetuj obraz", + "Reset knowledge base?": "", "Reset Upload Directory": "Resetuj katalog przesyłania", "Reset Vector Storage/Knowledge": "Resetuj bazę wektorową/wiedzę", "Reset view": "Resetuj widok", @@ -1784,6 +1827,7 @@ "Search Prompts": "Szukaj promptów", "Search Result Count": "Liczba wyników wyszukiwania", "Search Skills": "Szukaj umiejętności", + "Search skills...": "", "Search the internet": "Przeszukaj internet", "Search the web and fetch URLs": "Przeszukuj sieć i pobieraj adresy URL", "Search Tools": "Szukaj narzędzi", @@ -1983,6 +2027,8 @@ "Switch to JSON editor": "Przełącz na edytor JSON", "Switch to visual editor": "Przełącz na edytor wizualny", "Sync": "Synchronizuj", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Synchronizacja zakończona!", "Sync directory": "Katalog synchronizacji", "Sync Failed": "Synchronizacja nieudana", @@ -2055,7 +2101,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Kontroluje ile tokenów jest zachowywanych przy odświeżaniu kontekstu.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Włącza funkcję reasoning w Ollama (myślenie przed odpowiedzią).", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Ustawia maksymalną liczbę tokenów w odpowiedzi. Zwiększenie pozwala na dłuższe odpowiedzi.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Ta opcja usunie wszystkie pliki z kolekcji i zastąpi nowymi.", "This response was generated by \"{{model}}\"": "Odpowiedź wygenerowana przez \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Ten szablon zawiera wiele symboli zastępczych kontekstu ([context] lub {{CONTEXT}}). Kontekst zostanie wstawiony w każdym wystąpieniu.", "This will delete": "To usunie", @@ -2063,7 +2108,7 @@ "This will delete all models including custom models": "To usunie wszystkie modele (w tym własne).", "This will delete all models including custom models and cannot be undone.": "To usunie wszystkie modele i jest nieodwracalne.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "To trwale usunie kalendarz \"{{name}}\" i wszystkie jego wydarzenia. Tej operacji nie można cofnąć.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "To zresetuje bazę wiedzy i zsynchronizuje pliki. Kontynuować?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Dokładne wyjaśnienie", "Thought": "Myśl", "Thought for {{DURATION}}": "Myślał przez {{DURATION}}", @@ -2099,6 +2144,7 @@ "Toggle 1 source": "Pokaż/ukryj 1 źródło", "Toggle details": "Pokaż/ukryj szczegóły", "Toggle Dictation": "Przełącz dyktowanie", + "Toggle Mute": "", "Toggle Sidebar": "Przełącz pasek boczny", "Toggle status history": "Pokaż/ukryj historię statusu", "Toggle whether current connection is active.": "Przełącz aktywność połączenia.", @@ -2177,7 +2223,7 @@ "Upload Progress": "Postęp przesyłania", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Postęp: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Przesłane pliki lub obrazy", - "Uploading file...": "Przesyłanie pliku...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Przesyłanie...", "URL": "URL", "URL is required": "URL jest wymagany", @@ -2197,6 +2243,7 @@ "User Groups": "Grupy użytkowników", "User location successfully retrieved.": "Lokalizacja użytkownika pobrana pomyślnie.", "User menu": "Menu użytkownika", + "User Preview": "", "User ratings (thumbs up/down)": "Oceny użytkowników (kciuki w górę/dół)", "User Status": "Status użytkownika", "User Webhooks": "Webhooki użytkownika", diff --git a/src/lib/i18n/locales/pt-BR/translation.json b/src/lib/i18n/locales/pt-BR/translation.json index 4094eafe8b..5c95e94884 100644 --- a/src/lib/i18n/locales/pt-BR/translation.json +++ b/src/lib/i18n/locales/pt-BR/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "[Hoje às] h:mm A", "[Yesterday at] h:mm A": "[Ontem às] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Ferramentas disponíveis", "{{COUNT}} characters": "{{COUNT}} caracteres", "{{COUNT}} extracted lines": "{{COUNT}} linhas extraídas", "{{COUNT}} files": "{{COUNT}} arquivos", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} linhas ocultas", "{{COUNT}} members": "{{COUNT}} membros", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Respostas", "{{COUNT}} Rows": "{{COUNT}} Linhas", "{{count}} selected_one": "{{count}} selecionado", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Tem certeza de que deseja excluir todas as conversas? Esta ação não pode ser desfeita.", "Are you sure you want to delete this channel?": "Tem certeza de que deseja excluir este canal?", "Are you sure you want to delete this connection? This action cannot be undone.": "Tem certeza de que deseja excluir esta conexão? Esta ação não pode ser desfeita.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "Tem certeza de que deseja excluir esta memória? Esta ação não pode ser desfeita.", "Are you sure you want to delete this message?": "Tem certeza de que deseja excluir esta mensagem?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Tem certeza de que deseja excluir esta versão? As versões filhas serão vinculadas novamente à versão pai.", @@ -240,6 +248,7 @@ "Automations": "Automações", "Available list": "Lista disponível", "Available models": "Modelos disponíveis", + "Available Skills": "", "Available Tools": "Ferramentas disponíveis", "available users": "usuários disponíveis", "available!": "disponível!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "Fluxo de trabalho ComfyUI", "ComfyUI Workflow Nodes": "Nós do fluxo de trabalho ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "IDs de Nodes separados por vírgula (por exemplo, 1 ou 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "comando", "Command": "Comando", "Comment": "Comentário", "Commit Message": "Mensagem de Commit", "Community Reviews": "Avaliações da comunidade", + "Comparing with knowledge base...": "", "Completions": "Completions", "Compress Images in Channels": "Comprimir imagens em canais", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Solicitações simultâneas", "Config": "Configuração", "Config imported successfully": "Configuração importada com sucesso", @@ -538,12 +552,14 @@ "Delete a model": "Excluir um modelo", "Delete All": "Excluir tudo", "Delete All Chats": "Excluir Todos os Chats", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Apague todo o conteúdo desta pasta.", "Delete automation?": "Excluir automação?", "Delete calendar": "Excluir calendário", "Delete Calendar": "Excluir Calendário", "Delete Chat": "Excluir Chat", "Delete chat?": "Excluir chat?", + "Delete directory?": "", "Delete Event": "Excluir Evento", "Delete File": "Excluir arquivo", "Delete folder?": "Excluir pasta?", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "As conexões diretas permitem que os usuários se conectem aos seus próprios endpoints de API compatíveis com OpenAI.", "Direct Message": "Mensagem direta", "Direct Tool Servers": "Servidores de ferramentas diretas", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "A seleção do diretório foi cancelada", "Disable All": "Desativar tudo", "Disable Code Interpreter": "Desativar o interpretador de código", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "Solicitações Simultâneas de Embedding", "Embedding Model": "Modelo de Embedding", "Embedding Model Engine": "Motor do Modelo de Embedding", + "Emoji": "", "Emojis": "Emojis", "Empty message": "Mensagem vazia", "Enable All": "Ativar tudo", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "Insira a chave da API de pesquisa do Kagi", "Enter Key Behavior": "Comportamento da tecla Enter", "Enter language codes": "Digite os códigos de idioma", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Insira a chave da API do MinerU", "Enter Mistral API Base URL": "Insira a URL base da API Mistral", "Enter Mistral API Key": "Insira a chave da API Mistral", @@ -902,6 +925,7 @@ "Failed to archive chat.": "Falha ao arquivar o chat.", "Failed to attach file": "Falha ao anexar arquivo", "Failed to clear status": "Falha ao limpar o status", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Falha ao conectar ao servidor da ferramenta OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "Falha ao conectar ao servidor de terminal {{URL}}", "Failed to copy link": "Falha ao copiar o link", @@ -955,14 +979,16 @@ "File content updated successfully.": "Conteúdo do arquivo atualizado com sucesso.", "File Context": "Contexto do arquivo", "File deleted successfully.": "Arquivo excluído com sucesso.", + "File Extensions": "", "File Mode": "Modo de Arquivo", + "File moved.": "", "File name": "Nome do arquivo", "File not found.": "Arquivo não encontrado.", "File removed successfully.": "Arquivo removido com sucesso.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Arquivo não pode exceder {{maxSize}} MB.", "File Upload": "Upload de arquivo", "File uploaded successfully": "Arquivo carregado com sucesso", - "File uploaded!": "Arquivo enviado!", "Filename": "Nome do arquivo", "Files": "Arquivos", "Filter": "Filtro", @@ -1178,13 +1204,13 @@ "Knowledge": "Conhecimento", "Knowledge Access": "Acesso ao Conhecimento", "Knowledge Base": "Base de Conhecimento", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Conhecimento criado com sucesso.", "Knowledge deleted successfully.": "Conhecimento excluído com sucesso.", "Knowledge Description": "Descrição da Base de Conhecimento", "Knowledge exported successfully": "Base de Conhecimento exportada com sucesso", "Knowledge Name": "Nome da Base de Conhecimento", "Knowledge Public Sharing": "Compartilhamento Público da Base de Conhecimento", - "Knowledge reset successfully.": "Conhecimento resetado com sucesso.", "Knowledge Sharing": "Compartilhamento da Base de Conhecimento", "Knowledge updated successfully": "Conhecimento atualizado com sucesso", "Kokoro.js (Browser)": "Kokoro.js (Navegador)", @@ -1228,6 +1254,7 @@ "Light": "Claro", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Limitar consultas de pesquisa simultâneas. 0 = ilimitado (padrão). Defina como 1 para execução sequencial (recomendado para APIs com limites de taxa rígidos, como o nível gratuito do Brave).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Limita o número de solicitações simultâneas de embedding. Defina como 0 para ilimitado.", + "Linkup API Key": "", "List": "Lista", "List calendars, search, create, update, and delete calendar events": "Listar calendários, pesquisar, criar, atualizar e excluir eventos do calendário", "Listening...": "Escutando...", @@ -1378,6 +1405,8 @@ "New calendar": "Novo calendário", "New Calendar": "Novo Calendário", "New Chat": "Novo Chat", + "New directory": "", + "New Directory": "", "New Event": "Novo Evento", "New File": "Novo Arquivo", "New Folder": "Nova Pasta", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "Nenhum conteúdo HTML, CSS ou JavaScript encontrado.", "No inference engine with management support found": "Nenhum mecanismo de inferência com suporte de gerenciamento encontrado", "No kernel": "Sem kernel", + "No knowledge bases accessible": "", "No knowledge bases found.": "Nenhuma base de conhecimento encontrada.", "No knowledge found": "Nenhum conhecimento encontrado", "No limit": "Sem limite", "No memories to clear": "Nenhuma memória para limpar", "No model IDs": "Nenhum ID de modelo", + "No models accessible": "", "No models available": "Nenhum modelo disponível", "No models found": "Nenhum modelo encontrado", "No models selected": "Nenhum modelo selecionado", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "Nenhuma conexão de Terminal configurada.", "No terminal connections configured.": "Nenhuma conexão de terminal configurada.", "No tool server connections configured.": "Nenhuma conexão de servidor de ferramentas configurada.", + "No tools accessible": "", "No tools found": "Nenhuma ferramenta encontrada", "No users were found.": "Nenhum usuário foi encontrado.", "No valves": "Sem configurações", @@ -1487,6 +1519,7 @@ "On": "Ligado", "Once": "Uma vez", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Ativo somente quando a configuração \"Colar texto grande como arquivo\" estiver ativada.", "Only active when the chat input is in focus and an LLM is generating a response.": "Ativo somente quando o campo de entrada do chat está em foco e um LLM está gerando uma resposta.", "Only active when the chat input is in focus.": "Ativo somente quando o campo de entrada do chat estiver em foco.", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "Documento PDF (.pdf)", "PDF Extract Images (OCR)": "Extrair Imagens do PDF (OCR)", "PDF Loader Mode": "Modo de carregamento de PDF", + "pdf, docx, pptx, xlsx": "", "pending": "pendente", "Pending": "Pendente", "Pending User Overlay Content": "Conteúdo de sobreposição de usuário pendente", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "O ID de prefixo é utilizado para evitar conflitos com outras conexões, adicionando um prefixo aos IDs dos modelos - deixe em branco para desativar.", "Prevent File Creation": "Impedir a criação de arquivos", "Preview": "Visualização", + "Preview Access": "", "Previous 30 days": "Últimos 30 dias", "Previous 7 days": "Últimos 7 dias", "Previous message": "Mensagem anterior", @@ -1696,6 +1731,9 @@ "Remove from favorites": "Remover dos favoritos", "Remove image": "Remover imagem", "Remove Model": "Remover Modelo", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Renomear", "Renamed to {{name}}": "Renomeado para {{name}}", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "Redefinir", "Reset All Models": "Redefinir todos os modelos", "Reset Image": "Redefinir imagem", + "Reset knowledge base?": "", "Reset Upload Directory": "Redefinir Diretório de Upload", "Reset Vector Storage/Knowledge": "Redefinir Armazenamento de Vetores/Conhecimento", "Reset view": "Redefinir visualização", @@ -1782,6 +1821,7 @@ "Search Prompts": "Pesquisar Prompts", "Search Result Count": "Contagem de Resultados da Pesquisa", "Search Skills": "Pesquisar Skills", + "Search skills...": "", "Search the internet": "Pesquisar na Internet", "Search the web and fetch URLs": "Pesquise na web e obtenha URLs", "Search Tools": "Pesquisar Ferramentas", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "Mudar para editor JSON", "Switch to visual editor": "Mudar para editor visual", "Sync": "Sincronizar", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Sincronização concluída!", "Sync directory": "Sincronizar Diretório", "Sync Failed": "Falha na sincronização", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Esta opção controla quantos tokens são preservados ao atualizar o contexto. Por exemplo, se definido como 2, os últimos 2 tokens do contexto da conversa serão mantidos. Preservar o contexto pode ajudar a manter a continuidade de uma conversa, mas pode reduzir a capacidade de responder a novos tópicos.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Esta opção habilita ou desabilita o uso do recurso de raciocínio no Ollama, que permite que o modelo pense antes de gerar uma resposta. Quando habilitada, o modelo pode levar um momento para processar o contexto da conversa e gerar uma resposta mais ponderada.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Esta opção define o número máximo de tokens que o modelo pode gerar em sua resposta. Aumentar esse limite permite que o modelo forneça respostas mais longas, mas também pode aumentar a probabilidade de geração de conteúdo inútil ou irrelevante.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Essa opção deletará todos os arquivos existentes na coleção e todos eles serão substituídos.", "This response was generated by \"{{model}}\"": "Esta resposta foi gerada por \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Este template contém múltiplos marcadores de contexto ([context] ou {{CONTEXT}}). O contexto será injetado em cada ocorrência.", "This will delete": "Isso vai excluir", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "Isto vai excluir todos os modelos, incluindo personalizados", "This will delete all models including custom models and cannot be undone.": "Isto vai excluir todos os modelos, incluindo personalizados e não pode ser desfeito.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Esta ação excluirá permanentemente o calendário \"{{name}}\" e todos os seus eventos. Esta ação não pode ser desfeita.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Esta ação resetará a base de conhecimento e sincronizará todos os arquivos. Deseja continuar?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Explicação detalhada", "Thought": "Pensamento", "Thought for {{DURATION}}": "Pensado por {{DURATION}}", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "Alternar 1 origem", "Toggle details": "Alternar detalhes", "Toggle Dictation": "Alternar Ditado", + "Toggle Mute": "", "Toggle Sidebar": "Alternar barra lateral", "Toggle status history": "Alternar histórico de status", "Toggle whether current connection is active.": "Alterna se a conexão atual está ativa.", @@ -2174,7 +2216,7 @@ "Upload Progress": "Progresso do Upload", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Progresso do upload: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Arquivos ou imagens carregados", - "Uploading file...": "Enviando arquivo...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Enviando...", "URL": "URL", "URL is required": "URL é obrigatória", @@ -2194,6 +2236,7 @@ "User Groups": "Grupos de usuários", "User location successfully retrieved.": "Localização do usuário recuperada com sucesso.", "User menu": "Menu do usuário", + "User Preview": "", "User ratings (thumbs up/down)": "Avaliações dos usuários (polegar para cima/polegar para baixo)", "User Status": "Status do usuário", "User Webhooks": "Webhooks do usuário", diff --git a/src/lib/i18n/locales/pt-PT/translation.json b/src/lib/i18n/locales/pt-PT/translation.json index fdc2ca803e..691b2c4dbb 100644 --- a/src/lib/i18n/locales/pt-PT/translation.json +++ b/src/lib/i18n/locales/pt-PT/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ modelos }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Ferramentas Disponíveis", "{{COUNT}} characters": "{{COUNT}} caracteres", "{{COUNT}} extracted lines": "{{COUNT}} linhas extraídas", "{{COUNT}} files": "{{COUNT}} ficheiros", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} linhas ocultas", "{{COUNT}} members": "{{COUNT}} membros", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Respostas", "{{COUNT}} Rows": "{{COUNT}} Linhas", "{{count}} selected_one": "", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Tem a certeza de que deseja eliminar todas as conversas? Esta ação não pode ser desfeita.", "Are you sure you want to delete this channel?": "Tem a certeza de que deseja eliminar este canal?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Tem a certeza de que deseja eliminar esta mensagem?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Tem a certeza de que deseja eliminar esta versão? As versões filhas serão relinkadas ao pai desta versão.", @@ -240,6 +248,7 @@ "Automations": "", "Available list": "Lista disponível", "Available models": "Modelos disponíveis", + "Available Skills": "", "Available Tools": "Ferramentas disponíveis", "available users": "utilizadores disponíveis", "available!": "disponível!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "Fluxo de Trabalho do ComfyUI", "ComfyUI Workflow Nodes": "Nodos do Fluxo de Trabalho do ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "IDs de Nodos separados por vírgula (ex. 1 ou 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "comando", "Command": "Comando", "Comment": "Comentário", "Commit Message": "Mensagem de Commit", "Community Reviews": "Avaliações da Comunidade", + "Comparing with knowledge base...": "", "Completions": "Conclusões", "Compress Images in Channels": "Comprimir Imagens nos Canais", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Solicitações simultâneas", "Config": "Configuração", "Config imported successfully": "Configuração importada com sucesso", @@ -538,12 +552,14 @@ "Delete a model": "Apagar um modelo", "Delete All": "Apagar Todos", "Delete All Chats": "Apagar todas as conversas", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Apagar todo o conteúdo dentro desta pasta", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Apagar Conversa", "Delete chat?": "Apagar conversa?", + "Delete directory?": "", "Delete Event": "", "Delete File": "Apagar ficheiro", "Delete folder?": "Apagar pasta", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Ligações Diretas permitem aos utilizadores ligarem-se aos próprios endpoints de API da OpenAI ou compatíveis.", "Direct Message": "Mensagem Direta", "Direct Tool Servers": "Servidores de Ferramentas Diretas", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "A seleção de pastas foi cancelada", "Disable All": "Desativar Todos", "Disable Code Interpreter": "Desativar Interpretador de Código", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "Pedidos Concorrentes de Incorporação", "Embedding Model": "Modelo de Incorporação", "Embedding Model Engine": "Motor de Modelo de Incorporação", + "Emoji": "", "Emojis": "", "Empty message": "Mensagem vazia", "Enable All": "Ativar Todos", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "Introduzir a Chave da API do Kagi Search", "Enter Key Behavior": "Introduzir Comportamento da Chave", "Enter language codes": "Introduzir os códigos de idioma", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Introduzir a Chave de API do MinerU", "Enter Mistral API Base URL": "Introduzir o URL Base da API do Mistral", "Enter Mistral API Key": "Introduzir a Chave API do Mistral", @@ -902,6 +925,7 @@ "Failed to archive chat.": "Falha ao arquivar conversa.", "Failed to attach file": "Falha ao anexar ficheiro", "Failed to clear status": "Falha ao limpar o estado", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Falha na ligação ao servidor de ferramenta da OpenAI {{URL}}", "Failed to connect to {{URL}} terminal server": "Falha na ligação ao terminal de servidores {{URL}}", "Failed to copy link": "Falha ao copiar a hiperligação", @@ -955,14 +979,16 @@ "File content updated successfully.": "Conteúdo do ficheiro atualizado com sucesso.", "File Context": "Contexto do Ficheiro", "File deleted successfully.": "Ficheiro apagado com sucesso.", + "File Extensions": "", "File Mode": "Modo de Ficheiro", + "File moved.": "", "File name": "Nome do ficheiro", "File not found.": "Ficheiro não encontrado.", "File removed successfully.": "Ficheiro removido com sucesso.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "O tamanho do ficheiro não deve exceder {{maxSize}} MB.", "File Upload": "Enviar Ficheiro", "File uploaded successfully": "Ficheiro enviado com sucesso", - "File uploaded!": "Ficheiro enviado!", "Filename": "Nome do Ficheiro", "Files": "Ficheiros", "Filter": "Filtro", @@ -1178,13 +1204,13 @@ "Knowledge": "Conhecimento", "Knowledge Access": "Acesso ao Conhecimento", "Knowledge Base": "Base de Conhecimento", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Conhecimento criado com sucesso.", "Knowledge deleted successfully.": "Conhecimento eliminado com sucesso.", "Knowledge Description": "Descrição do Conhecimento", "Knowledge exported successfully": "Conhecimento exportado com sucesso", "Knowledge Name": "Nome do Conhecimento", "Knowledge Public Sharing": "Partilha Pública do Conhecimento", - "Knowledge reset successfully.": "Conhecimento reiniciado com sucesso.", "Knowledge Sharing": "Partilha do Conhecimento", "Knowledge updated successfully": "Conhecimento atualizado com sucesso.", "Kokoro.js (Browser)": "Kokoro.js (Navegador)", @@ -1228,6 +1254,7 @@ "Light": "Claro", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Limitar consultas de pesquisa simultâneas. 0 = ilimitado (padrão). Defina como 1 para execução sequencial (recomendado para APIs com limites de taxa rigorosos, como o nível gratuito do Brave).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Limita o número de solicitações de incorporação simultâneas. Defina como 0 para ilimitado.", + "Linkup API Key": "", "List": "Lista", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "A ouvir...", @@ -1378,6 +1405,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Nova Conversa", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "Novo Ficheiro", "New Folder": "Nova Pasta", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "Nenhum conteúdo HTML, CSS ou JavaScript encontrado.", "No inference engine with management support found": "Nenhum motor de inferência com suporte de gerenciamento encontrado", "No kernel": "Nenhum kernel", + "No knowledge bases accessible": "", "No knowledge bases found.": "Nenhuma base de conhecimento encontrada.", "No knowledge found": "Nenhum conhecimento encontrado", "No limit": "", "No memories to clear": "Nenhuma memória para limpar", "No model IDs": "Nenhum ID de modelo", + "No models accessible": "", "No models available": "Nenhum modelo disponível", "No models found": "Nenhum modelo encontrado", "No models selected": "Nenhum modelo selecionado", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "Nenhuma ligação de Terminal configurada.", "No terminal connections configured.": "Nenhuma ligação de terminal configurada.", "No tool server connections configured.": "Nenhuma ligação de servidor de ferramentas configurada.", + "No tools accessible": "", "No tools found": "Nenhuma ferramenta encontrada", "No users were found.": "Nenhum utilizador encontrado", "No valves": "Nenhuma válvula", @@ -1487,6 +1519,7 @@ "On": "Ligado", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Apenas ativo quando a configuração \"Colar Texto Grande como Arquivo\" está ativada.", "Only active when the chat input is in focus and an LLM is generating a response.": "Apenas ativo quando a entrada do chat está em foco e um LLM está gerando uma resposta.", "Only active when the chat input is in focus.": "Apenas ativo quando a entrada do chat está em foco.", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "Documento PDF (.pdf)", "PDF Extract Images (OCR)": "Extrair Imagens de PDF (OCR)", "PDF Loader Mode": "Modo de Carregador de PDF", + "pdf, docx, pptx, xlsx": "", "pending": "pendente", "Pending": "Pendente", "Pending User Overlay Content": "Conteúdo de Sobreposição de Usuário Pendente", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "O ID de Prefixo é usado para evitar conflitos com outras ligações, adicionando um prefixo aos IDs dos modelos - deixe vazio para desativar", "Prevent File Creation": "Prevenir Criação de Ficheiros", "Preview": "Pré-visualização", + "Preview Access": "", "Previous 30 days": "Últimos 30 dias", "Previous 7 days": "Últimos 7 dias", "Previous message": "Mensagem Anterior", @@ -1696,6 +1731,9 @@ "Remove from favorites": "Remover dos favoritos", "Remove image": "Remover imagem", "Remove Model": "Remover Modelo", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Renomear", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "Repor", "Reset All Models": "Repor Todos os Modelos", "Reset Image": "Repor imagem", + "Reset knowledge base?": "", "Reset Upload Directory": "Limpar Pasta de Carregamento", "Reset Vector Storage/Knowledge": "Repor Armazenamento de Vetores/Conhecimento", "Reset view": "Repor vista", @@ -1782,6 +1821,7 @@ "Search Prompts": "Pesquisar Prompts", "Search Result Count": "Contagem de resultados da pesquisa", "Search Skills": "Pesquisar Habilidades", + "Search skills...": "", "Search the internet": "Pesquisar na internet", "Search the web and fetch URLs": "Pesquisar na web e obter URLs", "Search Tools": "Pesquisar Ferramentas", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "Sincronizar", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Sincronização Completa!", "Sync directory": "Diretório de Sincronização", "Sync Failed": "Falha na Sincronização", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Esta opção controla quantos tokens são preservados ao atualizar o contexto. Por exemplo, se definido para 2, os últimos 2 tokens do contexto da conversa serão retidos. Preservar o contexto pode ajudar a manter a continuidade de uma conversa, mas pode reduzir a capacidade de responder a novos tópicos.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Esta opção ativa ou desativa o uso do recurso de raciocínio no Ollama, que permite ao modelo pensar antes de gerar uma resposta. Quando ativado, o modelo pode levar um momento para processar o contexto da conversa e gerar uma resposta mais reflexiva.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Esta opção define o número máximo de tokens que o modelo pode gerar em sua resposta. Aumentar esse limite permite que o modelo forneça respostas mais longas, mas também pode aumentar a probabilidade de conteúdo inútil ou irrelevante ser gerado.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Esta opção irá excluir todos os arquivos existentes na coleção e substituí-los por arquivos recém-carregados.", "This response was generated by \"{{model}}\"": "Esta resposta foi gerada por \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Isto irá excluir", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "Isto irá excluir todos os modelos, incluindo os modelos personalizados", "This will delete all models including custom models and cannot be undone.": "Isto irá excluir todos os modelos, incluindo os modelos personalizados, e não pode ser desfeito.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Isto irá redefinir a base de conhecimento e sincronizar todos os arquivos. Deseja continuar?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Explicação Minuciosa", "Thought": "", "Thought for {{DURATION}}": "Pensou por {{DURATION}}", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "Alternar 1 fonte", "Toggle details": "", "Toggle Dictation": "Alternar Ditado", + "Toggle Mute": "", "Toggle Sidebar": "Alternar Barra Lateral", "Toggle status history": "Alternar histórico de status", "Toggle whether current connection is active.": "Alternar se a conexão atual está ativa.", @@ -2174,7 +2216,7 @@ "Upload Progress": "Progresso do Carregamento", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Progresso do Carregamento: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Ficheiros ou imagens carregados", - "Uploading file...": "A carregar ficheiro...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "A carregar...", "URL": "URL", "URL is required": "URL é obrigatório", @@ -2194,6 +2236,7 @@ "User Groups": "Grupos de Utilizadores", "User location successfully retrieved.": "Localização do utilizador recuperada com sucesso.", "User menu": "Menu do Utilizador", + "User Preview": "", "User ratings (thumbs up/down)": "Avaliações do Utilizador (positivo/negativo)", "User Status": "Estado do Utilizador", "User Webhooks": "Webhooks do Utilizador", diff --git a/src/lib/i18n/locales/ro-RO/translation.json b/src/lib/i18n/locales/ro-RO/translation.json index 0f95e3745e..0e0f669fc8 100644 --- a/src/lib/i18n/locales/ro-RO/translation.json +++ b/src/lib/i18n/locales/ro-RO/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ modele }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Ești sigur că vrei să ștergi acest canal?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Ești sigur că vrei să ștergi acest mesaj?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -240,6 +248,7 @@ "Automations": "", "Available list": "Listă disponibilă", "Available models": "", + "Available Skills": "", "Available Tools": "Instrumente disponibile", "available users": "utilizatori disponibili", "available!": "disponibil!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "Flux de lucru ComfyUI", "ComfyUI Workflow Nodes": "Noduri de flux de lucru ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Comandă", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Completări", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Cereri Concurente", "Config": "", "Config imported successfully": "", @@ -538,12 +552,14 @@ "Delete a model": "Șterge un model", "Delete All": "", "Delete All Chats": "Șterge Toate Conversațiile", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Șterge Conversația", "Delete chat?": "Șterge conversația?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Ștergeți folderul?", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Model de Încapsulare", "Embedding Model Engine": "Motor de Model de Încapsulare", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "Introduceți codurile limbilor", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -902,6 +925,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -955,14 +979,16 @@ "File content updated successfully.": "Conținutul fișierului a fost actualizat cu succes.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Mod Fișier", + "File moved.": "", "File name": "", "File not found.": "Fișierul nu a fost găsit.", "File removed successfully.": "Fișierul a fost eliminat cu succes.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Dimensiunea fișierului nu ar trebui să depășească {{maxSize}} MB.", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "Fișiere", "Filter": "", @@ -1178,13 +1204,13 @@ "Knowledge": "Cunoștințe", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Cunoașterea a fost creată cu succes.", "Knowledge deleted successfully.": "Cunoștințele au fost șterse cu succes.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "Resetarea cunoștințelor a fost efectuată cu succes.", "Knowledge Sharing": "", "Knowledge updated successfully": "Cunoașterea a fost actualizată cu succes", "Kokoro.js (Browser)": "", @@ -1228,6 +1254,7 @@ "Light": "Luminos", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Ascult...", @@ -1378,6 +1405,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Conversație Nouă", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "Niciun conținut HTML, CSS sau JavaScript găsit.", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Nu au fost găsite informații.", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "Nu s-au găsit modele", "No models selected": "", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1487,6 +1519,7 @@ "On": "Activat", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "Document PDF (.pdf)", "PDF Extract Images (OCR)": "Extrage Imagini PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "în așteptare", "Pending": "", "Pending User Overlay Content": "", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Ultimele 30 de zile", "Previous 7 days": "Ultimele 7 zile", "Previous message": "", @@ -1696,6 +1731,9 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Înlătură Modelul", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._other": "", "Rename": "Redenumește", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "Resetează", "Reset All Models": "", "Reset Image": "Resetați imaginea", + "Reset knowledge base?": "", "Reset Upload Directory": "Resetează Directorul de Încărcare", "Reset Vector Storage/Knowledge": "Resetarea Stocării/Vectoului de Cunoștințe", "Reset view": "", @@ -1782,6 +1821,7 @@ "Search Prompts": "Caută Prompturi", "Search Result Count": "Număr Rezultate Căutare", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "Caută Instrumente", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Sincronizează directorul", "Sync Failed": "", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Această opțiune va șterge toate fișierelor existente din colecție și le va înlocui cu fișierele nou încărcate.", "This response was generated by \"{{model}}\"": "Acest răspuns a fost generat de \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Aceasta va șterge", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Aceasta va reseta baza de cunoștințe și va sincroniza toate fișierele. Doriți să continuați?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Explicație detaliată", "Thought": "", "Thought for {{DURATION}}": "", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2174,7 +2216,7 @@ "Upload Progress": "Progres Încărcare", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2194,6 +2236,7 @@ "User Groups": "", "User location successfully retrieved.": "Localizarea utilizatorului a fost preluată cu succes.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/ru-RU/translation.json b/src/lib/i18n/locales/ru-RU/translation.json index 3ebac7d0b8..bb87696d90 100644 --- a/src/lib/i18n/locales/ru-RU/translation.json +++ b/src/lib/i18n/locales/ru-RU/translation.json @@ -9,12 +9,21 @@ "[Today at] h:mm A": "[Сегодня в] h:mm A", "[Yesterday at] h:mm A": "[Вчера в] h:mm A", "{{ models }}": "{{ модели }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} доступных инструментов", "{{COUNT}} characters": "{{COUNT}} символов", "{{COUNT}} extracted lines": "{{COUNT}} извлеченных строк", "{{COUNT}} files": "{{COUNT}} файлов", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} скрытых строк", "{{COUNT}} members": "{{COUNT}} участников", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Ответов", "{{COUNT}} Rows": "{{COUNT}} Строк", "{{count}} selected_one": "{{count}} выбран", @@ -195,6 +204,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Вы уверены, что хотите удалить все чаты? Это действие нельзя отменить.", "Are you sure you want to delete this channel?": "Вы уверены, что хотите удалить этот канал?", "Are you sure you want to delete this connection? This action cannot be undone.": "Вы уверены, что хотите удалить это подключение? Это действие нельзя отменить.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "Вы уверены, что хотите удалить это воспоминание? Это действие нельзя отменить.", "Are you sure you want to delete this message?": "Вы уверены, что хотите удалить это сообщение?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Вы уверены, что хотите удалить эту версию? Дочерние версии будут привязаны к родительской.", @@ -241,6 +251,7 @@ "Automations": "Автоматизации", "Available list": "Список вариантов", "Available models": "Доступные модели", + "Available Skills": "", "Available Tools": "Доступные инструменты", "available users": "доступные пользователи", "available!": "доступно!", @@ -400,13 +411,19 @@ "ComfyUI Workflow": "Рабочий процесс ComfyUI", "ComfyUI Workflow Nodes": "Узлы рабочего процесса ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "ID узлов через запятую (напр., 1 или 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "команда", "Command": "Команда", "Comment": "Комментарий", "Commit Message": "Добавить сообщение", "Community Reviews": "Отзывы сообщества", + "Comparing with knowledge base...": "", "Completions": "Завершения", "Compress Images in Channels": "Сжимать изображения в каналах", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Одновременные запросы", "Config": "Конфигурация", "Config imported successfully": "Конфигурация успешно импортирована", @@ -539,12 +556,14 @@ "Delete a model": "Удалить модель", "Delete All": "Удалить ВСЕ", "Delete All Chats": "Удалить ВСЕ Чаты", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Удалить все содержимое внутри этой папки", "Delete automation?": "Удалить автоматизацию?", "Delete calendar": "Удалить календарь", "Delete Calendar": "Удалить календарь", "Delete Chat": "Удалить Чат", "Delete chat?": "Удалить чат?", + "Delete directory?": "", "Delete Event": "Удалить событие", "Delete File": "Удалить файл", "Delete folder?": "Удалить папку?", @@ -581,6 +600,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Прямые подключения позволяют пользователям подключаться к своим собственным конечным точкам API, совместимым с OpenAI.", "Direct Message": "Личное сообщение", "Direct Tool Servers": "Доступ к серверам инструментов", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Выбор папки был отменён", "Disable All": "Отключить все", "Disable Code Interpreter": "Отключить интерпретатор кода", @@ -689,6 +713,7 @@ "Embedding Concurrent Requests": "Параллельные запросы эмбеддингов", "Embedding Model": "Модель встраивания", "Embedding Model Engine": "Движок модели встраивания", + "Emoji": "", "Emojis": "Эмодзи", "Empty message": "Пустое сообщение", "Enable All": "Включить Все", @@ -767,6 +792,7 @@ "Enter Kagi Search API Key": "Введите ключ API поиска Kagi", "Enter Key Behavior": "Введите ключ поведения", "Enter language codes": "Введите коды языков", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Введите API-ключ MinerU", "Enter Mistral API Base URL": "Введите базовый URL Mistral API", "Enter Mistral API Key": "Введите ключ API для Mistral", @@ -903,6 +929,7 @@ "Failed to archive chat.": "Не удалось архивировать чат.", "Failed to attach file": "Не удалось прикрепить файл", "Failed to clear status": "Не удалось очистить статус", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Не удалось подключиться к серверу инструментов OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "Не удалось подключиться к серверу терминала {{URL}}", "Failed to copy link": "Не удалось скопировать ссылку", @@ -956,14 +983,16 @@ "File content updated successfully.": "Содержимое файла успешно обновлено.", "File Context": "Контекст файла", "File deleted successfully.": "Файл успешно удалён.", + "File Extensions": "", "File Mode": "Режим файла", + "File moved.": "", "File name": "Имя файла", "File not found.": "Файл не найден.", "File removed successfully.": "Файл успешно удален.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Размер файла не должен превышать {{maxSize}} МБ.", "File Upload": "Загрузка файла", "File uploaded successfully": "Файл успешно загружен", - "File uploaded!": "Файл загружен!", "Filename": "Имя файла", "Files": "Файлы", "Filter": "Фильтр", @@ -1179,13 +1208,13 @@ "Knowledge": "Знания", "Knowledge Access": "Доступ к знаниям", "Knowledge Base": "База знаний", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Знания созданы успешно.", "Knowledge deleted successfully.": "Знания успешно удалены.", "Knowledge Description": "Описание знаний", "Knowledge exported successfully": "Знания успешно экспортированы", "Knowledge Name": "Название знаний", "Knowledge Public Sharing": "Публичный доступ к базам знаний", - "Knowledge reset successfully.": "Знания успешно сброшены.", "Knowledge Sharing": "Общий доступ к знаниям", "Knowledge updated successfully": "Знания успешно обновлены", "Kokoro.js (Browser)": "Kokoro.js (Браузер)", @@ -1229,6 +1258,7 @@ "Light": "Светлый", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Лимит параллельных поисковых запросов. 0 = без ограничений (по умолчанию). Установите 1 для последовательного выполнения (рекомендуется для API со строгими лимитами, например, бесплатный тариф Brave).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Ограничивает число параллельных запросов эмбеддингов. 0 — без ограничений.", + "Linkup API Key": "", "List": "Список", "List calendars, search, create, update, and delete calendar events": "Просматривайте календари, ищите, создавайте, обновляйте и удаляйте события календаря", "Listening...": "Слушаю...", @@ -1379,6 +1409,8 @@ "New calendar": "Новый календарь", "New Calendar": "Новый календарь", "New Chat": "Новый чат", + "New directory": "", + "New Directory": "", "New Event": "Новое событие", "New File": "Новый файл", "New Folder": "Новая папка", @@ -1424,11 +1456,13 @@ "No HTML, CSS, or JavaScript content found.": "Содержимое в формате HTML, CSS или JavaScript не найдено.", "No inference engine with management support found": "Инференс-движок с поддержкой управления не найден", "No kernel": "Нет ядра", + "No knowledge bases accessible": "", "No knowledge bases found.": "Базы знаний не найдены.", "No knowledge found": "Знания не найдены", "No limit": "Без ограничений", "No memories to clear": "Нет воспоминаний, которые нужно было бы очистить", "No model IDs": "Нет ID модели", + "No models accessible": "", "No models available": "Нет доступных моделей", "No models found": "Модели не найдены", "No models selected": "Модели не выбраны", @@ -1449,6 +1483,7 @@ "No Terminal connection configured.": "Подключение к терминалу не настроено.", "No terminal connections configured.": "Подключения к терминалу не настроены.", "No tool server connections configured.": "Подключения к серверам инструментов не настроены.", + "No tools accessible": "", "No tools found": "Инструменты не найдены", "No users were found.": "Пользователи не найдены.", "No valves": "Нет параметров", @@ -1488,6 +1523,7 @@ "On": "Включено", "Once": "Один раз", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Активно только при включённой настройке «Вставлять большой текст как файл».", "Only active when the chat input is in focus and an LLM is generating a response.": "Активно только при фокусе на поле ввода и генерации ответа.", "Only active when the chat input is in focus.": "Активно только при фокусе на поле ввода.", @@ -1559,6 +1595,7 @@ "PDF document (.pdf)": "PDF-документ (.pdf)", "PDF Extract Images (OCR)": "Извлечение изображений из PDF (OCR)", "PDF Loader Mode": "Режим загрузки PDF", + "pdf, docx, pptx, xlsx": "", "pending": "ожидающий", "Pending": "Ожидающий", "Pending User Overlay Content": "Содержимое оверлея ожидающего пользователя", @@ -1620,6 +1657,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "ID префикса используется для предотвращения конфликтов с другими подключениями путем добавления префикса к идентификаторам моделей - оставьте пустым, чтобы отключить", "Prevent File Creation": "Запретить создание файлов", "Preview": "Предпросмотр", + "Preview Access": "", "Previous 30 days": "Предыдущие 30 дней", "Previous 7 days": "Предыдущие 7 дней", "Previous message": "Предыдущее сообщение", @@ -1697,6 +1735,10 @@ "Remove from favorites": "Удалить из избранного", "Remove image": "Удалить изображение", "Remove Model": "Удалить модель", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Переименовать", "Renamed to {{name}}": "Переименовано в {{name}}", "Render Markdown in Assistant Messages": "Отображать Markdown в сообщениях ассистента", @@ -1715,6 +1757,7 @@ "Reset": "Сбросить", "Reset All Models": "Сбросить все модели", "Reset Image": "Сбросить изображение", + "Reset knowledge base?": "", "Reset Upload Directory": "Сбросить каталог загрузок", "Reset Vector Storage/Knowledge": "Сброс векторного хранилища/знаний", "Reset view": "Сбросить вид", @@ -1784,6 +1827,7 @@ "Search Prompts": "Поиск промптов", "Search Result Count": "Количество результатов поиска", "Search Skills": "Поиск скиллов", + "Search skills...": "", "Search the internet": "Искать в интернете", "Search the web and fetch URLs": "Поиск в интернете и загрузка URL", "Search Tools": "Поиск инструментов", @@ -1983,6 +2027,8 @@ "Switch to JSON editor": "Переключиться на редактор JSON", "Switch to visual editor": "Переключиться на визуальный редактор", "Sync": "Синхронизация", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Синхронизация завершена!", "Sync directory": "Каталог синхронизации", "Sync Failed": "Ошибка синхронизации", @@ -2055,7 +2101,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Этот параметр определяет, сколько токенов сохраняется при обновлении контекста. Например, если задано значение 2, будут сохранены последние 2 токена контекста беседы. Сохранение контекста может помочь сохранить непрерывность беседы, но может уменьшить возможность отвечать на новые темы.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Эта опция включает или отключает использование функции рассуждения в Ollama, которая позволяет модели подумать, прежде чем генерировать ответ. Если она включена, модель может потратить некоторое время на обработку контекста разговора и выработку более продуманного ответа.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Этот параметр устанавливает максимальное количество токенов, которые модель может генерировать в своем ответе. Увеличение этого ограничения позволяет модели предоставлять более длинные ответы, но также может увеличить вероятность создания бесполезного или нерелевантного контента.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Эта опция удалит все существующие файлы в коллекции и заменит их вновь загруженными файлами.", "This response was generated by \"{{model}}\"": "Этот ответ был сгенерирован для \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Этот шаблон содержит несколько заполнителей контекста ([context] или {{CONTEXT}}). Контекст будет добавлен в каждое место.", "This will delete": "Это приведет к удалению", @@ -2063,7 +2108,7 @@ "This will delete all models including custom models": "Это приведет к удалению всех моделей, включая пользовательские модели.", "This will delete all models including custom models and cannot be undone.": "При этом будут удалены все модели, включая пользовательские, и это действие нельзя будет отменить.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Календарь \"{{name}}\" и все его события будут удалены безвозвратно. Это действие нельзя отменить.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Это сбросит базу знаний и синхронизирует все файлы. Хотите продолжить?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Подробное объяснение", "Thought": "Рассуждение", "Thought for {{DURATION}}": "Рассуждаю {{DURATION}}", @@ -2099,6 +2144,7 @@ "Toggle 1 source": "Показать/скрыть 1 источник", "Toggle details": "Показать/скрыть подробности", "Toggle Dictation": "Включить/выключить диктовку", + "Toggle Mute": "", "Toggle Sidebar": "Показать/скрыть боковую панель", "Toggle status history": "Показать/скрыть историю статусов", "Toggle whether current connection is active.": "Переключить, активно ли текущее соединение.", @@ -2177,7 +2223,7 @@ "Upload Progress": "Прогресс загрузки", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Прогресс загрузки: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Загруженные файлы или изображения", - "Uploading file...": "Загрузка файла...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Загрузка...", "URL": "URL", "URL is required": "Требуется URL", @@ -2197,6 +2243,7 @@ "User Groups": "Группы пользователей", "User location successfully retrieved.": "Местоположение пользователя успешно получено.", "User menu": "Меню пользователя", + "User Preview": "", "User ratings (thumbs up/down)": "Оценки пользователей (нравится/не нравится)", "User Status": "Статус пользователя", "User Webhooks": "Пользовательские веб-хуки", diff --git a/src/lib/i18n/locales/sk-SK/translation.json b/src/lib/i18n/locales/sk-SK/translation.json index 6ffa346505..501e3888bc 100644 --- a/src/lib/i18n/locales/sk-SK/translation.json +++ b/src/lib/i18n/locales/sk-SK/translation.json @@ -9,12 +9,21 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -195,6 +204,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -241,6 +251,7 @@ "Automations": "", "Available list": "Dostupný zoznam", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "dostupní používatelia", "available!": "k dispozícii!", @@ -400,13 +411,19 @@ "ComfyUI Workflow": "Pracovný postup ComfyUI", "ComfyUI Workflow Nodes": "Pracovné uzly ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Príkaz", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Doplnenia", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Súčasné požiadavky", "Config": "", "Config imported successfully": "", @@ -539,12 +556,14 @@ "Delete a model": "Odstrániť model.", "Delete All": "", "Delete All Chats": "Odstrániť všetky konverzácie", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Odstrániť chat", "Delete chat?": "Odstrániť konverzáciu?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Odstrániť priečinok?", @@ -581,6 +600,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -689,6 +713,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Vkladací model (Embedding Model)", "Embedding Model Engine": "", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -767,6 +792,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "Zadajte kódy jazykov", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -903,6 +929,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -956,14 +983,16 @@ "File content updated successfully.": "Obsah súboru bol úspešne aktualizovaný.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Režim súboru", + "File moved.": "", "File name": "", "File not found.": "Súbor nenájdený.", "File removed successfully.": "Súbor bol úspešne odstránený.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Veľkosť súboru by nemala presiahnuť {{maxSize}} MB.", "File Upload": "", "File uploaded successfully": "Súbor bol úspešne nahraný", - "File uploaded!": "", "Filename": "", "Files": "Súbory", "Filter": "", @@ -1179,13 +1208,13 @@ "Knowledge": "Znalosti", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Znalosť úspešne vytvorená.", "Knowledge deleted successfully.": "Znalosti boli úspešne odstránené.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "Úspešné obnovenie znalostí.", "Knowledge Sharing": "", "Knowledge updated successfully": "Znalosti úspešne aktualizované", "Kokoro.js (Browser)": "", @@ -1229,6 +1258,7 @@ "Light": "Svetlo", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Počúvanie...", @@ -1379,6 +1409,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Nový chat", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Nový priečinok", @@ -1424,11 +1456,13 @@ "No HTML, CSS, or JavaScript content found.": "Nebola nájdená žiadny obsah HTML, CSS ani JavaScript.", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "Neboli nájdené žiadne znalostné databázy.", "No knowledge found": "Neboli nájdené žiadne znalosti", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "Neboli nájdené žiadne modely", "No models selected": "", @@ -1449,6 +1483,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1488,6 +1523,7 @@ "On": "Zapnuté", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1559,6 +1595,7 @@ "PDF document (.pdf)": "PDF dokument (.pdf)", "PDF Extract Images (OCR)": "Extrahovanie obrázkov z PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "čaká na vybavenie", "Pending": "", "Pending User Overlay Content": "", @@ -1620,6 +1657,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Predchádzajúcich 30 dní", "Previous 7 days": "Predchádzajúcich 7 dní", "Previous message": "", @@ -1697,6 +1735,10 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Odstrániť model", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Premenovať", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1715,6 +1757,7 @@ "Reset": "režim Reset", "Reset All Models": "", "Reset Image": "Resetovať obrázok", + "Reset knowledge base?": "", "Reset Upload Directory": "Resetovať adresár nahrávania", "Reset Vector Storage/Knowledge": "Resetovanie úložiska vektorov/znalostí", "Reset view": "", @@ -1784,6 +1827,7 @@ "Search Prompts": "Vyhľadávacie dotazy", "Search Result Count": "Počet výsledkov hľadania", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "Nástroje na vyhľadávanie", @@ -1983,6 +2027,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Synchronizovať adresár", "Sync Failed": "", @@ -2055,7 +2101,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Táto voľba odstráni všetky existujúce súbory v kolekcii a nahradí ich novo nahranými súbormi.", "This response was generated by \"{{model}}\"": "Táto odpoveď bola vygenerovaná pomocou \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Toto odstráni", @@ -2063,7 +2108,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Toto obnoví znalostnú databázu a synchronizuje všetky súbory. Prajete si pokračovať?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Obsiahle vysvetlenie", "Thought": "", "Thought for {{DURATION}}": "", @@ -2099,6 +2144,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2177,7 +2223,7 @@ "Upload Progress": "Priebeh nahrávania", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2197,6 +2243,7 @@ "User Groups": "", "User location successfully retrieved.": "Umiestnenie používateľa bolo úspešne získané.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/sr-RS/translation.json b/src/lib/i18n/locales/sr-RS/translation.json index 9cfcfebb71..0e3c53ac95 100644 --- a/src/lib/i18n/locales/sr-RS/translation.json +++ b/src/lib/i18n/locales/sr-RS/translation.json @@ -9,12 +9,19 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ модели }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} одговора", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -194,6 +201,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Да ли сигурно желите обрисати овај канал?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Да ли сигурно желите обрисати ову поруку?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -240,6 +248,7 @@ "Automations": "", "Available list": "Списак доступног", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "доступни корисници", "available!": "доступно!", @@ -399,13 +408,18 @@ "ComfyUI Workflow": "ComfyUI радни ток", "ComfyUI Workflow Nodes": "ComfyUI чворови радног тока", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Наредба", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Допуне", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Упоредни захтеви", "Config": "", "Config imported successfully": "", @@ -538,12 +552,14 @@ "Delete a model": "Обриши модел", "Delete All": "", "Delete All Chats": "Обриши сва ћаскања", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Обриши ћаскање", "Delete chat?": "Обрисати ћаскање?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Обрисати фасциклу?", @@ -580,6 +596,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -688,6 +709,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Модел уградње", "Embedding Model Engine": "Мотор модела уградње", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -766,6 +788,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "Унесите кодове језика", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -902,6 +925,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -955,14 +979,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Режим датотеке", + "File moved.": "", "File name": "", "File not found.": "Датотека није пронађена.", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "Датотеке", "Filter": "", @@ -1178,13 +1204,13 @@ "Knowledge": "Знање", "Knowledge Access": "Приступ знању", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1228,6 +1254,7 @@ "Light": "Светла", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Слушам...", @@ -1378,6 +1405,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Ново ћаскање", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1423,11 +1452,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1448,6 +1479,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Нема корисника.", "No valves": "", @@ -1487,6 +1519,7 @@ "On": "Укључено", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1558,6 +1591,7 @@ "PDF document (.pdf)": "PDF документ (.pdf)", "PDF Extract Images (OCR)": "Извлачење PDF слика (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "на чекању", "Pending": "", "Pending User Overlay Content": "", @@ -1619,6 +1653,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Претходних 30 дана", "Previous 7 days": "Претходних 7 дана", "Previous message": "", @@ -1696,6 +1731,9 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Уклони модел", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._other": "", "Rename": "Преименуј", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1714,6 +1752,7 @@ "Reset": "Поврати", "Reset All Models": "Поврати све моделе", "Reset Image": "Ресетуј слику", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1782,6 +1821,7 @@ "Search Prompts": "Претражи упите", "Search Result Count": "Број резултата претраге", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "Алати претраге", @@ -1980,6 +2020,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Фасцикла усклађивања", "Sync Failed": "", @@ -2052,7 +2094,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Ово ће обрисати", @@ -2060,7 +2101,7 @@ "This will delete all models including custom models": "Ово ће обрисати све моделе укључујући прилагођене моделе", "This will delete all models including custom models and cannot be undone.": "Ово ће обрисати све моделе укључујући прилагођене моделе и не може се опозвати.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Ово ће обрисати базу знања и ускладити све датотеке. Да ли желите наставити?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Детаљно објашњење", "Thought": "", "Thought for {{DURATION}}": "", @@ -2096,6 +2137,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2174,7 +2216,7 @@ "Upload Progress": "Напредак отпремања", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "УРЛ", "URL is required": "", @@ -2194,6 +2236,7 @@ "User Groups": "", "User location successfully retrieved.": "Корисничка локација успешно добављена.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/sv-SE/translation.json b/src/lib/i18n/locales/sv-SE/translation.json index 05a5358258..69c1dbd37a 100644 --- a/src/lib/i18n/locales/sv-SE/translation.json +++ b/src/lib/i18n/locales/sv-SE/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "Idag kl h:mm A", "[Yesterday at] h:mm A": "Igår kl h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Tillgängliga verktyg", "{{COUNT}} characters": "{{COUNT}} tecken", "{{COUNT}} extracted lines": "{{COUNT}} extraherade textrader", "{{COUNT}} files": "{{COUNT}} filer", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} dolda rader", "{{COUNT}} members": "{{COUNT}} medlemmar", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Svar", "{{COUNT}} Rows": "{{COUNT}} Rader", "{{count}} selected_one": "{{count}} vald", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Är du säker på att du vill ta bort alla chattar? Den här åtgärden kan inte ångras.", "Are you sure you want to delete this channel?": "Är du säker på att du vill radera den här kanal?", "Are you sure you want to delete this connection? This action cannot be undone.": "Är du säker på att du vill ta bort den här anslutningen? Den här åtgärden kan inte ångras.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "Är du säker på att du vill radera det här minnet? Den här åtgärd kan inte ångras.", "Are you sure you want to delete this message?": "Är du säker på att du vill radera det här meddelande?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Är du säker på att du vill ta bort den här versionen? Underordnade versioner länkas om till den här versionens överordnade version.", @@ -239,6 +245,7 @@ "Automations": "Automatiseringar", "Available list": "Tillgänglig lista", "Available models": "Tillgängliga modeller", + "Available Skills": "", "Available Tools": "Tillgängliga verktyg", "available users": "tillgängliga användare", "available!": "tillgänglig!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI Arbetsflöde", "ComfyUI Workflow Nodes": "ComfyUI Arbetsflödesnoder", "Comma separated Node Ids (e.g. 1 or 1,2)": "Kommaseparerade nod-ID:n (t.ex. 1 eller 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "kommando", "Command": "Kommando", "Comment": "Kommentar", "Commit Message": "Engagera meddelande", "Community Reviews": "Gemenskapens recensioner", + "Comparing with knowledge base...": "", "Completions": "Slutföranden", "Compress Images in Channels": "Komprimera bilder i kanaler", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Parallella anrop", "Config": "Konfig", "Config imported successfully": "Konfigurationen importerad framgångsrikt", @@ -537,12 +548,14 @@ "Delete a model": "Ta bort en modell", "Delete All": "Radera alla", "Delete All Chats": "Ta bort alla chattar", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Ta bort allt innehåll i den här mappen", "Delete automation?": "Ta bort automatisering?", "Delete calendar": "Ta bort kalender", "Delete Calendar": "Ta bort kalender", "Delete Chat": "Radera chatt", "Delete chat?": "Radera chatt?", + "Delete directory?": "", "Delete Event": "Ta bort händelse", "Delete File": "Ta bort fil", "Delete folder?": "Radera mapp?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Direkta anslutningar tillåter användare att ansluta till sina egna OpenAI-kompatibla API-endpoints.", "Direct Message": "Direktmeddelande", "Direct Tool Servers": "Direkta verktygsservrar", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Valet av katalog avbröts", "Disable All": "Inaktivera alla", "Disable Code Interpreter": "Inaktivera kodtolkare", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "Inbäddning av samtidiga förfrågningar", "Embedding Model": "Inbäddningsmodell", "Embedding Model Engine": "Motor för inbäddningsmodell", + "Emoji": "", "Emojis": "Emojier", "Empty message": "Tomt meddelande", "Enable All": "Aktivera alla", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Ange Kagi Search API-nyckel", "Enter Key Behavior": "Ange nyckelbeteende", "Enter language codes": "Skriv språkkoder", + "Enter Linkup API Key": "", "Enter MinerU API Key": "Ange MinerU API-nyckel", "Enter Mistral API Base URL": "Ange URL för Mistral API-bas", "Enter Mistral API Key": "Ange Mistral API-nyckel", @@ -901,6 +921,7 @@ "Failed to archive chat.": "Misslyckades med att arkivera chatten.", "Failed to attach file": "Misslyckades med att bifoga fil", "Failed to clear status": "Misslyckades med att rensa status", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Misslyckades med att ansluta till {{URL}} OpenAPI-verktygsserver", "Failed to connect to {{URL}} terminal server": "Misslyckades med att ansluta till {{URL}} terminalserver", "Failed to copy link": "Misslyckades med att kopiera länk", @@ -954,14 +975,16 @@ "File content updated successfully.": "Filinnehållet har uppdaterats.", "File Context": "Filkontext", "File deleted successfully.": "Filen raderades framgångsrikt.", + "File Extensions": "", "File Mode": "Fil-läge", + "File moved.": "", "File name": "Filens namn", "File not found.": "Fil hittades inte.", "File removed successfully.": "Filen har tagits bort.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Filstorleken får inte överstiga {{maxSize}} MB.", "File Upload": "Filuppladdning", "File uploaded successfully": "Filen har laddats upp", - "File uploaded!": "Filen är uppladdad!", "Filename": "Filnamn", "Files": "Filer", "Filter": "Filter", @@ -1177,13 +1200,13 @@ "Knowledge": "Kunskapsbaser", "Knowledge Access": "Kunskapsåtkomst", "Knowledge Base": "Kunskapsbas", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Kunskapen har skapats.", "Knowledge deleted successfully.": "Kunskapen har tagits bort.", "Knowledge Description": "Beskrivning av kunskap", "Knowledge exported successfully": "Kunskap exporteras framgångsrikt", "Knowledge Name": "Kunskapsbasens namn", "Knowledge Public Sharing": "Offentlig delning av kunskapsbaser", - "Knowledge reset successfully.": "Kunskapen har återställts.", "Knowledge Sharing": "Delning av kunskap", "Knowledge updated successfully": "Kunskapen har uppdaterats", "Kokoro.js (Browser)": "Kokoro.js (webbläsare)", @@ -1227,6 +1250,7 @@ "Light": "Ljus", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Begränsa antalet samtidiga sökfrågor. 0 = obegränsad (standard). Ställ in på 1 för sekventiell körning (rekommenderas för API:er med strikta hastighetsgränser som Brave free tier).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Begränsar antalet samtidiga förfrågningar om inbäddning. Ställ in på 0 för obegränsat.", + "Linkup API Key": "", "List": "Lista", "List calendars, search, create, update, and delete calendar events": "Lista kalendrar, sök, skapa, uppdatera och ta bort kalenderhändelser", "Listening...": "Lyssnar...", @@ -1377,6 +1401,8 @@ "New calendar": "Ny kalender", "New Calendar": "Ny kalender", "New Chat": "Ny chatt", + "New directory": "", + "New Directory": "", "New Event": "Ny händelse", "New File": "Ny fil", "New Folder": "Ny mapp", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "Inget HTML-, CSS- eller JavaScript-innehåll hittades.", "No inference engine with management support found": "Ingen inferensmotor med stöd för hantering hittades", "No kernel": "Ingen kärna", + "No knowledge bases accessible": "", "No knowledge bases found.": "Inga kunskapsbaser hittades.", "No knowledge found": "Ingen kunskapsbas hittades", "No limit": "Ingen gräns", "No memories to clear": "Inga minnen att rensa", "No model IDs": "Inga modell-ID:n", + "No models accessible": "", "No models available": "Inga modeller tillgängliga", "No models found": "Inga modeller hittades", "No models selected": "Inga modeller valda", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "Ingen terminalanslutning konfigurerad.", "No terminal connections configured.": "Inga terminalanslutningar konfigurerade.", "No tool server connections configured.": "Inga anslutningar till verktygsservern har konfigurerats.", + "No tools accessible": "", "No tools found": "Inga verktyg hittades", "No users were found.": "Inga användare hittades.", "No valves": "Inga ventiler", @@ -1486,6 +1515,7 @@ "On": "På", "Once": "En gång", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Endast aktiv när inställningen \"Klistra in stor text som fil\" är aktiverad.", "Only active when the chat input is in focus and an LLM is generating a response.": "Endast aktiv när chattinmatningen är i fokus och en LLM genererar ett svar.", "Only active when the chat input is in focus.": "Endast aktiv när chattinmatningen är i fokus.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF-dokument (.pdf)", "PDF Extract Images (OCR)": "PDF Extrahera bilder (OCR)", "PDF Loader Mode": "PDF-laddningsläge", + "pdf, docx, pptx, xlsx": "", "pending": "väntande", "Pending": "Väntande", "Pending User Overlay Content": "Väntande användaröverlagringsinnehåll", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix-ID används för att undvika konflikter med andra anslutningar genom att lägga till ett prefix till modell-ID:n - lämna tomt för att inaktivera", "Prevent File Creation": "Förhindra filskapande", "Preview": "Förhandsgranska", + "Preview Access": "", "Previous 30 days": "Föregående 30 dagar", "Previous 7 days": "Föregående 7 dagar", "Previous message": "Föregående meddelande", @@ -1695,6 +1727,8 @@ "Remove from favorites": "Ta bort från favoriter", "Remove image": "Ta bort bild", "Remove Model": "Ta bort modell", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Byt namn", "Renamed to {{name}}": "Bytt namn till {{name}}", "Render Markdown in Assistant Messages": "Rendera Markdown i assistentmeddelanden", @@ -1713,6 +1747,7 @@ "Reset": "Återställ", "Reset All Models": "Återställ alla modeller", "Reset Image": "Återställ bild", + "Reset knowledge base?": "", "Reset Upload Directory": "Återställ uppladdningskatalog", "Reset Vector Storage/Knowledge": "Återställ vektorlagring/kunskapsbaser", "Reset view": "Återställ vy", @@ -1780,6 +1815,7 @@ "Search Prompts": "Sök instruktioner", "Search Result Count": "Antal sökresultat", "Search Skills": "Sökfärdigheter", + "Search skills...": "", "Search the internet": "Sök på internet", "Search the web and fetch URLs": "Sök på webben och hämta webbadresser", "Search Tools": "Sökverktyg", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "Byt till JSON-redigerare", "Switch to visual editor": "Byt till visuell redigerare", "Sync": "Synkronisera", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Synkronisering slutförd!", "Sync directory": "Synkronisera katalog", "Sync Failed": "Synkronisering misslyckades", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Det här alternativet styr hur många tokens som bevaras när kontexten uppdateras. Om det till exempel är inställt på 2 behålls de två sista tokens i samtalskontexten. Att bevara kontexten kan bidra till att upprätthålla kontinuiteten i ett samtal, men det kan minska förmågan att svara på nya ämnen.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Det här alternativet aktiverar eller inaktiverar användningen av resonemangsfunktionen i Ollama, vilket gör att modellen kan tänka efter innan den genererar ett svar. När det är aktiverat kan modellen ta en stund att bearbeta samtalskontexten och generera ett mer genomtänkt svar.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Det här alternativet anger det maximala antalet tokens som modellen kan generera i sitt svar. Om du ökar den här gränsen kan modellen ge längre svar, men det kan också öka sannolikheten för att det genereras innehåll som inte är till hjälp eller irrelevant.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Det här alternativ tar bort alla befintliga filer i samlingen och ersätter dem med nyligen uppladdade filer.", "This response was generated by \"{{model}}\"": "Det här svaret genererades av \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Den här mallen innehåller flera kontextplatshållare ([context] eller {{CONTEXT}}). Kontext infogas vid varje förekomst.", "This will delete": "Det här kommer att radera", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Det här kommer att radera alla modeller inklusive anpassade modeller", "This will delete all models including custom models and cannot be undone.": "Det här kommer att radera alla modeller inklusive anpassade modeller och kan inte ångras.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Detta tar permanent bort kalendern \"{{name}}\" och alla dess händelser. Åtgärden kan inte ångras.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Det här kommer att återställa kunskapsbasen och synkronisera alla filer. Vill du fortsätta?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Djupare förklaring", "Thought": "Tanke", "Thought for {{DURATION}}": "Tänkte i {{DURATION}}", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "Växla 1 källa", "Toggle details": "Växla detaljer", "Toggle Dictation": "Växla diktering", + "Toggle Mute": "", "Toggle Sidebar": "Växla sidofält", "Toggle status history": "Växla statushistorik", "Toggle whether current connection is active.": "Växla om aktuell anslutning är aktiv.", @@ -2171,7 +2209,7 @@ "Upload Progress": "Uppladdningsframsteg", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Uppladdningsstatus: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Uppladdade filer eller bilder", - "Uploading file...": "Laddar upp fil ...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Uppladdning...", "URL": "URL", "URL is required": "URL krävs", @@ -2191,6 +2229,7 @@ "User Groups": "Användargrupper", "User location successfully retrieved.": "Användarens plats har hämtats", "User menu": "Användarmenyn", + "User Preview": "", "User ratings (thumbs up/down)": "Användarnas betyg (tummen upp/ned)", "User Status": "Användarstatus", "User Webhooks": "Användar-webhooks", diff --git a/src/lib/i18n/locales/ta-IN/translation.json b/src/lib/i18n/locales/ta-IN/translation.json index 5f689381b7..345737b5a4 100644 --- a/src/lib/i18n/locales/ta-IN/translation.json +++ b/src/lib/i18n/locales/ta-IN/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[இன்று] h:mm A", "[Yesterday at] h:mm A": "[நேற்று] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} கிடைக்கும் கருவிகள்", "{{COUNT}} characters": "{{COUNT}} எழுத்துக்கள்", "{{COUNT}} extracted lines": "{{COUNT}} பிரித்தெடுக்கப்பட்ட கோடுகள்", "{{COUNT}} files": "{{COUNT}} கோப்புகள்", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} மறைக்கப்பட்ட கோடுகள்", "{{COUNT}} members": "{{COUNT}} உறுப்பினர்கள்", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} பதில்கள்", "{{COUNT}} Rows": "{{COUNT}} வரிசைகள்", "{{count}} selected_one": "{{count}} தேர்ந்தெடுக்கப்பட்டது", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "எல்லா அரட்டைகளையும் நிச்சயமாக நீக்க விரும்புகிறீர்களா? இந்தச் செயலைச் செயல்தவிர்க்க முடியாது.", "Are you sure you want to delete this channel?": "இந்த சேனலை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", "Are you sure you want to delete this connection? This action cannot be undone.": "இந்த இணைப்பை நிச்சயமாக நீக்க விரும்புகிறீர்களா? இந்தச் செயலைச் செயல்தவிர்க்க முடியாது.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "இந்த நினைவகத்தை நிச்சயமாக நீக்க விரும்புகிறீர்களா? இந்தச் செயலைச் செயல்தவிர்க்க முடியாது.", "Are you sure you want to delete this message?": "இந்தச் செய்தியை நிச்சயமாக நீக்க விரும்புகிறீர்களா?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "இந்தப் பதிப்பை நிச்சயமாக நீக்க விரும்புகிறீர்களா? இந்த பதிப்பின் பெற்றோருடன் சைல்ட் பதிப்புகள் மீண்டும் இணைக்கப்படும்.", @@ -239,6 +245,7 @@ "Automations": "தானியக்கங்கள்", "Available list": "கிடைக்கும் பட்டியல்", "Available models": "கிடைக்கும் மாதிரிகள்", + "Available Skills": "", "Available Tools": "கிடைக்கும் கருவிகள்", "available users": "கிடைக்கும் பயனர்கள்", "available!": "கிடைக்கும்!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI பணிப்பாய்வு", "ComfyUI Workflow Nodes": "ComfyUI பணிப்பாய்வு முனைகள்", "Comma separated Node Ids (e.g. 1 or 1,2)": "கமாவால் பிரிக்கப்பட்ட முனை ஐடிகள் (எ.கா. 1 அல்லது 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "கட்டளை", "Command": "கட்டளை", "Comment": "கருத்து", "Commit Message": "கமிட் செய்தி", "Community Reviews": "சமூக மதிப்புரைகள்", + "Comparing with knowledge base...": "", "Completions": "நிறைவுகள்", "Compress Images in Channels": "சேனல்களில் படங்களை சுருக்கவும்", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "ஒரே நேரத்தில் கோரிக்கைகள்", "Config": "கட்டமைப்பு", "Config imported successfully": "கட்டமைப்பு வெற்றிகரமாக இறக்குமதி செய்யப்பட்டது", @@ -537,12 +548,14 @@ "Delete a model": "மாதிரியை நீக்கவும்", "Delete All": "அனைத்தையும் நீக்கு", "Delete All Chats": "அனைத்து அரட்டைகளையும் நீக்கு", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "இந்தக் கோப்புறையில் உள்ள அனைத்து உள்ளடக்கங்களையும் நீக்கவும்", "Delete automation?": "தானியக்கத்தை நீக்கவா?", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "அரட்டையை நீக்கு", "Delete chat?": "அரட்டையை நீக்கவா?", + "Delete directory?": "", "Delete Event": "", "Delete File": "கோப்பை நீக்கு", "Delete folder?": "கோப்புறையை நீக்கவா?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "நேரடி இணைப்புகள் பயனர்கள் தங்கள் சொந்த OpenAI இணக்கமான API இறுதிப்புள்ளிகளுடன் இணைக்க அனுமதிக்கின்றன.", "Direct Message": "நேரடி செய்தி", "Direct Tool Servers": "நேரடி கருவி சேவையகங்கள்", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "கோப்பகத் தேர்வு ரத்து செய்யப்பட்டது", "Disable All": "அனைத்தையும் முடக்கு", "Disable Code Interpreter": "குறியீடு மொழிபெயர்ப்பாளரை முடக்கு", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "ஒரே நேரத்தில் கோரிக்கைகளை உட்பொதித்தல்", "Embedding Model": "உட்பொதித்தல் மாதிரி", "Embedding Model Engine": "எம்பெடிங் மாடல் எஞ்சின்", + "Emoji": "", "Emojis": "எமோஜிகள்", "Empty message": "வெற்று செய்தி", "Enable All": "அனைத்தையும் இயக்கு", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Kagi தேடல் API விசையை உள்ளிடவும்", "Enter Key Behavior": "முக்கிய நடத்தை உள்ளிடவும்", "Enter language codes": "மொழி குறியீடுகளை உள்ளிடவும்", + "Enter Linkup API Key": "", "Enter MinerU API Key": "MinerU API விசையை உள்ளிடவும்", "Enter Mistral API Base URL": "Mistral API Base URL ஐ உள்ளிடவும்", "Enter Mistral API Key": "Mistral API விசையை உள்ளிடவும்", @@ -901,6 +921,7 @@ "Failed to archive chat.": "அரட்டையை காப்பகப்படுத்த முடியவில்லை.", "Failed to attach file": "கோப்பை இணைக்க முடியவில்லை", "Failed to clear status": "நிலையை அழிக்க முடியவில்லை", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI கருவி சேவையகத்துடன் இணைக்க முடியவில்லை", "Failed to connect to {{URL}} terminal server": "{{URL}} டெர்மினல் சர்வருடன் இணைக்க முடியவில்லை", "Failed to copy link": "இணைப்பை நகலெடுக்க முடியவில்லை", @@ -954,14 +975,16 @@ "File content updated successfully.": "கோப்பு உள்ளடக்கம் வெற்றிகரமாக புதுப்பிக்கப்பட்டது.", "File Context": "கோப்பு சூழல்", "File deleted successfully.": "கோப்பு வெற்றிகரமாக நீக்கப்பட்டது.", + "File Extensions": "", "File Mode": "கோப்பு முறை", + "File moved.": "", "File name": "கோப்பு பெயர்", "File not found.": "கோப்பு கிடைக்கவில்லை.", "File removed successfully.": "கோப்பு வெற்றிகரமாக அகற்றப்பட்டது.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "கோப்பு அளவு {{maxSize}} MB ஐ விட அதிகமாக இருக்கக்கூடாது.", "File Upload": "கோப்பு பதிவேற்றம்", "File uploaded successfully": "கோப்பு பதிவேற்றப்பட்டது", - "File uploaded!": "கோப்பு பதிவேற்றப்பட்டது!", "Filename": "கோப்பு பெயர்", "Files": "கோப்புகள்", "Filter": "வடிகட்டி", @@ -1177,13 +1200,13 @@ "Knowledge": "அறிவு", "Knowledge Access": "அறிவு அணுகல்", "Knowledge Base": "அறிவுத் தளம்", + "Knowledge base has been reset": "", "Knowledge created successfully.": "அறிவு வெற்றிகரமாக உருவாக்கப்பட்டது.", "Knowledge deleted successfully.": "அறிவு வெற்றிகரமாக நீக்கப்பட்டது.", "Knowledge Description": "அறிவு விளக்கம்", "Knowledge exported successfully": "அறிவு வெற்றிகரமாக ஏற்றுமதி செய்யப்பட்டது", "Knowledge Name": "அறிவு பெயர்", "Knowledge Public Sharing": "அறிவு பொது பகிர்வு", - "Knowledge reset successfully.": "அறிவு வெற்றிகரமாக மீட்டமைக்கப்பட்டது.", "Knowledge Sharing": "அறிவுப் பகிர்வு", "Knowledge updated successfully": "அறிவு வெற்றிகரமாக புதுப்பிக்கப்பட்டது", "Kokoro.js (Browser)": "Kokoro.js (உலாவி)", @@ -1227,6 +1250,7 @@ "Light": "வெளிச்சமான", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "ஒரே நேரத்தில் தேடல் வினவல்களை வரம்பிடவும். 0 = வரம்பற்றது (இயல்புநிலை). தொடர்ச்சியான செயல்பாட்டிற்கு 1 என அமைக்கவும் (பிரேவ் ஃப்ரீ டையர் போன்ற கடுமையான விகித வரம்புகளைக் கொண்ட API களுக்குப் பரிந்துரைக்கப்படுகிறது).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "ஒரே நேரத்தில் உட்பொதித்தல் கோரிக்கைகளின் எண்ணிக்கையைக் கட்டுப்படுத்துகிறது. வரம்பற்ற 0 என அமைக்கவும்.", + "Linkup API Key": "", "List": "பட்டியல்", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "கேட்கிறது...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "புதிய அரட்டை", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "புதிய கோப்பு", "New Folder": "புதிய கோப்புறை", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML, CSS, அல்லது JavaScript உள்ளடக்கம் இல்லை.", "No inference engine with management support found": "மேலாண்மை ஆதரவுடன் எந்த அனுமான இயந்திரமும் இல்லை", "No kernel": "கர்னல் இல்லை", + "No knowledge bases accessible": "", "No knowledge bases found.": "அறிவுத் தளங்கள் எதுவும் இல்லை.", "No knowledge found": "அறிவு கிடைக்கவில்லை", "No limit": "வரம்பு இல்லை", "No memories to clear": "அழிக்க நினைவுகள் இல்லை", "No model IDs": "மாதிரி ஐடிகள் இல்லை", + "No models accessible": "", "No models available": "மாதிரிகள் இல்லை", "No models found": "மாதிரிகள் எதுவும் இல்லை", "No models selected": "மாதிரிகள் எதுவும் தேர்ந்தெடுக்கப்படவில்லை", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "டெர்மினல் இணைப்பு எதுவும் கட்டமைக்கப்படவில்லை.", "No terminal connections configured.": "முனைய இணைப்புகள் எதுவும் கட்டமைக்கப்படவில்லை.", "No tool server connections configured.": "கருவி சேவையக இணைப்புகள் எதுவும் கட்டமைக்கப்படவில்லை.", + "No tools accessible": "", "No tools found": "கருவிகள் எதுவும் கிடைக்கவில்லை", "No users were found.": "பயனர்கள் யாரும் காணப்படவில்லை.", "No valves": "வால்வுகள் இல்லை", @@ -1486,6 +1515,7 @@ "On": "அன்று", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "\"பெரிய உரையை கோப்பாக ஒட்டவும்\" அமைப்பு மாறியிருந்தால் மட்டுமே செயலில் இருக்கும்.", "Only active when the chat input is in focus and an LLM is generating a response.": "அரட்டை உள்ளீடு ஃபோகஸ் மற்றும் LLM பதிலை உருவாக்கும் போது மட்டுமே செயலில் இருக்கும்.", "Only active when the chat input is in focus.": "அரட்டை உள்ளீடு மையமாக இருக்கும்போது மட்டுமே செயலில் இருக்கும்.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF ஆவணம் (.pdf)", "PDF Extract Images (OCR)": "PDF படங்களை பிரித்தெடுக்கவும் (OCR)", "PDF Loader Mode": "PDF ஏற்றி பயன்முறை", + "pdf, docx, pptx, xlsx": "", "pending": "நிலுவையில் உள்ளது", "Pending": "நிலுவையில் உள்ளது", "Pending User Overlay Content": "நிலுவையில் உள்ள பயனர் மேலடுக்கு உள்ளடக்கம்", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "மாதிரி ஐடிகளில் முன்னொட்டைச் சேர்ப்பதன் மூலம் பிற இணைப்புகளுடன் முரண்பாடுகளைத் தவிர்க்க ID முன்னொட்டு பயன்படுத்தப்படுகிறது - முடக்குவதற்கு காலியாக விடவும்", "Prevent File Creation": "கோப்பு உருவாக்கத்தைத் தடுக்கவும்", "Preview": "முன்னோட்டம்", + "Preview Access": "", "Previous 30 days": "முந்தைய 30 நாட்கள்", "Previous 7 days": "முந்தைய 7 நாட்கள்", "Previous message": "முந்தைய செய்தி", @@ -1695,6 +1727,8 @@ "Remove from favorites": "பிடித்தவற்றிலிருந்து அகற்று", "Remove image": "படத்தை அகற்று", "Remove Model": "மாதிரியை அகற்று", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "மறுபெயரிடு", "Renamed to {{name}}": "{{name}} என மறுபெயரிடப்பட்டது", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "மீட்டமை", "Reset All Models": "அனைத்து மாடல்களையும் மீட்டமைக்கவும்", "Reset Image": "படத்தை மீட்டமைக்கவும்", + "Reset knowledge base?": "", "Reset Upload Directory": "பதிவேற்ற கோப்பகத்தை மீட்டமைக்கவும்", "Reset Vector Storage/Knowledge": "வெக்டர் சேமிப்பகம்/அறிவை மீட்டமைக்கவும்", "Reset view": "பார்வையை மீட்டமைக்கவும்", @@ -1780,6 +1815,7 @@ "Search Prompts": "தேடல் தூண்டுதல்கள்", "Search Result Count": "தேடல் முடிவுகளின் எண்ணிக்கை", "Search Skills": "தேடல் திறன்கள்", + "Search skills...": "", "Search the internet": "இணையத்தில் தேடுங்கள்", "Search the web and fetch URLs": "இணையத்தில் தேடி URLகளைப் பெறவும்", "Search Tools": "தேடல் கருவிகள்", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "ஒத்திசை", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "ஒத்திசைவு முடிந்தது!", "Sync directory": "ஒத்திசைவு அடைவு", "Sync Failed": "ஒத்திசைவு தோல்வியடைந்தது", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "சூழலைப் புதுப்பிக்கும்போது எத்தனை டோக்கன்கள் பாதுகாக்கப்படுகின்றன என்பதை இந்த விருப்பம் கட்டுப்படுத்துகிறது. எடுத்துக்காட்டாக, 2 என அமைக்கப்பட்டால், உரையாடல் சூழலின் கடைசி 2 டோக்கன்கள் தக்கவைக்கப்படும். சூழலைப் பாதுகாப்பது உரையாடலின் தொடர்ச்சியைப் பராமரிக்க உதவும், ஆனால் புதிய தலைப்புகளுக்கு பதிலளிக்கும் திறனைக் குறைக்கலாம்.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "இந்த விருப்பம் Ollama இல் உள்ள பகுத்தறிவு அம்சத்தைப் பயன்படுத்துவதை இயக்குகிறது அல்லது முடக்குகிறது, இது மாதிரியானது பதிலை உருவாக்கும் முன் சிந்திக்க அனுமதிக்கிறது. இயக்கப்பட்டால், உரையாடல் சூழலைச் செயலாக்குவதற்கு மாடல் சிறிது நேரம் எடுத்து மேலும் சிந்தனைமிக்க பதிலை உருவாக்கலாம்.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "இந்த விருப்பம் மாதிரி அதன் பதிலில் உருவாக்கக்கூடிய அதிகபட்ச டோக்கன்களை அமைக்கிறது. இந்த வரம்பை அதிகரிப்பது மாதிரி நீண்ட பதில்களை வழங்க அனுமதிக்கிறது, ஆனால் இது உதவாத அல்லது பொருத்தமற்ற உள்ளடக்கம் உருவாக்கப்படுவதற்கான வாய்ப்பையும் அதிகரிக்கலாம்.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "இந்த விருப்பம் சேகரிப்பில் இருக்கும் எல்லா கோப்புகளையும் நீக்கி, புதிதாக பதிவேற்றப்பட்ட கோப்புகளுடன் மாற்றும்.", "This response was generated by \"{{model}}\"": "இந்த பதில் \"{{model}}\" ஆல் உருவாக்கப்பட்டது", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "இது நீக்கும்", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "இது தனிப்பயன் மாதிரிகள் உட்பட அனைத்து மாடல்களையும் நீக்கும்", "This will delete all models including custom models and cannot be undone.": "இது தனிப்பயன் மாதிரிகள் உட்பட அனைத்து மாடல்களையும் நீக்கிவிடும், மேலும் செயல்தவிர்க்க முடியாது.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "இது அறிவுத் தளத்தை மீட்டமைத்து அனைத்து கோப்புகளையும் ஒத்திசைக்கும். நீங்கள் தொடர விரும்புகிறீர்களா?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "விரிவான விளக்கம்", "Thought": "சிந்தனை", "Thought for {{DURATION}}": "{{DURATION}} க்கான சிந்தனை", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "1 மூலத்தை நிலைமாற்று", "Toggle details": "விவரங்களை நிலைமாற்று", "Toggle Dictation": "டிக்டேஷனை நிலைமாற்று", + "Toggle Mute": "", "Toggle Sidebar": "பக்கப்பட்டியை மாற்று", "Toggle status history": "நிலை வரலாற்றை நிலைமாற்று", "Toggle whether current connection is active.": "தற்போதைய இணைப்பு செயலில் உள்ளதா என்பதை மாற்றவும்.", @@ -2171,7 +2209,7 @@ "Upload Progress": "பதிவேற்ற முன்னேற்றம்", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "பதிவேற்ற முன்னேற்றம்: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "பதிவேற்றப்பட்ட கோப்புகள் அல்லது படங்கள்", - "Uploading file...": "கோப்பை பதிவேற்றுகிறது...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "பதிவேற்றுகிறது...", "URL": "URL", "URL is required": "URL தேவை", @@ -2191,6 +2229,7 @@ "User Groups": "பயனர் குழுக்கள்", "User location successfully retrieved.": "பயனர் இருப்பிடம் வெற்றிகரமாக மீட்டெடுக்கப்பட்டது.", "User menu": "பயனர் மெனு", + "User Preview": "", "User ratings (thumbs up/down)": "பயனர் மதிப்பீடுகள் (பெருவிரல் மேல்/கீழ்)", "User Status": "பயனர் நிலை", "User Webhooks": "பயனர் வெப்ஹூக்குகள்", diff --git a/src/lib/i18n/locales/th-TH/translation.json b/src/lib/i18n/locales/th-TH/translation.json index 7dec8a3473..de2e21db78 100644 --- a/src/lib/i18n/locales/th-TH/translation.json +++ b/src/lib/i18n/locales/th-TH/translation.json @@ -9,12 +9,15 @@ "[Today at] h:mm A": "[วันนี้ เวลา] h:mm A", "[Yesterday at] h:mm A": "[เมื่อวานเวลา] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "เครื่องมือที่ใช้ได้ {{COUNT}} รายการ", "{{COUNT}} characters": "{{COUNT}} ตัวอักษร", "{{COUNT}} extracted lines": "{{COUNT}} บรรทัดที่ดึงออกมา", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} บรรทัดที่ซ่อนอยู่", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} คำตอบ", "{{COUNT}} Rows": "", "{{count}} selected_other": "", @@ -192,6 +195,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "คุณแน่ใจหรือว่าต้องการลบช่องนี้?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "คุณแน่ใจหรือว่าต้องการลบข้อความนี้?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -238,6 +242,7 @@ "Automations": "", "Available list": "รายการที่มีอยู่", "Available models": "", + "Available Skills": "", "Available Tools": "เครื่องมือที่มีให้ใช้", "available users": "ผู้ใช้ที่มีอยู่", "available!": "พร้อมใช้งาน!", @@ -397,13 +402,16 @@ "ComfyUI Workflow": "เวิร์กโฟลว์ ComfyUI", "ComfyUI Workflow Nodes": "โหนดเวิร์กโฟลว์ ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "ID โหนดคั่นด้วยจุลภาค (เช่น 1 หรือ 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "คำสั่ง", "Comment": "ความคิดเห็น", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "การเติมข้อความ", "Compress Images in Channels": "บีบอัดรูปภาพในช่อง", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "คำขอพร้อมกัน", "Config": "", "Config imported successfully": "นำเข้าไฟล์กำหนดค่าสำเร็จแล้ว", @@ -536,12 +544,14 @@ "Delete a model": "ลบโมเดล", "Delete All": "", "Delete All Chats": "ลบการแชททั้งหมด", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "ลบแชท", "Delete chat?": "ลบแชท?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "ลบโฟลเดอร์ใช่หรือไม่?", @@ -578,6 +588,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Direct Connections อนุญาตให้ผู้ใช้เชื่อมต่อกับปลายทาง API ที่เข้ากันได้กับ OpenAI ของตนเอง", "Direct Message": "", "Direct Tool Servers": "เซิร์ฟเวอร์เครื่องมือโดยตรง", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "การเลือกไดเรกทอรีถูกยกเลิก", "Disable All": "", "Disable Code Interpreter": "ปิดใช้งาน Code Interpreter", @@ -686,6 +701,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "โมเดล Embedding", "Embedding Model Engine": "เอ็นจินโมเดล Embedding", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -764,6 +780,7 @@ "Enter Kagi Search API Key": "ใส่ Kagi Search API Key", "Enter Key Behavior": "การทำงานของปุ่ม Enter", "Enter language codes": "ใส่รหัสภาษา", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "ป้อน URL ฐานของ Mistral API", "Enter Mistral API Key": "กรอก API Key ของ Mistral", @@ -900,6 +917,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "เชื่อมต่อกับเซิร์ฟเวอร์เครื่องมือ OpenAPI ที่ {{URL}} ไม่สำเร็จ", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "คัดลอกลิงก์ไม่สำเร็จ", @@ -953,14 +971,16 @@ "File content updated successfully.": "อัปเดตเนื้อหาไฟล์สำเร็จแล้ว", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "โหมดไฟล์", + "File moved.": "", "File name": "", "File not found.": "ไม่พบไฟล์", "File removed successfully.": "ลบไฟล์สำเร็จแล้ว", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "ขนาดไฟล์ไม่ควรเกิน {{maxSize}} MB", "File Upload": "อัปโหลดไฟล์", "File uploaded successfully": "อัปโหลดไฟล์สำเร็จแล้ว", - "File uploaded!": "", "Filename": "", "Files": "ไฟล์", "Filter": "กรอง", @@ -1176,13 +1196,13 @@ "Knowledge": "ความรู้", "Knowledge Access": "การเข้าถึงความรู้", "Knowledge Base": "ฐานความรู้", + "Knowledge base has been reset": "", "Knowledge created successfully.": "สร้างฐานความรู้สำเร็จ", "Knowledge deleted successfully.": "ลบฐานความรู้สำเร็จแล้ว", "Knowledge Description": "คำอธิบายฐานความรู้", "Knowledge exported successfully": "", "Knowledge Name": "ชื่อฐานความรู้", "Knowledge Public Sharing": "การแชร์ฐานความรู้สาธารณะ", - "Knowledge reset successfully.": "รีเซ็ตฐานความรู้สำเร็จแล้ว", "Knowledge Sharing": "", "Knowledge updated successfully": "อัปเดตฐานความรู้สำเร็จแล้ว", "Kokoro.js (Browser)": "Kokoro.js (เบราว์เซอร์)", @@ -1226,6 +1246,7 @@ "Light": "โหมดสว่าง", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "กำลังฟัง...", @@ -1376,6 +1397,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "แชทใหม่", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "โฟลเดอร์ใหม่", @@ -1421,11 +1444,13 @@ "No HTML, CSS, or JavaScript content found.": "ไม่พบเนื้อหา HTML, CSS หรือ JavaScript", "No inference engine with management support found": "ไม่พบเอนจินอนุมานที่รองรับการจัดการ", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "ไม่พบฐานความรู้", "No limit": "", "No memories to clear": "ไม่มีความจำให้ลบ", "No model IDs": "ไม่มีรหัสโมเดล", + "No models accessible": "", "No models available": "", "No models found": "ไม่พบโมเดล", "No models selected": "ไม่ได้เลือกโมเดล", @@ -1446,6 +1471,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "ไม่พบเครื่องมือ", "No users were found.": "ไม่พบผู้ใช้", "No valves": "ไม่มีวาล์ว", @@ -1485,6 +1511,7 @@ "On": "เปิด", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "จะทำงานเฉพาะเมื่อเปิดการตั้งค่า \"วางข้อความขนาดใหญ่เป็นไฟล์\"", "Only active when the chat input is in focus and an LLM is generating a response.": "ทำงานเฉพาะเมื่อช่องป้อนข้อความแชทถูกโฟกัสอยู่ และ LLM กำลังสร้างคำตอบ", "Only active when the chat input is in focus.": "จะใช้งานได้เฉพาะเมื่อช่องป้อนข้อความแชทถูกโฟกัสอยู่เท่านั้น", @@ -1556,6 +1583,7 @@ "PDF document (.pdf)": "เอกสาร PDF (.pdf)", "PDF Extract Images (OCR)": "การดึงรูปภาพจาก PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "รอดำเนินการ", "Pending": "กำลังรอ", "Pending User Overlay Content": "เนื้อหาซ้อนทับผู้ใช้ที่รอดำเนินการ", @@ -1617,6 +1645,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefix ID ใช้เพื่อหลีกเลี่ยงความขัดแย้งกับการเชื่อมต่ออื่น โดยการเพิ่มคำนำหน้าให้กับ ID ของโมเดล หากต้องการปิดให้เว้นว่างไว้", "Prevent File Creation": "ป้องกันการสร้างไฟล์", "Preview": "ดูตัวอย่าง", + "Preview Access": "", "Previous 30 days": "30 วันที่ผ่านมา", "Previous 7 days": "7 วันที่ผ่านมา", "Previous message": "ข้อความก่อนหน้า", @@ -1694,6 +1723,7 @@ "Remove from favorites": "", "Remove image": "ลบรูปภาพ", "Remove Model": "ลบโมเดล", + "Removing {{count}} stale files..._other": "", "Rename": "เปลี่ยนชื่อ", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1712,6 +1742,7 @@ "Reset": "รีเซ็ต", "Reset All Models": "รีเซ็ตโมเดลทั้งหมด", "Reset Image": "รีเซ็ตภาพ", + "Reset knowledge base?": "", "Reset Upload Directory": "รีเซ็ตไดเรกทอรีการอัปโหลด", "Reset Vector Storage/Knowledge": "รีเซ็ตที่เก็บเวกเตอร์/ฐานความรู้", "Reset view": "รีเซ็ตมุมมอง", @@ -1778,6 +1809,7 @@ "Search Prompts": "ค้นหาพรอมต์", "Search Result Count": "จำนวนผลลัพธ์การค้นหา", "Search Skills": "", + "Search skills...": "", "Search the internet": "ค้นหาบนอินเทอร์เน็ต", "Search the web and fetch URLs": "", "Search Tools": "เครื่องมือค้นหา", @@ -1974,6 +2006,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "ซิงค์ไดเรกทอรี", "Sync Failed": "", @@ -2046,7 +2080,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "ตัวเลือกนี้ใช้กำหนดจำนวนโทเค็นที่จะถูกเก็บไว้เมื่อมีการรีเฟรชบริบท ยกตัวอย่างเช่น หากตั้งค่าเป็น 2 โทเค็น 2 ตัวสุดท้ายของบริบทการสนทนาจะถูกเก็บไว้ การเก็บรักษาบริบทสามารถช่วยให้การสนทนาต่อเนื่องมากขึ้น แต่อาจทำให้ความสามารถในการตอบสนองต่อหัวข้อใหม่ลดลง", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "ตัวเลือกนี้ใช้เปิดหรือปิดฟีเจอร์การให้เหตุผลใน Ollama ซึ่งช่วยให้โมเดลสามารถคิดก่อนสร้างคำตอบได้ เมื่อเปิดใช้งาน โมเดลจะใช้เวลาสักครู่เพื่อประมวลผลบริบทของการสนทนาและสร้างคำตอบที่รอบคอบมากขึ้น", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "ตัวเลือกนี้ใช้กำหนดจำนวนโทเค็นสูงสุดที่โมเดลสามารถสร้างได้ในคำตอบของตน การเพิ่มขีดจำกัดนี้จะช่วยให้โมเดลตอบได้ยาวขึ้น แต่ก็อาจเพิ่มโอกาสในการสร้างเนื้อหาที่ไม่เป็นประโยชน์หรือไม่เกี่ยวข้องด้วย", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "ตัวเลือกนี้จะลบไฟล์ทั้งหมดที่มีอยู่ในคอลเลกชันและแทนที่ด้วยไฟล์ที่อัปโหลดใหม่", "This response was generated by \"{{model}}\"": "การตอบกลับนี้สร้างโดย \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "การดำเนินการนี้จะลบ", @@ -2054,7 +2087,7 @@ "This will delete all models including custom models": "การดำเนินการนี้จะลบโมเดลทั้งหมด รวมถึงโมเดลแบบกำหนดเอง", "This will delete all models including custom models and cannot be undone.": "การดำเนินการนี้จะลบโมเดลทั้งหมดรวมถึงโมเดลที่กำหนดเอง และไม่สามารถยกเลิกได้", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "การดำเนินการนี้จะรีเซ็ตฐานความรู้และซิงค์ไฟล์ทั้งหมด คุณต้องการดำเนินการต่อหรือไม่?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "คำอธิบายอย่างละเอียด", "Thought": "", "Thought for {{DURATION}}": "คิดเป็นเวลา {{DURATION}}", @@ -2090,6 +2123,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "สลับแถบด้านข้าง", "Toggle status history": "", "Toggle whether current connection is active.": "สลับการเปิดใช้งานการเชื่อมต่อปัจจุบัน", @@ -2168,7 +2202,7 @@ "Upload Progress": "ความคืบหน้าการอัปโหลด", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "ความคืบหน้าการอัปโหลด: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "ต้องระบุ URL", @@ -2188,6 +2222,7 @@ "User Groups": "กลุ่มผู้ใช้", "User location successfully retrieved.": "ดึงตำแหน่งที่ตั้งของผู้ใช้สำเร็จแล้ว", "User menu": "เมนูผู้ใช้", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Webhooks ของผู้ใช้", diff --git a/src/lib/i18n/locales/tk-TM/translation.json b/src/lib/i18n/locales/tk-TM/translation.json index e87955002b..6097c89305 100644 --- a/src/lib/i18n/locales/tk-TM/translation.json +++ b/src/lib/i18n/locales/tk-TM/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ modeller }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "elýeterli ulanyjylar", "available!": "elýeterli!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "", "ComfyUI Workflow Nodes": "", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Buýruk", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Meňzeş Haýyşlar", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "", "Delete All": "", "Delete All Chats": "Ähli Çatlary Öçür", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "", "Delete chat?": "", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "", "Embedding Model Engine": "", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "", + "File moved.": "", "File name": "", "File not found.": "", "File removed successfully.": "", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "Faýllar", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "", "Knowledge deleted successfully.": "", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "", "Knowledge Sharing": "", "Knowledge updated successfully": "", "Kokoro.js (Browser)": "", @@ -1227,6 +1250,7 @@ "Light": "Açyk", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "", "No models selected": "", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "Işjeň", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "", "PDF Extract Images (OCR)": "", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "", "Pending": "Garaşylýar", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "Öň-üşürgi", + "Preview Access": "", "Previous 30 days": "", "Previous 7 days": "", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Modeli Aýyr", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Adyny Üýtget", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Täzeden Guruň", "Reset All Models": "", "Reset Image": "Suraty täzeden sazla", + "Reset knowledge base?": "", "Reset Upload Directory": "", "Reset Vector Storage/Knowledge": "", "Reset view": "", @@ -1780,6 +1815,7 @@ "Search Prompts": "", "Search Result Count": "", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "", "This response was generated by \"{{model}}\"": "", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "", "Thought": "", "Thought for {{DURATION}}": "", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/tr-TR/translation.json b/src/lib/i18n/locales/tr-TR/translation.json index fc76f27a1a..2649d2df8e 100644 --- a/src/lib/i18n/locales/tr-TR/translation.json +++ b/src/lib/i18n/locales/tr-TR/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "[Bugün saat] HH:mm", "[Yesterday at] h:mm A": "[Dün saat] HH:mm", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Kullanılabilir Araç", "{{COUNT}} characters": "{{COUNT}} karakter", "{{COUNT}} extracted lines": "{{COUNT}} çıkarılan satır", "{{COUNT}} files": "{{COUNT}} dosya", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} gizli satır", "{{COUNT}} members": "{{COUNT}} üye", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Yanıt", "{{COUNT}} Rows": "{{COUNT}} satır", "{{count}} selected_one": "{{count}} seçildi", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "Tüm sohbetleri silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", "Are you sure you want to delete this channel?": "Bu kanalı silmek istediğinizden emin misiniz?", "Are you sure you want to delete this connection? This action cannot be undone.": "Bu bağlantıyı silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "Bu hafızayı silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", "Are you sure you want to delete this message?": "Bu mesajı silmek istediğinizden emin misiniz?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "Bu sürümü silmek istediğinizden emin misiniz? Alt sürümler bu sürümün üst sürümüne yeniden bağlanacaktır.", @@ -239,6 +245,7 @@ "Automations": "Otomasyonlar", "Available list": "Mevcut liste", "Available models": "Mevcut modeller", + "Available Skills": "", "Available Tools": "Mevcut Araçlar", "available users": "kullanılabilir kullanıcılar", "available!": "mevcut!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI İş Akışı", "ComfyUI Workflow Nodes": "ComfyUI İş Akışı Düğümleri", "Comma separated Node Ids (e.g. 1 or 1,2)": "Virgülle ayrılmış Node ID'leri (örn. 1 veya 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "komut", "Command": "Komut", "Comment": "Yorum", "Commit Message": "Commit Mesajı", "Community Reviews": "Topluluk İncelemeleri", + "Comparing with knowledge base...": "", "Completions": "Tamamlamalar", "Compress Images in Channels": "Kanallarda Görselleri Sıkıştır", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Eşzamanlı İstekler", "Config": "Yapılandırma", "Config imported successfully": "Yapılandırma başarıyla içe aktarıldı", @@ -537,12 +548,14 @@ "Delete a model": "Bir modeli sil", "Delete All": "Tümünü Sil", "Delete All Chats": "Tüm Sohbetleri Sil", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "Bu klasördeki tüm içerikleri sil", "Delete automation?": "Otomasyon silinsin mi?", "Delete calendar": "Takvimi sil", "Delete Calendar": "Takvimi Sil", "Delete Chat": "Sohbeti Sil", "Delete chat?": "Sohbeti sil?", + "Delete directory?": "", "Delete Event": "Etkinliği Sil", "Delete File": "Dosyayı Sil", "Delete folder?": "Klasörü sil?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Doğrudan Bağlantılar, kullanıcıların kendi OpenAI uyumlu API uç noktalarına bağlanmasına olanak tanır.", "Direct Message": "Doğrudan Mesaj", "Direct Tool Servers": "Doğrudan Araç Sunucuları", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "Dizin seçimi iptal edildi", "Disable All": "Tümünü Devre Dışı Bırak", "Disable Code Interpreter": "Kod Yorumlayıcıyı Devre Dışı Bırak", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "Eşzamanlı Gömme İstekleri", "Embedding Model": "Gömme Modeli", "Embedding Model Engine": "Gömme Modeli Motoru", + "Emoji": "", "Emojis": "Emojiler", "Empty message": "Boş mesaj", "Enable All": "Tümünü Etkinleştir", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Kagi Search API Anahtarını Girin", "Enter Key Behavior": "Enter Tuşu Davranışı", "Enter language codes": "Dil kodlarını girin", + "Enter Linkup API Key": "", "Enter MinerU API Key": "MinerU API Anahtarını Girin", "Enter Mistral API Base URL": "Mistral API Taban URL'sini Girin", "Enter Mistral API Key": "Mistral API Anahtarını Girin", @@ -901,6 +921,7 @@ "Failed to archive chat.": "Sohbet arşivlenemedi.", "Failed to attach file": "Dosya eklenemedi", "Failed to clear status": "Durum temizlenemedi", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI araç sunucusuna bağlanılamadı", "Failed to connect to {{URL}} terminal server": "{{URL}} terminal sunucusuna bağlanılamadı", "Failed to copy link": "Bağlantı kopyalanamadı", @@ -954,14 +975,16 @@ "File content updated successfully.": "Dosya içeriği başarıyla güncellendi.", "File Context": "Dosya Bağlamı", "File deleted successfully.": "Dosya başarıyla silindi.", + "File Extensions": "", "File Mode": "Dosya Modu", + "File moved.": "", "File name": "Dosya adı", "File not found.": "Dosya bulunamadı.", "File removed successfully.": "Dosya başarıyla kaldırıldı.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Dosya boyutu {{maxSize}} MB'yi aşmamalıdır.", "File Upload": "Dosya Yükleme", "File uploaded successfully": "Dosya başarıyla yüklendi", - "File uploaded!": "Dosya yüklendi!", "Filename": "Dosya adı", "Files": "Dosyalar", "Filter": "Filtre", @@ -1177,13 +1200,13 @@ "Knowledge": "Bilgi", "Knowledge Access": "Bilgi Erişimi", "Knowledge Base": "Bilgi Tabanı", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Bilgi başarıyla oluşturuldu.", "Knowledge deleted successfully.": "Bilgi başarıyla silindi.", "Knowledge Description": "Bilgi Açıklaması", "Knowledge exported successfully": "Bilgi başarıyla dışa aktarıldı", "Knowledge Name": "Bilgi Adı", "Knowledge Public Sharing": "Bilginin Herkese Açık Paylaşımı", - "Knowledge reset successfully.": "Bilgi başarıyla sıfırlandı.", "Knowledge Sharing": "Bilgi Paylaşımı", "Knowledge updated successfully": "Bilgi başarıyla güncellendi", "Kokoro.js (Browser)": "Kokoro.js (Tarayıcı)", @@ -1227,6 +1250,7 @@ "Light": "Açık", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "Eşzamanlı arama sorgularını sınırla. 0 = sınırsız (varsayılan). Sıralı yürütme için 1 olarak ayarlayın (Brave ücretsiz katman gibi katı oran sınırlarına sahip API'ler için önerilir).", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "Eşzamanlı gömme isteklerinin sayısını sınırlar. Sınırsız için 0 olarak ayarlayın.", + "Linkup API Key": "", "List": "Liste", "List calendars, search, create, update, and delete calendar events": "Takvimleri listele, takvim etkinliklerini ara, oluştur, güncelle ve sil", "Listening...": "Dinleniyor...", @@ -1377,6 +1401,8 @@ "New calendar": "Yeni takvim", "New Calendar": "Yeni Takvim", "New Chat": "Yeni Sohbet", + "New directory": "", + "New Directory": "", "New Event": "Yeni Etkinlik", "New File": "Yeni Dosya", "New Folder": "Yeni Klasör", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML, CSS veya JavaScript içeriği bulunamadı.", "No inference engine with management support found": "Yönetim desteği olan çıkarım motoru bulunamadı", "No kernel": "Kernel yok", + "No knowledge bases accessible": "", "No knowledge bases found.": "Bilgi tabanı bulunamadı.", "No knowledge found": "Bilgi bulunamadı", "No limit": "Sınır yok", "No memories to clear": "Temizlenecek bellek yok", "No model IDs": "Model ID yok", + "No models accessible": "", "No models available": "Kullanılabilir model yok", "No models found": "Model bulunamadı", "No models selected": "Model seçilmedi", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "Yapılandırılmış Terminal bağlantısı yok.", "No terminal connections configured.": "Yapılandırılmış terminal bağlantısı yok.", "No tool server connections configured.": "Yapılandırılmış araç sunucusu bağlantısı yok.", + "No tools accessible": "", "No tools found": "Araç bulunamadı", "No users were found.": "Kullanıcı bulunamadı.", "No valves": "Valf yok", @@ -1486,6 +1515,7 @@ "On": "Açık", "Once": "Bir kez", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "Yalnızca \"Büyük Metni Dosya Olarak Yapıştır\" ayarı açıkken etkindir.", "Only active when the chat input is in focus and an LLM is generating a response.": "Yalnızca sohbet girişi odaktayken ve bir LLM yanıt oluştururken etkindir.", "Only active when the chat input is in focus.": "Yalnızca sohbet girişi odaktayken etkindir.", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF belgesi (.pdf)", "PDF Extract Images (OCR)": "PDF Görüntülerini Çıkart (OCR)", "PDF Loader Mode": "PDF Yükleyici Modu", + "pdf, docx, pptx, xlsx": "", "pending": "beklemede", "Pending": "Beklemede", "Pending User Overlay Content": "Bekleyen Kullanıcı Yer Paylaşımı İçeriği", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Önek Kimliği, model kimliklerine bir önek ekleyerek diğer bağlantılarla çakışmaları önlemek için kullanılır - devre dışı bırakmak için boş bırakın", "Prevent File Creation": "Dosya Oluşturmayı Engelle", "Preview": "Önizleme", + "Preview Access": "", "Previous 30 days": "Önceki 30 gün", "Previous 7 days": "Önceki 7 gün", "Previous message": "Önceki mesaj", @@ -1695,6 +1727,8 @@ "Remove from favorites": "Favorilerden kaldır", "Remove image": "Görseli kaldır", "Remove Model": "Modeli Kaldır", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Yeniden Adlandır", "Renamed to {{name}}": "{{name}} olarak yeniden adlandırıldı", "Render Markdown in Assistant Messages": "Asistan Mesajlarında Markdown'ı İşle", @@ -1713,6 +1747,7 @@ "Reset": "Sıfırla", "Reset All Models": "Tüm Modelleri Sıfırla", "Reset Image": "Görüntüyü sıfırla", + "Reset knowledge base?": "", "Reset Upload Directory": "Yükleme Dizinini Sıfırla", "Reset Vector Storage/Knowledge": "Vektör Depolama/Bilgiyi Sıfırla", "Reset view": "Görünümü sıfırla", @@ -1780,6 +1815,7 @@ "Search Prompts": "Prompt Ara", "Search Result Count": "Arama Sonucu Sayısı", "Search Skills": "Yetenekleri Ara", + "Search skills...": "", "Search the internet": "İnternette Ara", "Search the web and fetch URLs": "Web'de ara ve URL'leri getir", "Search Tools": "Arama Araçları", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "JSON düzenleyiciye geç", "Switch to visual editor": "Görsel düzenleyiciye geç", "Sync": "Eşitle", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "Eşitleme Tamamlandı!", "Sync directory": "Dizini senkronize et", "Sync Failed": "Eşitleme Başarısız", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Bu seçenek, bağlam yenilenirken kaç tokenin korunacağını kontrol eder. Örneğin 2 olarak ayarlanırsa, konuşma bağlamının son 2 tokeni korunur. Bağlamı korumak, bir konuşmanın sürekliliğinin sağlanmasına yardımcı olabilir, ancak yeni konulara yanıt verme yeteneğini azaltabilir.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "Bu seçenek, modelin yanıt oluşturmadan önce düşünmesine olanak tanıyan Ollama'daki akıl yürütme özelliğinin kullanımını etkinleştirir veya devre dışı bırakır. Etkinleştirildiğinde model, konuşma bağlamını işlemek ve daha düşünceli bir yanıt oluşturmak için bir an ayırabilir.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Bu seçenek, modelin yanıtında oluşturabileceği maksimum token sayısını ayarlar. Bu sınırı artırmak, modelin daha uzun yanıtlar vermesine olanak tanır, ancak yararsız veya alakasız içerik oluşturulma olasılığını da artırabilir.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Bu seçenek, koleksiyondaki tüm mevcut dosyaları silecek ve bunları yeni yüklenen dosyalarla değiştirecek.", "This response was generated by \"{{model}}\"": "Bu yanıt \"{{model}}\" tarafından oluşturuldu", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "Bu şablon birden çok bağlam yer tutucusu ([context] veya {{CONTEXT}}) içerir. Bağlam her oluşumda enjekte edilecektir.", "This will delete": "Bu silinecek", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Bu, özel modeller dahil olmak üzere tüm modelleri silecek", "This will delete all models including custom models and cannot be undone.": "Bu, özel modeller dahil olmak üzere tüm modelleri silecek ve geri alınamaz.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "Bu işlem, \"{{name}}\" takvimini ve tüm etkinliklerini kalıcı olarak silecektir. Bu işlem geri alınamaz.", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Bu, bilgi tabanını sıfırlayacak ve tüm dosyaları senkronize edecek. Devam etmek istiyor musunuz?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Kapsamlı açıklama", "Thought": "Düşünce", "Thought for {{DURATION}}": "{{DURATION}} saniye düşünüldü", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "1 kaynağı aç/kapat", "Toggle details": "Ayrıntıları aç/kapat", "Toggle Dictation": "Dikteyi Aç/Kapat", + "Toggle Mute": "", "Toggle Sidebar": "Kenar Çubuğunu Aç/Kapat", "Toggle status history": "Durum geçmişini aç/kapat", "Toggle whether current connection is active.": "Geçerli bağlantının etkin olup olmadığını değiştirin.", @@ -2171,7 +2209,7 @@ "Upload Progress": "Yükleme İlerlemesi", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "Yükleme İlerlemesi: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "Yüklenen dosyalar veya görüntüler", - "Uploading file...": "Dosya yükleniyor...", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "Yükleniyor...", "URL": "URL", "URL is required": "URL gerekli", @@ -2191,6 +2229,7 @@ "User Groups": "Kullanıcı Grupları", "User location successfully retrieved.": "Kullanıcı konumu başarıyla alındı.", "User menu": "Kullanıcı menüsü", + "User Preview": "", "User ratings (thumbs up/down)": "Kullanıcı derecelendirmeleri (beğeni/beğenmeme)", "User Status": "Kullanıcı Durumu", "User Webhooks": "Kullanıcı Web Kancaları", diff --git a/src/lib/i18n/locales/ug-CN/translation.json b/src/lib/i18n/locales/ug-CN/translation.json index 746f4091ad..22f152b6c2 100644 --- a/src/lib/i18n/locales/ug-CN/translation.json +++ b/src/lib/i18n/locales/ug-CN/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} بار قوراللار", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} يوشۇرۇن قۇرلار", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} ئىنكاس", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "بۇ قانالنى ئۆچۈرەمسىز؟", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "بۇ ئۇچۇرنى ئۆچۈرەمسىز؟", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "بار تىزىملىك", "Available models": "", + "Available Skills": "", "Available Tools": "بار قوراللار", "available users": "ئىشلەتكىلى بولىدىغان ئىشلەتكۈچىلەر", "available!": "بار!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI جەريانى", "ComfyUI Workflow Nodes": "ComfyUI جەريان ئۇچۇرلىرى", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "بۇيرۇق", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "تولۇقلىنىشلار", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "پاراللىل تەلەپلەر", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "مودېل ئۆچۈرۈش", "Delete All": "", "Delete All Chats": "بارلىق سۆھبەتلەرنى ئۆچۈرۈش", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "سۆھبەت ئۆچۈرۈش", "Delete chat?": "سۆھبەت ئۆچۈرەمسىز؟", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "قىسقۇچ ئۆچۈرەمسىز؟", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "بىۋاسىتە ئۇلىنىشلار ئىشلەتكۈچىلەرگە ئۆز OpenAI ماس كېلىدىغان API ئۇلانمىسىغا باغلىنىشقا يول قويىدۇ.", "Direct Message": "", "Direct Tool Servers": "بىۋاسىتە قورال مۇلازىمېتىرلىرى", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "سىڭدۈرۈش مودېلى", "Embedding Model Engine": "سىڭدۈرۈش مودېل ماتورى", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Kagi ئىزدەش API ئاچقۇچى كىرگۈزۈڭ", "Enter Key Behavior": "ئاچقۇچ ئىشلىتىش ئۇسۇلى كىرگۈزۈڭ", "Enter language codes": "تىل كودلىرى كىرگۈزۈڭ", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "Mistral API ئاچقۇچى كىرگۈزۈڭ", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI قورال مۇلازىمېتىرىغا ئۇلىنىش مەغلۇپ بولدى", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "ئۇلانما كۆچۈرۈش مەغلۇپ بولدى", @@ -954,14 +975,16 @@ "File content updated successfully.": "ھۆججەت مەزمۇنى مۇۋەپپەقىيەتلىك يېڭىلاندى.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "ھۆججەت ھالىتى", + "File moved.": "", "File name": "", "File not found.": "ھۆججەت تېپىلمىدى.", "File removed successfully.": "ھۆججەت مۇۋەپپەقىيەتلىك ئۆچۈرۈلدى.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "ھۆججەت چوڭلۇقى {{maxSize}} MB تىن ئېشىپ كەتمىسۇن.", "File Upload": "ھۆججەت چىقىرىش", "File uploaded successfully": "ھۆججەت مۇۋەپپەقىيەتلىك چىقىرىلدى", - "File uploaded!": "", "Filename": "", "Files": "ھۆججەتلەر", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "بىلىم", "Knowledge Access": "بىلىم زىيارىتى", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "بىلىم مۇۋەپپەقىيەتلىك قۇرۇلدى.", "Knowledge deleted successfully.": "بىلىم مۇۋەپپەقىيەتلىك ئۆچۈرۈلدى.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "بىلىمنى ئاممىغا ھەمبەھىرلەش", - "Knowledge reset successfully.": "بىلىم مۇۋەپپەقىيەتلىك قايتا تەڭشەلدى.", "Knowledge Sharing": "", "Knowledge updated successfully": "بىلىم مۇۋەپپەقىيەتلىك يېڭىلاندى", "Kokoro.js (Browser)": "Kokoro.js (تور كۆرگۈچ)", @@ -1227,6 +1250,7 @@ "Light": "نۇر", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "ئاڭلاۋاتىدۇ...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "يېڭى سۆھبەت", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "يېڭى قىسقۇچ", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML، CSS ياكى JavaScript مەزمۇنى تېپىلمىدى.", "No inference engine with management support found": "باشقۇرۇشنى قوللايدىغان يەكۈن ماتورى تېپىلمىدى", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "بىلىم تېپىلمىدى", "No limit": "", "No memories to clear": "تازلاشقا ئەسلەتمە يوق", "No model IDs": "مودېل ID يوق", + "No models accessible": "", "No models available": "", "No models found": "مودېل تېپىلمىدى", "No models selected": "مودېل تاللانمىدى", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "ئىشلەتكۈچى تېپىلمىدى.", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "قوزغىتىلغان", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF ھۆججىتى (.pdf)", "PDF Extract Images (OCR)": "PDF رەسىم چىقىرىش (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "كۈتۈۋاتىدۇ", "Pending": "كۈتۈۋاتىدۇ", "Pending User Overlay Content": "كۈتۈۋاتقان ئىشلەتكۈچى قاپلام مەزمۇنى", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "باشقا ئۇلىنىش بىلەن توقۇنۇشنىڭ ئالدىنى ئېلىش ئۈچۈن مودېل ID غا Prefix قوشۇلىدۇ - چەكلەش ئۈچۈن بوش قالدۇرۇڭ", "Prevent File Creation": "", "Preview": "ئالدىن كۆرۈش", + "Preview Access": "", "Previous 30 days": "ئالدىنقى 30 كۈن", "Previous 7 days": "ئالدىنقى 7 كۈن", "Previous message": "ئالدىنقى ئۇچۇر", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "مودېل چىقىرىۋېتىش", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "ئات ئۆزگەرتىش", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "قايتا تەڭشەش", "Reset All Models": "بارلىق مودېللارنى قايتا تەڭشەش", "Reset Image": "سۈرەتنى ئەسلىگە قايتۇر", + "Reset knowledge base?": "", "Reset Upload Directory": "چىقىرىش قىسقۇچىنى قايتا تەڭشەش", "Reset Vector Storage/Knowledge": "ۋېكتور ساقلاش/بىلىمنى قايتا تەڭشەش", "Reset view": "كۆرۈنۈشنى قايتا تەڭشەش", @@ -1780,6 +1815,7 @@ "Search Prompts": "تۈرتكە ئىزدەش", "Search Result Count": "ئىزدەش نەتىجىسى سانى", "Search Skills": "", + "Search skills...": "", "Search the internet": "تور ئىزدەش", "Search the web and fetch URLs": "", "Search Tools": "قوراللارنى ئىزدەش", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "قىسقۇچنى ماس-قەدەملە", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "بۇ تاللاش مەزمۇن يېڭىلانغاندا قانچە ئىم ساقلىنىدىغانلىقىنى بەلگىلەيدۇ. مەسىلەن، 2 بولسا، سۆھبەتنىڭ ئاخىرقى 2 ئىمىنى ساقلايدۇ. مۇھىت ساقلىش سۆھبەتنىڭ ئۇلاشقىلىقلىقىغا پايدىلىق، بىراق يېڭى تېمىغا ئىنكاس كۈچىنى ئازايتىدۇ.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "بۇ تاللاش Ollama دا چۈشەندۈرۈش ئىقتىدارىنى قوزغىتىدۇ ياكى چەكلەيدۇ. قوزغىتىلسا، مودېل ئىنكاس چىقىرىشتىن بۇرۇن ئويلايدۇ.", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "بۇ تاللاش مودېل ئىنكاستا ھاسىل قىلىدىغان ئەڭ كۆپ ئىم سانىنى بەلگىلەيدۇ. چەك چوڭ بولسا، ئۇزۇن ئىنكاس چىقىرىدۇ، بىراق مۇناسىۋەتسىز مەزمۇن چىقىشى ئېھتىمالى يۇقىرى.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "بۇ تاللاش بارلىق توپلامدىكى ھۆججەتلەرنى ئۆچۈرۈپ يېڭى چىقىرىلغان ھۆججەتلەر بىلەن ئالماشتۇرىدۇ.", "This response was generated by \"{{model}}\"": "بۇ ئىنكاس \"{{model}}\" ئارقىلىق ھاسىل قىلىندى", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "بۇ ئۆچۈرۈلىدۇ:", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "بۇ بارلىق مودېللارنى ئۆچۈرۈدۇ (ئۆزلۈك مودېللارنىمۇ ئۆز ئىچىگە ئالىدۇ)", "This will delete all models including custom models and cannot be undone.": "بۇ بارلىق مودېللارنى ئۆچۈرۈدۇ (ئۆزلۈك مودېللارنىمۇ ئۆز ئىچىگە ئالىدۇ) ۋە ئەسلىگە كەلتۈرگىلى بولمايدۇ.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "بىلىم ئاساسى قايتا تەڭشىلىپ بارلىق ھۆججەتلەر ماس-قەدەملىنىدۇ. داۋاملاشامسىز؟", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "تەپسىلىي چۈشەندۈرۈش", "Thought": "", "Thought for {{DURATION}}": "{{DURATION}} مىنۇت ئويلىدى", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "ھازىرقى ئۇلىنىشنىڭ ئاكتىپ ياكى ئەمەسلىكىنى ئالماشتۇرۇش.", @@ -2171,7 +2209,7 @@ "Upload Progress": "چىقىرىش جەريانى", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "ئىشلەتكۈچى ئورنى مۇۋەپپەقىيەتلىك ئېلىندى.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "ئىشلەتكۈچى Webhookلىرى", diff --git a/src/lib/i18n/locales/uk-UA/translation.json b/src/lib/i18n/locales/uk-UA/translation.json index c29c17ad25..ce630d0396 100644 --- a/src/lib/i18n/locales/uk-UA/translation.json +++ b/src/lib/i18n/locales/uk-UA/translation.json @@ -9,12 +9,21 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_few": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_many": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} прихованих рядків", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_few": "", + "{{count}} of {{total}} accessible_many": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Відповіді", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -195,6 +204,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Ви впевнені, що хочете видалити цей канал?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Ви впевнені, що хочете видалити це повідомлення?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -241,6 +251,7 @@ "Automations": "", "Available list": "Список доступності", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "доступні користувачі", "available!": "доступно!", @@ -400,13 +411,19 @@ "ComfyUI Workflow": "ComfyUI Workflow", "ComfyUI Workflow Nodes": "Вузли Workflow в ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Команда", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Завершення", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_few": "", + "Computing checksums ({{count}} files)_many": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Одночасні запити", "Config": "", "Config imported successfully": "", @@ -539,12 +556,14 @@ "Delete a model": "Видалити модель", "Delete All": "", "Delete All Chats": "Видалити усі чати", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Видалити чат", "Delete chat?": "Видалити чат?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Видалити папку?", @@ -581,6 +600,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Прямі з'єднання дозволяють користувачам підключатися до своїх власних API-кінцевих точок, сумісних з OpenAI.", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -689,6 +713,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Модель вбудовування", "Embedding Model Engine": "Рушій моделі вбудовування ", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -767,6 +792,7 @@ "Enter Kagi Search API Key": "Введіть ключ API Kagi Search", "Enter Key Behavior": "Введіть поведінку клавіші", "Enter language codes": "Введіть мовні коди", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -903,6 +929,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Не вдалося підключитися до серверу інструментів OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -956,14 +983,16 @@ "File content updated successfully.": "Вміст файлу успішно оновлено.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Файловий режим", + "File moved.": "", "File name": "", "File not found.": "Файл не знайдено.", "File removed successfully.": "Файл успішно видалено.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Розмір файлу не повинен перевищувати {{maxSize}} МБ.", "File Upload": "", "File uploaded successfully": "Файл успішно завантажено", - "File uploaded!": "", "Filename": "", "Files": "Файли", "Filter": "", @@ -1179,13 +1208,13 @@ "Knowledge": "Знання", "Knowledge Access": "Доступ до знань", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Знання успішно створено.", "Knowledge deleted successfully.": "Знання успішно видалено.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "Публічний обмін знаннями", - "Knowledge reset successfully.": "Знання успішно скинуто.", "Knowledge Sharing": "", "Knowledge updated successfully": "Знання успішно оновлено", "Kokoro.js (Browser)": "Kokoro.js (Браузер)", @@ -1229,6 +1258,7 @@ "Light": "Світла", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Слухаю...", @@ -1379,6 +1409,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Новий чат", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Нова папка", @@ -1424,11 +1456,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML, CSS або JavaScript контент не знайдено.", "No inference engine with management support found": "Не знайдено двигуна висновків з підтримкою керування", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Знання не знайдено.", "No limit": "", "No memories to clear": "Немає спогадів для очищення", "No model IDs": "Немає ID моделей", + "No models accessible": "", "No models available": "", "No models found": "Моделей не знайдено", "No models selected": "Моделі не вибрано", @@ -1449,6 +1483,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Користувачів не знайдено.", "No valves": "", @@ -1488,6 +1523,7 @@ "On": "Увімк", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1559,6 +1595,7 @@ "PDF document (.pdf)": "PDF документ (.pdf)", "PDF Extract Images (OCR)": "Розпізнавання зображень з PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "на розгляді", "Pending": "", "Pending User Overlay Content": "", @@ -1620,6 +1657,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "ID префікса використовується для уникнення конфліктів з іншими підключеннями шляхом додавання префікса до ID моделей — залиште порожнім, щоб вимкнути", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "Попередні 30 днів", "Previous 7 days": "Попередні 7 днів", "Previous message": "", @@ -1697,6 +1735,10 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Видалити модель", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._few": "", + "Removing {{count}} stale files..._many": "", + "Removing {{count}} stale files..._other": "", "Rename": "Переназвати", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1715,6 +1757,7 @@ "Reset": "Скидання", "Reset All Models": "Скинути усі моделі", "Reset Image": "Скинути зображення", + "Reset knowledge base?": "", "Reset Upload Directory": "Скинути каталог завантажень", "Reset Vector Storage/Knowledge": "Скинути векторне сховище/Знання", "Reset view": "Скинути вигляд", @@ -1784,6 +1827,7 @@ "Search Prompts": "Пошук промтів", "Search Result Count": "Кількість результатів пошуку", "Search Skills": "", + "Search skills...": "", "Search the internet": "Шукати в інтернеті", "Search the web and fetch URLs": "", "Search Tools": "Пошуку інструментів", @@ -1983,6 +2027,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Синхронізувати каталог", "Sync Failed": "", @@ -2055,7 +2101,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Ця опція контролює, скільки токенів зберігається при оновленні контексту. Наприклад, якщо встановити значення 2, останні 2 токени контексту розмови будуть збережені. Збереження контексту допомагає підтримувати послідовність розмови, але може зменшити здатність реагувати на нові теми.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Ця опція встановлює максимальну кількість токенів, які модель може згенерувати у своїй відповіді. Збільшення цього ліміту дозволяє моделі надавати довші відповіді, але також може підвищити ймовірність генерації непотрібного або нерелевантного контенту.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Цей варіант видалить усі існуючі файли в колекції та замінить їх новими завантаженими файлами.", "This response was generated by \"{{model}}\"": "Цю відповідь згенеровано за допомогою \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Це призведе до видалення", @@ -2063,7 +2108,7 @@ "This will delete all models including custom models": "Це видалить усі моделі, включаючи користувацькі моделі", "This will delete all models including custom models and cannot be undone.": "Це видалить усі моделі, включаючи користувацькі моделі, і не може бути скасовано.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Це скине базу знань і синхронізує усі файли. Ви бажаєте продовжити?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Детальне пояснення", "Thought": "", "Thought for {{DURATION}}": "Думка для {{DURATION}}", @@ -2099,6 +2144,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2177,7 +2223,7 @@ "Upload Progress": "Прогрес завантаження", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2197,6 +2243,7 @@ "User Groups": "", "User location successfully retrieved.": "Місцезнаходження користувача успішно знайдено.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Вебхуки користувача", diff --git a/src/lib/i18n/locales/ur-PK/translation.json b/src/lib/i18n/locales/ur-PK/translation.json index 100d9bc3a1..2172954db3 100644 --- a/src/lib/i18n/locales/ur-PK/translation.json +++ b/src/lib/i18n/locales/ur-PK/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ ماڈلز }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "دستیاب فہرست", "Available models": "", + "Available Skills": "", "Available Tools": "", "available users": "دستیاب صارفین", "available!": "دستیاب!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "کومفی یو آئی ورک فلو", "ComfyUI Workflow Nodes": "کومفی یو آئی ورک فلو نوڈز", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "کمانڈ", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "تکمیل", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "ہم وقت درخواستیں", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "ایک ماڈل حذف کریں", "Delete All": "", "Delete All Chats": "تمام چیٹس حذف کریں", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "چیٹ حذف کریں", "Delete chat?": "چیٹ حذف کریں؟", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "کیا فولڈر حذف کریں؟", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "", "Direct Message": "", "Direct Tool Servers": "", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "ایمبیڈنگ ماڈل", "Embedding Model Engine": "ایمبیڈنگ ماڈل انجن", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "", "Enter Key Behavior": "", "Enter language codes": "زبان کے کوڈ درج کریں", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -954,14 +975,16 @@ "File content updated successfully.": "فائل مواد کامیابی سے اپ ڈیٹ ہو گیا", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "فائل موڈ", + "File moved.": "", "File name": "", "File not found.": "فائل نہیں ملی", "File removed successfully.": "فائل کامیابی سے ہٹا دی گئی", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "فائل کا سائز {{maxSize}} ایم بی سے زیادہ نہیں ہونا چاہیے", "File Upload": "", "File uploaded successfully": "", - "File uploaded!": "", "Filename": "", "Files": "فائلز", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "علم", "Knowledge Access": "", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "علم کامیابی سے تخلیق کیا گیا", "Knowledge deleted successfully.": "معلومات کامیابی سے حذف ہو گئیں", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "", - "Knowledge reset successfully.": "علم کو کامیابی کے ساتھ دوبارہ ترتیب دیا گیا", "Knowledge Sharing": "", "Knowledge updated successfully": "علم کامیابی سے تازہ کر دیا گیا ہے", "Kokoro.js (Browser)": "", @@ -1227,6 +1250,7 @@ "Light": "روشنی", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "سن رہے ہیں...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "نئی بات چیت", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "کوئی HTML، CSS، یا جاوا اسکرپٹ مواد نہیں ملا", "No inference engine with management support found": "", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "کوئی معلومات نہیں ملی", "No limit": "", "No memories to clear": "", "No model IDs": "", + "No models accessible": "", "No models available": "", "No models found": "کوئی ماڈل نہیں ملا", "No models selected": "", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "چالو", "Once": "", "OneDrive": "", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "پی ڈی ایف دستاویز (.pdf)", "PDF Extract Images (OCR)": "پی ڈی ایف سے تصاویر نکالیں (او سی آر)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "زیر التواء", "Pending": "", "Pending User Overlay Content": "", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "پچھلے 30 دن", "Previous 7 days": "پچھلے 7 دن", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "ماڈل ہٹائیں", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "تبدیل نام کریں", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "ری سیٹ", "Reset All Models": "", "Reset Image": "تصویر ری سیٹ کریں", + "Reset knowledge base?": "", "Reset Upload Directory": "اپلوڈ ڈائریکٹری کو ری سیٹ کریں", "Reset Vector Storage/Knowledge": "ویكٹر اسٹوریج/علم کو ری سیٹ کریں", "Reset view": "", @@ -1780,6 +1815,7 @@ "Search Prompts": "تلاش کے اشارے", "Search Result Count": "تلاش کا نتیجہ شمار ", "Search Skills": "", + "Search skills...": "", "Search the internet": "", "Search the web and fetch URLs": "", "Search Tools": "تلاش کے اوزار", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "ڈائریکٹری مطابقت پذیری کریں", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "اس اختیار سے مجموعہ میں موجود تمام فائلز حذف ہو جائیں گی اور ان کی جگہ نئی اپ لوڈ کردہ فائلز لی جائیں گی", "This response was generated by \"{{model}}\"": "یہ جواب \"{{model}}\" کے ذریعہ تیار کیا گیا", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "یہ حذف کر دے گا", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "", "This will delete all models including custom models and cannot be undone.": "", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "یہ علمی بنیاد کو دوبارہ ترتیب دے گا اور تمام فائلز کو متوازن کرے گا کیا آپ جاری رکھنا چاہتے ہیں؟", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "مکمل وضاحت", "Thought": "", "Thought for {{DURATION}}": "", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "اپ لوڈ کی پیش رفت", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "صارف کا مقام کامیابی سے حاصل کیا گیا", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "", diff --git a/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json b/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json index f3784d6fbb..b2a1b172d6 100644 --- a/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json +++ b/src/lib/i18n/locales/uz-Cyrl-UZ/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} та мавжуд воситалар", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} та яширин чизиқ", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} та жавоб", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Ҳақиқатан ҳам бу канални ўчириб ташламоқчимисиз?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Ҳақиқатан ҳам бу хабарни ўчириб ташламоқчимисиз?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Мавжуд рўйхат", "Available models": "", + "Available Skills": "", "Available Tools": "Мавжуд асбоблар", "available users": "мавжуд фойдаланувчилар", "available!": "мавжуд!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI иш жараёни", "ComfyUI Workflow Nodes": "ComfyUI иш оқими тугунлари", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Буйруқ", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Тугаллашлар", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Бир вақтнинг ўзида сўровлар", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "Моделни ўчириш", "Delete All": "", "Delete All Chats": "Барча суҳбатларни ўчириш", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Чатни ўчириш", "Delete chat?": "Чат ўчирилсинми?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Жилд ўчирилсинми?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Тўғридан-тўғри уланишлар фойдаланувчиларга ўзларининг OpenAIга мос келувчи API сўнгги нуқталарига уланиш имконини беради.", "Direct Message": "", "Direct Tool Servers": "Тўғридан-тўғри асбоблар серверлари", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Ўрнатиш модели", "Embedding Model Engine": "Двигател моделини ўрнатиш", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Kagi Search АПИ калитини киритинг", "Enter Key Behavior": "Асосий хатти-ҳаракатни киритинг", "Enter language codes": "Тил кодларини киритинг", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "Mistral АПИ калитини киритинг", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "{{УРЛ}} ОпенАПИ асбоб серверига уланиб бўлмади", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "Ҳаволани нусхалаб бўлмади", @@ -954,14 +975,16 @@ "File content updated successfully.": "Файл мазмуни муваффақиятли янгиланди.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Файл режими", + "File moved.": "", "File name": "", "File not found.": "Файл топилмади.", "File removed successfully.": "Файл муваффақиятли олиб ташланди.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Файл ҳажми {{махСизе}} МБ дан ошмаслиги керак.", "File Upload": "Файл юклаш", "File uploaded successfully": "Файл муваффақиятли юкланди", - "File uploaded!": "", "Filename": "", "Files": "Файллар", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "Билим", "Knowledge Access": "Билимга кириш", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Билим муваффақиятли яратилди.", "Knowledge deleted successfully.": "Маълумотлар муваффақиятли ўчирилди.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "Билимларни оммавий алмашиш", - "Knowledge reset successfully.": "Маълумотлар қайта тикланди.", "Knowledge Sharing": "", "Knowledge updated successfully": "Билим муваффақиятли янгиланди", "Kokoro.js (Browser)": "Кокоро.жс (браузер)", @@ -1227,6 +1250,7 @@ "Light": "Нур", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Тингланмоқда...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Янги чат", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Янги жилд", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML, CСС ёки ЖаваСcрипт контенти топилмади.", "No inference engine with management support found": "Бошқарув ёрдами билан хулоса чиқариш механизми топилмади", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Ҳеч қандай билим топилмади", "No limit": "", "No memories to clear": "Тозалаш учун хотиралар йўқ", "No model IDs": "Модел идентификаторлари йўқ", + "No models accessible": "", "No models available": "", "No models found": "Ҳеч қандай модел топилмади", "No models selected": "Ҳеч қандай модел танланмаган", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Ҳеч қандай фойдаланувчи топилмади.", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "Ёниқ", "Once": "", "OneDrive": "ОнеДриве", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "ПДФ ҳужжат (.pdf)", "PDF Extract Images (OCR)": "ПДФ экстракти расмлари (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "кутилмоқда", "Pending": "", "Pending User Overlay Content": "Кутилаётган фойдаланувчи Оверлай контенти", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Префикс идентификатори модел идентификаторларига префикс қўшиш орқали бошқа уланишлар билан зиддиятларни олдини олиш учун ишлатилади - ўчириш учун бўш қолдиринг.", "Prevent File Creation": "", "Preview": "Кўриб чиқиш", + "Preview Access": "", "Previous 30 days": "Олдинги 30 кун", "Previous 7 days": "Олдинги 7 кун", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Моделни олиб ташлаш", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Номини ўзгартириш", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Қайта тиклаш", "Reset All Models": "Барча моделларни қайта ўрнатиш", "Reset Image": "Расмни қайта тиклаш", + "Reset knowledge base?": "", "Reset Upload Directory": "Юклаш каталогини тиклаш", "Reset Vector Storage/Knowledge": "Вектор хотираси/билимини қайта ўрнатиш", "Reset view": "Кўринишни тиклаш", @@ -1780,6 +1815,7 @@ "Search Prompts": "Қидирув кўрсатмалари", "Search Result Count": "Қидирув натижалари сони", "Search Skills": "", + "Search skills...": "", "Search the internet": "Интернетда қидиринг", "Search the web and fetch URLs": "", "Search Tools": "Қидирув воситалари", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Синхронлаш каталоги", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Ушбу параметр контекстни янгилашда қанча токенлар сақланишини назорат қилади. Масалан, агар 2 га ўрнатилган бўлса, суҳбат контекстининг охирги 2 та белгиси сақланиб қолади. Контекстни сақлаш суҳбатнинг узлуксизлигини сақлашга ёрдам беради, лекин бу янги мавзуларга жавоб бериш қобилиятини камайтириши мумкин.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Ушбу параметр модел жавобида яратиши мумкин бўлган токенларнинг максимал сонини белгилайди. Ушбу чегарани ошириш моделга узоқроқ жавобларни тақдим этиш имконини беради, бироқ у фойдасиз ёки аҳамиятсиз контент яратилиш эҳтимолини ҳам ошириши мумкин.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Ушбу параметр тўпламдаги барча мавжуд файлларни ўчиради ва уларни янги юкланган файллар билан алмаштиради.", "This response was generated by \"{{model}}\"": "Бу жавоб \"{{модел}}\" томонидан яратилган", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Бу ўчирилади", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Бу барча моделларни, шу жумладан махсус моделларни ўчириб ташлайди", "This will delete all models including custom models and cannot be undone.": "Бу барча моделларни, жумладан, махсус моделларни ҳам ўчириб ташлайди ва уларни ортга қайтариб бўлмайди.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Бу билимлар базасини қайта тиклайди ва барча файлларни синхронлаштиради. Давом этишни хоҳлайсизми?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Тўлиқ тушунтириш", "Thought": "", "Thought for {{DURATION}}": "{{DURATION}} учун фикр", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "Юклаш жараёни", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "УРЛ", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "Фойдаланувчи жойлашуви муваффақиятли олинди.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Фойдаланувчи веб-ҳуклари", diff --git a/src/lib/i18n/locales/uz-Latn-Uz/translation.json b/src/lib/i18n/locales/uz-Latn-Uz/translation.json index a864c41f5c..bdaf45cd65 100644 --- a/src/lib/i18n/locales/uz-Latn-Uz/translation.json +++ b/src/lib/i18n/locales/uz-Latn-Uz/translation.json @@ -9,12 +9,17 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} ta mavjud vositalar", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_one": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} ta yashirin chiziq", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_one": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} ta javob", "{{COUNT}} Rows": "", "{{count}} selected_one": "", @@ -193,6 +198,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Haqiqatan ham bu kanalni oʻchirib tashlamoqchimisiz?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Haqiqatan ham bu xabarni oʻchirib tashlamoqchimisiz?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -239,6 +245,7 @@ "Automations": "", "Available list": "Mavjud ro'yxat", "Available models": "", + "Available Skills": "", "Available Tools": "Mavjud asboblar", "available users": "mavjud foydalanuvchilar", "available!": "mavjud!", @@ -398,13 +405,17 @@ "ComfyUI Workflow": "ComfyUI ish jarayoni", "ComfyUI Workflow Nodes": "ComfyUI ish oqimi tugunlari", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Buyruq", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Tugallashlar", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_one": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Bir vaqtning o'zida so'rovlar", "Config": "", "Config imported successfully": "", @@ -537,12 +548,14 @@ "Delete a model": "Modelni o'chirish", "Delete All": "", "Delete All Chats": "Barcha suhbatlarni o'chirish", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Chatni oʻchirish", "Delete chat?": "Chat oʻchirilsinmi?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Jild oʻchirilsinmi?", @@ -579,6 +592,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "To'g'ridan-to'g'ri ulanishlar foydalanuvchilarga o'zlarining OpenAI-ga mos keluvchi API so'nggi nuqtalariga ulanish imkonini beradi.", "Direct Message": "", "Direct Tool Servers": "To'g'ridan-to'g'ri asboblar serverlari", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -687,6 +705,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "O'rnatish modeli", "Embedding Model Engine": "Dvigatel modelini o'rnatish", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -765,6 +784,7 @@ "Enter Kagi Search API Key": "Kagi Search API kalitini kiriting", "Enter Key Behavior": "Asosiy xatti-harakatni kiriting", "Enter language codes": "Til kodlarini kiriting", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "Mistral API kalitini kiriting", @@ -901,6 +921,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "{{URL}} OpenAPI asbob serveriga ulanib boʻlmadi", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "Havolani nusxalab bo‘lmadi", @@ -954,14 +975,16 @@ "File content updated successfully.": "Fayl mazmuni muvaffaqiyatli yangilandi.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Fayl rejimi", + "File moved.": "", "File name": "", "File not found.": "Fayl topilmadi.", "File removed successfully.": "Fayl muvaffaqiyatli olib tashlandi.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Fayl hajmi {{maxSize}} MB dan oshmasligi kerak.", "File Upload": "Fayl yuklash", "File uploaded successfully": "Fayl muvaffaqiyatli yuklandi", - "File uploaded!": "", "Filename": "", "Files": "Fayllar", "Filter": "", @@ -1177,13 +1200,13 @@ "Knowledge": "Bilim", "Knowledge Access": "Bilimga kirish", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Bilim muvaffaqiyatli yaratildi.", "Knowledge deleted successfully.": "Maʼlumotlar muvaffaqiyatli oʻchirildi.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "Bilimlarni ommaviy almashish", - "Knowledge reset successfully.": "Ma'lumotlar qayta tiklandi.", "Knowledge Sharing": "", "Knowledge updated successfully": "Bilim muvaffaqiyatli yangilandi", "Kokoro.js (Browser)": "Kokoro.js (brauzer)", @@ -1227,6 +1250,7 @@ "Light": "Nur", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Tinglanmoqda...", @@ -1377,6 +1401,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Yangi chat", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Yangi jild", @@ -1422,11 +1448,13 @@ "No HTML, CSS, or JavaScript content found.": "HTML, CSS yoki JavaScript kontenti topilmadi.", "No inference engine with management support found": "Boshqaruv yordami bilan xulosa chiqarish mexanizmi topilmadi", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Hech qanday bilim topilmadi", "No limit": "", "No memories to clear": "Tozalash uchun xotiralar yo'q", "No model IDs": "Model identifikatorlari yo'q", + "No models accessible": "", "No models available": "", "No models found": "Hech qanday model topilmadi", "No models selected": "Hech qanday model tanlanmagan", @@ -1447,6 +1475,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Hech qanday foydalanuvchi topilmadi.", "No valves": "", @@ -1486,6 +1515,7 @@ "On": "Yoniq", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1557,6 +1587,7 @@ "PDF document (.pdf)": "PDF hujjat (.pdf)", "PDF Extract Images (OCR)": "PDF ekstrakti rasmlari (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "kutilmoqda", "Pending": "", "Pending User Overlay Content": "Kutilayotgan foydalanuvchi Overlay kontenti", @@ -1618,6 +1649,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Prefiks identifikatori model identifikatorlariga prefiks qo'shish orqali boshqa ulanishlar bilan ziddiyatlarni oldini olish uchun ishlatiladi - o'chirish uchun bo'sh qoldiring.", "Prevent File Creation": "", "Preview": "Ko‘rib chiqish", + "Preview Access": "", "Previous 30 days": "Oldingi 30 kun", "Previous 7 days": "Oldingi 7 kun", "Previous message": "", @@ -1695,6 +1727,8 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Modelni olib tashlash", + "Removing {{count}} stale files..._one": "", + "Removing {{count}} stale files..._other": "", "Rename": "Nomini o'zgartirish", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1713,6 +1747,7 @@ "Reset": "Qayta tiklash", "Reset All Models": "Barcha modellarni qayta o'rnatish", "Reset Image": "Rasmni qayta tiklash", + "Reset knowledge base?": "", "Reset Upload Directory": "Yuklash katalogini tiklash", "Reset Vector Storage/Knowledge": "Vektor xotirasi/bilimini qayta o'rnatish", "Reset view": "Ko'rinishni tiklash", @@ -1780,6 +1815,7 @@ "Search Prompts": "Qidiruv ko'rsatmalari", "Search Result Count": "Qidiruv natijalari soni", "Search Skills": "", + "Search skills...": "", "Search the internet": "Internetda qidiring", "Search the web and fetch URLs": "", "Search Tools": "Qidiruv vositalari", @@ -1977,6 +2013,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Sinxronlash katalogi", "Sync Failed": "", @@ -2049,7 +2087,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Ushbu parametr kontekstni yangilashda qancha tokenlar saqlanishini nazorat qiladi. Masalan, agar 2 ga oʻrnatilgan boʻlsa, suhbat kontekstining oxirgi 2 ta belgisi saqlanib qoladi. Kontekstni saqlash suhbatning uzluksizligini saqlashga yordam beradi, lekin bu yangi mavzularga javob berish qobiliyatini kamaytirishi mumkin.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Ushbu parametr model javobida yaratishi mumkin bo'lgan tokenlarning maksimal sonini belgilaydi. Ushbu chegarani oshirish modelga uzoqroq javoblarni taqdim etish imkonini beradi, biroq u foydasiz yoki ahamiyatsiz kontent yaratilish ehtimolini ham oshirishi mumkin.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Ushbu parametr to'plamdagi barcha mavjud fayllarni o'chiradi va ularni yangi yuklangan fayllar bilan almashtiradi.", "This response was generated by \"{{model}}\"": "Bu javob \"{{model}}\" tomonidan yaratilgan", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Bu o'chiriladi", @@ -2057,7 +2094,7 @@ "This will delete all models including custom models": "Bu barcha modellarni, shu jumladan maxsus modellarni o'chirib tashlaydi", "This will delete all models including custom models and cannot be undone.": "Bu barcha modellarni, jumladan, maxsus modellarni ham o‘chirib tashlaydi va ularni ortga qaytarib bo‘lmaydi.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Bu bilimlar bazasini qayta tiklaydi va barcha fayllarni sinxronlashtiradi. Davom etishni xohlaysizmi?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "To'liq tushuntirish", "Thought": "", "Thought for {{DURATION}}": "{{DURATION}} uchun fikr", @@ -2093,6 +2130,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2171,7 +2209,7 @@ "Upload Progress": "Yuklash jarayoni", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2191,6 +2229,7 @@ "User Groups": "", "User location successfully retrieved.": "Foydalanuvchi joylashuvi muvaffaqiyatli olindi.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Foydalanuvchi veb-huklari", diff --git a/src/lib/i18n/locales/vi-VN/translation.json b/src/lib/i18n/locales/vi-VN/translation.json index d62c7ca1f7..caa99da54f 100644 --- a/src/lib/i18n/locales/vi-VN/translation.json +++ b/src/lib/i18n/locales/vi-VN/translation.json @@ -9,12 +9,15 @@ "[Today at] h:mm A": "", "[Yesterday at] h:mm A": "", "{{ models }}": "{{ mô hình }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} Công cụ có sẵn", "{{COUNT}} characters": "", "{{COUNT}} extracted lines": "", "{{COUNT}} files": "", + "{{count}} files selected. Only new and modified files will be uploaded. Deleted files will be removed. The folder structure will be mirrored. Continue?_other": "", "{{COUNT}} hidden lines": "{{COUNT}} dòng bị ẩn", "{{COUNT}} members": "", + "{{count}} of {{total}} accessible_other": "", "{{COUNT}} Replies": "{{COUNT}} Trả lời", "{{COUNT}} Rows": "", "{{count}} selected_other": "", @@ -192,6 +195,7 @@ "Are you sure you want to delete all chats? This action cannot be undone.": "", "Are you sure you want to delete this channel?": "Bạn có chắc chắn muốn xóa kênh này không?", "Are you sure you want to delete this connection? This action cannot be undone.": "", + "Are you sure you want to delete this directory?": "", "Are you sure you want to delete this memory? This action cannot be undone.": "", "Are you sure you want to delete this message?": "Bạn có chắc chắn muốn xóa tin nhắn này không?", "Are you sure you want to delete this version? Child versions will be relinked to this version's parent.": "", @@ -238,6 +242,7 @@ "Automations": "", "Available list": "Danh sách có sẵn", "Available models": "", + "Available Skills": "", "Available Tools": "Công cụ có sẵn", "available users": "người dùng khả dụng", "available!": "có sẵn!", @@ -397,13 +402,16 @@ "ComfyUI Workflow": "Quy trình làm việc ComfyUI", "ComfyUI Workflow Nodes": "Các nút Quy trình làm việc ComfyUI", "Comma separated Node Ids (e.g. 1 or 1,2)": "", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "", "Command": "Lệnh", "Comment": "", "Commit Message": "", "Community Reviews": "", + "Comparing with knowledge base...": "", "Completions": "Hoàn thành", "Compress Images in Channels": "", + "Computing checksums ({{count}} files)_other": "", "Concurrent Requests": "Các truy vấn đồng thời", "Config": "", "Config imported successfully": "", @@ -536,12 +544,14 @@ "Delete a model": "Xóa mô hình", "Delete All": "", "Delete All Chats": "Xóa mọi cuộc Chat", + "Delete all contents inside this directory": "", "Delete all contents inside this folder": "", "Delete automation?": "", "Delete calendar": "", "Delete Calendar": "", "Delete Chat": "Xóa chat", "Delete chat?": "Xóa chat?", + "Delete directory?": "", "Delete Event": "", "Delete File": "", "Delete folder?": "Xóa thư mục?", @@ -578,6 +588,11 @@ "Direct Connections allow users to connect to their own OpenAI compatible API endpoints.": "Kết nối Trực tiếp cho phép người dùng kết nối với các điểm cuối API tương thích OpenAI của riêng họ.", "Direct Message": "", "Direct Tool Servers": "Máy chủ Công cụ Trực tiếp", + "Directory created.": "", + "Directory deleted.": "", + "Directory moved.": "", + "Directory name": "", + "Directory renamed.": "", "Directory selection was cancelled": "", "Disable All": "", "Disable Code Interpreter": "", @@ -686,6 +701,7 @@ "Embedding Concurrent Requests": "", "Embedding Model": "Mô hình embedding", "Embedding Model Engine": "Trình xử lý embedding", + "Emoji": "", "Emojis": "", "Empty message": "", "Enable All": "", @@ -764,6 +780,7 @@ "Enter Kagi Search API Key": "Nhập Khóa API Kagi Search", "Enter Key Behavior": "Nhập Hành vi phím", "Enter language codes": "Nhập mã ngôn ngữ", + "Enter Linkup API Key": "", "Enter MinerU API Key": "", "Enter Mistral API Base URL": "", "Enter Mistral API Key": "Nhập Khóa API Mistral", @@ -900,6 +917,7 @@ "Failed to archive chat.": "", "Failed to attach file": "", "Failed to clear status": "", + "Failed to compare files.": "", "Failed to connect to {{URL}} OpenAPI tool server": "Không thể kết nối đến máy chủ công cụ OpenAPI {{URL}}", "Failed to connect to {{URL}} terminal server": "", "Failed to copy link": "", @@ -953,14 +971,16 @@ "File content updated successfully.": "Nội dung tệp được cập nhật thành công.", "File Context": "", "File deleted successfully.": "", + "File Extensions": "", "File Mode": "Chế độ Tệp văn bản", + "File moved.": "", "File name": "", "File not found.": "Không tìm thấy tệp.", "File removed successfully.": "Xóa tệp thành công.", + "File renamed.": "", "File size should not exceed {{maxSize}} MB.": "Kích thước tệp không được vượt quá {{maxSize}} MB.", "File Upload": "", "File uploaded successfully": "Tải tệp lên thành công", - "File uploaded!": "", "Filename": "", "Files": "Tệp", "Filter": "", @@ -1176,13 +1196,13 @@ "Knowledge": "Kiến thức", "Knowledge Access": "Truy cập Kiến thức", "Knowledge Base": "", + "Knowledge base has been reset": "", "Knowledge created successfully.": "Đã tạo kiến thức thành công.", "Knowledge deleted successfully.": "Đã xóa kiến thức thành công.", "Knowledge Description": "", "Knowledge exported successfully": "", "Knowledge Name": "", "Knowledge Public Sharing": "Chia sẻ Công khai Kiến thức", - "Knowledge reset successfully.": "Đã đặt lại kiến thức thành công.", "Knowledge Sharing": "", "Knowledge updated successfully": "Đã cập nhật kiến thức thành công", "Kokoro.js (Browser)": "Kokoro.js (Trình duyệt)", @@ -1226,6 +1246,7 @@ "Light": "Sáng", "Limit concurrent search queries. 0 = unlimited (default). Set to 1 for sequential execution (recommended for APIs with strict rate limits like Brave free tier).": "", "Limits the number of concurrent embedding requests. Set to 0 for unlimited.": "", + "Linkup API Key": "", "List": "", "List calendars, search, create, update, and delete calendar events": "", "Listening...": "Đang nghe...", @@ -1376,6 +1397,8 @@ "New calendar": "", "New Calendar": "", "New Chat": "Tạo chat mới", + "New directory": "", + "New Directory": "", "New Event": "", "New File": "", "New Folder": "Thư mục Mới", @@ -1421,11 +1444,13 @@ "No HTML, CSS, or JavaScript content found.": "Không tìm thấy nội dung HTML, CSS hoặc JavaScript.", "No inference engine with management support found": "Không tìm thấy engine suy luận nào có hỗ trợ quản lý", "No kernel": "", + "No knowledge bases accessible": "", "No knowledge bases found.": "", "No knowledge found": "Không tìm thấy kiến thức", "No limit": "", "No memories to clear": "Không có bộ nhớ nào để xóa", "No model IDs": "Không có ID mô hình", + "No models accessible": "", "No models available": "", "No models found": "Không tìm thấy mô hình nào", "No models selected": "Chưa chọn mô hình nào", @@ -1446,6 +1471,7 @@ "No Terminal connection configured.": "", "No terminal connections configured.": "", "No tool server connections configured.": "", + "No tools accessible": "", "No tools found": "", "No users were found.": "Không tìm thấy người dùng nào.", "No valves": "", @@ -1485,6 +1511,7 @@ "On": "Bật", "Once": "", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "", "Only active when the chat input is in focus and an LLM is generating a response.": "", "Only active when the chat input is in focus.": "", @@ -1556,6 +1583,7 @@ "PDF document (.pdf)": "Tập tin PDF (.pdf)", "PDF Extract Images (OCR)": "Trích xuất ảnh từ PDF (OCR)", "PDF Loader Mode": "", + "pdf, docx, pptx, xlsx": "", "pending": "đang chờ phê duyệt", "Pending": "", "Pending User Overlay Content": "", @@ -1617,6 +1645,7 @@ "Prefix ID is used to avoid conflicts with other connections by adding a prefix to the model IDs - leave empty to disable": "Tiền tố ID được sử dụng để tránh xung đột với các kết nối khác bằng cách thêm tiền tố vào ID mô hình - để trống để tắt", "Prevent File Creation": "", "Preview": "", + "Preview Access": "", "Previous 30 days": "30 ngày trước", "Previous 7 days": "7 ngày trước", "Previous message": "", @@ -1694,6 +1723,7 @@ "Remove from favorites": "", "Remove image": "", "Remove Model": "Xóa model", + "Removing {{count}} stale files..._other": "", "Rename": "Đổi tên", "Renamed to {{name}}": "", "Render Markdown in Assistant Messages": "", @@ -1712,6 +1742,7 @@ "Reset": "Xóa toàn bộ", "Reset All Models": "Đặt lại Tất cả Mô hình", "Reset Image": "Đặt lại hình ảnh", + "Reset knowledge base?": "", "Reset Upload Directory": "Xóa toàn bộ thư mục Upload", "Reset Vector Storage/Knowledge": "Đặt lại Lưu trữ Vector/Kiến thức", "Reset view": "Đặt lại chế độ xem", @@ -1778,6 +1809,7 @@ "Search Prompts": "Tìm prompt", "Search Result Count": "Số kết quả tìm kiếm", "Search Skills": "", + "Search skills...": "", "Search the internet": "Tìm kiếm trên internet", "Search the web and fetch URLs": "", "Search Tools": "Tìm kiếm Tools", @@ -1974,6 +2006,8 @@ "Switch to JSON editor": "", "Switch to visual editor": "", "Sync": "", + "Sync a local directory with this knowledge base. Only new and modified files will be uploaded. The directory structure will be mirrored.": "", + "Sync complete: {{added}} added, {{modified}} modified, {{deleted}} deleted, {{unmodified}} unmodified": "", "Sync Complete!": "", "Sync directory": "Đồng bộ thư mục", "Sync Failed": "", @@ -2046,7 +2080,6 @@ "This option controls how many tokens are preserved when refreshing the context. For example, if set to 2, the last 2 tokens of the conversation context will be retained. Preserving context can help maintain the continuity of a conversation, but it may reduce the ability to respond to new topics.": "Tùy chọn này kiểm soát số lượng token được bảo tồn khi làm mới ngữ cảnh. Ví dụ: nếu đặt thành 2, 2 token cuối cùng của ngữ cảnh hội thoại sẽ được giữ lại. Bảo tồn ngữ cảnh có thể giúp duy trì tính liên tục của cuộc trò chuyện, nhưng nó có thể làm giảm khả năng phản hồi các chủ đề mới.", "This option enables or disables the use of the reasoning feature in Ollama, which allows the model to think before generating a response. When enabled, the model can take a moment to process the conversation context and generate a more thoughtful response.": "", "This option sets the maximum number of tokens the model can generate in its response. Increasing this limit allows the model to provide longer answers, but it may also increase the likelihood of unhelpful or irrelevant content being generated.": "Tùy chọn này đặt số lượng token tối đa mà mô hình có thể tạo ra trong phản hồi của nó. Tăng giới hạn này cho phép mô hình cung cấp câu trả lời dài hơn, nhưng nó cũng có thể làm tăng khả năng tạo ra nội dung không hữu ích hoặc không liên quan.", - "This option will delete all existing files in the collection and replace them with newly uploaded files.": "Tùy chọn này sẽ xóa tất cả các tệp hiện có trong bộ sưu tập và thay thế chúng bằng các tệp mới được tải lên.", "This response was generated by \"{{model}}\"": "Phản hồi này được tạo bởi \"{{model}}\"", "This template contains multiple context placeholders ([context] or {{CONTEXT}}). Context will be injected at each occurrence.": "", "This will delete": "Chat này sẽ bị xóa", @@ -2054,7 +2087,7 @@ "This will delete all models including custom models": "Hành động này sẽ xóa tất cả các mô hình bao gồm cả các mô hình tùy chỉnh", "This will delete all models including custom models and cannot be undone.": "Hành động này sẽ xóa tất cả các mô hình bao gồm cả các mô hình tùy chỉnh và không thể hoàn tác.", "This will permanently delete the calendar \"{{name}}\" and all its events. This action cannot be undone.": "", - "This will reset the knowledge base and sync all files. Do you wish to continue?": "Hành động này sẽ đặt lại cơ sở kiến thức và đồng bộ hóa tất cả các tệp. Bạn có muốn tiếp tục không?", + "This will remove all files and directories from this knowledge base. This action cannot be undone.": "", "Thorough explanation": "Giải thích kỹ lưỡng", "Thought": "", "Thought for {{DURATION}}": "Suy nghĩ trong {{DURATION}}", @@ -2090,6 +2123,7 @@ "Toggle 1 source": "", "Toggle details": "", "Toggle Dictation": "", + "Toggle Mute": "", "Toggle Sidebar": "", "Toggle status history": "", "Toggle whether current connection is active.": "", @@ -2168,7 +2202,7 @@ "Upload Progress": "Tiến trình tải tệp lên hệ thống", "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "", "Uploaded files or images": "", - "Uploading file...": "", + "Uploading {{current}}/{{total}}: {{file}}": "", "Uploading...": "", "URL": "URL", "URL is required": "", @@ -2188,6 +2222,7 @@ "User Groups": "", "User location successfully retrieved.": "Đã truy xuất thành công vị trí của người dùng.", "User menu": "", + "User Preview": "", "User ratings (thumbs up/down)": "", "User Status": "", "User Webhooks": "Webhook Người dùng", diff --git a/src/lib/i18n/locales/zh-CN/translation.json b/src/lib/i18n/locales/zh-CN/translation.json index d5572cf226..a9eff36a47 100644 --- a/src/lib/i18n/locales/zh-CN/translation.json +++ b/src/lib/i18n/locales/zh-CN/translation.json @@ -9,6 +9,7 @@ "[Today at] h:mm A": "[今天] h:mm A", "[Yesterday at] h:mm A": "[昨天] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} 个可用工具", "{{COUNT}} characters": "{{COUNT}} 个字符", "{{COUNT}} extracted lines": "已提取 {{COUNT}} 行文本", @@ -241,6 +242,7 @@ "Automations": "自动化任务", "Available list": "可用列表", "Available models": "可用模型", + "Available Skills": "", "Available Tools": "可用工具", "available users": "可用用户", "available!": "版本可用!", @@ -400,6 +402,7 @@ "ComfyUI Workflow": "ComfyUI 工作流", "ComfyUI Workflow Nodes": "ComfyUI 工作流节点", "Comma separated Node Ids (e.g. 1 or 1,2)": "使用英文逗号分隔的节点 ID(例如 1 或 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "命令", "Command": "命令", "Comment": "注释", @@ -968,6 +971,7 @@ "File content updated successfully.": "文件内容成功更新", "File Context": "文件上下文", "File deleted successfully.": "文件已成功删除。", + "File Extensions": "", "File Mode": "文件模式", "File moved.": "文件已移动。", "File name": "文件名", @@ -977,7 +981,6 @@ "File size should not exceed {{maxSize}} MB.": "文件大小不应超过 {{maxSize}} MB", "File Upload": "文件上传", "File uploaded successfully": "文件上传成功", - "File uploaded!": "文件上传成功", "Filename": "文件名", "Files": "文件", "Filter": "过滤", @@ -1508,6 +1511,7 @@ "On": "开启", "Once": "单次", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "仅在启用“粘贴超长文本为文件”选项时有效。", "Only active when the chat input is in focus and an LLM is generating a response.": "仅在聚焦对话框且大语言模型正在生成回答时有效。", "Only active when the chat input is in focus.": "仅在聚焦对话框时有效。", @@ -1579,6 +1583,7 @@ "PDF document (.pdf)": "PDF 文档 (.pdf)", "PDF Extract Images (OCR)": "PDF 图像提取(使用文字识别)", "PDF Loader Mode": "PDF 加载模式", + "pdf, docx, pptx, xlsx": "", "pending": "待激活", "Pending": "待激活", "Pending User Overlay Content": "待激活用户界面内容", @@ -1804,6 +1809,7 @@ "Search Prompts": "搜索提示词", "Search Result Count": "搜索结果数量", "Search Skills": "搜索技能", + "Search skills...": "", "Search the internet": "联网搜索", "Search the web and fetch URLs": "搜索网络并获取网页内容", "Search Tools": "搜索工具", @@ -2117,6 +2123,7 @@ "Toggle 1 source": "展开/收起 1 个来源", "Toggle details": "展开/收起详情", "Toggle Dictation": "切换为听写模式", + "Toggle Mute": "", "Toggle Sidebar": "展开或收起侧边栏", "Toggle status history": "展开/收起历史状态", "Toggle whether current connection is active.": "切换当前连接的启用状态", @@ -2196,7 +2203,6 @@ "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "上传进度:{{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "上传的文件或图片", "Uploading {{current}}/{{total}}: {{file}}": "正在上传 {{current}}/{{total}}:{{file}}", - "Uploading file...": "正在上传文件...", "Uploading...": "正在上传中…", "URL": "URL", "URL is required": "URL 是必填项。", diff --git a/src/lib/i18n/locales/zh-TW/translation.json b/src/lib/i18n/locales/zh-TW/translation.json index 6103441bda..956b5a3ff7 100644 --- a/src/lib/i18n/locales/zh-TW/translation.json +++ b/src/lib/i18n/locales/zh-TW/translation.json @@ -9,6 +9,7 @@ "[Today at] h:mm A": "[今天] h:mm A", "[Yesterday at] h:mm A": "[昨天] h:mm A", "{{ models }}": "{{ models }}", + "{{COUNT}} Available Skills": "", "{{COUNT}} Available Tools": "{{COUNT}} 個可用工具", "{{COUNT}} characters": "{{COUNT}} 個字元", "{{COUNT}} extracted lines": "已擷取 {{COUNT}} 行", @@ -241,6 +242,7 @@ "Automations": "自動化", "Available list": "可用清單", "Available models": "可用模型", + "Available Skills": "", "Available Tools": "可用工具", "available users": "可用名額", "available!": "可用!", @@ -400,6 +402,7 @@ "ComfyUI Workflow": "ComfyUI 工作流程", "ComfyUI Workflow Nodes": "ComfyUI 工作流程節點", "Comma separated Node Ids (e.g. 1 or 1,2)": "使用英文逗號分隔的節點 ID(例如 1 或 1,2)", + "Comma-separated list of file extensions MinerU will handle (e.g. pdf, docx, pptx, xlsx)": "", "command": "命令", "Command": "命令", "Comment": "註解", @@ -968,6 +971,7 @@ "File content updated successfully.": "成功更新檔案內容。", "File Context": "檔案上下文", "File deleted successfully.": "檔案已成功刪除。", + "File Extensions": "", "File Mode": "檔案模式", "File moved.": "檔案已移動。", "File name": "檔案名稱", @@ -977,7 +981,6 @@ "File size should not exceed {{maxSize}} MB.": "檔案大小不應超過 {{maxSize}} MB。", "File Upload": "檔案上傳", "File uploaded successfully": "成功上傳檔案", - "File uploaded!": "檔案已上傳", "Filename": "檔案名稱", "Files": "檔案", "Filter": "篩選", @@ -1508,6 +1511,7 @@ "On": "開啟", "Once": "一次", "OneDrive": "OneDrive", + "Only active during Voice Mode.": "", "Only active when \"Paste Large Text as File\" setting is toggled on.": "僅在啟用「將大型文字作為檔案貼上」設定時有效。", "Only active when the chat input is in focus and an LLM is generating a response.": "僅在對話輸入框聚焦且大型語言模型正在產生回應時有效。", "Only active when the chat input is in focus.": "僅在聚焦對話框時有效。", @@ -1579,6 +1583,7 @@ "PDF document (.pdf)": "PDF 檔案 (.pdf)", "PDF Extract Images (OCR)": "PDF 影像擷取(OCR 光學文字辨識)", "PDF Loader Mode": "PDF 加載模式", + "pdf, docx, pptx, xlsx": "", "pending": "待處理", "Pending": "待處理", "Pending User Overlay Content": "待處理的使用者訊息覆蓋層內容", @@ -1804,6 +1809,7 @@ "Search Prompts": "搜尋提示詞", "Search Result Count": "搜尋結果數量", "Search Skills": "搜尋技能", + "Search skills...": "", "Search the internet": "搜尋網路", "Search the web and fetch URLs": "搜尋網路並獲取 URL", "Search Tools": "搜尋工具", @@ -2117,6 +2123,7 @@ "Toggle 1 source": "展開/收合 1 個來源", "Toggle details": "展開/收合詳細資訊", "Toggle Dictation": "切換聽寫模式", + "Toggle Mute": "", "Toggle Sidebar": "切換側邊欄", "Toggle status history": "展開/收合歷史狀態", "Toggle whether current connection is active.": "切換目前連線的啟用狀態", @@ -2196,7 +2203,6 @@ "Upload Progress: {{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)": "上傳進度:{{uploadedFiles}}/{{totalFiles}} ({{percentage}}%)", "Uploaded files or images": "上傳的檔案或圖片", "Uploading {{current}}/{{total}}: {{file}}": "正在上傳 {{current}}/{{total}}:{{file}}", - "Uploading file...": "正在上傳檔案...", "Uploading...": "上傳中…", "URL": "URL", "URL is required": "URL 為必填項目", diff --git a/src/lib/utils/hash.ts b/src/lib/utils/hash.ts index 35af78041d..f71bc2e3ab 100644 --- a/src/lib/utils/hash.ts +++ b/src/lib/utils/hash.ts @@ -30,16 +30,14 @@ function hexEncode(bytes: Uint8Array): string { // Used only when crypto.subtle is unavailable (HTTP deployments). const K: Uint32Array = new Uint32Array([ - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, - 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, - 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, - 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, - 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, - 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, - 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, - 0xc67178f2 + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 ]); function rotr(n: number, x: number): number { @@ -81,8 +79,14 @@ function sha256Fallback(data: Uint8Array): string { w[i] = (w[i - 16] + s0 + w[i - 7] + s1) | 0; } - let a = h0, b = h1, c = h2, d = h3; - let e = h4, f = h5, g = h6, h = h7; + let a = h0, + b = h1, + c = h2, + d = h3; + let e = h4, + f = h5, + g = h6, + h = h7; for (let i = 0; i < 64; i++) { const S1 = rotr(6, e) ^ rotr(11, e) ^ rotr(25, e); @@ -92,24 +96,36 @@ function sha256Fallback(data: Uint8Array): string { const maj = (a & b) ^ (a & c) ^ (b & c); const temp2 = (S0 + maj) | 0; - h = g; g = f; f = e; + h = g; + g = f; + f = e; e = (d + temp1) | 0; - d = c; c = b; b = a; + d = c; + c = b; + b = a; a = (temp1 + temp2) | 0; } - h0 = (h0 + a) | 0; h1 = (h1 + b) | 0; - h2 = (h2 + c) | 0; h3 = (h3 + d) | 0; - h4 = (h4 + e) | 0; h5 = (h5 + f) | 0; - h6 = (h6 + g) | 0; h7 = (h7 + h) | 0; + h0 = (h0 + a) | 0; + h1 = (h1 + b) | 0; + h2 = (h2 + c) | 0; + h3 = (h3 + d) | 0; + h4 = (h4 + e) | 0; + h5 = (h5 + f) | 0; + h6 = (h6 + g) | 0; + h7 = (h7 + h) | 0; } const result = new Uint8Array(32); const out = new DataView(result.buffer); - out.setUint32(0, h0, false); out.setUint32(4, h1, false); - out.setUint32(8, h2, false); out.setUint32(12, h3, false); - out.setUint32(16, h4, false); out.setUint32(20, h5, false); - out.setUint32(24, h6, false); out.setUint32(28, h7, false); + out.setUint32(0, h0, false); + out.setUint32(4, h1, false); + out.setUint32(8, h2, false); + out.setUint32(12, h3, false); + out.setUint32(16, h4, false); + out.setUint32(20, h5, false); + out.setUint32(24, h6, false); + out.setUint32(28, h7, false); return hexEncode(result); } diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 1014b91624..28f9682373 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -278,9 +278,7 @@ export const sanitizeHistory = (history) => { // Prune childrenIds referencing deleted/missing nodes for (const message of Object.values(history.messages)) { - message.childrenIds = message.childrenIds.filter( - (childId) => history.messages[childId] - ); + message.childrenIds = message.childrenIds.filter((childId) => history.messages[childId]); } // Recover currentId if it points to a missing or incomplete node @@ -289,10 +287,7 @@ export const sanitizeHistory = (history) => { let latestLeafId = null; let latestTimestamp = -1; for (const [id, message] of Object.entries(history.messages)) { - if ( - message.childrenIds.length === 0 && - (message.timestamp ?? 0) > latestTimestamp - ) { + if (message.childrenIds.length === 0 && (message.timestamp ?? 0) > latestTimestamp) { latestLeafId = id; latestTimestamp = message.timestamp ?? 0; } diff --git a/src/routes/(app)/automations/+page.svelte b/src/routes/(app)/automations/+page.svelte index 575ee15520..0fef27bd3e 100644 --- a/src/routes/(app)/automations/+page.svelte +++ b/src/routes/(app)/automations/+page.svelte @@ -108,9 +108,7 @@ ); try { - await Promise.all( - targets.map((a) => toggleAutomationById(localStorage.token, a.id)) - ); + await Promise.all(targets.map((a) => toggleAutomationById(localStorage.token, a.id))); } catch (err) { toast.error(`${err}`); // Refresh from server to restore consistent state