diff --git a/.env b/.env new file mode 100644 index 0000000000000000000000000000000000000000..b361ad2d1e3bd52d040ea1434f2cccf1ce861f44 --- /dev/null +++ b/.env @@ -0,0 +1,19 @@ +# To overwrite these variables, create a .env.local file + +# The path to the directory where the data will be downloaded on machine +LILAC_DATA_PATH=./data + +# Set to 1 for duckdb to use views instead of materialized tables (lower memory usage, but slower). +DUCKDB_USE_VIEWS=0 + +# Variables that can be set in .env.local +# +# Get key from https://www.cohere.ai/api-keys +# COHERE_API_KEY= + +# GCS_REGION= +# GCS_ACCESS_KEY= +# GCS_SECRET_KEY= + +# Get key from https://platform.openai.com/account/api-keys +# OPENAI_API_KEY= diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..228e638276b0b207581efebd161f874be9ca4309 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +# NOTE: When we upgrade to 3.11 we can use a slimmer docker image which comes with gcc. +FROM python:3.9-bullseye + +# Allow statements and log messages to immediately appear in the Knative logs +ENV PYTHONUNBUFFERED True + +# Set the working directory in the container. +WORKDIR /code + +COPY .env . +COPY LICENSE . + +# Copy static files. +COPY /web/blueprint/build ./web/blueprint/build + +# Copy python files. +COPY /src ./src/ + +# Install the dependencies. This requires exporting requirements.txt from poetry first, which +# happens from ./build_docker.sh. +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +CMD ["uvicorn", "src.server:app", "--host", "0.0.0.0", "--port", "5432"] diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..ee2d284c1bc2a474a74d00cd52ee7492f2a42c57 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2023 Lilac AI Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..b920effd15da9e64c8e677eeaad6609bdbe57892 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,130 @@ +aiohttp==3.8.4 ; python_version >= "3.9" and python_version < "3.10" +aiosignal==1.3.1 ; python_version >= "3.9" and python_version < "3.10" +anyio==3.7.0 ; python_version >= "3.9" and python_version < "3.10" +async-timeout==4.0.2 ; python_version >= "3.9" and python_version < "3.10" +attrs==23.1.0 ; python_version >= "3.9" and python_version < "3.10" +blis==0.7.9 ; python_version >= "3.9" and python_version < "3.10" +cachetools==5.3.1 ; python_version >= "3.9" and python_version < "3.10" +catalogue==2.0.8 ; python_version >= "3.9" and python_version < "3.10" +certifi==2023.5.7 ; python_version >= "3.9" and python_version < "3.10" +charset-normalizer==3.1.0 ; python_version >= "3.9" and python_version < "3.10" +click==8.1.3 ; python_version >= "3.9" and python_version < "3.10" +cloudpickle==2.2.1 ; python_version >= "3.9" and python_version < "3.10" +cohere==3.10.0 ; python_version >= "3.9" and python_version < "3.10" +colorama==0.4.6 ; python_version >= "3.9" and python_version < "3.10" and (platform_system == "Windows" or sys_platform == "win32") +confection==0.0.4 ; python_version >= "3.9" and python_version < "3.10" +cymem==2.0.7 ; python_version >= "3.9" and python_version < "3.10" +cytoolz==0.12.1 ; python_version >= "3.9" and python_version < "3.10" +dask==2023.5.1 ; python_version >= "3.9" and python_version < "3.10" +datasets==2.12.0 ; python_version >= "3.9" and python_version < "3.10" +decorator==5.1.1 ; python_version >= "3.9" and python_version < "3.10" +dill==0.3.6 ; python_version >= "3.9" and python_version < "3.10" +distributed==2023.5.1 ; python_version >= "3.9" and python_version < "3.10" +duckdb==0.8.0 ; python_version >= "3.9" and python_version < "3.10" +email-reply-parser==0.5.12 ; python_version >= "3.9" and python_version < "3.10" +exceptiongroup==1.1.1 ; python_version >= "3.9" and python_version < "3.10" +fastapi==0.95.2 ; python_version >= "3.9" and python_version < "3.10" +filelock==3.12.0 ; python_version >= "3.9" and python_version < "3.10" +floret==0.10.3 ; python_version >= "3.9" and python_version < "3.10" +frozenlist==1.3.3 ; python_version >= "3.9" and python_version < "3.10" +fsspec==2023.5.0 ; python_version >= "3.9" and python_version < "3.10" +fsspec[http]==2023.5.0 ; python_version >= "3.9" and python_version < "3.10" +gcsfs==2023.5.0 ; python_version >= "3.9" and python_version < "3.10" +google-api-core==2.11.0 ; python_version >= "3.9" and python_version < "3.10" +google-api-python-client==2.88.0 ; python_version >= "3.9" and python_version < "3.10" +google-auth-httplib2==0.1.0 ; python_version >= "3.9" and python_version < "3.10" +google-auth-oauthlib==1.0.0 ; python_version >= "3.9" and python_version < "3.10" +google-auth==2.19.1 ; python_version >= "3.9" and python_version < "3.10" +google-cloud-core==2.3.2 ; python_version >= "3.9" and python_version < "3.10" +google-cloud-storage==2.9.0 ; python_version >= "3.9" and python_version < "3.10" +google-crc32c==1.5.0 ; python_version >= "3.9" and python_version < "3.10" +google-resumable-media==2.5.0 ; python_version >= "3.9" and python_version < "3.10" +googleapis-common-protos==1.59.0 ; python_version >= "3.9" and python_version < "3.10" +h11==0.14.0 ; python_version >= "3.9" and python_version < "3.10" +httplib2==0.22.0 ; python_version >= "3.9" and python_version < "3.10" +httptools==0.5.0 ; python_version >= "3.9" and python_version < "3.10" +huggingface-hub==0.15.1 ; python_version >= "3.9" and python_version < "3.10" +idna==3.4 ; python_version >= "3.9" and python_version < "3.10" +importlib-metadata==6.6.0 ; python_version >= "3.9" and python_version < "3.10" +jellyfish==0.11.2 ; python_version >= "3.9" and python_version < "3.10" +jinja2==3.1.2 ; python_version >= "3.9" and python_version < "3.10" +joblib==1.2.0 ; python_version >= "3.9" and python_version < "3.10" +langcodes==3.3.0 ; python_version >= "3.9" and python_version < "3.10" +locket==1.0.0 ; python_version >= "3.9" and python_version < "3.10" +markupsafe==2.1.3 ; python_version >= "3.9" and python_version < "3.10" +mpmath==1.3.0 ; python_version >= "3.9" and python_version < "3.10" +msgpack==1.0.5 ; python_version >= "3.9" and python_version < "3.10" +multidict==6.0.4 ; python_version >= "3.9" and python_version < "3.10" +multiprocess==0.70.14 ; python_version >= "3.9" and python_version < "3.10" +murmurhash==1.0.9 ; python_version >= "3.9" and python_version < "3.10" +networkx==3.1 ; python_version >= "3.9" and python_version < "3.10" +nltk==3.8.1 ; python_version >= "3.9" and python_version < "3.10" +numpy==1.24.3 ; python_version >= "3.9" and python_version < "3.10" +oauthlib==3.2.2 ; python_version >= "3.9" and python_version < "3.10" +openai-function-call==0.0.5 ; python_version >= "3.9" and python_version < "3.10" +openai==0.27.8 ; python_version >= "3.9" and python_version < "3.10" +orjson==3.9.0 ; python_version >= "3.9" and python_version < "3.10" +packaging==23.1 ; python_version >= "3.9" and python_version < "3.10" +pandas==2.0.2 ; python_version >= "3.9" and python_version < "3.10" +partd==1.4.0 ; python_version >= "3.9" and python_version < "3.10" +pathy==0.10.1 ; python_version >= "3.9" and python_version < "3.10" +pillow==9.5.0 ; python_version >= "3.9" and python_version < "3.10" +preshed==3.0.8 ; python_version >= "3.9" and python_version < "3.10" +protobuf==4.23.2 ; python_version >= "3.9" and python_version < "3.10" +psutil==5.9.5 ; python_version >= "3.9" and python_version < "3.10" +pyarrow==9.0.0 ; python_version >= "3.9" and python_version < "3.10" +pyasn1-modules==0.3.0 ; python_version >= "3.9" and python_version < "3.10" +pyasn1==0.5.0 ; python_version >= "3.9" and python_version < "3.10" +pydantic==1.10.9 ; python_version >= "3.9" and python_version < "3.10" +pyparsing==3.0.9 ; python_version >= "3.9" and python_version < "3.10" +pyphen==0.14.0 ; python_version >= "3.9" and python_version < "3.10" +python-dateutil==2.8.2 ; python_version >= "3.9" and python_version < "3.10" +python-dotenv==1.0.0 ; python_version >= "3.9" and python_version < "3.10" +pytz==2023.3 ; python_version >= "3.9" and python_version < "3.10" +pyyaml==6.0 ; python_version >= "3.9" and python_version < "3.10" +regex==2023.6.3 ; python_version >= "3.9" and python_version < "3.10" +requests-oauthlib==1.3.1 ; python_version >= "3.9" and python_version < "3.10" +requests==2.31.0 ; python_version >= "3.9" and python_version < "3.10" +responses==0.18.0 ; python_version >= "3.9" and python_version < "3.10" +rsa==4.9 ; python_version >= "3.9" and python_version < "3.10" +scikit-learn==1.2.2 ; python_version >= "3.9" and python_version < "3.10" +scipy==1.10.1 ; python_version >= "3.9" and python_version < "3.10" +sentence-transformers==2.2.2 ; python_version >= "3.9" and python_version < "3.10" +sentencepiece==0.1.99 ; python_version >= "3.9" and python_version < "3.10" +setuptools==65.7.0 ; python_version >= "3.9" and python_version < "3.10" +six==1.16.0 ; python_version >= "3.9" and python_version < "3.10" +smart-open==6.3.0 ; python_version >= "3.9" and python_version < "3.10" +sniffio==1.3.0 ; python_version >= "3.9" and python_version < "3.10" +sortedcontainers==2.4.0 ; python_version >= "3.9" and python_version < "3.10" +spacy-legacy==3.0.12 ; python_version >= "3.9" and python_version < "3.10" +spacy-loggers==1.0.4 ; python_version >= "3.9" and python_version < "3.10" +spacy==3.5.3 ; python_version >= "3.9" and python_version < "3.10" +srsly==2.4.6 ; python_version >= "3.9" and python_version < "3.10" +starlette==0.27.0 ; python_version >= "3.9" and python_version < "3.10" +sympy==1.12 ; python_version >= "3.9" and python_version < "3.10" +tblib==1.7.0 ; python_version >= "3.9" and python_version < "3.10" +textacy==0.13.0 ; python_version >= "3.9" and python_version < "3.10" +thinc==8.1.10 ; python_version >= "3.9" and python_version < "3.10" +threadpoolctl==3.1.0 ; python_version >= "3.9" and python_version < "3.10" +tokenizers==0.13.3 ; python_version >= "3.9" and python_version < "3.10" +toolz==0.12.0 ; python_version >= "3.9" and python_version < "3.10" +torch==2.0.1 ; python_version >= "3.9" and python_version < "3.10" +torchvision==0.15.2 ; python_version >= "3.9" and python_version < "3.10" +tornado==6.3.2 ; python_version >= "3.9" and python_version < "3.10" +tqdm==4.65.0 ; python_version >= "3.9" and python_version < "3.10" +transformers==4.29.2 ; python_version >= "3.9" and python_version < "3.10" +typer==0.7.0 ; python_version >= "3.9" and python_version < "3.10" +types-psutil==5.9.5.13 ; python_version >= "3.9" and python_version < "3.10" +typing-extensions==4.6.3 ; python_version >= "3.9" and python_version < "3.10" +tzdata==2023.3 ; python_version >= "3.9" and python_version < "3.10" +uritemplate==4.1.1 ; python_version >= "3.9" and python_version < "3.10" +urllib3==1.26.16 ; python_version >= "3.9" and python_version < "3.10" +uvicorn[standard]==0.20.0 ; python_version >= "3.9" and python_version < "3.10" +uvloop==0.17.0 ; (sys_platform != "win32" and sys_platform != "cygwin") and platform_python_implementation != "PyPy" and python_version >= "3.9" and python_version < "3.10" +wasabi==1.1.1 ; python_version >= "3.9" and python_version < "3.10" +watchfiles==0.19.0 ; python_version >= "3.9" and python_version < "3.10" +websockets==11.0.3 ; python_version >= "3.9" and python_version < "3.10" +xxhash==3.2.0 ; python_version >= "3.9" and python_version < "3.10" +yarl==1.9.2 ; python_version >= "3.9" and python_version < "3.10" +zict==3.0.0 ; python_version >= "3.9" and python_version < "3.10" +zipp==3.15.0 ; python_version >= "3.9" and python_version < "3.10" diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/__pycache__/__init__.cpython-39.pyc b/src/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ee897073846deb777e052e9b9c1025af995af89 Binary files /dev/null and b/src/__pycache__/__init__.cpython-39.pyc differ diff --git a/src/__pycache__/config.cpython-39.pyc b/src/__pycache__/config.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1062458a8c83833cb0fb83f7f3b1d6ec5c5ed473 Binary files /dev/null and b/src/__pycache__/config.cpython-39.pyc differ diff --git a/src/__pycache__/conftest.cpython-39-pytest-7.3.1.pyc b/src/__pycache__/conftest.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..41d6597837cbcaf4a8427380a924e762a2293173 Binary files /dev/null and b/src/__pycache__/conftest.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/__pycache__/constants.cpython-39.pyc b/src/__pycache__/constants.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..45e42d85cbf52b775fc0684af09da470f13aec41 Binary files /dev/null and b/src/__pycache__/constants.cpython-39.pyc differ diff --git a/src/__pycache__/data_loader.cpython-39.pyc b/src/__pycache__/data_loader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aafd7a2a168be4c4b53997933e2782390f25358a Binary files /dev/null and b/src/__pycache__/data_loader.cpython-39.pyc differ diff --git a/src/__pycache__/data_loader_test.cpython-39-pytest-7.3.1.pyc b/src/__pycache__/data_loader_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..19fb2f465c1fef54d0ffa80cdc50160b0a6fb907 Binary files /dev/null and b/src/__pycache__/data_loader_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/__pycache__/db_deprecated.cpython-39.pyc b/src/__pycache__/db_deprecated.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..99835c5363951612f5a95c97156adad42e71f549 Binary files /dev/null and b/src/__pycache__/db_deprecated.cpython-39.pyc differ diff --git a/src/__pycache__/db_manager.cpython-39.pyc b/src/__pycache__/db_manager.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..416be6903aa3314a5a72138267a01a70262edf30 Binary files /dev/null and b/src/__pycache__/db_manager.cpython-39.pyc differ diff --git a/src/__pycache__/json_encoder.cpython-39.pyc b/src/__pycache__/json_encoder.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..767b44f652c6db5f8744c409bac0568e0e0882d2 Binary files /dev/null and b/src/__pycache__/json_encoder.cpython-39.pyc differ diff --git a/src/__pycache__/make_api.cpython-39.pyc b/src/__pycache__/make_api.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1501f94cabb158bfc8866f27693babc423d0f0a3 Binary files /dev/null and b/src/__pycache__/make_api.cpython-39.pyc differ diff --git a/src/__pycache__/make_openapi.cpython-39.pyc b/src/__pycache__/make_openapi.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cd88d7561b87edcda3c59f9d1d8e581fae0550e3 Binary files /dev/null and b/src/__pycache__/make_openapi.cpython-39.pyc differ diff --git a/src/__pycache__/parquet_writer.cpython-39.pyc b/src/__pycache__/parquet_writer.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d3e91861b9196bde2a9154b42f798a0d8a4b6a57 Binary files /dev/null and b/src/__pycache__/parquet_writer.cpython-39.pyc differ diff --git a/src/__pycache__/router_concept.cpython-39.pyc b/src/__pycache__/router_concept.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..278b71bf9e58c660fa25ef1ab0360101b81fcec0 Binary files /dev/null and b/src/__pycache__/router_concept.cpython-39.pyc differ diff --git a/src/__pycache__/router_data_loader.cpython-39.pyc b/src/__pycache__/router_data_loader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aa20068017407b3cd81360980d839bf72e58a97f Binary files /dev/null and b/src/__pycache__/router_data_loader.cpython-39.pyc differ diff --git a/src/__pycache__/router_dataset.cpython-39.pyc b/src/__pycache__/router_dataset.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2967caeb4c0dd53b12e9f2087ad300fe918eda10 Binary files /dev/null and b/src/__pycache__/router_dataset.cpython-39.pyc differ diff --git a/src/__pycache__/router_dataset_manager.cpython-39.pyc b/src/__pycache__/router_dataset_manager.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55d31b52a1d29c96a2548e8c938dc45b840bd16b Binary files /dev/null and b/src/__pycache__/router_dataset_manager.cpython-39.pyc differ diff --git a/src/__pycache__/router_embed_fn.cpython-39.pyc b/src/__pycache__/router_embed_fn.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8d66a85f8e30cb36b1e2d00f3ddff166c425cb2 Binary files /dev/null and b/src/__pycache__/router_embed_fn.cpython-39.pyc differ diff --git a/src/__pycache__/router_embedding.cpython-39.pyc b/src/__pycache__/router_embedding.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b650f8abc09080a70311acd3c18bb1123b441c27 Binary files /dev/null and b/src/__pycache__/router_embedding.cpython-39.pyc differ diff --git a/src/__pycache__/router_signal.cpython-39.pyc b/src/__pycache__/router_signal.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..43d4ca48838e024e89b4fd1da3bbc3ce0f42157a Binary files /dev/null and b/src/__pycache__/router_signal.cpython-39.pyc differ diff --git a/src/__pycache__/router_tasks.cpython-39.pyc b/src/__pycache__/router_tasks.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2227aaca93d43343f27e470856d5d38fc37897a4 Binary files /dev/null and b/src/__pycache__/router_tasks.cpython-39.pyc differ diff --git a/src/__pycache__/router_utils.cpython-39.pyc b/src/__pycache__/router_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d3b157734a51aa45dcba194fc2f26af34ac39c0 Binary files /dev/null and b/src/__pycache__/router_utils.cpython-39.pyc differ diff --git a/src/__pycache__/schema.cpython-39-pytest-7.2.2.pyc b/src/__pycache__/schema.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c13611821f0fff84538c70bebe110df2e9f6b8bd Binary files /dev/null and b/src/__pycache__/schema.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/__pycache__/schema.cpython-39.pyc b/src/__pycache__/schema.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b7d7bb8848774f458bf5cc98563848261a4e0af6 Binary files /dev/null and b/src/__pycache__/schema.cpython-39.pyc differ diff --git a/src/__pycache__/schema_test.cpython-39-pytest-7.2.2.pyc b/src/__pycache__/schema_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1f7366cea5c16d5614c80bf1536f24221a914533 Binary files /dev/null and b/src/__pycache__/schema_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/__pycache__/schema_test.cpython-39-pytest-7.3.1.pyc b/src/__pycache__/schema_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d3b1d6b8c8df4569923b74fb1bf78b7b41f0240 Binary files /dev/null and b/src/__pycache__/schema_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/__pycache__/server.cpython-39.pyc b/src/__pycache__/server.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eca971f3ee6420a3f8f3d5d1ab9a32e8c7a4383d Binary files /dev/null and b/src/__pycache__/server.cpython-39.pyc differ diff --git a/src/__pycache__/server_api.cpython-39.pyc b/src/__pycache__/server_api.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15e7e5af8fe1f1313c39f428616e4b3f5f71870f Binary files /dev/null and b/src/__pycache__/server_api.cpython-39.pyc differ diff --git a/src/__pycache__/server_concept_test.cpython-39-pytest-7.3.1.pyc b/src/__pycache__/server_concept_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d03ad1f4887da41b6fde14498e6145428d8a188c Binary files /dev/null and b/src/__pycache__/server_concept_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/__pycache__/server_concepts_test.cpython-39-pytest-7.3.1.pyc b/src/__pycache__/server_concepts_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a795744d63eac4f1e3460ea47cb63d59eaec6be2 Binary files /dev/null and b/src/__pycache__/server_concepts_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/__pycache__/server_test.cpython-39-pytest-7.2.2.pyc b/src/__pycache__/server_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55316f5c881a76ee8737c00d6b549047cb16ee60 Binary files /dev/null and b/src/__pycache__/server_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/__pycache__/server_test.cpython-39-pytest-7.3.1.pyc b/src/__pycache__/server_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..413df182d3916e56b9940169e54b2e7019045978 Binary files /dev/null and b/src/__pycache__/server_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/__pycache__/tasks.cpython-39.pyc b/src/__pycache__/tasks.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0728a77455908feddd01dcaae621903785d91b34 Binary files /dev/null and b/src/__pycache__/tasks.cpython-39.pyc differ diff --git a/src/__pycache__/tasks_test.cpython-39-pytest-7.2.2.pyc b/src/__pycache__/tasks_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e19ab026dfb1c787df00703ffdd9ebd82d64aec7 Binary files /dev/null and b/src/__pycache__/tasks_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/__pycache__/tasks_test.cpython-39-pytest-7.3.1.pyc b/src/__pycache__/tasks_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ba836ce694729977e70be296fd3a7dc225619966 Binary files /dev/null and b/src/__pycache__/tasks_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/__pycache__/test_utils.cpython-39-pytest-7.2.2.pyc b/src/__pycache__/test_utils.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d68625dc3f14db6b24d8a61f72852a62e667e1d5 Binary files /dev/null and b/src/__pycache__/test_utils.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/__pycache__/test_utils.cpython-39-pytest-7.3.1.pyc b/src/__pycache__/test_utils.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..02b54b6463593ae3cd0e0426a597b63fdc3d1e8e Binary files /dev/null and b/src/__pycache__/test_utils.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/__pycache__/utils.cpython-39.pyc b/src/__pycache__/utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4bc42b47997c33ac0d4a7dd9c09fbce4ad64662c Binary files /dev/null and b/src/__pycache__/utils.cpython-39.pyc differ diff --git a/src/concepts/__init__.py b/src/concepts/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/concepts/__pycache__/__init__.cpython-39.pyc b/src/concepts/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..21fd47c7bc2f50f983799c8a84223eda423e4bdb Binary files /dev/null and b/src/concepts/__pycache__/__init__.cpython-39.pyc differ diff --git a/src/concepts/__pycache__/concept.cpython-39.pyc b/src/concepts/__pycache__/concept.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c2cf10f5b2480d5644cca2fdcc4b02a941f08fda Binary files /dev/null and b/src/concepts/__pycache__/concept.cpython-39.pyc differ diff --git a/src/concepts/__pycache__/concept_test.cpython-39-pytest-7.3.1.pyc b/src/concepts/__pycache__/concept_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6593fffc77e3d0d6134ef203323ccd122570580b Binary files /dev/null and b/src/concepts/__pycache__/concept_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/concepts/__pycache__/db_concept.cpython-39.pyc b/src/concepts/__pycache__/db_concept.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..341a11229cc9cd647dfea5286fd3e7abb7da6f58 Binary files /dev/null and b/src/concepts/__pycache__/db_concept.cpython-39.pyc differ diff --git a/src/concepts/__pycache__/db_concept_test.cpython-39-pytest-7.2.2.pyc b/src/concepts/__pycache__/db_concept_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..22f86e597f558cf34c44ec2cbebcd1222a96f785 Binary files /dev/null and b/src/concepts/__pycache__/db_concept_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/concepts/__pycache__/db_concept_test.cpython-39-pytest-7.3.1.pyc b/src/concepts/__pycache__/db_concept_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ab571a315f56f99109e5a82843ced2a3b7c986e Binary files /dev/null and b/src/concepts/__pycache__/db_concept_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/concepts/concept.py b/src/concepts/concept.py new file mode 100644 index 0000000000000000000000000000000000000000..07727b71fca0b2ce88556ee69f627f0d237cc7ae --- /dev/null +++ b/src/concepts/concept.py @@ -0,0 +1,271 @@ +"""Defines the concept and the concept models.""" +import random +from typing import Iterable, Literal, Optional, Union + +import numpy as np +from pydantic import BaseModel, validator +from sklearn.exceptions import NotFittedError +from sklearn.linear_model import LogisticRegression + +from ..db_manager import get_dataset +from ..embeddings.embedding import get_embed_fn +from ..schema import Path, RichData, SignalInputType, normalize_path +from ..signals.signal import TextEmbeddingSignal, get_signal_cls +from ..utils import DebugTimer + +LOCAL_CONCEPT_NAMESPACE = 'local' + +# Number of randomly sampled negative examples to use for training. This is used to obtain a more +# balanced model that works with a specific dataset. +DEFAULT_NUM_NEG_EXAMPLES = 300 + + +class ConceptColumnInfo(BaseModel): + """Information about a dataset associated with a concept.""" + # Namespace of the dataset. + namespace: str + # Name of the dataset. + name: str + # Path holding the text to use for negative examples. + path: Path + + num_negative_examples = DEFAULT_NUM_NEG_EXAMPLES + + +class ExampleOrigin(BaseModel): + """The origin of an example.""" + # The namespace that holds the dataset. + dataset_namespace: str + + # The name of the dataset. + dataset_name: str + + # The id of row in the dataset that the example was added from. + dataset_row_id: str + + +DraftId = Union[Literal['main'], str] +DRAFT_MAIN = 'main' + + +class ExampleIn(BaseModel): + """An example in a concept without the id (used for adding new examples).""" + label: bool + text: Optional[str] + img: Optional[bytes] + origin: Optional[ExampleOrigin] + # The name of the draft to put the example in. If None, puts it in the main draft. + draft: Optional[DraftId] = DRAFT_MAIN + + @validator('text') + def parse_text(cls, text: str) -> str: + """Fixes surrogate errors in text: https://github.com/ijl/orjson/blob/master/README.md#str .""" + return text.encode('utf-8', 'replace').decode('utf-8') + + +class Example(ExampleIn): + """A single example in a concept used for training a concept model.""" + id: str + + +class Concept(BaseModel): + """A concept is a collection of examples.""" + # The namespace of the concept. + namespace: str = LOCAL_CONCEPT_NAMESPACE + # The name of the concept. + concept_name: str + # The type of the data format that this concept represents. + type: SignalInputType + data: dict[str, Example] + version: int = 0 + + def drafts(self) -> list[DraftId]: + """Gets all the drafts for the concept.""" + drafts: set[DraftId] = set([DRAFT_MAIN]) # Always return the main draft. + for example in self.data.values(): + if example.draft: + drafts.add(example.draft) + return list(sorted(drafts)) + + +class LogisticEmbeddingModel(BaseModel): + """A model that uses logistic regression with embeddings.""" + + class Config: + arbitrary_types_allowed = True + underscore_attrs_are_private = True + + version: int = -1 + + # The following fields are excluded from JSON serialization, but still pickleable. + # See `notebooks/Toxicity.ipynb` for an example of training a concept model. + _model: LogisticRegression = LogisticRegression( + class_weight=None, C=30, tol=1e-5, warm_start=True, max_iter=1_000, n_jobs=-1) + + def score_embeddings(self, embeddings: np.ndarray) -> np.ndarray: + """Get the scores for the provided embeddings.""" + try: + return self._model.predict_proba(embeddings)[:, 1] + except NotFittedError: + return np.random.rand(len(embeddings)) + + def fit(self, embeddings: np.ndarray, labels: list[bool], sample_weights: list[float]) -> None: + """Fit the model to the provided embeddings and labels.""" + if len(set(labels)) < 2: + return + if len(labels) != len(embeddings): + raise ValueError( + f'Length of embeddings ({len(embeddings)}) must match length of labels ({len(labels)})') + if len(sample_weights) != len(labels): + raise ValueError( + f'Length of sample_weights ({len(sample_weights)}) must match length of labels ' + f'({len(labels)})') + self._model.fit(embeddings, labels, sample_weights) + + +def draft_examples(concept: Concept, draft: DraftId) -> dict[str, Example]: + """Get the examples in the provided draft by overriding the main draft.""" + draft_examples: dict[str, dict[str, Example]] = {} + for id, example in concept.data.items(): + draft_examples.setdefault(example.draft or DRAFT_MAIN, {})[example.id] = example + + if draft == DRAFT_MAIN: + return draft_examples.get(DRAFT_MAIN, {}) + + if draft not in draft_examples: + raise ValueError( + f'Draft {draft} not found in concept. Found drafts: {list(draft_examples.keys())}') + + # Map the text of the draft to its id so we can dedup with main. + draft_text_ids = {example.text: id for id, example in draft_examples[draft].items()} + + # Write each of examples from main to the draft examples only if the text does not appear in the + # draft. + for id, example in draft_examples[DRAFT_MAIN].items(): + if example.text not in draft_text_ids: + draft_examples[draft][id] = example + + return draft_examples[draft] + + +class ConceptModel(BaseModel): + """A concept model. Stores all concept model drafts and manages syncing.""" + # The concept that this model is for. + namespace: str + concept_name: str + + # The name of the embedding for this model. + embedding_name: str + version: int = -1 + + # The following fields are excluded from JSON serialization, but still pickleable. + # Maps a concept id to the embeddings. + _embeddings: dict[str, np.ndarray] = {} + _logistic_models: dict[DraftId, LogisticEmbeddingModel] = {} + _negative_vectors: Optional[np.ndarray] = None + + class Config: + arbitrary_types_allowed = True + underscore_attrs_are_private = True + + def calibrate_on_dataset(self, column_info: ConceptColumnInfo) -> None: + """Calibrate the model on the embeddings in the provided vector store.""" + db = get_dataset(column_info.namespace, column_info.name) + vector_store = db.get_vector_store(normalize_path(column_info.path)) + keys = vector_store.keys() + num_samples = min(column_info.num_negative_examples, len(keys)) + sample_keys = random.sample(keys, num_samples) + self._negative_vectors = vector_store.get(sample_keys) + + def score_embeddings(self, draft: DraftId, embeddings: np.ndarray) -> np.ndarray: + """Get the scores for the provided embeddings.""" + return self._get_logistic_model(draft).score_embeddings(embeddings) + + def score(self, draft: DraftId, examples: Iterable[RichData]) -> list[float]: + """Get the scores for the provided examples.""" + embedding_signal = get_signal_cls(self.embedding_name)() + if not isinstance(embedding_signal, TextEmbeddingSignal): + raise ValueError(f'Only text embedding signals are currently supported for concepts. ' + f'"{self.embedding_name}" is a {type(embedding_signal)}.') + + embed_fn = get_embed_fn(self.embedding_name) + embeddings = np.array(embed_fn(examples)) + return self._get_logistic_model(draft).score_embeddings(embeddings).tolist() + + def coef(self, draft: DraftId) -> np.ndarray: + """Get the coefficients of the underlying ML model.""" + return self._get_logistic_model(draft)._model.coef_.reshape(-1) + + def _get_logistic_model(self, draft: DraftId) -> LogisticEmbeddingModel: + """Get the logistic model for the provided draft.""" + if draft not in self._logistic_models: + self._logistic_models[draft] = LogisticEmbeddingModel( + namespace=self.namespace, + concept_name=self.concept_name, + embedding_name=self.embedding_name, + version=-1) + return self._logistic_models[draft] + + def sync(self, concept: Concept) -> bool: + """Update the model with the latest labeled concept data.""" + if concept.version == self.version: + # The model is up to date. + return False + + concept_path = (f'{self.namespace}/{self.concept_name}/' + f'{self.embedding_name}') + with DebugTimer(f'Computing embeddings for "{concept_path}"'): + self._compute_embeddings(concept) + + # Fit each of the drafts, sort by draft name for deterministic behavior. + for draft in concept.drafts(): + examples = draft_examples(concept, draft) + embeddings = np.array([self._embeddings[id] for id in examples.keys()]) + labels = [example.label for example in examples.values()] + num_pos_labels = len([x for x in labels if x]) + num_neg_labels = len([x for x in labels if not x]) + sample_weights = [(1.0 / num_pos_labels if x else 1.0 / num_neg_labels) for x in labels] + if self._negative_vectors is not None: + num_implicit_labels = len(self._negative_vectors) + embeddings = np.concatenate([self._negative_vectors, embeddings]) + labels = [False] * num_implicit_labels + labels + sample_weights = [1.0 / num_implicit_labels] * num_implicit_labels + sample_weights + + model = self._get_logistic_model(draft) + with DebugTimer(f'Fitting model for "{concept_path}"'): + model.fit(embeddings, labels, sample_weights) + + # Synchronize the model version with the concept version. + model.version = concept.version + + # Synchronize the model version with the concept version. + self.version = concept.version + + return True + + def _compute_embeddings(self, concept: Concept) -> None: + embedding_signal = get_signal_cls(self.embedding_name)() + if not isinstance(embedding_signal, TextEmbeddingSignal): + raise ValueError(f'Only text embedding signals are currently supported for concepts. ' + f'"{self.embedding_name}" is a {type(embedding_signal)}.') + + embed_fn = get_embed_fn(self.embedding_name) + concept_embeddings: dict[str, np.ndarray] = {} + + # Compute the embeddings for the examples with cache miss. + texts_of_missing_embeddings: dict[str, str] = {} + for id, example in concept.data.items(): + if id in self._embeddings: + # Cache hit. + concept_embeddings[id] = self._embeddings[id] + else: + # Cache miss. + # TODO(smilkov): Support images. + texts_of_missing_embeddings[id] = example.text or '' + + missing_ids = texts_of_missing_embeddings.keys() + missing_embeddings = embed_fn(list(texts_of_missing_embeddings.values())) + + for id, embedding in zip(missing_ids, missing_embeddings): + concept_embeddings[id] = embedding + self._embeddings = concept_embeddings diff --git a/src/concepts/concept_test.py b/src/concepts/concept_test.py new file mode 100644 index 0000000000000000000000000000000000000000..57b21944ffe7e28eb15f9bced2d3b6b17254bdc6 --- /dev/null +++ b/src/concepts/concept_test.py @@ -0,0 +1,84 @@ +"""Tests for concept.""" + +from ..schema import SignalInputType +from .concept import DRAFT_MAIN, Concept, Example, draft_examples + + +def test_draft_examples_main() -> None: + concept = Concept( + namespace='test_namespace', + concept_name='test_name', + type=SignalInputType.TEXT, + data={ + '0': Example(id='0', label=True, text='hello'), + '1': Example(id='1', label=False, text='world'), + }, + version=0) + + assert draft_examples(concept, DRAFT_MAIN) == { + '0': Example(id='0', label=True, text='hello'), + '1': Example(id='1', label=False, text='world'), + } + + +def test_draft_examples_simple_draft() -> None: + concept = Concept( + namespace='test_namespace', + concept_name='test_name', + type=SignalInputType.TEXT, + data={ + '0': Example(id='0', label=True, text='hello'), + '1': Example(id='1', label=False, text='world'), + '2': Example(id='2', label=True, text='hello draft 1', draft='draft1'), + '3': Example(id='3', label=False, text='world draft 1', draft='draft1'), + '4': Example(id='4', label=True, text='hello draft 2', draft='draft2'), + '5': Example(id='5', label=False, text='world draft 2', draft='draft2'), + }, + version=0) + + assert draft_examples(concept, DRAFT_MAIN) == { + '0': Example(id='0', label=True, text='hello'), + '1': Example(id='1', label=False, text='world'), + } + + assert draft_examples(concept, 'draft1') == { + '0': Example(id='0', label=True, text='hello'), + '1': Example(id='1', label=False, text='world'), + '2': Example(id='2', label=True, text='hello draft 1', draft='draft1'), + '3': Example(id='3', label=False, text='world draft 1', draft='draft1'), + } + + assert draft_examples(concept, 'draft2') == { + '0': Example(id='0', label=True, text='hello'), + '1': Example(id='1', label=False, text='world'), + '4': Example(id='4', label=True, text='hello draft 2', draft='draft2'), + '5': Example(id='5', label=False, text='world draft 2', draft='draft2'), + } + + +def test_draft_examples_draft_dedupe() -> None: + concept = Concept( + namespace='test_namespace', + concept_name='test_name', + type=SignalInputType.TEXT, + data={ + '0': Example(id='0', label=True, text='hello'), + '1': Example(id='1', label=False, text='world'), + # Duplicate text. + '2': Example(id='2', label=False, text='hello', draft='draft'), + '3': Example(id='3', label=False, text='world draft', draft='draft'), + }, + version=0) + + assert draft_examples(concept, DRAFT_MAIN) == { + '0': Example(id='0', label=True, text='hello'), + '1': Example(id='1', label=False, text='world'), + } + + assert draft_examples(concept, 'draft') == { + # 0 is deduplicated with 2. + '1': Example(id='1', label=False, text='world'), + # 2 overrides 0's label. + '2': Example(id='2', label=False, text='hello', draft='draft'), + '3': Example(id='3', label=False, text='world draft', draft='draft'), + } diff --git a/src/concepts/db_concept.py b/src/concepts/db_concept.py new file mode 100644 index 0000000000000000000000000000000000000000..876804f02890e17dee4ef9826ffa181c69146a6d --- /dev/null +++ b/src/concepts/db_concept.py @@ -0,0 +1,391 @@ +"""The concept database.""" + +import abc +import glob +import os +import pickle +import shutil + +# NOTE: We have to import the module for uuid so it can be mocked. +import uuid +from typing import List, Optional, Union, cast + +from pydantic import BaseModel +from typing_extensions import override + +from ..config import data_path +from ..schema import PATH_WILDCARD, SignalInputType, normalize_path +from ..signals.signal import get_signal_cls +from ..utils import DATASETS_DIR_NAME, delete_file, file_exists, get_dataset_output_dir, open_file +from .concept import ( + DRAFT_MAIN, + Concept, + ConceptColumnInfo, + ConceptModel, + DraftId, + Example, + ExampleIn, +) + +DATASET_CONCEPTS_DIR = '.concepts' +CONCEPT_JSON_FILENAME = 'concept.json' + + +class ConceptInfo(BaseModel): + """Information about a concept.""" + namespace: str + name: str + type: SignalInputType + drafts: list[DraftId] + + +class ConceptUpdate(BaseModel): + """An update to a concept.""" + # List of examples to be inserted. + insert: Optional[list[ExampleIn]] = [] + + # List of examples to be updated. + update: Optional[list[Example]] = [] + + # The ids of the examples to be removed. + remove: Optional[list[str]] = [] + + +class ConceptDB(abc.ABC): + """Interface for the concept database.""" + + @abc.abstractmethod + def list(self) -> list[ConceptInfo]: + """List all the concepts.""" + pass + + @abc.abstractmethod + def get(self, namespace: str, name: str) -> Optional[Concept]: + """Return a concept or None if there isn't one.""" + pass + + @abc.abstractmethod + def create(self, namespace: str, name: str, type: SignalInputType) -> Concept: + """Create a concept.""" + pass + + @abc.abstractmethod + def edit(self, namespace: str, name: str, change: ConceptUpdate) -> Concept: + """Edit a concept. If the concept doesn't exist, throw an error.""" + pass + + @abc.abstractmethod + def remove(self, namespace: str, name: str) -> None: + """Remove a concept.""" + pass + + @abc.abstractmethod + def merge_draft(self, namespace: str, name: str, draft: DraftId) -> Concept: + """Merge a draft concept..""" + pass + + +class ConceptModelDB(abc.ABC): + """Interface for the concept model database.""" + + _concept_db: ConceptDB + + def __init__(self, concept_db: ConceptDB) -> None: + self._concept_db = concept_db + + @abc.abstractmethod + def create(self, + namespace: str, + concept_name: str, + embedding_name: str, + column_info: Optional[ConceptColumnInfo] = None) -> ConceptModel: + """Create the concept model.""" + pass + + @abc.abstractmethod + def get(self, + namespace: str, + concept_name: str, + embedding_name: str, + column_info: Optional[ConceptColumnInfo] = None) -> Optional[ConceptModel]: + """Get the model associated with the provided concept the embedding. + + Returns None if the model does not exist. + """ + pass + + @abc.abstractmethod + def _save(self, model: ConceptModel, column_info: Optional[ConceptColumnInfo]) -> None: + """Save the concept model.""" + pass + + def in_sync(self, model: ConceptModel) -> bool: + """Return True if the model is up to date with the concept.""" + concept = self._concept_db.get(model.namespace, model.concept_name) + if not concept: + raise ValueError(f'Concept "{model.namespace}/{model.concept_name}" does not exist.') + return concept.version == model.version + + def sync(self, model: ConceptModel, column_info: Optional[ConceptColumnInfo]) -> bool: + """Sync the concept model. Returns true if the model was updated.""" + concept = self._concept_db.get(model.namespace, model.concept_name) + if not concept: + raise ValueError(f'Concept "{model.namespace}/{model.concept_name}" does not exist.') + model_updated = model.sync(concept) + self._save(model, column_info) + return model_updated + + @abc.abstractmethod + def remove(self, + namespace: str, + concept_name: str, + embedding_name: str, + column_info: Optional[ConceptColumnInfo] = None) -> None: + """Remove the model of a concept.""" + pass + + @abc.abstractmethod + def remove_all(self, namespace: str, concept_name: str) -> None: + """Remove all the models associated with a concept.""" + pass + + +class DiskConceptModelDB(ConceptModelDB): + """Interface for the concept model database.""" + + @override + def create(self, + namespace: str, + concept_name: str, + embedding_name: str, + column_info: Optional[ConceptColumnInfo] = None) -> ConceptModel: + if self.get(namespace, concept_name, embedding_name, column_info): + raise ValueError('Concept model already exists.') + + return ConceptModel( + namespace=namespace, + concept_name=concept_name, + embedding_name=embedding_name, + version=-1, + column_info=column_info) + + @override + def get(self, + namespace: str, + concept_name: str, + embedding_name: str, + column_info: Optional[ConceptColumnInfo] = None) -> Optional[ConceptModel]: + # Make sure the concept exists. + concept = self._concept_db.get(namespace, concept_name) + if not concept: + raise ValueError(f'Concept "{namespace}/{concept_name}" does not exist.') + + # Make sure that the embedding signal exists. + if not get_signal_cls(embedding_name): + raise ValueError(f'Embedding signal "{embedding_name}" not found in the registry.') + + concept_model_path = _concept_model_path(namespace, concept_name, embedding_name, column_info) + if not file_exists(concept_model_path): + return None + + with open_file(concept_model_path, 'rb') as f: + return pickle.load(f) + + def _save(self, model: ConceptModel, column_info: Optional[ConceptColumnInfo]) -> None: + """Save the concept model.""" + concept_model_path = _concept_model_path(model.namespace, model.concept_name, + model.embedding_name, column_info) + with open_file(concept_model_path, 'wb') as f: + pickle.dump(model, f) + + @override + def remove(self, + namespace: str, + concept_name: str, + embedding_name: str, + column_info: Optional[ConceptColumnInfo] = None) -> None: + concept_model_path = _concept_model_path(namespace, concept_name, embedding_name, column_info) + + if not file_exists(concept_model_path): + raise ValueError(f'Concept model {namespace}/{concept_name}/{embedding_name} does not exist.') + + delete_file(concept_model_path) + + @override + def remove_all(self, namespace: str, concept_name: str) -> None: + datasets_path = os.path.join(data_path(), DATASETS_DIR_NAME) + # Skip if 'datasets' doesn't exist. + if not os.path.isdir(datasets_path): + return + + dirs = glob.iglob( + os.path.join(datasets_path, '**', DATASET_CONCEPTS_DIR, namespace, concept_name), + recursive=True) + for dir in dirs: + shutil.rmtree(dir, ignore_errors=True) + + +def _concept_output_dir(namespace: str, name: str) -> str: + """Return the output directory for a given concept.""" + return os.path.join(data_path(), 'concept', namespace, name) + + +def _concept_json_path(namespace: str, name: str) -> str: + return os.path.join(_concept_output_dir(namespace, name), CONCEPT_JSON_FILENAME) + + +def _concept_model_path(namespace: str, + concept_name: str, + embedding_name: str, + column_info: Optional[ConceptColumnInfo] = None) -> str: + if not column_info: + return os.path.join(_concept_output_dir(namespace, concept_name), f'{embedding_name}.pkl') + + dataset_dir = get_dataset_output_dir(data_path(), column_info.namespace, column_info.name) + path_tuple = normalize_path(column_info.path) + path_without_wildcards = (p for p in path_tuple if p != PATH_WILDCARD) + path_dir = os.path.join(dataset_dir, *path_without_wildcards) + return os.path.join(path_dir, DATASET_CONCEPTS_DIR, namespace, concept_name, + f'{embedding_name}.pkl') + + +class DiskConceptDB(ConceptDB): + """A concept database.""" + + @override + def list(self) -> list[ConceptInfo]: + # Read the concepts and return a ConceptInfo containing the namespace and name. + concept_infos = [] + for root, _, files in os.walk(data_path()): + for file in files: + if file == CONCEPT_JSON_FILENAME: + namespace, name = root.split('/')[-2:] + concept = cast(Concept, self.get(namespace, name)) + + concept_infos.append( + ConceptInfo( + namespace=namespace, + name=name, + # TODO(nsthorat): Generalize this to images. + type=SignalInputType.TEXT, + drafts=concept.drafts())) + + return concept_infos + + @override + def get(self, namespace: str, name: str) -> Optional[Concept]: + concept_json_path = _concept_json_path(namespace, name) + + if not file_exists(concept_json_path): + return None + + with open_file(concept_json_path) as f: + return Concept.parse_raw(f.read()) + + @override + def create(self, namespace: str, name: str, type: SignalInputType) -> Concept: + """Create a concept.""" + concept_json_path = _concept_json_path(namespace, name) + if file_exists(concept_json_path): + raise ValueError(f'Concept with namespace "{namespace}" and name "{name}" already exists.') + + concept = Concept(namespace=namespace, concept_name=name, type=type, data={}, version=0) + self._save(concept) + return concept + + def _validate_examples(self, examples: List[Union[ExampleIn, Example]], + type: SignalInputType) -> None: + for example in examples: + inferred_type = 'text' if example.text else 'img' + if inferred_type != type: + raise ValueError(f'Example type "{inferred_type}" does not match concept type "{type}".') + + @override + def edit(self, namespace: str, name: str, change: ConceptUpdate) -> Concept: + concept_json_path = _concept_json_path(namespace, name) + + if not file_exists(concept_json_path): + raise ValueError(f'Concept with namespace "{namespace}" and name "{name}" does not exist. ' + 'Please call create() first.') + + inserted_points = change.insert or [] + updated_points = change.update or [] + removed_points = change.remove or [] + + concept = cast(Concept, self.get(namespace, name)) + + self._validate_examples([*inserted_points, *updated_points], concept.type) + + for remove_example in removed_points: + if remove_example not in concept.data: + raise ValueError(f'Example with id "{remove_example}" does not exist.') + concept.data.pop(remove_example) + + for example in inserted_points: + id = uuid.uuid4().hex + concept.data[id] = Example(id=id, **example.dict()) + + for example in updated_points: + if example.id not in concept.data: + raise ValueError(f'Example with id "{example.id}" does not exist.') + + # Remove the old example and make a new one with a new id to keep it functional. + concept.data.pop(example.id) + concept.data[example.id] = example.copy() + + concept.version += 1 + + self._save(concept) + + return concept + + def _save(self, concept: Concept) -> None: + concept_json_path = _concept_json_path(concept.namespace, concept.concept_name) + + with open_file(concept_json_path, 'w') as f: + f.write(concept.json(exclude_none=True, indent=2, exclude_defaults=True)) + + @override + def remove(self, namespace: str, name: str) -> None: + concept_dir = _concept_output_dir(namespace, name) + + if not file_exists(concept_dir): + raise ValueError(f'Concept with namespace "{namespace}" and name "{name}" does not exist.') + + shutil.rmtree(concept_dir, ignore_errors=True) + + @override + def merge_draft(self, namespace: str, name: str, draft: DraftId) -> Concept: + """Merge a draft concept..""" + concept = self.get(namespace, name) + if not concept: + raise ValueError(f'Concept with namespace "{namespace}" and name "{name}" does not exist.') + + if draft == DRAFT_MAIN: + return concept + + # Map the text of examples in main so we can remove them if they are duplicates. + main_text_ids: dict[Optional[str], str] = { + example.text: id for id, example in concept.data.items() if example.draft == DRAFT_MAIN + } + + draft_examples: dict[str, Example] = { + id: example for id, example in concept.data.items() if example.draft == draft + } + for example in draft_examples.values(): + example.draft = DRAFT_MAIN + # Remove duplicates in main. + main_text_id = main_text_ids.get(example.text) + if main_text_id: + del concept.data[main_text_id] + + concept.version += 1 + + self._save(concept) + + return concept + + +# A singleton concept database. +DISK_CONCEPT_DB = DiskConceptDB() +DISK_CONCEPT_MODEL_DB = DiskConceptModelDB(DISK_CONCEPT_DB) diff --git a/src/concepts/db_concept_test.py b/src/concepts/db_concept_test.py new file mode 100644 index 0000000000000000000000000000000000000000..c1e0e2e5ac6ab54a007d6f42db338afd66be171e --- /dev/null +++ b/src/concepts/db_concept_test.py @@ -0,0 +1,600 @@ +"""Tests for the the database concept.""" + +from pathlib import Path +from typing import Generator, Iterable, Type, cast + +import numpy as np +import pytest +from pytest_mock import MockerFixture +from typing_extensions import override + +from ..config import CONFIG +from ..data.dataset_duckdb import DatasetDuckDB +from ..data.dataset_utils import lilac_embedding +from ..db_manager import set_default_dataset_cls +from ..schema import Item, RichData, SignalInputType +from ..signals.signal import TextEmbeddingSignal, clear_signal_registry, register_signal +from .concept import ( + DRAFT_MAIN, + Concept, + ConceptModel, + DraftId, + Example, + ExampleIn, + LogisticEmbeddingModel, +) +from .db_concept import ( + ConceptDB, + ConceptInfo, + ConceptModelDB, + ConceptUpdate, + DiskConceptDB, + DiskConceptModelDB, +) + +ALL_CONCEPT_DBS = [DiskConceptDB] +ALL_CONCEPT_MODEL_DBS = [DiskConceptModelDB] + + +@pytest.fixture(autouse=True) +def set_data_path(tmp_path: Path, mocker: MockerFixture) -> None: + mocker.patch.dict(CONFIG, {'LILAC_DATA_PATH': str(tmp_path)}) + + +EMBEDDING_MAP: dict[str, list[float]] = { + 'not in concept': [1.0, 0.0, 0.0], + 'in concept': [0.9, 0.1, 0.0], + 'a new data point': [0.1, 0.2, 0.3], + 'a true draft point': [0.4, 0.5, 0.6], + 'a false draft point': [0.7, 0.8, 0.9], +} + + +class TestEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Embed the examples, use a hashmap to the vector for simplicity.""" + for example in data: + if example not in EMBEDDING_MAP: + raise ValueError(f'Example "{str(example)}" not in embedding map') + yield [lilac_embedding(0, len(example), np.array(EMBEDDING_MAP[cast(str, example)]))] + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Generator: + set_default_dataset_cls(DatasetDuckDB) + register_signal(TestEmbedding) + + # Unit test runs. + yield + + # Teardown. + clear_signal_registry() + + +@pytest.mark.parametrize('db_cls', ALL_CONCEPT_DBS) +class ConceptDBSuite: + + def test_create_concept(self, db_cls: Type[ConceptDB]) -> None: + db = db_cls() + db.create(namespace='test', name='test_concept', type=SignalInputType.TEXT) + + assert db.list() == [ + ConceptInfo( + namespace='test', name='test_concept', type=SignalInputType.TEXT, drafts=[DRAFT_MAIN]) + ] + + # Make sure list with drafts relects the drafts. + train_data = [ + ExampleIn(label=False, text='not in concept', draft='test_draft'), + ExampleIn(label=True, text='in concept', draft='test_draft') + ] + db.edit('test', 'test_concept', ConceptUpdate(insert=train_data)) + + assert db.list() == [ + ConceptInfo( + namespace='test', + name='test_concept', + type=SignalInputType.TEXT, + drafts=[DRAFT_MAIN, 'test_draft']) + ] + + def test_add_example(self, db_cls: Type[ConceptDB]) -> None: + db = db_cls() + namespace = 'test' + concept_name = 'test_concept' + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept') + ] + db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + concept = db.get(namespace, concept_name) + + assert concept is not None + + keys = list(concept.data.keys()) + assert concept == Concept( + namespace=namespace, + concept_name=concept_name, + type=SignalInputType.TEXT, + data={ + keys[0]: Example(id=keys[0], label=False, text='not in concept'), + keys[1]: Example(id=keys[1], label=True, text='in concept') + }, + version=1) + + # Add a draft labels. + db.edit( + namespace, concept_name, + ConceptUpdate(insert=[ + ExampleIn(label=False, text='really not in concept', draft='test_draft'), + ExampleIn(label=True, text='really in concept', draft='test_draft') + ])) + + concept = db.get(namespace, concept_name) + assert concept is not None + + keys = list(concept.data.keys()) + assert concept == Concept( + namespace=namespace, + concept_name=concept_name, + type=SignalInputType.TEXT, + data={ + keys[0]: Example(id=keys[0], label=False, text='not in concept'), + keys[1]: Example(id=keys[1], label=True, text='in concept'), + keys[2]: Example(id=keys[2], label=False, text='really not in concept', draft='test_draft'), + keys[3]: Example(id=keys[3], label=True, text='really in concept', draft='test_draft'), + }, + version=2) + + def test_update_concept(self, db_cls: Type[ConceptDB]) -> None: + db = db_cls() + namespace = 'test' + concept_name = 'test_concept' + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept'), + ExampleIn(label=False, text='really not in concept', draft='test_draft'), + ExampleIn(label=True, text='really in concept', draft='test_draft') + ] + db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + concept = db.get(namespace, concept_name) + assert concept is not None + + keys = list(concept.data.keys()) + # Edit the first example. + db.edit( + namespace, concept_name, + ConceptUpdate(update=[Example(id=keys[0], label=False, text='not in concept, updated')])) + concept = db.get(namespace, concept_name) + + assert concept == Concept( + namespace=namespace, + concept_name=concept_name, + type=SignalInputType.TEXT, + data={ + # The first example should be updated alone. + keys[0]: Example(id=keys[0], label=False, text='not in concept, updated'), + keys[1]: Example(id=keys[1], label=True, text='in concept'), + # Drafts are untouched. + keys[2]: Example(id=keys[2], label=False, text='really not in concept', draft='test_draft'), + keys[3]: Example(id=keys[3], label=True, text='really in concept', draft='test_draft'), + }, + version=2) + + # Edit the second example on the draft. + db.edit( + namespace, concept_name, + ConceptUpdate(update=[ + Example(id=keys[3], label=True, text='really in concept, updated', draft='test_draft') + ])) + concept = db.get(namespace, concept_name) + + assert concept == Concept( + namespace=namespace, + concept_name=concept_name, + type=SignalInputType.TEXT, + data={ + # Main remains the same. + keys[0]: Example(id=keys[0], label=False, text='not in concept, updated'), + keys[1]: Example(id=keys[1], label=True, text='in concept'), + keys[2]: Example(id=keys[2], label=False, text='really not in concept', draft='test_draft'), + keys[3]: Example( + id=keys[3], label=True, text='really in concept, updated', draft='test_draft'), + }, + version=3) + + def test_remove_concept(self, db_cls: Type[ConceptDB]) -> None: + db = db_cls() + namespace = 'test' + concept_name = 'test_concept' + db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept') + ] + db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + concept = db.get(namespace, concept_name) + + db.remove(namespace, concept_name) + + concept = db.get(namespace, concept_name) + + assert concept is None + + def test_remove_concept_examples(self, db_cls: Type[ConceptDB]) -> None: + db = db_cls() + namespace = 'test' + concept_name = 'test_concept' + db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept') + ] + db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + concept = db.get(namespace, concept_name) + assert concept is not None + + keys = list(concept.data.keys()) + + db.edit(namespace, concept_name, ConceptUpdate(remove=[keys[0]])) + concept = db.get(namespace, concept_name) + + assert concept == Concept( + namespace=namespace, + concept_name=concept_name, + type=SignalInputType.TEXT, + data={ + # key_0 was removed. + keys[1]: Example(id=keys[1], label=True, text='in concept') + }, + version=2) + + def test_remove_concept_examples_draft(self, db_cls: Type[ConceptDB]) -> None: + db = db_cls() + namespace = 'test' + concept_name = 'test_concept' + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept'), + ExampleIn(label=False, text='really not in concept', draft='test_draft'), + ExampleIn(label=True, text='really in concept', draft='test_draft') + ] + db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + concept = db.get(namespace, concept_name) + assert concept is not None + + keys = list(concept.data.keys()) + + db.edit(namespace, concept_name, ConceptUpdate(remove=[keys[2]])) + concept = db.get(namespace, concept_name) + + assert concept == Concept( + namespace=namespace, + concept_name=concept_name, + type=SignalInputType.TEXT, + data={ + keys[0]: Example(id=keys[0], label=False, text='not in concept'), + keys[1]: Example(id=keys[1], label=True, text='in concept'), + # The first draft example is removed. + keys[3]: Example(id=keys[3], label=True, text='really in concept', draft='test_draft'), + }, + version=2) + + def test_remove_invalid_id(self, db_cls: Type[ConceptDB]) -> None: + db = db_cls() + namespace = 'test' + concept_name = 'test_concept' + db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept'), + ExampleIn(label=False, text='really not in concept', draft='test_draft'), + ExampleIn(label=True, text='really in concept', draft='test_draft') + ] + db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + with pytest.raises(ValueError, match='Example with id "invalid_id" does not exist'): + db.edit(namespace, concept_name, ConceptUpdate(remove=['invalid_id'])) + + def test_edit_before_creation(self, db_cls: Type[ConceptDB]) -> None: + db = db_cls() + namespace = 'test' + concept_name = 'test_concept' + + with pytest.raises( + ValueError, match='Concept with namespace "test" and name "test_concept" does not exist'): + db.edit(namespace, concept_name, + ConceptUpdate(insert=[ + ExampleIn(label=False, text='not in concept'), + ])) + + def test_edit_invalid_id(self, db_cls: Type[ConceptDB]) -> None: + db = db_cls() + namespace = 'test' + concept_name = 'test_concept' + db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept') + ] + db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + with pytest.raises(ValueError, match='Example with id "invalid_id" does not exist'): + db.edit(namespace, concept_name, + ConceptUpdate(update=[Example(id='invalid_id', label=False, text='not in concept')])) + + def test_merge_draft(self, db_cls: Type[ConceptDB]) -> None: + db = db_cls() + namespace = 'test' + concept_name = 'test_concept' + db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=True, text='hello'), + ExampleIn(label=False, text='world'), + ExampleIn(label=True, text='hello draft 1', draft='draft1'), + ExampleIn(label=False, text='world draft 1', draft='draft1'), + # Duplicate of main. + ExampleIn(label=False, text='hello', draft='draft2'), + ExampleIn(label=True, text='world draft 2', draft='draft2'), + ] + db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + db.merge_draft(namespace, concept_name, 'draft1') + + concept = db.get(namespace, concept_name) + assert concept is not None + keys = list(concept.data.keys()) + + assert concept.dict() == Concept( + namespace='test', + concept_name='test_concept', + type=SignalInputType.TEXT, + data={ + keys[0]: Example(id=keys[0], label=True, text='hello'), + keys[1]: Example(id=keys[1], label=False, text='world'), + # Draft examples are merged. + keys[2]: Example(id=keys[2], label=True, text='hello draft 1'), + keys[3]: Example(id=keys[3], label=False, text='world draft 1'), + # Draft 2 is untouched. + keys[4]: Example(id=keys[4], label=False, text='hello', draft='draft2'), + keys[5]: Example(id=keys[5], label=True, text='world draft 2', draft='draft2'), + }, + version=2).dict() + + db.merge_draft(namespace, concept_name, 'draft2') + + concept = db.get(namespace, concept_name) + assert concept is not None + + assert concept == Concept( + namespace='test', + concept_name='test_concept', + type=SignalInputType.TEXT, + data={ + # The first example is a duplicate of the label from the draft, so it is removed. + keys[1]: Example(id=keys[1], label=False, text='world'), + # Draft examples are merged. + keys[2]: Example(id=keys[2], label=True, text='hello draft 1'), + keys[3]: Example(id=keys[3], label=False, text='world draft 1'), + # Draft examples are merged. + keys[4]: Example(id=keys[4], label=False, text='hello'), + keys[5]: Example(id=keys[5], label=True, text='world draft 2'), + }, + version=3) + + +def _make_test_concept_model( + concept_db: ConceptDB, + logistic_models: dict[DraftId, LogisticEmbeddingModel] = {}) -> ConceptModel: + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept') + ] + concept_db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + model = ConceptModel( + namespace='test', concept_name='test_concept', embedding_name='test_embedding') + model._logistic_models = logistic_models + return model + + +class TestLogisticModel(LogisticEmbeddingModel): + + @override + def score_embeddings(self, embeddings: np.ndarray) -> np.ndarray: + """Get the scores for the provided embeddings.""" + return np.array([.1]) + + @override + def fit(self, embeddings: np.ndarray, labels: list[bool], sample_weights: list[float]) -> None: + pass + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +@pytest.mark.parametrize('model_db_cls', ALL_CONCEPT_MODEL_DBS) +class ConceptModelDBSuite: + + def test_save_and_get_model(self, concept_db_cls: Type[ConceptDB], + model_db_cls: Type[ConceptModelDB]) -> None: + concept_db = concept_db_cls() + model_db = model_db_cls(concept_db) + model = _make_test_concept_model(concept_db) + model_db.sync(model, column_info=None) + retrieved_model = model_db.get( + namespace='test', concept_name='test_concept', embedding_name='test_embedding') + if not retrieved_model: + retrieved_model = model_db.create( + namespace='test', concept_name='test_concept', embedding_name='test_embedding') + assert retrieved_model == model + + def test_sync_model(self, concept_db_cls: Type[ConceptDB], model_db_cls: Type[ConceptModelDB], + mocker: MockerFixture) -> None: + + concept_db = concept_db_cls() + model_db = model_db_cls(concept_db) + logistic_model = TestLogisticModel(embedding_name='test_embedding') + score_embeddings_mock = mocker.spy(TestLogisticModel, 'score_embeddings') + fit_mock = mocker.spy(TestLogisticModel, 'fit') + + model = _make_test_concept_model(concept_db, logistic_models={DRAFT_MAIN: logistic_model}) + + assert model_db.in_sync(model) is False + assert score_embeddings_mock.call_count == 0 + assert fit_mock.call_count == 0 + + model_db.sync(model, column_info=None) + + assert model_db.in_sync(model) is True + assert score_embeddings_mock.call_count == 0 + assert fit_mock.call_count == 1 + + def test_out_of_sync_model(self, concept_db_cls: Type[ConceptDB], + model_db_cls: Type[ConceptModelDB], mocker: MockerFixture) -> None: + concept_db = concept_db_cls() + model_db = model_db_cls(concept_db) + score_embeddings_mock = mocker.spy(TestLogisticModel, 'score_embeddings') + fit_mock = mocker.spy(TestLogisticModel, 'fit') + logistic_model = TestLogisticModel(embedding_name='test_embedding') + model = _make_test_concept_model(concept_db, logistic_models={DRAFT_MAIN: logistic_model}) + model_db.sync(model, column_info=None) + assert model_db.in_sync(model) is True + assert score_embeddings_mock.call_count == 0 + assert fit_mock.call_count == 1 + + (called_model, called_embeddings, called_labels, + called_weights) = fit_mock.call_args_list[-1].args + assert called_model == logistic_model + np.testing.assert_array_equal( + called_embeddings, np.array([EMBEDDING_MAP['not in concept'], EMBEDDING_MAP['in concept']])) + assert called_labels == [False, True] + assert called_weights == [1.0, 1.0] + + # Edit the concept. + concept_db.edit('test', 'test_concept', + ConceptUpdate(insert=[ExampleIn(label=False, text='a new data point')])) + + # Make sure the model is out of sync. + assert model_db.in_sync(model) is False + assert score_embeddings_mock.call_count == 0 + assert fit_mock.call_count == 1 + + model_db.sync(model, column_info=None) + assert model_db.in_sync(model) is True + assert score_embeddings_mock.call_count == 0 + assert fit_mock.call_count == 2 + # Fit is called again with new points on main only. + (called_model, called_embeddings, called_labels, + called_weights) = fit_mock.call_args_list[-1].args + assert called_model == logistic_model + np.testing.assert_array_equal( + called_embeddings, + np.array([ + EMBEDDING_MAP['not in concept'], EMBEDDING_MAP['in concept'], + EMBEDDING_MAP['a new data point'] + ])) + assert called_labels == [False, True, False] + assert called_weights == pytest.approx([1 / 2, 1.0, 1 / 2]) + + def test_out_of_sync_draft_model(self, concept_db_cls: Type[ConceptDB], + model_db_cls: Type[ConceptModelDB], + mocker: MockerFixture) -> None: + concept_db = concept_db_cls() + model_db = model_db_cls(concept_db) + score_embeddings_mock = mocker.spy(TestLogisticModel, 'score_embeddings') + fit_mock = mocker.spy(TestLogisticModel, 'fit') + logistic_model = TestLogisticModel(embedding_name='test_embedding') + draft_model = TestLogisticModel(embedding_name='test_embedding') + model = _make_test_concept_model( + concept_db, logistic_models={ + DRAFT_MAIN: logistic_model, + 'test_draft': draft_model + }) + model_db.sync(model, column_info=None) + assert model_db.in_sync(model) is True + assert score_embeddings_mock.call_count == 0 + assert fit_mock.call_count == 1 + + # Make sure drafts cause the model to be out of sync. + concept_db.edit( + 'test', + 'test_concept', + ConceptUpdate(insert=[ + ExampleIn(label=True, text='a true draft point', draft='test_draft'), + ExampleIn(label=False, text='a false draft point', draft='test_draft'), + # This point exists in main, but we switched the label. + ExampleIn(label=False, text='in concept', draft='test_draft'), + ])) + + # Make sure the model is out of sync. + assert model_db.in_sync(model) is False + assert score_embeddings_mock.call_count == 0 + assert fit_mock.call_count == 1 + + model_db.sync(model, column_info=None) + assert model_db.in_sync(model) is True + assert score_embeddings_mock.call_count == 0 + assert fit_mock.call_count == 3 # Fit is called on both the draft, and main. + + # Fit is called again with the same points. + ((called_model, called_embeddings, called_labels, called_weights), + (called_draft_model, called_draft_embeddings, called_draft_labels, called_draft_weights)) = ( + c.args for c in fit_mock.call_args_list[-2:]) + + # The draft model is called with the data from main, and the data from draft. + assert called_draft_model == draft_model + np.testing.assert_array_equal( + called_draft_embeddings, + np.array([ + EMBEDDING_MAP['a true draft point'], EMBEDDING_MAP['a false draft point'], + EMBEDDING_MAP['in concept'], EMBEDDING_MAP['not in concept'] + ])) + assert called_draft_labels == [ + True, + False, + # This was overriden by the draft. + False, + False + ] + assert called_draft_weights == pytest.approx([1.0, 1 / 3, 1 / 3, 1 / 3]) + + # The main model was fit without the data from the draft. + assert called_model == draft_model + np.testing.assert_array_equal( + called_embeddings, np.array([EMBEDDING_MAP['not in concept'], EMBEDDING_MAP['in concept']])) + assert called_labels == [False, True] + assert called_weights == pytest.approx([1.0, 1.0]) + + def test_embedding_not_found_in_map(self, concept_db_cls: Type[ConceptDB], + model_db_cls: Type[ConceptModelDB]) -> None: + concept_db = concept_db_cls() + model_db = model_db_cls(concept_db) + model = _make_test_concept_model(concept_db) + model_db.sync(model, column_info=None) + + # Edit the concept. + concept_db.edit('test', 'test_concept', + ConceptUpdate(insert=[ExampleIn(label=False, text='unknown text')])) + + # Make sure the model is out of sync. + assert model_db.in_sync(model) is False + + with pytest.raises(ValueError, match='Example "unknown text" not in embedding map'): + model_db.sync(model, column_info=None) + model_db.sync(model, column_info=None) diff --git a/src/config.py b/src/config.py new file mode 100644 index 0000000000000000000000000000000000000000..dbd9b37b508dd0a6b7c30ffc276b806247c1b3a5 --- /dev/null +++ b/src/config.py @@ -0,0 +1,18 @@ +"""Load environment variables from .env file.""" +import os +from typing import Optional + +from dotenv import dotenv_values + +CONFIG: dict[str, Optional[str]] = { + **dotenv_values('.env'), # load shared variables + **dotenv_values('.env.local'), # load locally set variables + **os.environ, # override loaded values with environment variables +} + + +def data_path() -> str: + """Return the base path for data.""" + if CONFIG['LILAC_DATA_PATH']: + return CONFIG['LILAC_DATA_PATH'] + return './data' diff --git a/src/conftest.py b/src/conftest.py new file mode 100644 index 0000000000000000000000000000000000000000..fdd110757295ab2f0227dfc93a40edc68f324776 --- /dev/null +++ b/src/conftest.py @@ -0,0 +1,28 @@ +"""Fixtures for dataset tests.""" +import pathlib +from typing import Generator, Optional, Type + +import pytest +from pytest_mock import MockerFixture + +from .config import CONFIG +from .data.dataset import Dataset +from .data.dataset_duckdb import DatasetDuckDB +from .data.dataset_test_utils import make_dataset +from .db_manager import set_default_dataset_cls +from .schema import Item, Schema + + +@pytest.fixture(scope='function', params=[DatasetDuckDB]) +def make_test_data(tmp_path: pathlib.Path, mocker: MockerFixture, + request: pytest.FixtureRequest) -> Generator: + """A pytest fixture for creating temporary test datasets.""" + mocker.patch.dict(CONFIG, {'LILAC_DATA_PATH': str(tmp_path)}) + dataset_cls: Type[Dataset] = request.param + set_default_dataset_cls(dataset_cls) + + def _make_test_data(items: list[Item], schema: Optional[Schema] = None) -> Dataset: + return make_dataset(dataset_cls, tmp_path, items, schema) + + # Return the factory for datasets that test methods can use. + yield _make_test_data diff --git a/src/data/__init__.py b/src/data/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/data/__pycache__/__init__.cpython-39.pyc b/src/data/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..01c57a9f2da67ac5ceb27da806ef3c5240aaf023 Binary files /dev/null and b/src/data/__pycache__/__init__.cpython-39.pyc differ diff --git a/src/data/__pycache__/conftest.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/conftest.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0a64e210807a7f0ecd462caec8ff3ef676f3242b Binary files /dev/null and b/src/data/__pycache__/conftest.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/data_loader.cpython-39.pyc b/src/data/__pycache__/data_loader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0666c71b7798167468faa116c9f36f8d7de34d58 Binary files /dev/null and b/src/data/__pycache__/data_loader.cpython-39.pyc differ diff --git a/src/data/__pycache__/dataset.cpython-39.pyc b/src/data/__pycache__/dataset.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a80b5f4d284619bd47137301e3c3c1607e2c2174 Binary files /dev/null and b/src/data/__pycache__/dataset.cpython-39.pyc differ diff --git a/src/data/__pycache__/dataset_compute_signal_chain_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_compute_signal_chain_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c051e6ba6b80fe254205109a7791f1917b47439a Binary files /dev/null and b/src/data/__pycache__/dataset_compute_signal_chain_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/dataset_compute_signal_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_compute_signal_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8892086c032e94521b1311d51be9de610f1962f Binary files /dev/null and b/src/data/__pycache__/dataset_compute_signal_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/dataset_duckdb.cpython-39.pyc b/src/data/__pycache__/dataset_duckdb.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e121c1c3a51f9fee8d226a4ebc616e1ec45caa14 Binary files /dev/null and b/src/data/__pycache__/dataset_duckdb.cpython-39.pyc differ diff --git a/src/data/__pycache__/dataset_loader.cpython-39.pyc b/src/data/__pycache__/dataset_loader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce24970218ba4f461121cc4cb962093e59271bd0 Binary files /dev/null and b/src/data/__pycache__/dataset_loader.cpython-39.pyc differ diff --git a/src/data/__pycache__/dataset_select_groups_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_select_groups_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ac0f44d75dccce23f19874768a6e6c79ebb7876 Binary files /dev/null and b/src/data/__pycache__/dataset_select_groups_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/dataset_select_rows_filter_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_select_rows_filter_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8778396b93bf58ff05e13260cdacbfc5812118c1 Binary files /dev/null and b/src/data/__pycache__/dataset_select_rows_filter_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/dataset_select_rows_schema_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_select_rows_schema_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..984eb8c75a78f08e851c92afa04f3c20398676c7 Binary files /dev/null and b/src/data/__pycache__/dataset_select_rows_schema_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/dataset_select_rows_search_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_select_rows_search_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1f40c2355c85373cd129c5a82a64e64ba12ba239 Binary files /dev/null and b/src/data/__pycache__/dataset_select_rows_search_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/dataset_select_rows_sort_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_select_rows_sort_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ebf64fa67ac1dccb935ab12b1e9fa0eeb372ef44 Binary files /dev/null and b/src/data/__pycache__/dataset_select_rows_sort_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/dataset_select_rows_udf_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_select_rows_udf_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9098b45a2149ba017126a3c6890d624a55b74128 Binary files /dev/null and b/src/data/__pycache__/dataset_select_rows_udf_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/dataset_stats_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_stats_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cc4a60d54d6d3fc714631447f057ac7d7dfc30b2 Binary files /dev/null and b/src/data/__pycache__/dataset_stats_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/dataset_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4a2159d5d4a5b2a721c95178bc628218c206afa1 Binary files /dev/null and b/src/data/__pycache__/dataset_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/dataset_test_utils.cpython-39.pyc b/src/data/__pycache__/dataset_test_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4479126c5e408998582dff03913310cf79b13d55 Binary files /dev/null and b/src/data/__pycache__/dataset_test_utils.cpython-39.pyc differ diff --git a/src/data/__pycache__/dataset_utils.cpython-39.pyc b/src/data/__pycache__/dataset_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ce7610707b75a593b2a4d6f4a8e3c0a908b0456 Binary files /dev/null and b/src/data/__pycache__/dataset_utils.cpython-39.pyc differ diff --git a/src/data/__pycache__/dataset_utils_test.cpython-39-pytest-7.2.2.pyc b/src/data/__pycache__/dataset_utils_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..965f0f19fc3d547bac63f9ffa3748aeef4444b4e Binary files /dev/null and b/src/data/__pycache__/dataset_utils_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/data/__pycache__/dataset_utils_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/dataset_utils_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af9cc5cf9ba46cfba0df44202f68aa3c4de6c4fa Binary files /dev/null and b/src/data/__pycache__/dataset_utils_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/db_dataset.cpython-39.pyc b/src/data/__pycache__/db_dataset.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c4450fdd80da249467829a6d58b5164765e28b8b Binary files /dev/null and b/src/data/__pycache__/db_dataset.cpython-39.pyc differ diff --git a/src/data/__pycache__/db_dataset_compute_signal_test.cpython-39-pytest-7.2.2.pyc b/src/data/__pycache__/db_dataset_compute_signal_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a00097b6bd6cfcd3bfe9cafc03dbd0e550daf98a Binary files /dev/null and b/src/data/__pycache__/db_dataset_compute_signal_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/data/__pycache__/db_dataset_compute_signal_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/db_dataset_compute_signal_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bc6b6e7a1df95b2ac965bc16f231089276afb5f7 Binary files /dev/null and b/src/data/__pycache__/db_dataset_compute_signal_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/db_dataset_concept_test.cpython-39-pytest-7.2.0.pyc b/src/data/__pycache__/db_dataset_concept_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7bb4839ac651006e793728e2a56bf27808c860db Binary files /dev/null and b/src/data/__pycache__/db_dataset_concept_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/data/__pycache__/db_dataset_duckdb.cpython-39.pyc b/src/data/__pycache__/db_dataset_duckdb.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7822559a19979c895b2bad0cc3917f056472ab56 Binary files /dev/null and b/src/data/__pycache__/db_dataset_duckdb.cpython-39.pyc differ diff --git a/src/data/__pycache__/db_dataset_duckdb_test.cpython-39-pytest-7.2.0.pyc b/src/data/__pycache__/db_dataset_duckdb_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..565d7cc55b529c8537bd204078047775fa09b5f4 Binary files /dev/null and b/src/data/__pycache__/db_dataset_duckdb_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/data/__pycache__/db_dataset_select_groups_test.cpython-39-pytest-7.2.2.pyc b/src/data/__pycache__/db_dataset_select_groups_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9e45829948a0c3dcb482bf399827696500ef3947 Binary files /dev/null and b/src/data/__pycache__/db_dataset_select_groups_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/data/__pycache__/db_dataset_select_groups_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/db_dataset_select_groups_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9e45829948a0c3dcb482bf399827696500ef3947 Binary files /dev/null and b/src/data/__pycache__/db_dataset_select_groups_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/db_dataset_select_rows_schema_test.cpython-39-pytest-7.2.2.pyc b/src/data/__pycache__/db_dataset_select_rows_schema_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f050392e20873f1e293c2e7606a74833aa4a6ae Binary files /dev/null and b/src/data/__pycache__/db_dataset_select_rows_schema_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/data/__pycache__/db_dataset_select_rows_schema_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/db_dataset_select_rows_schema_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed1043c36c932d5da38af7c227cc16d029530f00 Binary files /dev/null and b/src/data/__pycache__/db_dataset_select_rows_schema_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/db_dataset_stats_test.cpython-39-pytest-7.2.2.pyc b/src/data/__pycache__/db_dataset_stats_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..79b39f83145fd35ec7ba3ac0001cc0e740f947c6 Binary files /dev/null and b/src/data/__pycache__/db_dataset_stats_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/data/__pycache__/db_dataset_stats_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/db_dataset_stats_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..79b39f83145fd35ec7ba3ac0001cc0e740f947c6 Binary files /dev/null and b/src/data/__pycache__/db_dataset_stats_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/db_dataset_test.cpython-39-pytest-7.2.0.pyc b/src/data/__pycache__/db_dataset_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc699f7c02d1fa60337a28715fd15e9df147af02 Binary files /dev/null and b/src/data/__pycache__/db_dataset_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/data/__pycache__/db_dataset_test.cpython-39-pytest-7.2.2.pyc b/src/data/__pycache__/db_dataset_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09f7d7915d9a26010fc752a0f44a703120025257 Binary files /dev/null and b/src/data/__pycache__/db_dataset_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/data/__pycache__/db_dataset_test.cpython-39-pytest-7.3.1.pyc b/src/data/__pycache__/db_dataset_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8532d8df244ad14ab5a68dbbbb8155b8d19f7067 Binary files /dev/null and b/src/data/__pycache__/db_dataset_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/__pycache__/db_dataset_test_utils.cpython-39.pyc b/src/data/__pycache__/db_dataset_test_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d071dc8af0d76c0192155ff3010512939c1ddba4 Binary files /dev/null and b/src/data/__pycache__/db_dataset_test_utils.cpython-39.pyc differ diff --git a/src/data/__pycache__/duckdb_utils.cpython-39.pyc b/src/data/__pycache__/duckdb_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..120fffc17d6e08543ef4e234df1aa5f6f0325118 Binary files /dev/null and b/src/data/__pycache__/duckdb_utils.cpython-39.pyc differ diff --git a/src/data/__pycache__/embedding_index.cpython-39.pyc b/src/data/__pycache__/embedding_index.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..acd9452f85bdb68abb69faf9a7c6fbaab83bb988 Binary files /dev/null and b/src/data/__pycache__/embedding_index.cpython-39.pyc differ diff --git a/src/data/__pycache__/loader.cpython-39.pyc b/src/data/__pycache__/loader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..520d959617826407878ea124494aa7019b8a9db5 Binary files /dev/null and b/src/data/__pycache__/loader.cpython-39.pyc differ diff --git a/src/data/dataset.py b/src/data/dataset.py new file mode 100644 index 0000000000000000000000000000000000000000..d0a20bec01e40b77cc49836205b22e5d9a899c5a --- /dev/null +++ b/src/data/dataset.py @@ -0,0 +1,407 @@ +"""The interface for the database.""" +import abc +import datetime +import enum +from typing import Any, Iterator, Literal, Optional, Sequence, Union + +import pandas as pd +from pydantic import BaseModel +from pydantic import Field as PydanticField +from pydantic import StrictBool, StrictBytes, StrictFloat, StrictInt, StrictStr, validator + +from ..embeddings.vector_store import VectorStore +from ..schema import VALUE_KEY, Bin, Path, PathTuple, Schema, normalize_path +from ..signals.signal import Signal, resolve_signal +from ..tasks import TaskStepId + +# Threshold for rejecting certain queries (e.g. group by) for columns with large cardinality. +TOO_MANY_DISTINCT = 200_000 + + +class SelectRowsResult: + """The result of a select rows query.""" + + def __init__(self, df: pd.DataFrame, total_num_rows: int) -> None: + """Initialize the result.""" + self._df = df + self.total_num_rows = total_num_rows + + def __iter__(self) -> Iterator: + return (row.to_dict() for _, row in self._df.iterrows()) + + def df(self) -> pd.DataFrame: + """Convert the result to a pandas DataFrame.""" + return self._df + + +class StatsResult(BaseModel): + """The result of a stats() query.""" + path: PathTuple + # The number of leaf values. + total_count: int + # The approximate number of distinct leaf values. + approx_count_distinct: int + + # Defined for ordinal features. + min_val: Optional[Union[float, datetime.date, datetime.datetime]] + max_val: Optional[Union[float, datetime.date, datetime.datetime]] + + # Defined for text features. + avg_text_length: Optional[float] + + +class MediaResult(BaseModel): + """The result of a media() query.""" + data: bytes + + +class BinaryOp(str, enum.Enum): + """The comparison operator between a column and a feature value.""" + EQUALS = 'equals' + NOT_EQUAL = 'not_equal' + GREATER = 'greater' + GREATER_EQUAL = 'greater_equal' + LESS = 'less' + LESS_EQUAL = 'less_equal' + + +SearchType = Union[Literal['keyword'], Literal['semantic'], Literal['concept']] + + +class UnaryOp(str, enum.Enum): + """A unary operator on a feature.""" + EXISTS = 'exists' + + +class ListOp(str, enum.Enum): + """A list operator on a feature.""" + IN = 'in' + + +class SortOrder(str, enum.Enum): + """The sort order for a database query.""" + DESC = 'DESC' + ASC = 'ASC' + + +class GroupsSortBy(str, enum.Enum): + """The sort for groups queries. + + Either "count" which sorts by the count of feature value, or "value" which sorts by the + feature value itself. + """ + COUNT = 'count' + VALUE = 'value' + + +class SortResult(BaseModel): + """The information about what is sorted after combining searches and explicit sorts.""" + # The column that was sorted. + path: PathTuple + # The sort order. + order: SortOrder + # The alias of the column if it was aliased. + alias: Optional[str] + # The search index if the sort is by a search. + search_index: Optional[int] + + +class SearchResultInfo(BaseModel): + """The resulting sort order returned by the select rows schema.""" + # The input path to the search. + search_path: PathTuple + # The resulting column that was searched. + result_path: PathTuple + # The alias of the UDF. + alias: Optional[str] + + +class SelectRowsSchemaUDF(BaseModel): + """The UDF for a select rows schema query.""" + path: PathTuple + alias: Optional[str] + + +class SelectRowsSchemaResult(BaseModel): + """The result of a select rows schema query.""" + data_schema: Schema + udfs: list[SelectRowsSchemaUDF] = [] + search_results: list[SearchResultInfo] = [] + sorts: Optional[list[SortResult]] + + +class Column(BaseModel): + """A column in the dataset.""" + path: PathTuple + alias: Optional[str] # This is the renamed column during querying and response. + + # Defined when the feature is another column. + signal_udf: Optional[Signal] = None + + class Config: + smart_union = True + + def __init__(self, + path: Path, + alias: Optional[str] = None, + signal_udf: Optional[Signal] = None, + **kwargs: Any): + """Initialize a column. We override __init__ to allow positional arguments for brevity.""" + super().__init__(path=normalize_path(path), alias=alias, signal_udf=signal_udf, **kwargs) + + @validator('signal_udf', pre=True) + def parse_signal_udf(cls, signal_udf: Optional[dict]) -> Optional[Signal]: + """Parse a signal to its specific subclass instance.""" + if not signal_udf: + return None + return resolve_signal(signal_udf) + + +ColumnId = Union[Path, Column] + + +class DatasetManifest(BaseModel): + """The manifest for a dataset.""" + namespace: str + dataset_name: str + data_schema: Schema + # Number of items in the dataset. + num_items: int + + +def column_from_identifier(column: ColumnId) -> Column: + """Create a column from a column identifier.""" + if isinstance(column, Column): + return column.copy() + return Column(path=column) + + +FeatureValue = Union[StrictInt, StrictFloat, StrictBool, StrictStr, StrictBytes] +FeatureListValue = list[StrictStr] +BinaryFilterTuple = tuple[Path, BinaryOp, FeatureValue] +ListFilterTuple = tuple[Path, ListOp, FeatureListValue] +UnaryFilterTuple = tuple[Path, UnaryOp] + +FilterOp = Union[BinaryOp, UnaryOp, ListOp] + + +class SelectGroupsResult(BaseModel): + """The result of a select groups query.""" + too_many_distinct: bool + counts: list[tuple[Optional[FeatureValue], int]] + bins: Optional[list[Bin]] = None + + +class Filter(BaseModel): + """A filter on a column.""" + path: PathTuple + op: FilterOp + value: Optional[Union[FeatureValue, FeatureListValue]] = None + + +FilterLike = Union[Filter, BinaryFilterTuple, UnaryFilterTuple, ListFilterTuple] + +SearchValue = StrictStr + + +class KeywordQuery(BaseModel): + """A keyword search query on a column.""" + type: Literal['keyword'] + search: SearchValue + + +class SemanticQuery(BaseModel): + """A semantic search on a column.""" + type: Literal['semantic'] + search: SearchValue + embedding: str + + +class ConceptQuery(BaseModel): + """A concept search query on a column.""" + type: Literal['concept'] + concept_namespace: str + concept_name: str + embedding: str + + +class Search(BaseModel): + """A search on a column.""" + path: Path + query: Union[KeywordQuery, SemanticQuery, ConceptQuery] = PydanticField(discriminator='type') + + +class Dataset(abc.ABC): + """The database implementation to query a dataset.""" + + def __init__(self, namespace: str, dataset_name: str): + """Initialize a dataset. + + Args: + namespace: The dataset namespace. + dataset_name: The dataset name. + """ + self.namespace = namespace + self.dataset_name = dataset_name + + @abc.abstractmethod + def delete(self) -> None: + """Deletes the dataset.""" + pass + + @abc.abstractmethod + def manifest(self) -> DatasetManifest: + """Return the manifest for the dataset.""" + pass + + @abc.abstractmethod + def get_vector_store(self, path: PathTuple) -> VectorStore: + # TODO: Instead of this, allow selecting vectors via select_rows. + """Get the vector store for a column.""" + pass + + @abc.abstractmethod + def compute_signal(self, + signal: Signal, + leaf_path: Path, + task_step_id: Optional[TaskStepId] = None) -> None: + """Compute a signal for a column. + + Args: + signal: The signal to compute over the given columns. + leaf_path: The leaf path to compute the signal on. + task_step_id: The TaskManager `task_step_id` for this process run. This is used to update the + progress of the task. + """ + pass + + @abc.abstractmethod + def delete_signal(self, signal_path: Path) -> None: + """Delete a computed signal from the dataset. + + Args: + signal_path: The path holding the computed data of the signal. + """ + pass + + @abc.abstractmethod + def select_groups( + self, + leaf_path: Path, + filters: Optional[Sequence[FilterLike]] = None, + sort_by: Optional[GroupsSortBy] = None, + sort_order: Optional[SortOrder] = SortOrder.DESC, + limit: Optional[int] = None, + bins: Optional[Union[Sequence[Bin], Sequence[float]]] = None) -> SelectGroupsResult: + """Select grouped columns to power a histogram. + + Args: + leaf_path: The leaf path to group by. The path can be a dot-seperated string path, or a tuple + of fields. + filters: The filters to apply to the query. + sort_by: What to sort by, either "count" or "value". + sort_order: The sort order. + limit: The maximum number of rows to return. + bins: The bins to use when bucketizing a float column. + + Returns + A `SelectGroupsResult` iterator where each row is a group. + """ + raise NotImplementedError + + @abc.abstractmethod + def select_rows(self, + columns: Optional[Sequence[ColumnId]] = None, + searches: Optional[Sequence[Search]] = None, + filters: Optional[Sequence[FilterLike]] = None, + sort_by: Optional[Sequence[Path]] = None, + sort_order: Optional[SortOrder] = SortOrder.DESC, + limit: Optional[int] = 100, + offset: Optional[int] = 0, + task_step_id: Optional[TaskStepId] = None, + resolve_span: bool = False, + combine_columns: bool = False) -> SelectRowsResult: + """Select grouped columns to power a histogram. + + Args: + columns: The columns to select. A column is an instance of `Column` which can either + define a path to a feature, or a column with an applied Transform, e.g. a Concept. If none, + it selects all columns. + searches: The searches to apply to the query. + filters: The filters to apply to the query. + sort_by: An ordered list of what to sort by. When defined, this is a list of aliases of column + names defined by the "alias" field in Column. If no alias is provided for a column, an + automatic alias is generated by combining each path element with a "." + For example: e.g. ('person', 'name') => person.name. For columns that are transform columns, + an alias must be provided explicitly. When sorting by a (nested) list of values, the sort + takes the minumum value when `sort_order` is `ASC`, and the maximum value when `sort_order` + is `DESC`. + sort_order: The sort order. + limit: The maximum number of rows to return. + offset: The offset to start returning rows from. + task_step_id: The TaskManager `task_step_id` for this process run. This is used to update the + progress. + resolve_span: Whether to resolve the span of the row. + combine_columns: Whether to combine columns into a single object. The object will be pruned + to only include sub-fields that correspond to the requested columns. + + Returns + A SelectRowsResult iterator with rows of `Item`s. + """ + pass + + @abc.abstractmethod + def select_rows_schema(self, + columns: Optional[Sequence[ColumnId]] = None, + sort_by: Optional[Sequence[Path]] = None, + sort_order: Optional[SortOrder] = SortOrder.DESC, + searches: Optional[Sequence[Search]] = None, + combine_columns: bool = False) -> SelectRowsSchemaResult: + """Returns the schema of the result of `select_rows` above with the same arguments.""" + pass + + @abc.abstractmethod + def stats(self, leaf_path: Path) -> StatsResult: + """Compute stats for a leaf path. + + Args: + leaf_path: The leaf path to compute stats for. + + Returns + A StatsResult. + """ + pass + + @abc.abstractmethod + def media(self, item_id: str, leaf_path: Path) -> MediaResult: + """Return the media for a leaf path. + + Args: + item_id: The item id to get media for. + leaf_path: The leaf path for the media. + + Returns + A MediaResult. + """ + pass + + +def make_parquet_id(signal: Signal, + source_path: PathTuple, + is_computed_signal: Optional[bool] = False) -> str: + """Return a unique identifier for this parquet table.""" + # Don't use the VALUE_KEY as part of the parquet id to reduce the size of paths. + path = source_path[:-1] if source_path[-1] == VALUE_KEY else source_path + column_alias = '.'.join(map(str, path)) + if column_alias.endswith('.*'): + # Remove the trailing .* from the column name. + column_alias = column_alias[:-2] + + return f'{signal.key(is_computed_signal=is_computed_signal)}({column_alias})' + + +def val(path: Path) -> PathTuple: + """Returns the value at a path.""" + if path[-1] == VALUE_KEY: + raise ValueError(f'Path "{path}" already is a value path.') + return (*normalize_path(path), VALUE_KEY) diff --git a/src/data/dataset_compute_signal_chain_test.py b/src/data/dataset_compute_signal_chain_test.py new file mode 100644 index 0000000000000000000000000000000000000000..0607d65ab887e8f14af13e4b542323dd3978b8ad --- /dev/null +++ b/src/data/dataset_compute_signal_chain_test.py @@ -0,0 +1,255 @@ +"""Tests for dataset.compute_signal() when signals are chained.""" + +import re +from typing import Iterable, List, Optional, cast + +import numpy as np +import pytest +from pytest_mock import MockerFixture +from typing_extensions import override + +from ..embeddings.vector_store import VectorStore +from ..schema import UUID_COLUMN, Field, Item, RichData, VectorKey, field, schema +from ..signals.signal import ( + TextEmbeddingModelSignal, + TextEmbeddingSignal, + TextSignal, + TextSplitterSignal, + clear_signal_registry, + register_signal, +) +from .dataset import DatasetManifest +from .dataset_test_utils import ( + TEST_DATASET_NAME, + TEST_NAMESPACE, + TestDataMaker, + enriched_embedding_span, + enriched_embedding_span_field, + enriched_item, +) +from .dataset_utils import lilac_embedding, lilac_span + +SIMPLE_ITEMS: list[Item] = [{ + UUID_COLUMN: '1', + 'str': 'a', + 'int': 1, + 'bool': False, + 'float': 3.0 +}, { + UUID_COLUMN: '2', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 2.0 +}, { + UUID_COLUMN: '3', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 1.0 +}] + +EMBEDDINGS: list[tuple[str, list[float]]] = [('hello.', [1.0, 0.0, 0.0]), + ('hello2.', [1.0, 1.0, 0.0]), + ('hello world.', [1.0, 1.0, 1.0]), + ('hello world2.', [2.0, 1.0, 1.0])] + +STR_EMBEDDINGS: dict[str, list[float]] = {text: embedding for text, embedding in EMBEDDINGS} + + +class TestSplitter(TextSplitterSignal): + """Split documents into sentence by splitting on period.""" + name = 'test_splitter' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + for text in data: + if not isinstance(text, str): + raise ValueError(f'Expected text to be a string, got {type(text)} instead.') + sentences = [f'{sentence.strip()}.' for sentence in text.split('.') if sentence] + yield [ + lilac_span(text.index(sentence), + text.index(sentence) + len(sentence)) for sentence in sentences + ] + + +class TestEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Call the embedding function.""" + for example in data: + yield [lilac_embedding(0, len(example), np.array(STR_EMBEDDINGS[cast(str, example)]))] + + +class TestEmbeddingSumSignal(TextEmbeddingModelSignal): + """Sums the embeddings to return a single floating point value.""" + name = 'test_embedding_sum' + + @override + def fields(self) -> Field: + return field('float32') + + @override + def vector_compute(self, keys: Iterable[VectorKey], vector_store: VectorStore) -> Iterable[Item]: + # The signal just sums the values of the embedding. + embedding_sums = vector_store.get(keys).sum(axis=1) + for embedding_sum in embedding_sums.tolist(): + yield embedding_sum + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_signal(TestSplitter) + register_signal(TestEmbedding) + register_signal(TestEmbeddingSumSignal) + register_signal(NamedEntity) + # Unit test runs. + yield + # Teardown. + clear_signal_registry() + + +def test_manual_embedding_signal(make_test_data: TestDataMaker, mocker: MockerFixture) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello.', + }, { + UUID_COLUMN: '2', + 'text': 'hello2.', + }]) + + embed_mock = mocker.spy(TestEmbedding, 'compute') + + embedding_signal = TestEmbedding() + dataset.compute_signal(embedding_signal, 'text') + embedding_sum_signal = TestEmbeddingSumSignal(embedding=TestEmbedding.name) + dataset.compute_signal(embedding_sum_signal, 'text') + + # Make sure the embedding signal is not called twice. + assert embed_mock.call_count == 1 + + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field( + 'string', + fields={ + 'test_embedding': field( + signal=embedding_signal.dict(), + fields=[ + enriched_embedding_span_field( + {'test_embedding_sum': field('float32', embedding_sum_signal.dict())}) + ]) + }), + }), + num_items=2) + + result = dataset.select_rows() + expected_result = [{ + UUID_COLUMN: '1', + 'text': enriched_item( + 'hello.', {'test_embedding': [enriched_embedding_span(0, 6, {'test_embedding_sum': 1.0})]}) + }, { + UUID_COLUMN: '2', + 'text': enriched_item( + 'hello2.', {'test_embedding': [enriched_embedding_span(0, 7, {'test_embedding_sum': 2.0})]}) + }] + assert list(result) == expected_result + + +def test_auto_embedding_signal(make_test_data: TestDataMaker, mocker: MockerFixture) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello.', + }, { + UUID_COLUMN: '2', + 'text': 'hello2.', + }]) + + embed_mock = mocker.spy(TestEmbedding, 'compute') + + # The embedding is automatically computed from the TestEmbeddingSumSignal. + embedding_sum_signal = TestEmbeddingSumSignal(embedding=TestEmbedding.name) + dataset.compute_signal(embedding_sum_signal, 'text') + + # Make sure the embedding signal is not called twice. + assert embed_mock.call_count == 1 + + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field( + 'string', + fields={ + 'test_embedding': field( + signal=embedding_sum_signal._embedding_signal.dict(), + fields=[ + enriched_embedding_span_field( + {'test_embedding_sum': field('float32', embedding_sum_signal.dict())}) + ]) + }), + }), + num_items=2) + + result = dataset.select_rows() + expected_result = [{ + UUID_COLUMN: '1', + 'text': enriched_item( + 'hello.', {'test_embedding': [enriched_embedding_span(0, 6, {'test_embedding_sum': 1.0})]}) + }, { + UUID_COLUMN: '2', + 'text': enriched_item( + 'hello2.', {'test_embedding': [enriched_embedding_span(0, 7, {'test_embedding_sum': 2.0})]}) + }] + assert list(result) == expected_result + + +ENTITY_REGEX = r'[A-Za-z]+@[A-Za-z]+' + + +class NamedEntity(TextSignal): + """Find special entities.""" + name = 'entity' + + @override + def fields(self) -> Field: + return field(fields=['string_span']) + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[List[Item]]]: + for text in data: + if not isinstance(text, str): + yield None + continue + yield [lilac_span(m.start(0), m.end(0)) for m in re.finditer(ENTITY_REGEX, text)] + + +def test_entity_on_split_signal(make_test_data: TestDataMaker) -> None: + text = 'Hello nik@test. Here are some other entities like pii@gmail and all@lilac.' + dataset = make_test_data([{UUID_COLUMN: '1', 'text': text}]) + entity = NamedEntity() + dataset.compute_signal(TestSplitter(), 'text') + dataset.compute_signal(entity, ('text', 'test_splitter', '*')) + + result = dataset.select_rows(['text']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item( + text, { + 'test_splitter': [ + lilac_span(0, 15, {'entity': [lilac_span(6, 14)]}), + lilac_span(16, 74, {'entity': [ + lilac_span(50, 59), + lilac_span(64, 73), + ]}), + ] + }) + }] diff --git a/src/data/dataset_compute_signal_test.py b/src/data/dataset_compute_signal_test.py new file mode 100644 index 0000000000000000000000000000000000000000..8831c17d4bbf4275a1d8934366770e312837b44c --- /dev/null +++ b/src/data/dataset_compute_signal_test.py @@ -0,0 +1,669 @@ +"""Tests for dataset.compute_signal().""" + +from typing import Iterable, Optional, Union, cast + +import numpy as np +import pytest +from typing_extensions import override + +from ..concepts.concept import ExampleIn +from ..concepts.db_concept import ConceptUpdate, DiskConceptDB +from ..schema import UUID_COLUMN, VALUE_KEY, Field, Item, RichData, SignalInputType, field, schema +from ..signals.concept_scorer import ConceptScoreSignal +from ..signals.signal import ( + TextEmbeddingSignal, + TextSignal, + TextSplitterSignal, + clear_signal_registry, + register_signal, +) +from .dataset import Column, DatasetManifest, GroupsSortBy, SortOrder, val +from .dataset_test_utils import ( + TEST_DATASET_NAME, + TEST_NAMESPACE, + TestDataMaker, + enriched_embedding_span_field, + enriched_item, +) +from .dataset_utils import lilac_embedding, lilac_span + +SIMPLE_ITEMS: list[Item] = [{ + UUID_COLUMN: '1', + 'str': 'a', + 'int': 1, + 'bool': False, + 'float': 3.0 +}, { + UUID_COLUMN: '2', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 2.0 +}, { + UUID_COLUMN: '3', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 1.0 +}] + + +class TestInvalidSignal(TextSignal): + name = 'test_invalid_signal' + + @override + def fields(self) -> Field: + return field('int32') + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + # Return an invalid output that doesn't match the input length. + return [] + + +class TestSparseSignal(TextSignal): + name = 'test_sparse_signal' + + @override + def fields(self) -> Field: + return field('int32') + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text in data: + if text == 'hello': + # Skip this input. + yield None + else: + yield len(text) + + +class TestSparseRichSignal(TextSignal): + """Find personally identifiable information (emails, phone numbers, etc).""" + name = 'test_sparse_rich_signal' + + @override + def fields(self) -> Field: + return field(fields={'emails': ['string']}) + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text in data: + if text == 'hello': + # Skip this input. + yield None + else: + yield {'emails': ['test1@hello.com', 'test2@hello.com']} + + +class TestParamSignal(TextSignal): + name = 'param_signal' + param: str + + def fields(self) -> Field: + return field('string') + + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text_content in data: + yield f'{str(text_content)}_{self.param}' + + +class TestSignal(TextSignal): + name = 'test_signal' + + @override + def fields(self) -> Field: + return field(fields={'len': 'int32', 'flen': 'float32'}) + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + return [{'len': len(text_content), 'flen': float(len(text_content))} for text_content in data] + + +class TestSplitSignal(TextSplitterSignal): + """Split documents into sentence by splitting on period, generating entities.""" + name = 'test_split' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + for text in data: + if not isinstance(text, str): + raise ValueError(f'Expected text to be a string, got {type(text)} instead.') + sentences = [f'{sentence.strip()}.' for sentence in text.split('.') if sentence] + yield [ + lilac_span(text.index(sentence), + text.index(sentence) + len(sentence)) for sentence in sentences + ] + + +EMBEDDINGS: list[tuple[str, Union[list[float], list[list[float]]]]] = [ + ('hello.', [1.0, 0.0, 0.0]), + # This embedding has an outer dimension of 1. + ('hello2.', [[1.0, 1.0, 0.0]]), + ('hello3.', [[0, 0, 1.]]) +] + +STR_EMBEDDINGS: dict[str, Union[list[float], list[list[float]]]] = { + text: embedding for text, embedding in EMBEDDINGS +} + + +class TestEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Call the embedding function.""" + for example in data: + example = cast(str, example) + yield [lilac_embedding(0, len(example), np.array(STR_EMBEDDINGS[example]))] + + +class ComputedKeySignal(TextSignal): + name = 'computed_key' + + @override + def fields(self) -> Field: + return field('int64') + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text in data: + yield 1 + + def key(self, is_computed_signal: Optional[bool] = False) -> str: + return f'key_{is_computed_signal}' + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_signal(TestSparseSignal) + register_signal(TestSparseRichSignal) + register_signal(TestParamSignal) + register_signal(TestSignal) + register_signal(TestSplitSignal) + register_signal(TestEmbedding) + register_signal(ComputedKeySignal) + register_signal(ConceptScoreSignal) + + # Unit test runs. + yield + # Teardown. + clear_signal_registry() + + +def test_signal_output_validation(make_test_data: TestDataMaker) -> None: + signal = TestInvalidSignal() + + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello', + }, { + UUID_COLUMN: '2', + 'text': 'hello world', + }]) + + with pytest.raises( + ValueError, match='The signal generated 0 values but the input data had 2 values.'): + dataset.compute_signal(signal, 'text') + + +def test_sparse_signal(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello', + }, { + UUID_COLUMN: '2', + 'text': 'hello world', + }]) + + dataset.compute_signal(TestSparseSignal(), 'text') + + result = dataset.select_rows(['text']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item('hello', {'test_sparse_signal': None}) + }, { + UUID_COLUMN: '2', + 'text': enriched_item('hello world', {'test_sparse_signal': 11}) + }] + + +def test_sparse_rich_signal(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello', + }, { + UUID_COLUMN: '2', + 'text': 'hello world', + }]) + + dataset.compute_signal(TestSparseRichSignal(), 'text') + + result = dataset.select_rows(['text']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item('hello', {'test_sparse_rich_signal': None}) + }, { + UUID_COLUMN: '2', + 'text': enriched_item( + 'hello world', + {'test_sparse_rich_signal': { + 'emails': ['test1@hello.com', 'test2@hello.com'] + }}) + }] + + +def test_source_joined_with_signal(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(SIMPLE_ITEMS) + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'str': 'string', + 'int': 'int32', + 'bool': 'boolean', + 'float': 'float32', + }), + num_items=3) + + test_signal = TestSignal() + dataset.compute_signal(test_signal, 'str') + + # Check the enriched dataset manifest has 'text' enriched. + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'str': field( + 'string', + fields={ + 'test_signal': field( + signal=test_signal.dict(), fields={ + 'len': 'int32', + 'flen': 'float32' + }), + }), + 'int': 'int32', + 'bool': 'boolean', + 'float': 'float32', + }), + num_items=3) + + result = dataset.select_rows(['str']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'str': enriched_item('a', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + }, { + UUID_COLUMN: '2', + 'str': enriched_item('b', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + }, { + UUID_COLUMN: '3', + 'str': enriched_item('b', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + }] + + # Select a specific signal leaf test_signal.flen with val('str'). + result = dataset.select_rows([val('str'), ('str', 'test_signal', 'flen')]) + + assert list(result) == [{ + UUID_COLUMN: '1', + f'str.{VALUE_KEY}': 'a', + 'str.test_signal.flen': 1.0 + }, { + UUID_COLUMN: '2', + f'str.{VALUE_KEY}': 'b', + 'str.test_signal.flen': 1.0 + }, { + UUID_COLUMN: '3', + f'str.{VALUE_KEY}': 'b', + 'str.test_signal.flen': 1.0 + }] + + # Select a specific signal leaf test_signal.flen and the whole 'str' subtree. + result = dataset.select_rows(['str', ('str', 'test_signal', 'flen')]) + + assert list(result) == [{ + UUID_COLUMN: '1', + 'str': enriched_item('a', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + 'str.test_signal.flen': 1.0 + }, { + UUID_COLUMN: '2', + 'str': enriched_item('b', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + 'str.test_signal.flen': 1.0 + }, { + UUID_COLUMN: '3', + 'str': enriched_item('b', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + 'str.test_signal.flen': 1.0 + }] + + # Select multiple signal leafs with aliasing. + result = dataset.select_rows([ + val('str'), + Column(('str', 'test_signal', 'flen'), alias='flen'), + Column(('str', 'test_signal', 'len'), alias='len') + ]) + + assert list(result) == [{ + UUID_COLUMN: '1', + f'str.{VALUE_KEY}': 'a', + 'flen': 1.0, + 'len': 1 + }, { + UUID_COLUMN: '2', + f'str.{VALUE_KEY}': 'b', + 'flen': 1.0, + 'len': 1 + }, { + UUID_COLUMN: '3', + f'str.{VALUE_KEY}': 'b', + 'flen': 1.0, + 'len': 1 + }] + + +def test_parameterized_signal(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello' + }, { + UUID_COLUMN: '2', + 'text': 'everybody' + }]) + test_signal_a = TestParamSignal(param='a') + test_signal_b = TestParamSignal(param='b') + dataset.compute_signal(test_signal_a, 'text') + dataset.compute_signal(test_signal_b, 'text') + + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field( + 'string', + fields={ + 'param_signal(param=a)': field('string', test_signal_a.dict()), + 'param_signal(param=b)': field('string', test_signal_b.dict()), + }), + }), + num_items=2) + + result = dataset.select_rows(['text']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item('hello', { + 'param_signal(param=a)': 'hello_a', + 'param_signal(param=b)': 'hello_b', + }) + }, { + UUID_COLUMN: '2', + 'text': enriched_item('everybody', { + 'param_signal(param=a)': 'everybody_a', + 'param_signal(param=b)': 'everybody_b', + }) + }] + + +def test_split_signal(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': '[1, 1] first sentence. [1, 1] second sentence.', + }, { + UUID_COLUMN: '2', + 'text': 'b2 [2, 1] first sentence. [2, 1] second sentence.', + }]) + + signal = TestSplitSignal() + dataset.compute_signal(signal, 'text') + + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field( + 'string', fields={'test_split': field(signal=signal.dict(), fields=[field('string_span')])}) + }), + num_items=2) + + result = dataset.select_rows(['text']) + expected_result = [{ + UUID_COLUMN: '1', + 'text': enriched_item('[1, 1] first sentence. [1, 1] second sentence.', + {'test_split': [lilac_span(0, 22), lilac_span(23, 46)]}) + }, { + UUID_COLUMN: '2', + 'text': enriched_item('b2 [2, 1] first sentence. [2, 1] second sentence.', + {'test_split': [ + lilac_span(0, 25), + lilac_span(26, 49), + ]}) + }] + assert list(result) == expected_result + + +def test_signal_on_repeated_field(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': ['hello', 'everybody'], + }, { + UUID_COLUMN: '2', + 'text': ['hello2', 'everybody2'], + }]) + test_signal = TestSignal() + # Run the signal on the repeated field. + dataset.compute_signal(test_signal, ('text', '*')) + + # Check the enriched dataset manifest has 'text' enriched. + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field(fields=[ + field( + 'string', + fields={ + 'test_signal': field( + signal=test_signal.dict(), fields={ + 'len': 'int32', + 'flen': 'float32' + }) + }) + ]) + }), + num_items=2) + + result = dataset.select_rows([('text', '*')]) + + assert list(result) == [{ + UUID_COLUMN: '1', + 'text.*': [ + enriched_item('hello', {'test_signal': { + 'len': 5, + 'flen': 5.0 + }}), + enriched_item('everybody', {'test_signal': { + 'len': 9, + 'flen': 9.0 + }}) + ] + }, { + UUID_COLUMN: '2', + 'text.*': [ + enriched_item('hello2', {'test_signal': { + 'len': 6, + 'flen': 6.0 + }}), + enriched_item('everybody2', {'test_signal': { + 'len': 10, + 'flen': 10.0 + }}) + ] + }] + + +def test_text_splitter(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': '[1, 1] first sentence. [1, 1] second sentence.', + }, { + UUID_COLUMN: '2', + 'text': 'b2 [2, 1] first sentence. [2, 1] second sentence.', + }]) + + dataset.compute_signal(TestSplitSignal(), 'text') + + result = dataset.select_rows(['text']) + expected_result = [{ + UUID_COLUMN: '1', + 'text': enriched_item('[1, 1] first sentence. [1, 1] second sentence.', + {'test_split': [ + lilac_span(0, 22), + lilac_span(23, 46), + ]}), + }, { + UUID_COLUMN: '2', + 'text': enriched_item('b2 [2, 1] first sentence. [2, 1] second sentence.', + {'test_split': [ + lilac_span(0, 25), + lilac_span(26, 49), + ]}), + }] + assert list(result) == expected_result + + +def test_embedding_signal(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello.', + }, { + UUID_COLUMN: '2', + 'text': 'hello2.', + }]) + + embedding_signal = TestEmbedding() + dataset.compute_signal(embedding_signal, 'text') + + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field( + 'string', + fields={ + 'test_embedding': field( + signal=embedding_signal.dict(), fields=[enriched_embedding_span_field()]) + }), + }), + num_items=2) + + result = dataset.select_rows() + + # Embeddings are replaced with "None". + expected_result = [{ + UUID_COLUMN: '1', + 'text': enriched_item('hello.', {'test_embedding': [lilac_embedding(0, 6, None)]}) + }, { + UUID_COLUMN: '2', + 'text': enriched_item('hello2.', {'test_embedding': [lilac_embedding(0, 7, None)]}) + }] + assert list(result) == expected_result + + +def test_is_computed_signal_key(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello.', + }, { + UUID_COLUMN: '2', + 'text': 'hello2.', + }]) + + signal = ComputedKeySignal() + dataset.compute_signal(signal, 'text') + + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field('string', fields={'key_True': field('int64', signal=signal.dict())}), + }), + num_items=2) + + result = dataset.select_rows() + + # Embeddings are replaced with "None". + expected_result = [{ + UUID_COLUMN: '1', + 'text': enriched_item('hello.', {'key_True': 1}) + }, { + UUID_COLUMN: '2', + 'text': enriched_item('hello2.', {'key_True': 1}) + }] + assert list(result) == expected_result + + +def test_concept_signal_with_select_groups(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello.', + }, { + UUID_COLUMN: '2', + 'text': 'hello2.', + }, { + UUID_COLUMN: '3', + 'text': 'hello3.', + }]) + + embedding_signal = TestEmbedding() + dataset.compute_signal(embedding_signal, 'text') + + concept_db = DiskConceptDB() + concept_db.create(namespace='test_namespace', name='test_concept', type=SignalInputType.TEXT) + concept_db.edit( + 'test_namespace', 'test_concept', + ConceptUpdate(insert=[ + ExampleIn(label=False, text='hello.'), + ExampleIn(label=True, text='hello2.'), + ExampleIn(label=False, text='hello3.') + ])) + + concept_signal = ConceptScoreSignal( + namespace='test_namespace', concept_name='test_concept', embedding='test_embedding') + + dataset.compute_signal(concept_signal, 'text') + + concept_key = concept_signal.key(is_computed_signal=True) + result = dataset.select_groups(f'text.test_embedding.*.embedding.{concept_key}') + assert result.counts == [('Not in concept', 2), ('In concept', 1)] + + result = dataset.select_groups( + f'text.test_embedding.*.embedding.{concept_key}', + sort_by=GroupsSortBy.COUNT, + sort_order=SortOrder.ASC) + assert result.counts == [('In concept', 1), ('Not in concept', 2)] diff --git a/src/data/dataset_duckdb.py b/src/data/dataset_duckdb.py new file mode 100644 index 0000000000000000000000000000000000000000..3672b12d7b0cedb6407048c7d342ff23f3609ac5 --- /dev/null +++ b/src/data/dataset_duckdb.py @@ -0,0 +1,1666 @@ +"""The DuckDB implementation of the dataset database.""" +import functools +import glob +import math +import os +import re +import shutil +import threading +from typing import Any, Iterable, Optional, Sequence, Type, Union, cast + +import duckdb +import numpy as np +import pandas as pd +from pandas.api.types import is_object_dtype +from pydantic import BaseModel, validator +from typing_extensions import override + +from ..concepts.concept import ConceptColumnInfo +from ..config import CONFIG, data_path +from ..embeddings.vector_store import VectorStore +from ..embeddings.vector_store_numpy import NumpyVectorStore +from ..schema import ( + MANIFEST_FILENAME, + PATH_WILDCARD, + TEXT_SPAN_END_FEATURE, + TEXT_SPAN_START_FEATURE, + UUID_COLUMN, + VALUE_KEY, + Bin, + DataType, + Field, + Item, + Path, + PathTuple, + RichData, + Schema, + SignalInputType, + SourceManifest, + VectorKey, + column_paths_match, + is_float, + is_integer, + is_ordinal, + normalize_path, + signal_compute_type_supports_dtype, +) +from ..signals.concept_labels import ConceptLabelsSignal +from ..signals.concept_scorer import ConceptScoreSignal +from ..signals.semantic_similarity import SemanticSimilaritySignal +from ..signals.signal import ( + EMBEDDING_KEY, + Signal, + TextEmbeddingModelSignal, + TextEmbeddingSignal, + resolve_signal, +) +from ..signals.substring_search import SubstringSignal +from ..tasks import TaskStepId, TaskStepInfo, progress, set_worker_steps +from ..utils import DebugTimer, get_dataset_output_dir, log, open_file +from . import dataset +from .dataset import ( + BinaryOp, + Column, + ColumnId, + Dataset, + DatasetManifest, + FeatureListValue, + FeatureValue, + Filter, + FilterLike, + GroupsSortBy, + ListOp, + MediaResult, + Search, + SearchResultInfo, + SelectGroupsResult, + SelectRowsResult, + SelectRowsSchemaResult, + SelectRowsSchemaUDF, + SortOrder, + SortResult, + StatsResult, + UnaryOp, + column_from_identifier, + make_parquet_id, +) +from .dataset_utils import ( + count_primitives, + create_signal_schema, + flatten, + flatten_keys, + merge_schemas, + read_embedding_index, + replace_embeddings_with_none, + schema_contains_path, + unflatten, + wrap_in_dicts, + write_item_embeddings_to_disk, + write_items_to_parquet, +) + +DEBUG = CONFIG['DEBUG'] == 'true' if 'DEBUG' in CONFIG else False +UUID_INDEX_FILENAME = 'uuids.npy' + +SIGNAL_MANIFEST_FILENAME = 'signal_manifest.json' +SOURCE_VIEW_NAME = 'source' + +# Sample size for approximating the distinct count of a column. +SAMPLE_SIZE_DISTINCT_COUNT = 100_000 +NUM_AUTO_BINS = 15 + +BINARY_OP_TO_SQL: dict[BinaryOp, str] = { + BinaryOp.EQUALS: '=', + BinaryOp.NOT_EQUAL: '!=', + BinaryOp.GREATER: '>', + BinaryOp.GREATER_EQUAL: '>=', + BinaryOp.LESS: '<', + BinaryOp.LESS_EQUAL: '<=' +} + + +class DuckDBSearchUDF(BaseModel): + """The transformation of searches to column UDFs.""" + udf: Column + search_path: PathTuple + output_path: PathTuple + sort: Optional[tuple[PathTuple, SortOrder]] + + +class DuckDBSearchUDFs(BaseModel): + """The transformation of searches to column UDFs with sorts.""" + udfs: list[Column] + output_paths: list[PathTuple] + sorts: list[tuple[PathTuple, SortOrder]] + + +class DatasetDuckDB(Dataset): + """The DuckDB implementation of the dataset database.""" + + def __init__(self, + namespace: str, + dataset_name: str, + vector_store_cls: Type[VectorStore] = NumpyVectorStore): + super().__init__(namespace, dataset_name) + + self.dataset_path = get_dataset_output_dir(data_path(), namespace, dataset_name) + + # TODO: Infer the manifest from the parquet files so this is lighter weight. + self._source_manifest = read_source_manifest(self.dataset_path) + self._signal_manifests: list[SignalManifest] = [] + self.con = duckdb.connect(database=':memory:') + + # Maps a column path and embedding to the vector store. This is lazily generated as needed. + self._col_vector_stores: dict[PathTuple, VectorStore] = {} + self.vector_store_cls = vector_store_cls + self._manifest_lock = threading.Lock() + + @override + def delete(self) -> None: + """Deletes the dataset.""" + self.con.close() + shutil.rmtree(self.dataset_path, ignore_errors=True) + + def _create_view(self, view_name: str, files: list[str]) -> None: + self.con.execute(f""" + CREATE OR REPLACE VIEW {_escape_col_name(view_name)} AS (SELECT * FROM read_parquet({files})); + """) + + # NOTE: This is cached, but when the latest mtime of any file in the dataset directory changes + # the results are invalidated. + @functools.cache + def _recompute_joint_table(self, latest_mtime_micro_sec: int) -> DatasetManifest: + del latest_mtime_micro_sec # This is used as the cache key. + merged_schema = self._source_manifest.data_schema.copy(deep=True) + self._signal_manifests = [] + # Make a joined view of all the column groups. + self._create_view(SOURCE_VIEW_NAME, + [os.path.join(self.dataset_path, f) for f in self._source_manifest.files]) + + # Add the signal column groups. + for root, _, files in os.walk(self.dataset_path): + for file in files: + if not file.endswith(SIGNAL_MANIFEST_FILENAME): + continue + + with open_file(os.path.join(root, file)) as f: + signal_manifest = SignalManifest.parse_raw(f.read()) + self._signal_manifests.append(signal_manifest) + signal_files = [os.path.join(root, f) for f in signal_manifest.files] + self._create_view(signal_manifest.parquet_id, signal_files) + + merged_schema = merge_schemas([self._source_manifest.data_schema] + + [m.data_schema for m in self._signal_manifests]) + + # The logic below generates the following example query: + # CREATE OR REPLACE VIEW t AS ( + # SELECT + # source.*, + # "parquet_id1"."root_column" AS "parquet_id1", + # "parquet_id2"."root_column" AS "parquet_id2" + # FROM source JOIN "parquet_id1" USING (uuid,) JOIN "parquet_id2" USING (uuid,) + # ); + # NOTE: "root_column" for each signal is defined as the top-level column. + select_sql = ', '.join([f'{SOURCE_VIEW_NAME}.*'] + [( + f'{_escape_col_name(manifest.parquet_id)}.{_escape_col_name(_root_column(manifest))} ' + f'AS {_escape_col_name(manifest.parquet_id)}') for manifest in self._signal_manifests]) + join_sql = ' '.join([SOURCE_VIEW_NAME] + [ + f'join {_escape_col_name(manifest.parquet_id)} using ({UUID_COLUMN},)' + for manifest in self._signal_manifests + ]) + view_or_table = 'TABLE' + use_views = CONFIG.get('DUCKDB_USE_VIEWS', 0) or 0 + if int(use_views): + view_or_table = 'VIEW' + sql_cmd = f"""CREATE OR REPLACE {view_or_table} t AS (SELECT {select_sql} FROM {join_sql})""" + self.con.execute(sql_cmd) + + # Get the total size of the table. + size_query = 'SELECT COUNT() as count FROM t' + size_query_result = cast(Any, self._query(size_query)[0]) + num_items = cast(int, size_query_result[0]) + + return DatasetManifest( + namespace=self.namespace, + dataset_name=self.dataset_name, + data_schema=merged_schema, + num_items=num_items) + + @override + def manifest(self) -> DatasetManifest: + # Use the latest modification time of all files under the dataset path as the cache key for + # re-computing the manifest and the joined view. + with self._manifest_lock: + all_dataset_files = glob.iglob(os.path.join(self.dataset_path, '**'), recursive=True) + latest_mtime = max(map(os.path.getmtime, all_dataset_files)) + latest_mtime_micro_sec = int(latest_mtime * 1e6) + return self._recompute_joint_table(latest_mtime_micro_sec) + + def count(self, filters: Optional[list[FilterLike]] = None) -> int: + """Count the number of rows.""" + raise NotImplementedError('count is not yet implemented for DuckDB.') + + @override + def get_vector_store(self, path: PathTuple) -> VectorStore: + # Refresh the manifest to make sure we have the latest signal manifests. + self.manifest() + + if path not in self._col_vector_stores: + manifest = next( + m for m in self._signal_manifests if schema_contains_path(m.data_schema, path)) + if not manifest: + raise ValueError(f'No embedding found for path {path}.') + if not manifest.embedding_filename_prefix: + raise ValueError(f'Signal manifest for path {path} is not an embedding. ' + f'Got signal manifest: {manifest}') + + signal_name = cast(str, manifest.signal.signal_name) + filepath_prefix = os.path.join(self.dataset_path, _signal_dir(manifest.enriched_path), + signal_name, manifest.embedding_filename_prefix) + keys, embeddings = read_embedding_index(filepath_prefix) + # Get all the embeddings and pass it to the vector store. + vector_store = self.vector_store_cls() + vector_store.add(keys, embeddings) + # Cache the vector store. + self._col_vector_stores[path] = vector_store + + return self._col_vector_stores[path] + + def _prepare_signal( + self, + signal: Signal, + source_path: PathTuple, + manifest: DatasetManifest, + compute_dependencies: Optional[bool] = False, + task_step_id: Optional[TaskStepId] = None) -> tuple[PathTuple, Optional[TaskStepId]]: + """Run all the signals depedencies required to run this signal. + + Args: + signal: The signal to prepare. + source_path: The source path the signal is running over. + compute_dependencies: If True, signals will get computed for the whole column. If False, + throw if the required inputs are not computed yet. + task_step_id: The TaskStepId used to run the signal. + + Returns + The final path the signal will be run over and the new step id for the final signal. + """ + is_value_path = False + if source_path[-1] == VALUE_KEY: + is_value_path = True + source_path = source_path[:-1] + + new_path = source_path + + signals_to_compute: list[tuple[PathTuple, Signal]] = [] + if isinstance(signal, TextEmbeddingModelSignal): + embedding_signal = signal.get_embedding_signal() + new_path = (*new_path, embedding_signal.key(), PATH_WILDCARD, EMBEDDING_KEY) + if new_path not in manifest.data_schema.leafs: + if not compute_dependencies: + raise ValueError(f'Embedding signal "{embedding_signal.key()}" is not computed over ' + f'{source_path}. Please run `dataset.compute_signal` over ' + f'{source_path} first.') + signals_to_compute.append((new_path, embedding_signal)) + + new_steps = len(signals_to_compute) + # Setup the task steps so the task progress indicator knows the number of steps before they are + # computed. + if task_step_id: + (task_id, step_id) = task_step_id + if new_steps: + # Make a step for the parent. + set_worker_steps(task_id, [TaskStepInfo()] * (new_steps + 1)) + + for i, (new_path, signal) in enumerate(signals_to_compute): + if new_path not in manifest.data_schema.leafs: + self.compute_signal( + signal, source_path, task_step_id=(task_id, i) if task_step_id else None) + + if is_value_path: + new_path = (*new_path, VALUE_KEY) + + return (new_path, (task_id, step_id + new_steps) if task_step_id else None) + + @override + def compute_signal(self, + signal: Signal, + leaf_path: Path, + task_step_id: Optional[TaskStepId] = None) -> None: + source_path = normalize_path(leaf_path) + manifest = self.manifest() + + # Prepare the dependencies of this signal. + signal_source_path, task_step_id = self._prepare_signal( + signal, source_path, manifest, compute_dependencies=True, task_step_id=task_step_id) + + # The manifest may have changed after computing the dependencies. + manifest = self.manifest() + + if isinstance(signal, ConceptScoreSignal): + # Set dataset information on the signal. + signal.set_column_info( + ConceptColumnInfo(namespace=self.namespace, name=self.dataset_name, path=source_path)) + + signal_col = Column(path=source_path, alias='value', signal_udf=signal) + select_rows_result = self.select_rows([signal_col], + task_step_id=task_step_id, + resolve_span=True) + df = select_rows_result.df() + values = df['value'] + + source_path = signal_source_path + signal_col.path = source_path + + enriched_path = _col_destination_path(signal_col, is_computed_signal=True) + spec = _split_path_into_subpaths_of_lists(enriched_path) + output_dir = os.path.join(self.dataset_path, _signal_dir(enriched_path)) + signal_schema = create_signal_schema(signal, source_path, manifest.data_schema) + enriched_signal_items = cast(Iterable[Item], wrap_in_dicts(values, spec)) + for uuid, item in zip(df[UUID_COLUMN], enriched_signal_items): + item[UUID_COLUMN] = uuid + + is_embedding = isinstance(signal, TextEmbeddingSignal) + embedding_filename_prefix = None + if is_embedding: + embedding_filename_prefix = os.path.basename( + write_item_embeddings_to_disk( + keys=df[UUID_COLUMN], + embeddings=values, + output_dir=output_dir, + shard_index=0, + num_shards=1)) + + # Replace the embeddings with None so they are not serialized in the parquet file. + enriched_signal_items = (replace_embeddings_with_none(item) for item in enriched_signal_items) + + enriched_signal_items = list(enriched_signal_items) + parquet_filename, _ = write_items_to_parquet( + items=enriched_signal_items, + output_dir=output_dir, + schema=signal_schema, + filename_prefix='data', + shard_index=0, + num_shards=1) + + signal_manifest = SignalManifest( + files=[parquet_filename], + data_schema=signal_schema, + signal=signal, + enriched_path=source_path, + parquet_id=make_parquet_id(signal, source_path, is_computed_signal=True), + embedding_filename_prefix=embedding_filename_prefix) + signal_manifest_filepath = os.path.join(output_dir, SIGNAL_MANIFEST_FILENAME) + with open_file(signal_manifest_filepath, 'w') as f: + f.write(signal_manifest.json(exclude_none=True, indent=2)) + log(f'Wrote signal manifest to {signal_manifest_filepath}') + + @override + def delete_signal(self, signal_path: Path) -> None: + signal_path = normalize_path(signal_path) + manifest = self.manifest() + if not manifest.data_schema.has_field(signal_path): + raise ValueError(f'Unknown signal path: {signal_path}') + + output_dir = os.path.join(self.dataset_path, _signal_dir(signal_path)) + shutil.rmtree(output_dir, ignore_errors=True) + + def _validate_filters(self, filters: Sequence[Filter], col_aliases: dict[str, PathTuple], + manifest: DatasetManifest) -> None: + for filter in filters: + if filter.path[0] in col_aliases: + # This is a filter on a column alias, which is always allowed. + continue + + current_field = Field(fields=manifest.data_schema.fields) + for path_part in filter.path: + if path_part == VALUE_KEY: + if not current_field.dtype: + raise ValueError(f'Unable to filter on path {filter.path}. The field has no value.') + continue + if current_field.fields: + if path_part not in current_field.fields: + raise ValueError(f'Unable to filter on path {filter.path}. ' + f'Path part "{path_part}" not found in the dataset.') + current_field = current_field.fields[str(path_part)] + continue + elif current_field.repeated_field: + current_field = current_field.repeated_field + continue + else: + raise ValueError(f'Unable to filter on path {filter.path}. ' + f'Path part "{path_part}" is not defined on a primitive value.') + if not current_field.dtype: + raise ValueError(f'Unable to filter on path {filter.path}. The field has no value.') + + def _validate_udfs(self, udf_cols: Sequence[Column], source_schema: Schema) -> None: + for col in udf_cols: + path = col.path + + # Signal transforms must operate on a leaf field. + leaf = source_schema.leafs.get(path) + if not leaf or not leaf.dtype: + raise ValueError(f'Leaf "{path}" not found in dataset. ' + 'Signal transforms must operate on a leaf field.') + + # Signal transforms must have the same dtype as the leaf field. + signal = cast(Signal, col.signal_udf) + compute_type = signal.compute_type + if not signal_compute_type_supports_dtype(compute_type, leaf.dtype): + raise ValueError(f'Leaf "{path}" has dtype "{leaf.dtype}" which is not supported ' + f'by "{signal.key()}" with signal input type "{compute_type}".') + + def _validate_selection(self, columns: Sequence[Column], select_schema: Schema) -> None: + # Validate all the columns and make sure they exist in the `select_schema`. + for column in columns: + current_field = Field(fields=select_schema.fields) + path = column.path + for path_part in path: + if path_part == VALUE_KEY: + if not current_field.dtype: + raise ValueError(f'Unable to select path {path}. The field that has no value.') + continue + if current_field.fields: + if path_part not in current_field.fields: + raise ValueError(f'Unable to select path {path}. ' + f'Path part "{path_part}" not found in the dataset.') + current_field = current_field.fields[path_part] + continue + elif current_field.repeated_field: + if path_part.isdigit(): + raise ValueError(f'Unable to select path {path}. Selecting a specific index of ' + 'a repeated field is currently not supported.') + if path_part != PATH_WILDCARD: + raise ValueError(f'Unable to select path {path}. ' + f'Path part "{path_part}" should be a wildcard.') + current_field = current_field.repeated_field + elif not current_field.dtype: + raise ValueError(f'Unable to select path {path}. ' + f'Path part "{path_part}" is not defined on a primitive value.') + + def _validate_columns(self, columns: Sequence[Column], source_schema: Schema, + select_schema: Schema) -> None: + udf_cols = [col for col in columns if col.signal_udf] + self._validate_udfs(udf_cols, source_schema) + self._validate_selection(columns, select_schema) + + def _validate_sort_path(self, path: PathTuple, schema: Schema) -> None: + current_field = Field(fields=schema.fields) + for path_part in path: + if path_part == VALUE_KEY: + if not current_field.dtype: + raise ValueError(f'Unable to sort by path {path}. The field that has no value.') + continue + if current_field.fields: + if path_part not in current_field.fields: + raise ValueError(f'Unable to sort by path {path}. ' + f'Path part "{path_part}" not found in the dataset.') + current_field = current_field.fields[path_part] + continue + elif current_field.repeated_field: + if path_part.isdigit(): + raise ValueError(f'Unable to sort by path {path}. Selecting a specific index of ' + 'a repeated field is currently not supported.') + if path_part != PATH_WILDCARD: + raise ValueError(f'Unable to sort by path {path}. ' + f'Path part "{path_part}" should be a wildcard.') + current_field = current_field.repeated_field + elif not current_field.dtype: + raise ValueError(f'Unable to sort by path {path}. ' + f'Path part "{path_part}" is not defined on a primitive value.') + if not current_field.dtype: + raise ValueError(f'Unable to sort by path {path}. The field has no value.') + + @override + def stats(self, leaf_path: Path) -> StatsResult: + if not leaf_path: + raise ValueError('leaf_path must be provided') + path = normalize_path(leaf_path) + manifest = self.manifest() + leaf = manifest.data_schema.leafs.get(path) + if not leaf or not leaf.dtype: + raise ValueError(f'Leaf "{path}" not found in dataset') + + value_path = _make_value_path(path) + duckdb_path = self._leaf_path_to_duckdb_path(value_path, manifest.data_schema) + inner_select = _select_sql( + duckdb_path, flatten=True, unnest=True, span_from=self._get_span_from(path, manifest)) + + # Compute approximate count by sampling the data to avoid OOM. + sample_size = SAMPLE_SIZE_DISTINCT_COUNT + avg_length_query = '' + if leaf.dtype == DataType.STRING: + avg_length_query = ', avg(length(val)) as avgTextLength' + + if leaf.dtype == DataType.BOOLEAN: + approx_count_distinct = 2 + else: + approx_count_query = f""" + SELECT approx_count_distinct(val) as approxCountDistinct {avg_length_query} + FROM (SELECT {inner_select} AS val FROM t LIMIT {sample_size}); + """ + row = self._query(approx_count_query)[0] + approx_count_distinct = row[0] + + total_count_query = f'SELECT count(val) FROM (SELECT {inner_select} as val FROM t)' + total_count = self._query(total_count_query)[0][0] + + if leaf.dtype != DataType.BOOLEAN: + # Adjust the counts for the sample size. + factor = max(1, total_count / sample_size) + approx_count_distinct = round(approx_count_distinct * factor) + + result = StatsResult( + path=path, total_count=total_count, approx_count_distinct=approx_count_distinct) + + if leaf.dtype == DataType.STRING: + result.avg_text_length = row[1] + + # Compute min/max values for ordinal leafs, without sampling the data. + if is_ordinal(leaf.dtype): + min_max_query = f""" + SELECT MIN(val) AS minVal, MAX(val) AS maxVal + FROM (SELECT {inner_select} as val FROM t); + """ + row = self._query(min_max_query)[0] + result.min_val, result.max_val = row + + return result + + @override + def select_groups( + self, + leaf_path: Path, + filters: Optional[Sequence[FilterLike]] = None, + sort_by: Optional[GroupsSortBy] = GroupsSortBy.COUNT, + sort_order: Optional[SortOrder] = SortOrder.DESC, + limit: Optional[int] = None, + bins: Optional[Union[Sequence[Bin], Sequence[float]]] = None) -> SelectGroupsResult: + if not leaf_path: + raise ValueError('leaf_path must be provided') + path = normalize_path(leaf_path) + manifest = self.manifest() + leaf = manifest.data_schema.leafs.get(path) + if not leaf or not leaf.dtype: + raise ValueError(f'Leaf "{path}" not found in dataset') + + inner_val = 'inner_val' + outer_select = inner_val + # Normalize the bins to be `list[Bin]`. + named_bins = _normalize_bins(bins or leaf.bins) + stats = self.stats(leaf_path) + + if is_float(leaf.dtype) or is_integer(leaf.dtype): + if named_bins is None: + # Auto-bin. + named_bins = _auto_bins(stats, NUM_AUTO_BINS) + + sql_bounds = [] + for label, start, end in named_bins: + if start is None: + start = cast(float, "'-Infinity'") + if end is None: + end = cast(float, "'Infinity'") + sql_bounds.append(f"('{label}', {start}, {end})") + + bin_index_col = 'col0' + bin_min_col = 'col1' + bin_max_col = 'col2' + # We cast the field to `double` so bining works for both `float` and `int` fields. + outer_select = f"""( + SELECT {bin_index_col} FROM ( + VALUES {', '.join(sql_bounds)} + ) WHERE {inner_val}::DOUBLE >= {bin_min_col} AND {inner_val}::DOUBLE < {bin_max_col} + )""" + else: + if stats.approx_count_distinct >= dataset.TOO_MANY_DISTINCT: + return SelectGroupsResult(too_many_distinct=True, counts=[], bins=named_bins) + + count_column = 'count' + value_column = 'value' + + limit_query = f'LIMIT {limit}' if limit else '' + duckdb_path = self._leaf_path_to_duckdb_path(path, manifest.data_schema) + inner_select = _select_sql(duckdb_path, flatten=True, unnest=True) + + filters, _ = self._normalize_filters(filters, col_aliases={}, udf_aliases={}, manifest=manifest) + filter_queries = self._create_where(manifest, filters, searches=[]) + where_query = '' + if filter_queries: + where_query = f"WHERE {' AND '.join(filter_queries)}" + + query = f""" + SELECT {outer_select} AS {value_column}, COUNT() AS {count_column} + FROM (SELECT {inner_select} AS {inner_val} FROM t {where_query}) + GROUP BY {value_column} + ORDER BY {sort_by} {sort_order} + {limit_query} + """ + df = self._query_df(query) + counts = list(df.itertuples(index=False, name=None)) + return SelectGroupsResult(too_many_distinct=False, counts=counts, bins=named_bins) + + def _topk_udf_to_sort_by( + self, + udf_columns: list[Column], + sort_by: list[PathTuple], + limit: Optional[int], + sort_order: Optional[SortOrder], + ) -> Optional[Column]: + if (sort_order != SortOrder.DESC) or (not limit) or (not sort_by): + return None + if len(sort_by) < 1: + return None + primary_sort_by = sort_by[0] + udf_cols_to_sort_by = [ + col for col in udf_columns + if col.alias == primary_sort_by[0] or _col_destination_path(col) == primary_sort_by + ] + if not udf_cols_to_sort_by: + return None + udf_col = udf_cols_to_sort_by[0] + if udf_col.signal_udf and (udf_col.signal_udf.compute_type + not in [SignalInputType.TEXT_EMBEDDING]): + return None + return udf_col + + def _normalize_columns(self, columns: Optional[Sequence[ColumnId]], + schema: Schema) -> list[Column]: + """Normalizes the columns to a list of `Column` objects.""" + cols = [column_from_identifier(col) for col in columns or []] + star_in_cols = any(col.path == ('*',) for col in cols) + if not cols or star_in_cols: + # Select all columns. + cols.extend([Column(name) for name in schema.fields.keys()]) + if star_in_cols: + cols = [col for col in cols if col.path != ('*',)] + return cols + + def _merge_sorts(self, search_udfs: list[DuckDBSearchUDF], sort_by: Optional[Sequence[Path]], + sort_order: Optional[SortOrder]) -> list[SortResult]: + if sort_by and not sort_order: + raise ValueError('`sort_order` is required when `sort_by` is specified.') + + # True when the user has explicitly sorted by the alias of a search UDF (e.g. in ASC order). + is_explicit_search_sort = False + for sort_by_path in sort_by or []: + for search_udf in search_udfs: + if column_paths_match(sort_by_path, search_udf.output_path): + is_explicit_search_sort = True + break + + sort_results: list[SortResult] = [] + if sort_by and not is_explicit_search_sort: + # If the user has explicitly set a sort by, and it's not a search UDF alias, override. + sort_results = [ + SortResult(path=normalize_path(sort_by), order=sort_order) for sort_by in sort_by if sort_by + ] + else: + search_udfs_with_sort = [search_udf for search_udf in search_udfs if search_udf.sort] + if search_udfs_with_sort: + # Override the sort by by the last search sort order when the user hasn't provided an + # explicit sort order. + last_search_udf = search_udfs_with_sort[-1] + if sort_order is None: + _, sort_order = cast(tuple[PathTuple, SortOrder], last_search_udf.sort) + sort_results = [ + SortResult( + path=last_search_udf.output_path, + order=sort_order, + search_index=len(search_udfs_with_sort) - 1) + ] + + return sort_results + + @override + def select_rows(self, + columns: Optional[Sequence[ColumnId]] = None, + searches: Optional[Sequence[Search]] = None, + filters: Optional[Sequence[FilterLike]] = None, + sort_by: Optional[Sequence[Path]] = None, + sort_order: Optional[SortOrder] = SortOrder.DESC, + limit: Optional[int] = None, + offset: Optional[int] = 0, + task_step_id: Optional[TaskStepId] = None, + resolve_span: bool = False, + combine_columns: bool = False) -> SelectRowsResult: + manifest = self.manifest() + cols = self._normalize_columns(columns, manifest.data_schema) + + # Always return the UUID column. + col_paths = [col.path for col in cols] + if (UUID_COLUMN,) not in col_paths: + cols.append(column_from_identifier(UUID_COLUMN)) + + # Prepare UDF columns. Throw an error if they are not computed. Update the paths of the UDFs so + # they match the paths of the columns defined by splits and embeddings. + for col in cols: + if col.signal_udf: + # Do not auto-compute dependencies, throw an error if they are not computed. + col.path, _ = self._prepare_signal( + col.signal_udf, col.path, manifest, compute_dependencies=False) + + schema = manifest.data_schema + + if combine_columns: + schema = self.select_rows_schema( + columns, sort_by, sort_order, searches, combine_columns=True).data_schema + + self._validate_columns(cols, manifest.data_schema, schema) + self._normalize_searches(searches, manifest) + search_udfs = self._search_udfs(searches, manifest) + cols.extend([search_udf.udf for search_udf in search_udfs]) + udf_columns = [col for col in cols if col.signal_udf] + + # Set dataset information on any concept signals. + for udf_col in udf_columns: + if isinstance(udf_col.signal_udf, ConceptScoreSignal): + # Set dataset information on the signal. + udf_col.signal_udf.set_column_info( + ConceptColumnInfo(namespace=self.namespace, name=self.dataset_name, path=udf_col.path)) + + # Decide on the exact sorting order. + sort_results = self._merge_sorts(search_udfs, sort_by, sort_order) + sort_by = cast(list[PathTuple], + [(sort.alias,) if sort.alias else sort.path for sort in sort_results]) + # Choose the first sort order as we only support a single sort order for now. + sort_order = sort_results[0].order if sort_results else None + + col_aliases: dict[str, PathTuple] = {col.alias: col.path for col in cols if col.alias} + udf_aliases: dict[str, PathTuple] = { + col.alias: col.path for col in cols if col.signal_udf and col.alias + } + path_to_udf_col_name: dict[PathTuple, str] = {} + for col in cols: + if col.signal_udf: + alias = col.alias or _unique_alias(col) + dest_path = _col_destination_path(col) + path_to_udf_col_name[dest_path] = alias + + # Filtering and searching. + where_query = '' + filters, udf_filters = self._normalize_filters(filters, col_aliases, udf_aliases, manifest) + filter_queries = self._create_where(manifest, filters, searches) + if filter_queries: + where_query = f"WHERE {' AND '.join(filter_queries)}" + + total_num_rows = manifest.num_items + con = self.con.cursor() + + topk_udf_col = self._topk_udf_to_sort_by(udf_columns, sort_by, limit, sort_order) + if topk_udf_col: + key_prefixes: Optional[list[VectorKey]] = None + if where_query: + # If there are filters, we need to send UUIDs to the topk query. + df = con.execute(f'SELECT {UUID_COLUMN} FROM t {where_query}').df() + total_num_rows = len(df) + key_prefixes = df[UUID_COLUMN] + + signal = cast(Signal, topk_udf_col.signal_udf) + # The input is an embedding. + vector_store = self.get_vector_store(topk_udf_col.path) + k = (limit or 0) + (offset or 0) + topk = signal.vector_compute_topk(k, vector_store, key_prefixes) + topk_uuids = list(dict.fromkeys([cast(str, key[0]) for key, _ in topk])) + + # Ignore all the other filters and filter DuckDB results only by the topk UUIDs. + uuid_filter = Filter(path=(UUID_COLUMN,), op=ListOp.IN, value=topk_uuids) + filter_query = self._create_where(manifest, [uuid_filter])[0] + where_query = f'WHERE {filter_query}' + + # Map a final column name to a list of temporary namespaced column names that need to be merged. + columns_to_merge: dict[str, dict[str, Column]] = {} + temp_column_to_offset_column: dict[str, tuple[str, Field]] = {} + select_queries: list[str] = [] + + for column in cols: + path = column.path + # If the signal is vector-based, we don't need to select the actual data, just the uuids + # plus an arbitrarily nested array of `None`s`. + empty = bool(column.signal_udf and schema.get_field(path).dtype == DataType.EMBEDDING) + + select_sqls: list[str] = [] + final_col_name = column.alias or _unique_alias(column) + if final_col_name not in columns_to_merge: + columns_to_merge[final_col_name] = {} + + duckdb_paths = self._column_to_duckdb_paths(column, schema) + span_from = self._get_span_from(path, manifest) if resolve_span or column.signal_udf else None + + for parquet_id, duckdb_path in duckdb_paths: + sql = _select_sql( + duckdb_path, flatten=False, unnest=False, empty=empty, span_from=span_from) + temp_column_name = ( + final_col_name if len(duckdb_paths) == 1 else f'{final_col_name}/{parquet_id}') + select_sqls.append(f'{sql} AS {_escape_string_literal(temp_column_name)}') + columns_to_merge[final_col_name][temp_column_name] = column + + if column.signal_udf and span_from and _schema_has_spans(column.signal_udf.fields()): + sql = _select_sql(duckdb_path, flatten=False, unnest=False, empty=empty, span_from=None) + temp_offset_column_name = f'{temp_column_name}/offset' + temp_offset_column_name = temp_offset_column_name.replace("'", "\\'") + select_sqls.append(f'{sql} AS {_escape_string_literal(temp_offset_column_name)}') + temp_column_to_offset_column[temp_column_name] = (temp_offset_column_name, + column.signal_udf.fields()) + + # `select_sqls` can be empty if this column points to a path that will be created by a UDF. + if select_sqls: + select_queries.append(', '.join(select_sqls)) + + sort_sql_before_udf: list[str] = [] + sort_sql_after_udf: list[str] = [] + + for path in sort_by: + # We only allow sorting by nodes with a value. + first_subpath = str(path[0]) + rest_of_path = path[1:] + signal_alias = '.'.join(map(str, path)) + + udf_path = _path_to_udf_duckdb_path(path, path_to_udf_col_name) + if not udf_path: + # Re-route the path if it starts with an alias by pointing it to the actual path. + if first_subpath in col_aliases: + path = (*col_aliases[first_subpath], *rest_of_path) + self._validate_sort_path(path, schema) + path = self._leaf_path_to_duckdb_path(path, schema) + else: + path = udf_path + + sort_sql = _select_sql(path, flatten=True, unnest=False) + has_repeated_field = any(subpath == PATH_WILDCARD for subpath in path) + if has_repeated_field: + sort_sql = (f'list_min({sort_sql})' + if sort_order == SortOrder.ASC else f'list_max({sort_sql})') + + # Separate sort columns into two groups: those that need to be sorted before and after UDFs. + if udf_path: + sort_sql_after_udf.append(sort_sql) + else: + sort_sql_before_udf.append(sort_sql) + + order_query = '' + if sort_sql_before_udf: + order_query = (f'ORDER BY {", ".join(sort_sql_before_udf)} ' + f'{cast(SortOrder, sort_order).value}') + + limit_query = '' + if limit: + if topk_udf_col: + limit_query = f'LIMIT {limit + (offset or 0)}' + elif sort_sql_after_udf: + limit_query = '' + else: + limit_query = f'LIMIT {limit} OFFSET {offset or 0}' + + if not topk_udf_col and where_query: + total_num_rows = cast(tuple, + con.execute(f'SELECT COUNT(*) FROM t {where_query}').fetchone())[0] + + # Fetch the data from DuckDB. + df = con.execute(f""" + SELECT {', '.join(select_queries)} FROM t + {where_query} + {order_query} + {limit_query} + """).df() + df = _replace_nan_with_none(df) + + # Run UDFs on the transformed columns. + for udf_col in udf_columns: + signal = cast(Signal, udf_col.signal_udf) + signal_alias = udf_col.alias or _unique_alias(udf_col) + temp_signal_cols = columns_to_merge[signal_alias] + if len(temp_signal_cols) != 1: + raise ValueError( + f'Unable to compute signal {signal.name}. Signal UDFs only operate on leafs, but got ' + f'{len(temp_signal_cols)} underlying columns that contain data related to {udf_col.path}.' + ) + signal_column = list(temp_signal_cols.keys())[0] + input = df[signal_column] + + with DebugTimer(f'Computing signal "{signal}"'): + signal.setup() + + if signal.compute_type in [SignalInputType.TEXT_EMBEDDING]: + # The input is an embedding. + vector_store = self.get_vector_store(udf_col.path) + flat_keys = flatten_keys(df[UUID_COLUMN], input) + signal_out = signal.vector_compute(flat_keys, vector_store) + # Add progress. + if task_step_id is not None: + signal_out = progress( + signal_out, + task_step_id=task_step_id, + estimated_len=len(flat_keys), + step_description=f'Computing {signal.key()}...') + df[signal_column] = unflatten(signal_out, input) + else: + num_rich_data = count_primitives(input) + flat_input = cast(Iterable[RichData], flatten(input)) + signal_out = signal.compute(flat_input) + # Add progress. + if task_step_id is not None: + signal_out = progress( + signal_out, + task_step_id=task_step_id, + estimated_len=num_rich_data, + step_description=f'Computing {signal.key()}...') + signal_out = list(signal_out) + + if signal_column in temp_column_to_offset_column: + offset_column_name, field = temp_column_to_offset_column[signal_column] + nested_spans: Iterable[Item] = df[offset_column_name] + flat_spans = list(flatten(nested_spans)) + for span, item in zip(flat_spans, signal_out): + _offset_any_span(cast(int, span[VALUE_KEY][TEXT_SPAN_START_FEATURE]), item, field) + + if len(signal_out) != num_rich_data: + raise ValueError( + f'The signal generated {len(signal_out)} values but the input data had ' + f"{num_rich_data} values. This means the signal either didn't generate a " + '"None" for a sparse output, or generated too many items.') + + df[signal_column] = unflatten(signal_out, input) + + signal.teardown() + + if udf_filters or sort_sql_after_udf: + # Re-upload the udf outputs to duckdb so we can filter/sort on them. + rel = con.from_df(df) + + if udf_filters: + udf_filter_queries = self._create_where(manifest, udf_filters) + if udf_filter_queries: + rel = rel.filter(' AND '.join(udf_filter_queries)) + total_num_rows = cast(tuple, rel.count('*').fetchone())[0] + + if sort_sql_after_udf: + if not sort_order: + raise ValueError('`sort_order` is required when `sort_by` is specified.') + rel = rel.order(f'{", ".join(sort_sql_after_udf)} {sort_order.value}') + + if limit: + rel = rel.limit(limit, offset or 0) + + df = _replace_nan_with_none(rel.df()) + + if combine_columns: + all_columns: dict[str, Column] = {} + for col_dict in columns_to_merge.values(): + all_columns.update(col_dict) + columns_to_merge = {'*': all_columns} + + for offset_column, _ in temp_column_to_offset_column.values(): + del df[offset_column] + + for final_col_name, temp_columns in columns_to_merge.items(): + for temp_col_name, column in temp_columns.items(): + if combine_columns: + dest_path = _col_destination_path(column) + spec = _split_path_into_subpaths_of_lists(dest_path) + df[temp_col_name] = wrap_in_dicts(df[temp_col_name], spec) + + # If the temp col name is the same as the final name, we can skip merging. This happens when + # we select a source leaf column. + if temp_col_name == final_col_name: + continue + + if final_col_name not in df: + df[final_col_name] = df[temp_col_name] + else: + df[final_col_name] = merge_series(df[final_col_name], df[temp_col_name]) + del df[temp_col_name] + + con.close() + + if combine_columns: + # Since we aliased every column to `*`, the object with have only '*' as the key. We need to + # elevate the all the columns under '*'. + df = pd.DataFrame.from_records(df['*']) + + return SelectRowsResult(df, total_num_rows) + + @override + def select_rows_schema(self, + columns: Optional[Sequence[ColumnId]] = None, + sort_by: Optional[Sequence[Path]] = None, + sort_order: Optional[SortOrder] = None, + searches: Optional[Sequence[Search]] = None, + combine_columns: bool = False) -> SelectRowsSchemaResult: + """Returns the schema of the result of `select_rows` above with the same arguments.""" + if not combine_columns: + raise NotImplementedError( + 'select_rows_schema with combine_columns=False is not yet supported.') + manifest = self.manifest() + cols = self._normalize_columns(columns, manifest.data_schema) + + # Always return the UUID column. + col_paths = [col.path for col in cols] + if (UUID_COLUMN,) not in col_paths: + cols.append(column_from_identifier(UUID_COLUMN)) + + # Prepare UDF columns. Throw an error if they are not computed. Update the paths of the UDFs so + # they match the paths of the columns defined by splits and embeddings. + for col in cols: + if col.signal_udf: + # Do not auto-compute dependencies, throw an error if they are not computed. + col.path, _ = self._prepare_signal( + col.signal_udf, col.path, manifest, compute_dependencies=False) + + self._normalize_searches(searches, manifest) + search_udfs = self._search_udfs(searches, manifest) + cols.extend([search_udf.udf for search_udf in search_udfs]) + + udfs: list[SelectRowsSchemaUDF] = [] + col_schemas: list[Schema] = [] + for col in cols: + dest_path = _col_destination_path(col) + if col.signal_udf: + udfs.append(SelectRowsSchemaUDF(path=dest_path, alias=col.alias)) + field = col.signal_udf.fields() + field.signal = col.signal_udf.dict() + elif manifest.data_schema.has_field(dest_path): + field = manifest.data_schema.get_field(dest_path) + else: + # This column might refer to an output of a udf. We postpone validation to later. + continue + col_schemas.append(_make_schema_from_path(dest_path, field)) + + sort_results = self._merge_sorts(search_udfs, sort_by, sort_order) + + search_results = [ + SearchResultInfo(search_path=search_udf.search_path, result_path=search_udf.output_path) + for search_udf in search_udfs + ] + + new_schema = merge_schemas(col_schemas) + + # Now that we have the new schema, we can validate all the column selections. + self._validate_columns(cols, manifest.data_schema, new_schema) + + return SelectRowsSchemaResult( + data_schema=new_schema, udfs=udfs, search_results=search_results, sorts=sort_results or None) + + @override + def media(self, item_id: str, leaf_path: Path) -> MediaResult: + raise NotImplementedError('Media is not yet supported for the DuckDB implementation.') + + def _get_span_from(self, path: PathTuple, manifest: DatasetManifest) -> Optional[PathTuple]: + leafs = manifest.data_schema.leafs + # Remove the value key so we can check the dtype from leafs. + span_path = path[:-1] if path[-1] == VALUE_KEY else path + is_span = (span_path in leafs and leafs[span_path].dtype == DataType.STRING_SPAN) + return _derived_from_path(path, manifest.data_schema) if is_span else None + + def _leaf_path_to_duckdb_path(self, leaf_path: PathTuple, schema: Schema) -> PathTuple: + leaf_path = _make_value_path(leaf_path) + ((_, duckdb_path),) = self._column_to_duckdb_paths(Column(leaf_path), schema) + return duckdb_path + + def _column_to_duckdb_paths(self, column: Column, schema: Schema) -> list[tuple[str, PathTuple]]: + path = column.path + parquet_manifests: list[Union[SourceManifest, SignalManifest]] = [ + self._source_manifest, *self._signal_manifests + ] + duckdb_paths: list[tuple[str, PathTuple]] = [] + + select_a_leaf_value = column.signal_udf is not None + if path[-1] == VALUE_KEY: + select_a_leaf_value = True + path = path[:-1] + + for m in parquet_manifests: + # Skip this parquet file if it doesn't contain the path. + if not schema_contains_path(m.data_schema, path): + continue + + # Skip this parquet file if the path doesn't have a dtype. + if select_a_leaf_value and not m.data_schema.get_field(path).dtype: + continue + + if isinstance(m, SignalManifest) and path == (UUID_COLUMN,): + # Do not select UUID from the signal because it's already in the source. + continue + + duckdb_path = path + parquet_id = 'source' + + if isinstance(m, SignalManifest): + duckdb_path = (m.parquet_id, *path[1:]) + parquet_id = m.parquet_id + + duckdb_paths.append((parquet_id, duckdb_path)) + + if not duckdb_paths: + # This path is probably a result of a udf. Make sure the result schema contains it. + if not schema.has_field(path): + raise ValueError(f'Invalid path "{path}": No manifest contains path. Valid paths: ' + f'{list(schema.leafs.keys())}') + + return duckdb_paths + + def _normalize_filters(self, filter_likes: Optional[Sequence[FilterLike]], + col_aliases: dict[str, PathTuple], udf_aliases: dict[str, PathTuple], + manifest: DatasetManifest) -> tuple[list[Filter], list[Filter]]: + """Normalize `FilterLike` to `Filter` and split into filters on source and filters on UDFs.""" + filter_likes = filter_likes or [] + filters: list[Filter] = [] + udf_filters: list[Filter] = [] + + for filter in filter_likes: + # Normalize `FilterLike` to `Filter`. + if not isinstance(filter, Filter): + if len(filter) == 3: + path, op, value = filter # type: ignore + elif len(filter) == 2: + path, op = filter # type: ignore + value = None + else: + raise ValueError(f'Invalid filter: {filter}. Must be a tuple with 2 or 3 elements.') + filter = Filter(path=normalize_path(path), op=op, value=value) + + if str(filter.path[0]) in udf_aliases: + udf_filters.append(filter) + else: + filters.append(filter) + + self._validate_filters(filters, col_aliases, manifest) + return filters, udf_filters + + def _normalize_searches(self, searches: Optional[Sequence[Search]], + manifest: DatasetManifest) -> None: + """Validate searches.""" + if not searches: + return + + for search in searches: + search.path = normalize_path(search.path) + field = manifest.data_schema.get_field(search.path) + if field.dtype != DataType.STRING: + raise ValueError(f'Invalid search path: {search.path}. ' + f'Must be a string field, got dtype {field.dtype}') + + def _search_udfs(self, searches: Optional[Sequence[Search]], + manifest: DatasetManifest) -> list[DuckDBSearchUDF]: + searches = searches or [] + """Create a UDF for each search for finding the location of the text with spans.""" + search_udfs: list[DuckDBSearchUDF] = [] + for search in searches: + if search.query.type == 'keyword': + udf = Column(path=search.path, signal_udf=SubstringSignal(query=search.query.search)) + search_udfs.append( + DuckDBSearchUDF( + udf=udf, + search_path=search.path, + output_path=(*_col_destination_path(udf), PATH_WILDCARD))) + elif search.query.type == 'semantic' or search.query.type == 'concept': + embedding = search.query.embedding + if not embedding: + raise ValueError(f'Please provide an embedding for semantic search. Got search: {search}') + + embedding_path = (*search.path, embedding, PATH_WILDCARD, EMBEDDING_KEY) + try: + manifest.data_schema.get_field(embedding_path) + except Exception as e: + raise ValueError( + f'Embedding {embedding} has not been computed. ' + f'Please compute the embedding index before issuing a {search.query.type} query.' + ) from e + + search_signal: Signal + if search.query.type == 'semantic': + search_signal = SemanticSimilaritySignal( + query=search.query.search, embedding=search.query.embedding) + elif search.query.type == 'concept': + search_signal = ConceptScoreSignal( + namespace=search.query.concept_namespace, + concept_name=search.query.concept_name, + embedding=search.query.embedding) + + # Add the label UDF. + concept_labels_signal = ConceptLabelsSignal( + namespace=search.query.concept_namespace, concept_name=search.query.concept_name) + concept_labels_udf = Column(path=search.path, signal_udf=concept_labels_signal) + search_udfs.append( + DuckDBSearchUDF( + udf=concept_labels_udf, + search_path=search.path, + output_path=_col_destination_path(concept_labels_udf), + sort=None)) + + udf = Column(path=embedding_path, signal_udf=search_signal) + + output_path = _col_destination_path(udf) + search_udfs.append( + DuckDBSearchUDF( + udf=udf, + search_path=search.path, + output_path=_col_destination_path(udf), + sort=(output_path, SortOrder.DESC))) + else: + raise ValueError(f'Unknown search operator {search.query.type}.') + + return search_udfs + + def _create_where(self, + manifest: DatasetManifest, + filters: list[Filter], + searches: Optional[Sequence[Search]] = []) -> list[str]: + if not filters and not searches: + return [] + searches = searches or [] + sql_filter_queries: list[str] = [] + + # Add search where queries. + for search in searches: + duckdb_path = self._leaf_path_to_duckdb_path( + normalize_path(search.path), manifest.data_schema) + select_str = _select_sql(duckdb_path, flatten=False, unnest=False) + if search.query.type == 'keyword': + sql_op = 'ILIKE' + query_val = _escape_like_value(search.query.search) + elif search.query.type == 'semantic' or search.query.type == 'concept': + # Semantic search and concepts don't yet filter. + continue + else: + raise ValueError(f'Unknown search operator {search.query.type}.') + + filter_query = f'{select_str} {sql_op} {query_val}' + + sql_filter_queries.append(filter_query) + + # Add filter where queries. + binary_ops = set(BinaryOp) + unary_ops = set(UnaryOp) + list_ops = set(ListOp) + for filter in filters: + duckdb_path = self._leaf_path_to_duckdb_path(filter.path, manifest.data_schema) + select_str = _select_sql(duckdb_path, flatten=True, unnest=False) + is_array = any(subpath == PATH_WILDCARD for subpath in filter.path) + + if filter.op in binary_ops: + sql_op = BINARY_OP_TO_SQL[cast(BinaryOp, filter.op)] + filter_val = cast(FeatureValue, filter.value) + if isinstance(filter_val, str): + filter_val = f"'{filter_val}'" + elif isinstance(filter_val, bytes): + filter_val = _bytes_to_blob_literal(filter_val) + else: + filter_val = str(filter_val) + filter_query = (f'len(list_filter({select_str}, x -> x {sql_op} {filter_val})) > 0' + if is_array else f'{select_str} {sql_op} {filter_val}') + elif filter.op in unary_ops: + if filter.op == UnaryOp.EXISTS: + filter_query = f'len({select_str}) > 0' if is_array else f'{select_str} IS NOT NULL' + else: + raise ValueError(f'Unary op: {filter.op} is not yet supported') + elif filter.op in list_ops: + if filter.op == ListOp.IN: + filter_list_val = cast(FeatureListValue, filter.value) + if not isinstance(filter_list_val, list): + raise ValueError('filter with array value can only use the IN comparison') + wrapped_filter_val = [f"'{part}'" for part in filter_list_val] + filter_val = f'({", ".join(wrapped_filter_val)})' + filter_query = f'{select_str} IN {filter_val}' + else: + raise ValueError(f'List op: {filter.op} is not yet supported') + else: + raise ValueError(f'Invalid filter op: {filter.op}') + sql_filter_queries.append(filter_query) + return sql_filter_queries + + def _execute(self, query: str) -> duckdb.DuckDBPyConnection: + """Execute a query in duckdb.""" + # FastAPI is multi-threaded so we have to create a thread-specific connection cursor to allow + # these queries to be thread-safe. + local_con = self.con.cursor() + if not DEBUG: + return local_con.execute(query) + + # Debug mode. + log('Executing:') + log(query) + with DebugTimer('Query'): + return local_con.execute(query) + + def _query(self, query: str) -> list[tuple]: + result = self._execute(query) + rows = result.fetchall() + result.close() + return rows + + def _query_df(self, query: str) -> pd.DataFrame: + """Execute a query that returns a dataframe.""" + result = self._execute(query) + df = _replace_nan_with_none(result.df()) + result.close() + return df + + def _path_to_col(self, path: Path, quote_each_part: bool = True) -> str: + """Convert a path to a column name.""" + if isinstance(path, str): + path = (path,) + return '.'.join([ + f'{_escape_col_name(path_comp)}' if quote_each_part else str(path_comp) for path_comp in path + ]) + + +def _escape_string_literal(string: str) -> str: + string = string.replace("'", "''") + return f"'{string}'" + + +def _escape_col_name(col_name: str) -> str: + col_name = col_name.replace('"', '""') + return f'"{col_name}"' + + +def _escape_like_value(value: str) -> str: + value = value.replace('%', '\\%').replace('_', '\\_') + return f"'%{value}%' ESCAPE '\\'" + + +def _inner_select(sub_paths: list[PathTuple], + inner_var: Optional[str] = None, + empty: bool = False, + span_from: Optional[PathTuple] = None) -> str: + """Recursively generate the inner select statement for a list of sub paths.""" + current_sub_path = sub_paths[0] + lambda_var = inner_var + 'x' if inner_var else 'x' + if not inner_var: + lambda_var = 'x' + inner_var = _escape_col_name(current_sub_path[0]) + current_sub_path = current_sub_path[1:] + # Select the path inside structs. E.g. x['a']['b']['c'] given current_sub_path = [a, b, c]. + path_key = inner_var + ''.join([f"['{p}']" for p in current_sub_path]) + if len(sub_paths) == 1: + if span_from: + derived_col = _select_sql(span_from, flatten=False, unnest=False) + path_key = (f'{derived_col}[{path_key}.{VALUE_KEY}.{TEXT_SPAN_START_FEATURE}+1:' + f'{path_key}.{VALUE_KEY}.{TEXT_SPAN_END_FEATURE}]') + return 'NULL' if empty else path_key + return (f'list_transform({path_key}, {lambda_var} -> ' + f'{_inner_select(sub_paths[1:], lambda_var, empty, span_from)})') + + +def _split_path_into_subpaths_of_lists(leaf_path: PathTuple) -> list[PathTuple]: + """Split a path into a subpath of lists. + + E.g. [a, b, c, *, d, *, *] gets splits [[a, b, c], [d], [], []]. + """ + sub_paths: list[PathTuple] = [] + offset = 0 + while offset <= len(leaf_path): + new_offset = leaf_path.index(PATH_WILDCARD, + offset) if PATH_WILDCARD in leaf_path[offset:] else len(leaf_path) + sub_path = leaf_path[offset:new_offset] + sub_paths.append(sub_path) + offset = new_offset + 1 + return sub_paths + + +def _select_sql(path: PathTuple, + flatten: bool, + unnest: bool, + empty: bool = False, + span_from: Optional[PathTuple] = None) -> str: + """Create a select column for a path. + + Args: + path: A path to a feature. E.g. ['a', 'b', 'c']. + flatten: Whether to flatten the result. + unnest: Whether to unnest the result. + empty: Whether to return an empty list (used for embedding signals that don't need the data). + span_from: The path this span is derived from. If specified, the span will be resolved + to a substring of the original string. + """ + sub_paths = _split_path_into_subpaths_of_lists(path) + selection = _inner_select(sub_paths, None, empty, span_from) + # We only flatten when the result of a nested list to avoid segfault. + is_result_nested_list = len(sub_paths) >= 3 # E.g. subPaths = [[a, b, c], *, *]. + if flatten and is_result_nested_list: + selection = f'flatten({selection})' + # We only unnest when the result is a list. // E.g. subPaths = [[a, b, c], *]. + is_result_a_list = len(sub_paths) >= 2 + if unnest and is_result_a_list: + selection = f'unnest({selection})' + return selection + + +def read_source_manifest(dataset_path: str) -> SourceManifest: + """Read the manifest file.""" + with open_file(os.path.join(dataset_path, MANIFEST_FILENAME), 'r') as f: + return SourceManifest.parse_raw(f.read()) + + +def _signal_dir(enriched_path: PathTuple) -> str: + """Get the filename prefix for a signal parquet file.""" + path_without_wildcards = (p for p in enriched_path if p != PATH_WILDCARD) + return os.path.join(*path_without_wildcards) + + +def split_column_name(column: str, split_name: str) -> str: + """Get the name of a split column.""" + return f'{column}.{split_name}' + + +def split_parquet_prefix(column_name: str, splitter_name: str) -> str: + """Get the filename prefix for a split parquet file.""" + return f'{column_name}.{splitter_name}' + + +def _bytes_to_blob_literal(bytes: bytes) -> str: + """Convert bytes to a blob literal.""" + escaped_hex = re.sub(r'(.{2})', r'\\x\1', bytes.hex()) + return f"'{escaped_hex}'::BLOB" + + +class SignalManifest(BaseModel): + """The manifest that describes a signal computation including schema and parquet files.""" + # List of a parquet filepaths storing the data. The paths are relative to the manifest. + files: list[str] + + # An identifier for this parquet table. Will be used as the view name in SQL. + parquet_id: str + + data_schema: Schema + signal: Signal + + # The column path that this signal is derived from. + enriched_path: PathTuple + + # The filename prefix for the embedding. Present when the signal is an embedding. + embedding_filename_prefix: Optional[str] + + @validator('signal', pre=True) + def parse_signal(cls, signal: dict) -> Signal: + """Parse a signal to its specific subclass instance.""" + return resolve_signal(signal) + + +def _merge_cells(dest_cell: Item, source_cell: Item) -> Item: + if source_cell is None or isinstance(source_cell, float) and math.isnan(source_cell): + # Nothing to merge here (missing value). + return dest_cell + if isinstance(dest_cell, dict): + if isinstance(source_cell, list): + raise ValueError(f'Failed to merge cells. Destination is a dict ({dest_cell!r}), ' + f'but source is a list ({source_cell!r}).') + if isinstance(source_cell, dict): + res = {**dest_cell} + for key, value in source_cell.items(): + res[key] = (value if key not in dest_cell else _merge_cells(dest_cell[key], value)) + return res + else: + return {VALUE_KEY: source_cell, **dest_cell} + elif isinstance(dest_cell, list): + if not isinstance(source_cell, list): + raise ValueError('Failed to merge cells. Destination is a list, but source is not.') + return [ + _merge_cells(dest_subcell, source_subcell) + for dest_subcell, source_subcell in zip(dest_cell, source_cell) + ] + else: + # The destination is a primitive. + if isinstance(source_cell, list): + raise ValueError(f'Failed to merge cells. Destination is a primitive ({dest_cell!r}), ' + f'but source is a list ({source_cell!r}).') + if isinstance(source_cell, dict): + return {VALUE_KEY: dest_cell, **source_cell} + else: + # Primitives can be merged together if they are equal. This can happen if a user selects a + # column that is the child of another. + # NOTE: This can be removed if we fix https://github.com/lilacai/lilac/issues/166. + if source_cell != dest_cell: + raise ValueError(f'Cannot merge source "{source_cell!r}" into destination "{dest_cell!r}"') + return dest_cell + + +def merge_series(destination: pd.Series, source: pd.Series) -> list[Item]: + """Merge two series of values recursively.""" + return _merge_cells(destination.tolist(), source.tolist()) + + +def _unique_alias(column: Column) -> str: + """Get a unique alias for a selection column.""" + if column.signal_udf: + return make_parquet_id(column.signal_udf, column.path) + return '.'.join(map(str, column.path)) + + +def _path_contains(parent_path: PathTuple, child_path: PathTuple) -> bool: + """Check if a path contains another path.""" + if len(parent_path) > len(child_path): + return False + return all(parent_path[i] == child_path[i] for i in range(len(parent_path))) + + +def _path_to_udf_duckdb_path(path: PathTuple, + path_to_udf_col_name: dict[PathTuple, str]) -> Optional[PathTuple]: + first_subpath, *rest_of_path = path + for parent_path, udf_col_name in path_to_udf_col_name.items(): + # If the user selected udf(document.*.text) as "udf" and wanted to sort by "udf.len", we need to + # sort by "udf.*.len" where the "*" came from the fact that the udf was applied to a list of + # "text" fields. + wildcards = [x for x in parent_path if x == PATH_WILDCARD] + if _path_contains(parent_path, path): + return (udf_col_name, *wildcards, *path[len(parent_path):]) + elif first_subpath == udf_col_name: + return (udf_col_name, *wildcards, *rest_of_path) + + return None + + +def _col_destination_path(column: Column, is_computed_signal: Optional[bool] = False) -> PathTuple: + """Get the destination path where the output of this selection column will be stored.""" + source_path = column.path + + if not column.signal_udf: + return source_path + + signal_key = column.signal_udf.key(is_computed_signal=is_computed_signal) + # If we are enriching a value we should store the signal data in the value's parent. + if source_path[-1] == VALUE_KEY: + dest_path = (*source_path[:-1], signal_key) + else: + dest_path = (*source_path, signal_key) + + return dest_path + + +def _root_column(manifest: SignalManifest) -> str: + """Returns the root column of a signal manifest.""" + field_keys = manifest.data_schema.fields.keys() + if len(field_keys) != 2: + raise ValueError('Expected exactly two fields in signal manifest, ' + f'the row UUID and root this signal is enriching. Got {field_keys}.') + return next(filter(lambda field: field != UUID_COLUMN, manifest.data_schema.fields.keys())) + + +def _derived_from_path(path: PathTuple, schema: Schema) -> PathTuple: + # Find the closest parent of `path` that is a signal root. + for i in reversed(range(len(path))): + sub_path = path[:i] + if schema.get_field(sub_path).signal is not None: + # Skip the signal name at the end to get the source path that was enriched. + return sub_path[:-1] + raise ValueError('Cannot find the source path for the enriched path: {path}') + + +def _make_value_path(path: PathTuple) -> PathTuple: + """Returns the path to the value field of the given path.""" + if path[-1] != VALUE_KEY and path[0] != UUID_COLUMN: + return (*path, VALUE_KEY) + return path + + +def _make_schema_from_path(path: PathTuple, field: Field) -> Schema: + """Returns a schema that contains only the given path.""" + for sub_path in reversed(path): + if sub_path == PATH_WILDCARD: + field = Field(repeated_field=field) + else: + field = Field(fields={sub_path: field}) + return Schema(fields=field.fields) + + +def _replace_nan_with_none(df: pd.DataFrame) -> pd.DataFrame: + """DuckDB returns np.nan for missing field in string column, replace with None for correctness.""" + # TODO(https://github.com/duckdb/duckdb/issues/4066): Remove this once duckdb fixes upstream. + for col in df.columns: + if is_object_dtype(df[col]): + df[col].replace(np.nan, None, inplace=True) + return df + + +def _offset_any_span(offset: int, item: Item, schema: Field) -> None: + """Offsets any spans inplace by the given parent offset.""" + if schema.dtype == DataType.STRING_SPAN: + item = cast(dict, item) + item[VALUE_KEY][TEXT_SPAN_START_FEATURE] += offset + item[VALUE_KEY][TEXT_SPAN_END_FEATURE] += offset + if schema.fields: + item = cast(dict, item) + for key, sub_schema in schema.fields.items(): + _offset_any_span(offset, item[key], sub_schema) + if schema.repeated_field: + item = cast(list, item) + for sub_item in item: + _offset_any_span(offset, sub_item, schema.repeated_field) + + +def _schema_has_spans(field: Field) -> bool: + if field.dtype and field.dtype == DataType.STRING_SPAN: + return True + if field.fields: + children_have_spans = any(_schema_has_spans(sub_field) for sub_field in field.fields.values()) + if children_have_spans: + return True + if field.repeated_field: + return _schema_has_spans(field.repeated_field) + return False + + +def _normalize_bins(bins: Optional[Union[Sequence[Bin], Sequence[float]]]) -> Optional[list[Bin]]: + if bins is None: + return None + if not isinstance(bins[0], (float, int)): + return cast(list[Bin], bins) + named_bins: list[Bin] = [] + for i in range(len(bins) + 1): + start = cast(float, bins[i - 1]) if i > 0 else None + end = cast(float, bins[i]) if i < len(bins) else None + named_bins.append((str(i), start, end)) + return named_bins + + +def _auto_bins(stats: StatsResult, num_bins: int) -> list[Bin]: + min_val = cast(float, stats.min_val) + max_val = cast(float, stats.max_val) + bin_width = (max_val - min_val) / num_bins + bins: list[Bin] = [] + for i in range(num_bins): + start = None if i == 0 else min_val + i * bin_width + end = None if i == num_bins - 1 else min_val + (i + 1) * bin_width + bins.append((str(i), start, end)) + return bins diff --git a/src/data/dataset_select_groups_test.py b/src/data/dataset_select_groups_test.py new file mode 100644 index 0000000000000000000000000000000000000000..97aa4f4829bd144b901293a6e8e8b6ef9915f4a1 --- /dev/null +++ b/src/data/dataset_select_groups_test.py @@ -0,0 +1,313 @@ +"""Tests for dataset.select_groups().""" + +import re + +import pytest +from pytest_mock import MockerFixture + +from ..schema import UUID_COLUMN, Item, field, schema +from . import dataset as dataset_module +from .dataset import BinaryOp +from .dataset_test_utils import TestDataMaker + + +def test_flat_data(make_test_data: TestDataMaker) -> None: + items: list[Item] = [ + { + 'name': 'Name1', + 'age': 34, + 'active': False + }, + { + 'name': 'Name2', + 'age': 45, + 'active': True + }, + { + 'age': 17, + 'active': True + }, # Missing "name". + { + 'name': 'Name3', + 'active': True + }, # Missing "age". + { + 'name': 'Name4', + 'age': 55 + } # Missing "active". + ] + dataset = make_test_data(items) + + result = dataset.select_groups(leaf_path='name') + assert result.counts == [('Name1', 1), ('Name2', 1), (None, 1), ('Name3', 1), ('Name4', 1)] + + result = dataset.select_groups(leaf_path='age', bins=[20, 50, 60]) + assert result.counts == [('1', 2), ('0', 1), (None, 1), ('2', 1)] + + result = dataset.select_groups(leaf_path='active') + assert result.counts == [ + (True, 3), + (False, 1), + (None, 1), # Missing "active". + ] + + +def test_result_counts(make_test_data: TestDataMaker) -> None: + items: list[Item] = [ + { + 'active': False + }, + { + 'active': True + }, + { + 'active': True + }, + { + 'active': True + }, + {} # Missing "active". + ] + dataset = make_test_data(items, schema=schema({UUID_COLUMN: 'string', 'active': 'boolean'})) + + result = dataset.select_groups(leaf_path='active') + assert result.counts == [(True, 3), (False, 1), (None, 1)] + + +def test_list_of_structs(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{ + 'list_of_structs': [{ + 'name': 'a' + }, { + 'name': 'b' + }] + }, { + 'list_of_structs': [{ + 'name': 'c' + }, { + 'name': 'a' + }, { + 'name': 'd' + }] + }, { + 'list_of_structs': [{ + 'name': 'd' + }] + }] + dataset = make_test_data(items) + + result = dataset.select_groups(leaf_path='list_of_structs.*.name') + assert result.counts == [('a', 2), ('d', 2), ('b', 1), ('c', 1)] + + +def test_nested_lists(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{ + 'nested_list': [[{ + 'name': 'a' + }], [{ + 'name': 'b' + }]] + }, { + 'nested_list': [[{ + 'name': 'c' + }, { + 'name': 'a' + }], [{ + 'name': 'd' + }]] + }, { + 'nested_list': [[{ + 'name': 'd' + }]] + }] + dataset = make_test_data(items) + + result = dataset.select_groups(leaf_path='nested_list.*.*.name') + assert result.counts == [('a', 2), ('d', 2), ('b', 1), ('c', 1)] + + +def test_nested_struct(make_test_data: TestDataMaker) -> None: + items: list[Item] = [ + { + 'nested_struct': { + 'struct': { + 'name': 'c' + } + } + }, + { + 'nested_struct': { + 'struct': { + 'name': 'b' + } + } + }, + { + 'nested_struct': { + 'struct': { + 'name': 'a' + } + } + }, + ] + dataset = make_test_data(items) + + result = dataset.select_groups(leaf_path='nested_struct.struct.name') + assert result.counts == [('c', 1), ('b', 1), ('a', 1)] + + +def test_named_bins(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{ + 'age': 34, + }, { + 'age': 45, + }, { + 'age': 17, + }, { + 'age': 80 + }, { + 'age': 55 + }] + dataset = make_test_data(items) + + result = dataset.select_groups( + leaf_path='age', + bins=[ + ('young', None, 20), + ('adult', 20, 50), + ('middle-aged', 50, 65), + ('senior', 65, None), + ]) + assert result.counts == [('adult', 2), ('young', 1), ('senior', 1), ('middle-aged', 1)] + + +def test_schema_with_bins(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{ + 'age': 34, + }, { + 'age': 45, + }, { + 'age': 17, + }, { + 'age': 80 + }, { + 'age': 55 + }] + data_schema = schema({ + UUID_COLUMN: 'string', + 'age': field( + 'int32', + bins=[ + ('young', None, 20), + ('adult', 20, 50), + ('middle-aged', 50, 65), + ('senior', 65, None), + ]) + }) + dataset = make_test_data(items, data_schema) + + result = dataset.select_groups(leaf_path='age') + assert result.counts == [('adult', 2), ('young', 1), ('senior', 1), ('middle-aged', 1)] + + +def test_filters(make_test_data: TestDataMaker) -> None: + items: list[Item] = [ + { + 'name': 'Name1', + 'age': 34, + 'active': False + }, + { + 'name': 'Name2', + 'age': 45, + 'active': True + }, + { + 'age': 17, + 'active': True + }, # Missing "name". + { + 'name': 'Name3', + 'active': True + }, # Missing "age". + { + 'name': 'Name4', + 'age': 55 + } # Missing "active". + ] + dataset = make_test_data(items) + + # active = True. + result = dataset.select_groups(leaf_path='name', filters=[('active', BinaryOp.EQUALS, True)]) + assert result.counts == [('Name2', 1), (None, 1), ('Name3', 1)] + + # age < 35. + result = dataset.select_groups(leaf_path='name', filters=[('age', BinaryOp.LESS, 35)]) + assert result.counts == [('Name1', 1), (None, 1)] + + # age < 35 and active = True. + result = dataset.select_groups( + leaf_path='name', filters=[('age', BinaryOp.LESS, 35), ('active', BinaryOp.EQUALS, True)]) + assert result.counts == [(None, 1)] + + +def test_invalid_leaf(make_test_data: TestDataMaker) -> None: + items: list[Item] = [ + { + 'nested_struct': { + 'struct': { + 'name': 'c' + } + } + }, + { + 'nested_struct': { + 'struct': { + 'name': 'b' + } + } + }, + { + 'nested_struct': { + 'struct': { + 'name': 'a' + } + } + }, + ] + dataset = make_test_data(items) + + with pytest.raises( + ValueError, match=re.escape("Leaf \"('nested_struct',)\" not found in dataset")): + dataset.select_groups(leaf_path='nested_struct') + + with pytest.raises( + ValueError, match=re.escape("Leaf \"('nested_struct', 'struct')\" not found in dataset")): + dataset.select_groups(leaf_path='nested_struct.struct') + + with pytest.raises( + ValueError, + match=re.escape("Leaf \"('nested_struct', 'struct', 'wrong_name')\" not found in dataset")): + dataset.select_groups(leaf_path='nested_struct.struct.wrong_name') + + +def test_too_many_distinct(make_test_data: TestDataMaker, mocker: MockerFixture) -> None: + too_many_distinct = 5 + mocker.patch(f'{dataset_module.__name__}.TOO_MANY_DISTINCT', too_many_distinct) + + items: list[Item] = [{'feature': str(i)} for i in range(too_many_distinct + 10)] + dataset = make_test_data(items) + + res = dataset.select_groups('feature') + assert res.too_many_distinct is True + assert res.counts == [] + + +def test_auto_bins_for_float(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{'feature': float(i)} for i in range(5)] + dataset = make_test_data(items) + + res = dataset.select_groups('feature') + assert res.counts == [('0', 1), ('3', 1), ('7', 1), ('11', 1), ('14', 1)] + assert res.too_many_distinct is False + assert res.bins diff --git a/src/data/dataset_select_rows_filter_test.py b/src/data/dataset_select_rows_filter_test.py new file mode 100644 index 0000000000000000000000000000000000000000..86bad45b87beb9e05ad38cb61abcfd90cc32f6a9 --- /dev/null +++ b/src/data/dataset_select_rows_filter_test.py @@ -0,0 +1,112 @@ +"""Tests for dataset.select_rows(filters=[...]).""" + +import pytest + +from ..schema import UUID_COLUMN, Item, schema +from .dataset import BinaryFilterTuple, BinaryOp, ListFilterTuple, ListOp, UnaryOp +from .dataset_test_utils import TestDataMaker + +TEST_DATA: list[Item] = [{ + UUID_COLUMN: '1', + 'str': 'a', + 'int': 1, + 'bool': False, + 'float': 3.0 +}, { + UUID_COLUMN: '2', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 2.0 +}, { + UUID_COLUMN: '3', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 1.0 +}] + + +def test_filter_by_ids(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(TEST_DATA) + + id_filter: BinaryFilterTuple = (UUID_COLUMN, BinaryOp.EQUALS, '1') + result = dataset.select_rows(filters=[id_filter]) + + assert list(result) == [{UUID_COLUMN: '1', 'str': 'a', 'int': 1, 'bool': False, 'float': 3.0}] + + id_filter = (UUID_COLUMN, BinaryOp.EQUALS, '2') + result = dataset.select_rows(filters=[id_filter]) + + assert list(result) == [{UUID_COLUMN: '2', 'str': 'b', 'int': 2, 'bool': True, 'float': 2.0}] + + id_filter = (UUID_COLUMN, BinaryOp.EQUALS, b'f') + result = dataset.select_rows(filters=[id_filter]) + + assert list(result) == [] + + +def test_filter_by_list_of_ids(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(TEST_DATA) + + id_filter: ListFilterTuple = (UUID_COLUMN, ListOp.IN, ['1', '2']) + result = dataset.select_rows(filters=[id_filter]) + + assert list(result) == [{ + UUID_COLUMN: '1', + 'str': 'a', + 'int': 1, + 'bool': False, + 'float': 3.0 + }, { + UUID_COLUMN: '2', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 2.0 + }] + + +def test_filter_by_exists(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{ + UUID_COLUMN: '1', + 'name': 'A', + 'info': { + 'lang': 'en' + }, + 'ages': [] + }, { + UUID_COLUMN: '2', + 'info': { + 'lang': 'fr' + }, + }, { + UUID_COLUMN: '3', + 'name': 'C', + 'ages': [[1, 2], [3, 4]] + }] + dataset = make_test_data( + items, + schema=schema({ + UUID_COLUMN: 'string', + 'name': 'string', + 'info': { + 'lang': 'string' + }, + 'ages': [['int32']] + })) + + exists_filter = ('name', UnaryOp.EXISTS) + result = dataset.select_rows(['name'], filters=[exists_filter]) + assert list(result) == [{UUID_COLUMN: '1', 'name': 'A'}, {UUID_COLUMN: '3', 'name': 'C'}] + + exists_filter = ('info.lang', UnaryOp.EXISTS) + result = dataset.select_rows(['name'], filters=[exists_filter]) + assert list(result) == [{UUID_COLUMN: '1', 'name': 'A'}, {UUID_COLUMN: '2', 'name': None}] + + exists_filter = ('ages.*.*', UnaryOp.EXISTS) + result = dataset.select_rows(['name'], filters=[exists_filter]) + assert list(result) == [{UUID_COLUMN: '3', 'name': 'C'}] + + with pytest.raises(ValueError, match='Unable to filter on path'): + dataset.select_rows(['name'], filters=[('info', UnaryOp.EXISTS)]) diff --git a/src/data/dataset_select_rows_schema_test.py b/src/data/dataset_select_rows_schema_test.py new file mode 100644 index 0000000000000000000000000000000000000000..9a0b3055a9fc66cd264db217a8f25fb9174a81db --- /dev/null +++ b/src/data/dataset_select_rows_schema_test.py @@ -0,0 +1,551 @@ +"""Tests for `db.select_rows_schema()`.""" + +from typing import Iterable, Optional, cast + +import numpy as np +import pytest +from typing_extensions import override + +from ..embeddings.vector_store import VectorStore +from ..schema import PATH_WILDCARD, UUID_COLUMN, Field, Item, RichData, VectorKey, field, schema +from ..signals.concept_labels import ConceptLabelsSignal +from ..signals.concept_scorer import ConceptScoreSignal +from ..signals.semantic_similarity import SemanticSimilaritySignal +from ..signals.signal import ( + EMBEDDING_KEY, + TextEmbeddingModelSignal, + TextEmbeddingSignal, + TextSignal, + TextSplitterSignal, + clear_signal_registry, + register_signal, +) +from ..signals.substring_search import SubstringSignal +from .dataset import ( + Column, + ConceptQuery, + KeywordQuery, + Search, + SearchResultInfo, + SelectRowsSchemaResult, + SelectRowsSchemaUDF, + SemanticQuery, + SortOrder, + SortResult, +) +from .dataset_test_utils import ( + TEST_DATASET_NAME, + TEST_NAMESPACE, + TestDataMaker, + enriched_embedding_span_field, +) +from .dataset_utils import lilac_embedding, lilac_span + +TEST_DATA: list[Item] = [{ + UUID_COLUMN: '1', + 'erased': False, + 'people': [{ + 'name': 'A', + 'zipcode': 0, + 'locations': [{ + 'city': 'city1', + 'state': 'state1' + }, { + 'city': 'city2', + 'state': 'state2' + }] + }] +}, { + UUID_COLUMN: '2', + 'erased': True, + 'people': [{ + 'name': 'B', + 'zipcode': 1, + 'locations': [{ + 'city': 'city3', + 'state': 'state3' + }, { + 'city': 'city4' + }, { + 'city': 'city5' + }] + }, { + 'name': 'C', + 'zipcode': 2, + 'locations': [{ + 'city': 'city1', + 'state': 'state1' + }] + }] +}] + + +class TestSplitter(TextSplitterSignal): + """Split documents into sentence by splitting on period.""" + name = 'test_splitter' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + for text in data: + if not isinstance(text, str): + raise ValueError(f'Expected text to be a string, got {type(text)} instead.') + sentences = [f'{sentence.strip()}.' for sentence in text.split('.') if sentence] + yield [ + lilac_span(text.index(sentence), + text.index(sentence) + len(sentence)) for sentence in sentences + ] + + +EMBEDDINGS: list[tuple[str, list[float]]] = [('hello.', [1.0, 0.0, 0.0]), + ('hello2.', [1.0, 1.0, 0.0]), + ('hello world.', [1.0, 1.0, 1.0]), + ('hello world2.', [2.0, 1.0, 1.0])] + +STR_EMBEDDINGS: dict[str, list[float]] = {text: embedding for text, embedding in EMBEDDINGS} + + +class TestEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Call the embedding function.""" + for example in data: + yield [lilac_embedding(0, len(example), np.array(STR_EMBEDDINGS[cast(str, example)]))] + + +class TestEmbeddingSumSignal(TextEmbeddingModelSignal): + """Sums the embeddings to return a single floating point value.""" + name = 'test_embedding_sum' + + @override + def fields(self) -> Field: + return field('float32') + + @override + def vector_compute(self, keys: Iterable[VectorKey], vector_store: VectorStore) -> Iterable[Item]: + # The signal just sums the values of the embedding. + embedding_sums = vector_store.get(keys).sum(axis=1) + for embedding_sum in embedding_sums.tolist(): + yield embedding_sum + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_signal(LengthSignal) + register_signal(AddSpaceSignal) + register_signal(TestSplitter) + register_signal(TestEmbedding) + register_signal(TestEmbeddingSumSignal) + + # Unit test runs. + yield + + # Teardown. + clear_signal_registry() + + +class LengthSignal(TextSignal): + name = 'length_signal' + + def fields(self) -> Field: + return field('int32') + + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text_content in data: + yield len(text_content) + + +class AddSpaceSignal(TextSignal): + name = 'add_space_signal' + + def fields(self) -> Field: + return field('string') + + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text_content in data: + yield cast(str, text_content) + ' ' + + +def test_simple_schema(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(TEST_DATA) + result = dataset.select_rows_schema(combine_columns=True) + assert result == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'erased': 'boolean', + 'people': [{ + 'name': 'string', + 'zipcode': 'int32', + 'locations': [{ + 'city': 'string', + 'state': 'string' + }] + }] + })) + + +def test_subselection_with_combine_cols(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(TEST_DATA) + + result = dataset.select_rows_schema([('people', '*', 'zipcode'), + ('people', '*', 'locations', '*', 'city')], + combine_columns=True) + assert result == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'people': [{ + 'zipcode': 'int32', + 'locations': [{ + 'city': 'string' + }] + }] + })) + + result = dataset.select_rows_schema([('people', '*', 'name'), ('people', '*', 'locations')], + combine_columns=True) + assert result == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'people': [{ + 'name': 'string', + 'locations': [{ + 'city': 'string', + 'state': 'string' + }] + }] + })) + + result = dataset.select_rows_schema([('people', '*')], combine_columns=True) + assert result == SelectRowsSchemaResult( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'people': [{ + 'name': 'string', + 'zipcode': 'int32', + 'locations': [{ + 'city': 'string', + 'state': 'string' + }] + }] + })) + + +def test_udf_with_combine_cols(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(TEST_DATA) + + length_signal = LengthSignal() + result = dataset.select_rows_schema([('people', '*', 'locations', '*', 'city'), + Column(('people', '*', 'name'), signal_udf=length_signal)], + combine_columns=True) + assert result == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'people': [{ + 'name': { + 'length_signal': field('int32', length_signal.dict()) + }, + 'locations': [{ + 'city': 'string' + }] + }], + }), + udfs=[ + SelectRowsSchemaUDF(path=('people', '*', 'name', length_signal.key())), + ], + ) + + +def test_embedding_udf_with_combine_cols(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(TEST_DATA) + + add_space_signal = AddSpaceSignal() + path = ('people', '*', 'name') + dataset.compute_signal(add_space_signal, path) + result = dataset.select_rows_schema([path, Column(path, signal_udf=add_space_signal)], + combine_columns=True) + assert result == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'people': [{ + 'name': field( + 'string', fields={'add_space_signal': field('string', signal=add_space_signal.dict())}) + }], + }), + udfs=[ + SelectRowsSchemaUDF(path=(*path, add_space_signal.key())), + ], + ) + + +def test_udf_chained_with_combine_cols(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello. hello2.', + }, { + UUID_COLUMN: '2', + 'text': 'hello world. hello world2.', + }]) + + test_splitter = TestSplitter() + dataset.compute_signal(test_splitter, ('text')) + add_space_signal = AddSpaceSignal() + result = dataset.select_rows_schema( + [('text'), Column(('text'), signal_udf=add_space_signal)], combine_columns=True) + + assert result == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field( + 'string', + fields={ + 'add_space_signal': field('string', add_space_signal.dict()), + 'test_splitter': field(signal=test_splitter.dict(), fields=['string_span']) + }) + }), + udfs=[ + SelectRowsSchemaUDF(path=('text', add_space_signal.key())), + ], + ) + + +def test_udf_embedding_chained_with_combine_cols(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello. hello2.', + }, { + UUID_COLUMN: '2', + 'text': 'hello world. hello world2.', + }]) + + test_splitter = TestSplitter() + dataset.compute_signal(test_splitter, 'text') + test_embedding = TestEmbedding() + dataset.compute_signal(test_embedding, ('text', 'test_splitter', '*')) + + embedding_sum_signal = TestEmbeddingSumSignal(embedding='test_embedding') + udf_col = Column(('text', 'test_splitter', '*'), signal_udf=embedding_sum_signal) + result = dataset.select_rows_schema([('text'), udf_col], combine_columns=True) + + expected_schema = schema({ + UUID_COLUMN: 'string', + 'text': field( + 'string', + fields={ + 'test_splitter': field( + signal=test_splitter.dict(), + fields=[ + field( + 'string_span', + fields={ + 'test_embedding': field( + signal=test_embedding.dict(), + fields=[ + enriched_embedding_span_field( + {'test_embedding_sum': field('float32', embedding_sum_signal.dict())}) + ]) + }) + ]) + }) + }) + output_path = ('text', 'test_splitter', '*', 'test_embedding', '*', 'embedding', + 'test_embedding_sum') + assert result == SelectRowsSchemaResult( + data_schema=expected_schema, + udfs=[SelectRowsSchemaUDF(path=output_path)], + ) + + # Alias the udf. + udf_col.alias = 'udf1' + result = dataset.select_rows_schema([('text'), udf_col], combine_columns=True) + assert result == SelectRowsSchemaResult( + data_schema=expected_schema, + udfs=[SelectRowsSchemaUDF(path=output_path, alias='udf1')], + ) + + +def test_search_keyword_schema(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello world', + 'text2': 'hello world2', + }]) + query_world = 'world' + query_hello = 'hello' + + result = dataset.select_rows_schema( + searches=[ + Search(path='text', query=KeywordQuery(type='keyword', search=query_world)), + Search(path='text2', query=KeywordQuery(type='keyword', search=query_hello)), + ], + combine_columns=True) + + expected_world_signal = SubstringSignal(query=query_world) + expected_hello_signal = SubstringSignal(query=query_hello) + + assert result == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field( + 'string', + fields={ + expected_world_signal.key(): field( + signal=expected_world_signal.dict(), fields=['string_span']) + }), + 'text2': field( + 'string', + fields={ + expected_hello_signal.key(): field( + signal=expected_hello_signal.dict(), fields=['string_span']) + }) + }), + search_results=[ + SearchResultInfo( + search_path=('text',), + result_path=('text', expected_world_signal.key(), PATH_WILDCARD), + ), + SearchResultInfo( + search_path=('text2',), + result_path=('text2', expected_hello_signal.key(), PATH_WILDCARD), + ) + ], + udfs=[ + SelectRowsSchemaUDF(path=('text', expected_world_signal.key())), + SelectRowsSchemaUDF(path=('text2', expected_hello_signal.key())), + ], + ) + + +def test_search_semantic_schema(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello world.', + }]) + query_world = 'world' + + test_embedding = TestEmbedding() + dataset.compute_signal(test_embedding, ('text')) + + result = dataset.select_rows_schema( + searches=[ + Search( + path='text', + query=SemanticQuery(type='semantic', search=query_world, embedding='test_embedding')), + ], + combine_columns=True) + + test_embedding = TestEmbedding() + expected_world_signal = SemanticSimilaritySignal(query=query_world, embedding='test_embedding') + + similarity_score_path = ('text', 'test_embedding', PATH_WILDCARD, EMBEDDING_KEY, + expected_world_signal.key()) + assert result == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field( + 'string', + fields={ + 'test_embedding': field( + signal=test_embedding.dict(), + fields=[ + enriched_embedding_span_field( + {expected_world_signal.key(): field('float32', expected_world_signal.dict())}) + ]) + }) + }), + udfs=[SelectRowsSchemaUDF(path=similarity_score_path)], + search_results=[SearchResultInfo(search_path=('text',), result_path=similarity_score_path)], + sorts=[SortResult(path=similarity_score_path, order=SortOrder.DESC, search_index=0)]) + + +def test_search_concept_schema(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello world.', + }]) + + test_embedding = TestEmbedding() + dataset.compute_signal(test_embedding, ('text')) + + result = dataset.select_rows_schema( + searches=[ + Search( + path='text', + query=ConceptQuery( + type='concept', + concept_namespace='test_namespace', + concept_name='test_concept', + embedding='test_embedding')), + ], + combine_columns=True) + + test_embedding = TestEmbedding() + expected_world_signal = ConceptScoreSignal( + namespace='test_namespace', concept_name='test_concept', embedding='test_embedding') + expected_labels_signal = ConceptLabelsSignal( + namespace='test_namespace', concept_name='test_concept') + + concept_score_path = ('text', 'test_embedding', PATH_WILDCARD, EMBEDDING_KEY, + expected_world_signal.key()) + concept_labels_path = ('text', expected_labels_signal.key()) + assert result == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'text': field( + 'string', + fields={ + 'test_embedding': field( + signal=test_embedding.dict(), + fields=[ + enriched_embedding_span_field({ + expected_world_signal.key(): field( + 'float32', + expected_world_signal.dict(), + bins=[('Not in concept', None, 0.5), ('In concept', 0.5, None)]) + }) + ]), + 'test_namespace/test_concept/labels': field( + fields=[field('string_span', fields={ + 'label': 'boolean', + 'draft': 'string' + })], + signal=expected_labels_signal.dict()) + }) + }), + udfs=[ + SelectRowsSchemaUDF(path=concept_labels_path), + SelectRowsSchemaUDF(path=concept_score_path) + ], + search_results=[ + SearchResultInfo(search_path=('text',), result_path=concept_labels_path), + SearchResultInfo(search_path=('text',), result_path=concept_score_path) + ], + sorts=[SortResult(path=concept_score_path, order=SortOrder.DESC, search_index=0)]) + + +def test_search_sort_override(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello world.', + }]) + query_world = 'world' + + test_embedding = TestEmbedding() + dataset.compute_signal(test_embedding, ('text')) + + result = dataset.select_rows_schema( + searches=[ + Search( + path='text', + query=SemanticQuery(type='semantic', search=query_world, embedding='test_embedding')), + ], + # Explicit sort by overrides the semantic search. + sort_by=[('text',)], + sort_order=SortOrder.DESC, + combine_columns=True) + + assert result.sorts == [SortResult(path=('text',), order=SortOrder.DESC)] diff --git a/src/data/dataset_select_rows_search_test.py b/src/data/dataset_select_rows_search_test.py new file mode 100644 index 0000000000000000000000000000000000000000..b9ec36641b22b8fd9e2d1f46ba036b9f94ac9eff --- /dev/null +++ b/src/data/dataset_select_rows_search_test.py @@ -0,0 +1,401 @@ +"""Tests for dataset.select_rows(searches=[...]).""" + +from typing import Iterable, cast + +import numpy as np +import pytest +from pytest import approx +from pytest_mock import MockerFixture +from sklearn.preprocessing import normalize +from typing_extensions import override + +from ..concepts.concept import ExampleIn, LogisticEmbeddingModel +from ..concepts.db_concept import ConceptUpdate, DiskConceptDB +from ..db_manager import set_default_dataset_cls +from ..schema import UUID_COLUMN, Item, RichData, SignalInputType +from ..signals.concept_scorer import ConceptScoreSignal +from ..signals.semantic_similarity import SemanticSimilaritySignal +from ..signals.signal import TextEmbeddingSignal, clear_signal_registry, register_signal +from ..signals.substring_search import SubstringSignal +from .dataset import ConceptQuery, KeywordQuery, ListOp, Search, SemanticQuery, SortOrder +from .dataset_duckdb import DatasetDuckDB +from .dataset_test_utils import TestDataMaker, enriched_embedding_span, enriched_item +from .dataset_utils import lilac_embedding, lilac_span + +TEST_DATA: list[Item] = [{ + UUID_COLUMN: '1', + 'text': 'hello world', + 'text2': 'again hello world', +}, { + UUID_COLUMN: '2', + 'text': 'looking for world in text', + 'text2': 'again looking for world in text', +}, { + UUID_COLUMN: '3', + 'text': 'unrelated text', + 'text2': 'again unrelated text' +}] + +EMBEDDINGS: list[tuple[str, list[float]]] = [ + ('hello.', [1.0, 0.0, 0.0]), + ('hello2.', [1.0, 1.0, 0.0]), + ('hello world.', [1.0, 1.0, 1.0]), + ('hello world2.', [2.0, 1.0, 1.0]), + ('random negative 1', [0, 0, 0.3]), + ('random negative 2', [0, 0, 0.4]), + ('random negative 3', [0, 0.1, 0.5]), + ('random negative 4', [0.1, 0, 0.4]), +] + +STR_EMBEDDINGS: dict[str, list[float]] = {text: embedding for text, embedding in EMBEDDINGS} + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + set_default_dataset_cls(DatasetDuckDB) + register_signal(TestEmbedding) + + # Unit test runs. + yield + + # Teardown. + clear_signal_registry() + + +def test_search_keyword(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(TEST_DATA) + + query = 'world' + result = dataset.select_rows( + searches=[Search(path='text', query=KeywordQuery(type='keyword', search=query))], + combine_columns=True) + + expected_signal_udf = SubstringSignal(query=query) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item('hello world', {expected_signal_udf.key(): [lilac_span(6, 11)]}), + 'text2': 'again hello world' + }, { + UUID_COLUMN: '2', + 'text': enriched_item('looking for world in text', + {expected_signal_udf.key(): [lilac_span(12, 17)]}), + 'text2': 'again looking for world in text', + }] + + +def test_search_keyword_special_chars(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'This is 100%', + }, { + UUID_COLUMN: '2', + 'text': 'This has _underscore_', + }]) + + query = '100%' + result = dataset.select_rows( + searches=[Search(path='text', query=KeywordQuery(type='keyword', search=query))], + combine_columns=True) + + expected_signal_udf = SubstringSignal(query=query) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item('This is 100%', {expected_signal_udf.key(): [lilac_span(8, 12)]}), + }] + + query = '_underscore_' + result = dataset.select_rows( + searches=[Search(path='text', query=KeywordQuery(type='keyword', search=query))], + combine_columns=True) + + expected_signal_udf = SubstringSignal(query=query) + assert list(result) == [{ + UUID_COLUMN: '2', + 'text': enriched_item('This has _underscore_', + {expected_signal_udf.key(): [lilac_span(9, 21)]}), + }] + + +def test_search_keyword_multiple(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(TEST_DATA) + + query_world = 'world' + query_looking_world = 'looking for world' + expected_world_udf = SubstringSignal(query=query_world) + expected_again_looking_udf = SubstringSignal(query=query_looking_world) + + result = dataset.select_rows( + searches=[ + Search(path='text', query=KeywordQuery(type='keyword', search=query_world)), + Search(path='text2', query=KeywordQuery(type='keyword', search=query_looking_world)), + ], + combine_columns=True) + + assert list(result) == [{ + UUID_COLUMN: '2', + 'text': enriched_item('looking for world in text', { + expected_world_udf.key(): [lilac_span(12, 17)], + }), + 'text2': enriched_item('again looking for world in text', + {expected_again_looking_udf.key(): [lilac_span(6, 23)]}) + }] + + +def test_search_keyword_with_filters(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(TEST_DATA) + + query = 'world' + result = dataset.select_rows( + filters=[(UUID_COLUMN, ListOp.IN, ['1', '3'])], + searches=[Search(path='text', query=KeywordQuery(type='keyword', search=query))], + combine_columns=True) + + expected_signal_udf = SubstringSignal(query=query) + assert list(result) == [ + { + UUID_COLUMN: '1', + 'text': enriched_item('hello world', {expected_signal_udf.key(): [lilac_span(6, 11)]}), + 'text2': 'again hello world' + }, + # The second row doesn't match the UUID filter. + ] + + +class TestEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Call the embedding function.""" + for example in data: + embedding = np.array(STR_EMBEDDINGS[cast(str, example)]) + embedding = normalize([embedding])[0] + yield [lilac_embedding(0, len(example), embedding)] + + +def test_semantic_search(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello world.', + }, { + UUID_COLUMN: '2', + 'text': 'hello world2.', + }]) + + test_embedding = TestEmbedding() + dataset.compute_signal(test_embedding, ('text')) + + query = 'hello2.' + result = dataset.select_rows( + searches=[ + Search( + path='text', query=SemanticQuery(type='semantic', search=query, embedding='test_embedding')) + ], + combine_columns=True) + expected_signal_udf = SemanticSimilaritySignal(query=query, embedding='test_embedding') + assert list(result) == [ + # Results are sorted by score desc. + { + UUID_COLUMN: '2', + 'text': enriched_item( + 'hello world2.', { + test_embedding.key(): + [enriched_embedding_span(0, 13, {expected_signal_udf.key(): approx(0.916, 1e-3)})] + }) + }, + { + UUID_COLUMN: '1', + 'text': enriched_item( + 'hello world.', { + test_embedding.key(): + [enriched_embedding_span(0, 12, {expected_signal_udf.key(): approx(0.885, 1e-3)})] + }) + }, + ] + + +def test_concept_search(make_test_data: TestDataMaker, mocker: MockerFixture) -> None: + concept_model_mock = mocker.spy(LogisticEmbeddingModel, 'fit') + + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello world.', + }, { + UUID_COLUMN: '2', + 'text': 'hello world2.', + }, { + UUID_COLUMN: '3', + 'text': 'random negative 1', + }, { + UUID_COLUMN: '4', + 'text': 'random negative 2', + }, { + UUID_COLUMN: '5', + 'text': 'random negative 3', + }, { + UUID_COLUMN: '6', + 'text': 'random negative 4', + }]) + + test_embedding = TestEmbedding() + dataset.compute_signal(test_embedding, ('text')) + + concept_db = DiskConceptDB() + concept_db.create(namespace='test_namespace', name='test_concept', type=SignalInputType.TEXT) + concept_db.edit( + 'test_namespace', 'test_concept', + ConceptUpdate(insert=[ + ExampleIn(label=False, text='hello world.'), + ExampleIn(label=True, text='hello world2.') + ])) + + result = dataset.select_rows( + searches=[ + Search( + path='text', + query=ConceptQuery( + type='concept', + concept_namespace='test_namespace', + concept_name='test_concept', + embedding='test_embedding')) + ], + filters=[(UUID_COLUMN, ListOp.IN, ['1', '2'])], + combine_columns=True) + expected_signal_udf = ConceptScoreSignal( + namespace='test_namespace', concept_name='test_concept', embedding='test_embedding') + + assert list(result) == [ + # Results are sorted by score desc. + { + UUID_COLUMN: '2', + 'text': enriched_item( + 'hello world2.', { + test_embedding.key(): + [enriched_embedding_span(0, 13, {expected_signal_udf.key(): approx(0.75, abs=0.25)})], + 'test_namespace/test_concept/labels': [lilac_span(0, 13, {'label': True})] + }) + }, + { + UUID_COLUMN: '1', + 'text': enriched_item( + 'hello world.', { + test_embedding.key(): + [enriched_embedding_span(0, 12, {expected_signal_udf.key(): approx(0.25, abs=0.25)})], + 'test_namespace/test_concept/labels': [lilac_span(0, 12, {'label': False})] + }) + }, + ] + + # Make sure fit was called with negative examples. + (_, embeddings, labels, _) = concept_model_mock.call_args_list[-1].args + assert embeddings.shape == (8, 3) + assert labels == [ + # Negative implicit labels. + False, + False, + False, + False, + False, + False, + # Explicit labels. + False, + True + ] + + +def test_sort_override_search(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello world.', + 'value': 10 + }, { + UUID_COLUMN: '2', + 'text': 'hello world2.', + 'value': 20 + }]) + + test_embedding = TestEmbedding() + dataset.compute_signal(test_embedding, ('text')) + + query = 'hello2.' + search = Search( + path='text', query=SemanticQuery(type='semantic', search=query, embedding='test_embedding')) + + expected_signal_udf = SemanticSimilaritySignal(query=query, embedding='test_embedding') + expected_item_1 = { + UUID_COLUMN: '1', + 'text': enriched_item( + 'hello world.', { + test_embedding.key(): + [enriched_embedding_span(0, 12, {expected_signal_udf.key(): approx(0.885, 1e-3)})] + }), + 'value': 10 + } + expected_item_2 = { + UUID_COLUMN: '2', + 'text': enriched_item( + 'hello world2.', { + test_embedding.key(): + [enriched_embedding_span(0, 13, {expected_signal_udf.key(): approx(0.916, 1e-3)})] + }), + 'value': 20 + } + + sort_order = SortOrder.ASC + result = dataset.select_rows( + searches=[search], sort_by=[('value',)], sort_order=sort_order, combine_columns=True) + assert list(result) == [ + # Results are sorted by score ascending. + expected_item_1, + expected_item_2 + ] + + sort_order = SortOrder.DESC + result = dataset.select_rows( + searches=[search], sort_by=[('text',)], sort_order=sort_order, combine_columns=True) + assert list(result) == [ + # Results are sorted by score descending. + expected_item_2, + expected_item_1 + ] + + +def test_search_keyword_and_semantic(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello world.', + }, { + UUID_COLUMN: '2', + 'text': 'hello world2.', + }]) + + test_embedding = TestEmbedding() + dataset.compute_signal(test_embedding, ('text')) + + query = 'hello2.' + keyword_query = 'rld2' + result = dataset.select_rows( + searches=[ + Search( + path='text', query=SemanticQuery(type='semantic', search=query, + embedding='test_embedding')), + Search(path='text', query=KeywordQuery(type='keyword', search=keyword_query)) + ], + combine_columns=True) + expected_semantic_signal = SemanticSimilaritySignal(query=query, embedding='test_embedding') + expected_keyword_signal = SubstringSignal(query=keyword_query) + assert list(result) == [ + # Results are sorted by score desc. + { + UUID_COLUMN: '2', + 'text': enriched_item( + 'hello world2.', { + test_embedding.key(): + [enriched_embedding_span(0, 13, {expected_semantic_signal.key(): approx(0.916, 1e-3)})], + expected_keyword_signal.key(): [lilac_span(8, 12)], + }) + }, + # UUID '1' is not returned because it does not match the keyword query. + ] diff --git a/src/data/dataset_select_rows_sort_test.py b/src/data/dataset_select_rows_sort_test.py new file mode 100644 index 0000000000000000000000000000000000000000..6bd0a91f5bd75f9f049e80af56ef78b7711942f4 --- /dev/null +++ b/src/data/dataset_select_rows_sort_test.py @@ -0,0 +1,904 @@ +"""Tests for dataset.select_rows(sort_by=...).""" + +from typing import Iterable, Optional, Sequence, cast + +import numpy as np +import pytest +from typing_extensions import override + +from ..embeddings.vector_store import VectorStore +from ..schema import UUID_COLUMN, Field, Item, RichData, VectorKey, field +from ..signals.signal import ( + TextEmbeddingModelSignal, + TextEmbeddingSignal, + TextSignal, + clear_signal_registry, + register_signal, +) +from .dataset import BinaryOp, Column, SortOrder +from .dataset_test_utils import TestDataMaker, enriched_item +from .dataset_utils import lilac_embedding + + +class TestSignal(TextSignal): + name = 'test_signal' + + def fields(self) -> Field: + return field(fields={'len': 'int32', 'is_all_cap': 'boolean'}) + + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text_content in data: + yield {'len': len(text_content), 'is_all_cap': text_content.isupper()} + + +class TestPrimitiveSignal(TextSignal): + name = 'primitive_signal' + + def fields(self) -> Field: + return field('int32') + + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text_content in data: + yield len(text_content) + 1 + + +class NestedArraySignal(TextSignal): + name = 'nested_array' + + def fields(self) -> Field: + return field(fields=[['int32']]) + + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text_content in data: + yield [[len(text_content) + 1], [len(text_content)]] + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_signal(TestSignal) + register_signal(TestPrimitiveSignal) + register_signal(NestedArraySignal) + register_signal(TopKEmbedding) + # Unit test runs. + yield + # Teardown. + clear_signal_registry() + + +def test_sort_by_source_no_alias_no_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'erased': True, + 'score': 4.1, + 'document': { + 'num_pages': 4, + 'header': { + 'title': 'c' + } + } + }, { + UUID_COLUMN: '2', + 'erased': False, + 'score': 3.5, + 'document': { + 'num_pages': 5, + 'header': { + 'title': 'b' + } + }, + }, { + UUID_COLUMN: '3', + 'erased': True, + 'score': 3.7, + 'document': { + 'num_pages': 3, + 'header': { + 'title': 'a' + } + }, + }]) + + # Sort by bool. + result = dataset.select_rows(columns=[UUID_COLUMN], sort_by=['erased'], sort_order=SortOrder.ASC) + assert list(result) == [{UUID_COLUMN: '2'}, {UUID_COLUMN: '1'}, {UUID_COLUMN: '3'}] + result = dataset.select_rows(columns=[UUID_COLUMN], sort_by=['erased'], sort_order=SortOrder.DESC) + assert list(result) == [{UUID_COLUMN: '1'}, {UUID_COLUMN: '3'}, {UUID_COLUMN: '2'}] + + # Sort by float. + result = dataset.select_rows(columns=[UUID_COLUMN], sort_by=['score'], sort_order=SortOrder.ASC) + assert list(result) == [{UUID_COLUMN: '2'}, {UUID_COLUMN: '3'}, {UUID_COLUMN: '1'}] + result = dataset.select_rows(columns=[UUID_COLUMN], sort_by=['score'], sort_order=SortOrder.DESC) + assert list(result) == [{UUID_COLUMN: '1'}, {UUID_COLUMN: '3'}, {UUID_COLUMN: '2'}] + + # Sort by nested int. + result = dataset.select_rows( + columns=[UUID_COLUMN], sort_by=['document.num_pages'], sort_order=SortOrder.ASC) + assert list(result) == [{UUID_COLUMN: '3'}, {UUID_COLUMN: '1'}, {UUID_COLUMN: '2'}] + result = dataset.select_rows( + columns=[UUID_COLUMN], sort_by=['document.num_pages'], sort_order=SortOrder.DESC) + assert list(result) == [{UUID_COLUMN: '2'}, {UUID_COLUMN: '1'}, {UUID_COLUMN: '3'}] + + # Sort by double nested string. + result = dataset.select_rows( + columns=[UUID_COLUMN], sort_by=['document.header.title'], sort_order=SortOrder.ASC) + assert list(result) == [{UUID_COLUMN: '3'}, {UUID_COLUMN: '2'}, {UUID_COLUMN: '1'}] + result = dataset.select_rows( + columns=[UUID_COLUMN], sort_by=['document.header.title'], sort_order=SortOrder.DESC) + assert list(result) == [{UUID_COLUMN: '1'}, {UUID_COLUMN: '2'}, {UUID_COLUMN: '3'}] + + +def test_sort_by_signal_no_alias_no_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'HEY' + }, { + UUID_COLUMN: '2', + 'text': 'everyone' + }, { + UUID_COLUMN: '3', + 'text': 'HI' + }]) + + dataset.compute_signal(TestSignal(), 'text') + + # Sort by `signal.len`. + result = dataset.select_rows( + columns=[UUID_COLUMN], sort_by=['text.test_signal.len'], sort_order=SortOrder.ASC) + assert list(result) == [{UUID_COLUMN: '3'}, {UUID_COLUMN: '1'}, {UUID_COLUMN: '2'}] + result = dataset.select_rows( + columns=[UUID_COLUMN], sort_by=['text.test_signal.len'], sort_order=SortOrder.DESC) + assert list(result) == [{UUID_COLUMN: '2'}, {UUID_COLUMN: '1'}, {UUID_COLUMN: '3'}] + + # Sort by `signal.is_all_cap`. + result = dataset.select_rows( + columns=[UUID_COLUMN], sort_by=['text.test_signal.is_all_cap'], sort_order=SortOrder.ASC) + assert list(result) == [{UUID_COLUMN: '2'}, {UUID_COLUMN: '1'}, {UUID_COLUMN: '3'}] + result = dataset.select_rows( + columns=[UUID_COLUMN], sort_by=['text.test_signal.is_all_cap'], sort_order=SortOrder.DESC) + assert list(result) == [{UUID_COLUMN: '1'}, {UUID_COLUMN: '3'}, {UUID_COLUMN: '2'}] + + +def test_sort_by_signal_alias_no_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'HEY' + }, { + UUID_COLUMN: '2', + 'text': 'everyone' + }, { + UUID_COLUMN: '3', + 'text': 'HI' + }]) + + dataset.compute_signal(TestSignal(), 'text') + + # Sort by `signal.len`. + signal_alias = Column('text.test_signal', alias='signal') + result = dataset.select_rows( + columns=[signal_alias], sort_by=['signal.len'], sort_order=SortOrder.ASC) + assert list(result) == [{ + UUID_COLUMN: '3', + 'signal': { + 'len': 2, + 'is_all_cap': True + } + }, { + UUID_COLUMN: '1', + 'signal': { + 'len': 3, + 'is_all_cap': True + } + }, { + UUID_COLUMN: '2', + 'signal': { + 'len': 8, + 'is_all_cap': False + } + }] + result = dataset.select_rows( + columns=[signal_alias], sort_by=['signal.len'], sort_order=SortOrder.DESC) + assert list(result) == [{ + UUID_COLUMN: '2', + 'signal': { + 'len': 8, + 'is_all_cap': False + } + }, { + UUID_COLUMN: '1', + 'signal': { + 'len': 3, + 'is_all_cap': True + } + }, { + UUID_COLUMN: '3', + 'signal': { + 'len': 2, + 'is_all_cap': True + } + }] + + +def test_sort_by_enriched_alias_no_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'HEY' + }, { + UUID_COLUMN: '2', + 'text': 'everyone' + }, { + UUID_COLUMN: '3', + 'text': 'HI' + }]) + + dataset.compute_signal(TestSignal(), 'text') + + # Sort by `document.test_signal.is_all_cap` where 'document' is an alias to 'text'. + text_alias = Column('text', alias='document') + result = dataset.select_rows( + columns=[text_alias], sort_by=['document.test_signal.is_all_cap'], sort_order=SortOrder.ASC) + assert list(result) == [{ + UUID_COLUMN: '2', + 'document': enriched_item('everyone', {'test_signal': { + 'len': 8, + 'is_all_cap': False + }}) + }, { + UUID_COLUMN: '1', + 'document': enriched_item('HEY', {'test_signal': { + 'len': 3, + 'is_all_cap': True + }}) + }, { + UUID_COLUMN: '3', + 'document': enriched_item('HI', {'test_signal': { + 'len': 2, + 'is_all_cap': True + }}) + }] + + result = dataset.select_rows( + columns=[text_alias], sort_by=['document.test_signal.is_all_cap'], sort_order=SortOrder.DESC) + assert list(result) == [{ + UUID_COLUMN: '1', + 'document': enriched_item('HEY', {'test_signal': { + 'len': 3, + 'is_all_cap': True + }}) + }, { + UUID_COLUMN: '3', + 'document': enriched_item('HI', {'test_signal': { + 'len': 2, + 'is_all_cap': True + }}) + }, { + UUID_COLUMN: '2', + 'document': enriched_item('everyone', {'test_signal': { + 'len': 8, + 'is_all_cap': False + }}) + }] + + +def test_sort_by_udf_alias_no_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'HEY' + }, { + UUID_COLUMN: '2', + 'text': 'everyone' + }, { + UUID_COLUMN: '3', + 'text': 'HI' + }]) + + # Equivalent to: SELECT `TestSignal(text) AS udf`. + text_udf = Column('text', signal_udf=TestSignal(), alias='udf') + # Sort by `udf.len`, where `udf` is an alias to `TestSignal(text)`. + result = dataset.select_rows(['*', text_udf], sort_by=['udf.len'], sort_order=SortOrder.ASC) + assert list(result) == [{ + UUID_COLUMN: '3', + 'text': 'HI', + 'udf': { + 'len': 2, + 'is_all_cap': True + } + }, { + UUID_COLUMN: '1', + 'text': 'HEY', + 'udf': { + 'len': 3, + 'is_all_cap': True + } + }, { + UUID_COLUMN: '2', + 'text': 'everyone', + 'udf': { + 'len': 8, + 'is_all_cap': False + } + }] + + +def test_sort_by_udf_no_alias_no_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'HEY' + }, { + UUID_COLUMN: '2', + 'text': 'everyone' + }, { + UUID_COLUMN: '3', + 'text': 'HI' + }]) + + text_udf = Column('text', signal_udf=TestSignal()) + # Sort by `text.test_signal.len`, produced by executing the udf `TestSignal(text)`. + result = dataset.select_rows(['*', text_udf], + sort_by=[('text', 'test_signal', 'len')], + sort_order=SortOrder.ASC, + combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '3', + 'text': enriched_item('HI', {'test_signal': { + 'len': 2, + 'is_all_cap': True + }}), + }, { + UUID_COLUMN: '1', + 'text': enriched_item('HEY', {'test_signal': { + 'len': 3, + 'is_all_cap': True + }}), + }, { + UUID_COLUMN: '2', + 'text': enriched_item('everyone', {'test_signal': { + 'len': 8, + 'is_all_cap': False + }}), + }] + + # Sort descending. + result = dataset.select_rows(['*', text_udf], + sort_by=[('text', 'test_signal', 'len')], + sort_order=SortOrder.DESC, + combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '2', + 'text': enriched_item('everyone', {'test_signal': { + 'len': 8, + 'is_all_cap': False + }}), + }, { + UUID_COLUMN: '1', + 'text': enriched_item('HEY', {'test_signal': { + 'len': 3, + 'is_all_cap': True + }}), + }, { + UUID_COLUMN: '3', + 'text': enriched_item('HI', {'test_signal': { + 'len': 2, + 'is_all_cap': True + }}), + }] + + +def test_sort_by_primitive_udf_alias_no_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'HEY' + }, { + UUID_COLUMN: '2', + 'text': 'everyone' + }, { + UUID_COLUMN: '3', + 'text': 'HI' + }]) + + # Equivalent to: SELECT `TestPrimitiveSignal(text) AS udf`. + text_udf = Column('text', signal_udf=TestPrimitiveSignal(), alias='udf') + # Sort by the primitive value returned by the udf. + result = dataset.select_rows(['*', text_udf], sort_by=['udf'], sort_order=SortOrder.ASC) + assert list(result) == [{ + UUID_COLUMN: '3', + 'text': 'HI', + 'udf': 3 + }, { + UUID_COLUMN: '1', + 'text': 'HEY', + 'udf': 4 + }, { + UUID_COLUMN: '2', + 'text': 'everyone', + 'udf': 9 + }] + + +def test_sort_by_source_non_leaf_errors(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'vals': [7, 1] + }, { + UUID_COLUMN: '2', + 'vals': [3, 4] + }, { + UUID_COLUMN: '3', + 'vals': [9, 0] + }]) + + # Sort by repeated. + with pytest.raises(ValueError, match='Unable to sort by path'): + dataset.select_rows(columns=[UUID_COLUMN], sort_by=['vals'], sort_order=SortOrder.ASC) + + +def test_sort_by_source_no_alias_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'vals': [[{ + 'score': 7 + }, { + 'score': 1 + }], [{ + 'score': 1 + }, { + 'score': 7 + }]] + }, { + UUID_COLUMN: '2', + 'vals': [[{ + 'score': 3 + }, { + 'score': 4 + }]] + }, { + UUID_COLUMN: '3', + 'vals': [[{ + 'score': 9 + }, { + 'score': 0 + }]] + }]) + + # Sort by repeated 'vals'. + result = dataset.select_rows( + columns=[UUID_COLUMN, 'vals'], sort_by=['vals.*.*.score'], sort_order=SortOrder.ASC) + assert list(result) == [{ + UUID_COLUMN: '3', + 'vals': [[{ + 'score': 9 + }, { + 'score': 0 + }]] + }, { + UUID_COLUMN: '1', + 'vals': [[{ + 'score': 7 + }, { + 'score': 1 + }], [{ + 'score': 1 + }, { + 'score': 7 + }]] + }, { + UUID_COLUMN: '2', + 'vals': [[{ + 'score': 3 + }, { + 'score': 4 + }]] + }] + + result = dataset.select_rows( + columns=[UUID_COLUMN, 'vals'], sort_by=['vals.*.*.score'], sort_order=SortOrder.DESC) + assert list(result) == [{ + UUID_COLUMN: '3', + 'vals': [[{ + 'score': 9 + }, { + 'score': 0 + }]] + }, { + UUID_COLUMN: '1', + 'vals': [[{ + 'score': 7 + }, { + 'score': 1 + }], [{ + 'score': 1 + }, { + 'score': 7 + }]] + }, { + UUID_COLUMN: '2', + 'vals': [[{ + 'score': 3 + }, { + 'score': 4 + }]] + }] + + +def test_sort_by_source_alias_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'vals': [[7, 1], [1, 7]] + }, { + UUID_COLUMN: '2', + 'vals': [[3], [11]] + }, { + UUID_COLUMN: '3', + 'vals': [[9, 0]] + }]) + + # Sort by repeated 'vals'. + result = dataset.select_rows( + columns=[UUID_COLUMN, Column('vals', alias='scores')], + sort_by=['scores.*.*'], + sort_order=SortOrder.ASC) + assert list(result) == [{ + UUID_COLUMN: '3', + 'scores': [[9, 0]] + }, { + UUID_COLUMN: '1', + 'scores': [[7, 1], [1, 7]] + }, { + UUID_COLUMN: '2', + 'scores': [[3], [11]] + }] + + result = dataset.select_rows( + columns=[UUID_COLUMN, Column('vals', alias='scores')], + sort_by=['scores.*.*'], + sort_order=SortOrder.DESC) + assert list(result) == [{ + UUID_COLUMN: '2', + 'scores': [[3], [11]] + }, { + UUID_COLUMN: '3', + 'scores': [[9, 0]] + }, { + UUID_COLUMN: '1', + 'scores': [[7, 1], [1, 7]] + }] + + +def test_sort_by_udf_alias_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'HEY' + }, { + UUID_COLUMN: '2', + 'text': 'everyone' + }, { + UUID_COLUMN: '3', + 'text': 'HI' + }]) + + # Equivalent to: SELECT `NestedArraySignal(text) AS udf`. + text_udf = Column('text', signal_udf=NestedArraySignal(), alias='udf') + # Sort by `udf.*.*`, where `udf` is an alias to `NestedArraySignal(text)`. + result = dataset.select_rows(['*', text_udf], sort_by=['udf.*.*'], sort_order=SortOrder.ASC) + assert list(result) == [{ + UUID_COLUMN: '3', + 'text': 'HI', + 'udf': [[3], [2]] + }, { + UUID_COLUMN: '1', + 'text': 'HEY', + 'udf': [[4], [3]] + }, { + UUID_COLUMN: '2', + 'text': 'everyone', + 'udf': [[9], [8]] + }] + result = dataset.select_rows(['*', text_udf], sort_by=['udf.*.*'], sort_order=SortOrder.DESC) + assert list(result) == [{ + UUID_COLUMN: '2', + 'text': 'everyone', + 'udf': [[9], [8]] + }, { + UUID_COLUMN: '1', + 'text': 'HEY', + 'udf': [[4], [3]] + }, { + UUID_COLUMN: '3', + 'text': 'HI', + 'udf': [[3], [2]] + }] + + +def test_sort_by_complex_signal_udf_alias_called_on_repeated(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'texts': [{ + 'text': 'eardrop' + }, { + 'text': 'I' + }] + }, { + UUID_COLUMN: '2', + 'texts': [{ + 'text': 'hey' + }, { + 'text': 'CARS' + }] + }, { + UUID_COLUMN: '3', + 'texts': [{ + 'text': 'everyone' + }, { + 'text': '' + }] + }]) + + # Equivalent to: SELECT `TestSignal(texts.*.text) AS udf`. + texts_udf = Column('texts.*.text', signal_udf=TestSignal(), alias='udf') + # Sort by `udf.len`, where `udf` is an alias to `TestSignal(texts.*.text)`. + result = dataset.select_rows(['*', texts_udf], + sort_by=['udf.len'], + sort_order=SortOrder.ASC, + combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '3', + 'texts': [{ + 'text': enriched_item('everyone', {'test_signal': { + 'len': 8, + 'is_all_cap': False + }}) + }, { + 'text': enriched_item('', {'test_signal': { + 'len': 0, + 'is_all_cap': False + }}) + }] + }, { + UUID_COLUMN: '1', + 'texts': [{ + 'text': enriched_item('eardrop', {'test_signal': { + 'len': 7, + 'is_all_cap': False + }}) + }, { + 'text': enriched_item('I', {'test_signal': { + 'len': 1, + 'is_all_cap': True + }}) + }] + }, { + UUID_COLUMN: '2', + 'texts': [{ + 'text': enriched_item('hey', {'test_signal': { + 'len': 3, + 'is_all_cap': False + }}) + }, { + 'text': enriched_item('CARS', {'test_signal': { + 'len': 4, + 'is_all_cap': True + }}) + }] + }] + + +def test_sort_by_primitive_signal_udf_alias_called_on_repeated( + make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'texts': [{ + 'text': 'eardrop' + }, { + 'text': 'I' + }] + }, { + UUID_COLUMN: '2', + 'texts': [{ + 'text': 'hey' + }, { + 'text': 'CARS' + }] + }, { + UUID_COLUMN: '3', + 'texts': [{ + 'text': 'everyone' + }, { + 'text': '' + }] + }]) + + # Equivalent to: SELECT `TestPrimitiveSignal(texts.*.text) AS udf`. + texts_udf = Column('texts.*.text', signal_udf=TestPrimitiveSignal(), alias='udf') + # Sort by `udf`, where `udf` is an alias to `TestPrimitiveSignal(texts.*.text)`. + result = dataset.select_rows(['*', texts_udf], + sort_by=['udf'], + sort_order=SortOrder.ASC, + combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '3', + 'texts': [{ + 'text': enriched_item('everyone', {'primitive_signal': 9}) + }, { + 'text': enriched_item('', {'primitive_signal': 1}) + }] + }, { + UUID_COLUMN: '1', + 'texts': [{ + 'text': enriched_item('eardrop', {'primitive_signal': 8}) + }, { + 'text': enriched_item('I', {'primitive_signal': 2}) + }] + }, { + UUID_COLUMN: '2', + 'texts': [{ + 'text': enriched_item('hey', {'primitive_signal': 4}) + }, { + 'text': enriched_item('CARS', {'primitive_signal': 5}) + }] + }] + result = dataset.select_rows(['*', texts_udf], + sort_by=['udf'], + sort_order=SortOrder.DESC, + combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '3', + 'texts': [{ + 'text': enriched_item('everyone', {'primitive_signal': 9}) + }, { + 'text': enriched_item('', {'primitive_signal': 1}) + }] + }, { + UUID_COLUMN: '1', + 'texts': [{ + 'text': enriched_item('eardrop', {'primitive_signal': 8}) + }, { + 'text': enriched_item('I', {'primitive_signal': 2}) + }] + }, { + UUID_COLUMN: '2', + 'texts': [{ + 'text': enriched_item('hey', {'primitive_signal': 4}) + }, { + 'text': enriched_item('CARS', {'primitive_signal': 5}) + }] + }] + + +class TopKEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'topk_embedding' + + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Call the embedding function.""" + for example in data: + example = cast(str, example) + emb_spans: list[Item] = [] + for i, score in enumerate(example.split('_')): + start, end = i * 2, i * 2 + 1 + vector = np.array([int(score)]) + emb_spans.append(lilac_embedding(start, end, vector)) + yield emb_spans + + +class TopKSignal(TextEmbeddingModelSignal): + """Compute scores along a given concept for documents.""" + name = 'topk_signal' + + _query = np.array([1]) + + def fields(self) -> Field: + return field('float32') + + @override + def vector_compute(self, keys: Iterable[VectorKey], + vector_store: VectorStore) -> Iterable[Optional[Item]]: + text_embeddings = vector_store.get(keys) + dot_products = text_embeddings.dot(self._query).reshape(-1) + return dot_products.tolist() + + @override + def vector_compute_topk( + self, + topk: int, + vector_store: VectorStore, + keys: Optional[Iterable[VectorKey]] = None) -> Sequence[tuple[VectorKey, Optional[Item]]]: + return vector_store.topk(self._query, topk, keys) + + +def test_sort_by_topk_embedding_udf(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'scores': '8_1', + }, { + UUID_COLUMN: '2', + 'scores': '3_5' + }, { + UUID_COLUMN: '3', + 'scores': '9_7' + }]) + + dataset.compute_signal(TopKEmbedding(), 'scores') + + # Equivalent to: SELECT `TopKSignal(scores, embedding='...') AS udf`. + text_udf = Column('scores', signal_udf=TopKSignal(embedding='topk_embedding'), alias='udf') + # Sort by `udf`, where `udf` is an alias to `TopKSignal(scores, embedding='...')`. + result = dataset.select_rows(['*', text_udf], sort_by=['udf'], sort_order=SortOrder.DESC, limit=3) + assert list(result) == [{ + UUID_COLUMN: '3', + 'scores': enriched_item( + '9_7', {'topk_embedding': [lilac_embedding(0, 1, None), + lilac_embedding(2, 3, None)]}), + 'udf': [9.0, 7.0] + }, { + UUID_COLUMN: '1', + 'scores': enriched_item( + '8_1', {'topk_embedding': [lilac_embedding(0, 1, None), + lilac_embedding(2, 3, None)]}), + 'udf': [8.0, 1.0] + }] + + # Same but set limit to 4. + result = dataset.select_rows(['*', text_udf], sort_by=['udf'], sort_order=SortOrder.DESC, limit=4) + assert list(result) == [{ + UUID_COLUMN: '3', + 'scores': enriched_item( + '9_7', {'topk_embedding': [lilac_embedding(0, 1, None), + lilac_embedding(2, 3, None)]}), + 'udf': [9.0, 7.0] + }, { + UUID_COLUMN: '1', + 'scores': enriched_item( + '8_1', {'topk_embedding': [lilac_embedding(0, 1, None), + lilac_embedding(2, 3, None)]}), + 'udf': [8.0, 1.0] + }, { + UUID_COLUMN: '2', + 'scores': enriched_item( + '3_5', {'topk_embedding': [lilac_embedding(0, 1, None), + lilac_embedding(2, 3, None)]}), + 'udf': [3.0, 5.0] + }] + + +def test_sort_by_topk_udf_with_filter(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'scores': '8_1', + 'active': True + }, { + UUID_COLUMN: '2', + 'scores': '3_5', + 'active': True + }, { + UUID_COLUMN: '3', + 'scores': '9_7', + 'active': False + }]) + + dataset.compute_signal(TopKEmbedding(), 'scores') + + # Equivalent to: SELECT `TopKSignal(scores, embedding='...') AS udf`. + text_udf = Column('scores', signal_udf=TopKSignal(embedding='topk_embedding'), alias='udf') + # Sort by `udf`, where `udf` is an alias to `TopKSignal(scores, embedding='...')`. + result = dataset.select_rows(['*', text_udf], + sort_by=['udf'], + filters=[('active', BinaryOp.EQUALS, True)], + sort_order=SortOrder.DESC, + limit=2) + # We make sure that '3' is not in the result, because it is not active, even though it has the + # highest topk score. + assert list(result) == [{ + UUID_COLUMN: '1', + 'active': True, + 'scores': enriched_item( + '8_1', {'topk_embedding': [lilac_embedding(0, 1, None), + lilac_embedding(2, 3, None)]}), + 'udf': [8.0, 1.0] + }, { + UUID_COLUMN: '2', + 'active': True, + 'scores': enriched_item( + '3_5', {'topk_embedding': [lilac_embedding(0, 1, None), + lilac_embedding(2, 3, None)]}), + 'udf': [3.0, 5.0] + }] diff --git a/src/data/dataset_select_rows_udf_test.py b/src/data/dataset_select_rows_udf_test.py new file mode 100644 index 0000000000000000000000000000000000000000..99ac2ce8ce5d40c4af68f6482c2b1aee71d36e39 --- /dev/null +++ b/src/data/dataset_select_rows_udf_test.py @@ -0,0 +1,404 @@ +"""Tests for dataset.select_rows(udf_col).""" + +from typing import Iterable, Optional, cast + +import numpy as np +import pytest +from typing_extensions import override + +from ..embeddings.vector_store import VectorStore +from ..schema import UUID_COLUMN, VALUE_KEY, Field, Item, RichData, VectorKey, field +from ..signals.signal import ( + TextEmbeddingModelSignal, + TextEmbeddingSignal, + TextSignal, + TextSplitterSignal, + clear_signal_registry, + register_signal, +) +from .dataset import BinaryFilterTuple, BinaryOp, Column, val +from .dataset_test_utils import TestDataMaker, enriched_item +from .dataset_utils import lilac_embedding, lilac_span + +EMBEDDINGS: list[tuple[str, list[float]]] = [('hello.', [1.0, 0.0, 0.0]), + ('hello2.', [1.0, 1.0, 0.0]), + ('hello world.', [1.0, 1.0, 1.0]), + ('hello world2.', [2.0, 1.0, 1.0])] + +STR_EMBEDDINGS: dict[str, list[float]] = {text: embedding for text, embedding in EMBEDDINGS} + + +class TestEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Call the embedding function.""" + for example in data: + yield [lilac_embedding(0, len(example), np.array(STR_EMBEDDINGS[cast(str, example)]))] + + +class LengthSignal(TextSignal): + name = 'length_signal' + + _call_count: int = 0 + + def fields(self) -> Field: + return field('int32') + + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text_content in data: + self._call_count += 1 + yield len(text_content) + + +class TestSignal(TextSignal): + name = 'test_signal' + + @override + def fields(self) -> Field: + return field(fields={'len': 'int32', 'flen': 'float32'}) + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + return [{'len': len(text_content), 'flen': float(len(text_content))} for text_content in data] + + +class TestEmbeddingSumSignal(TextEmbeddingModelSignal): + """Sums the embeddings to return a single floating point value.""" + name = 'test_embedding_sum' + + @override + def fields(self) -> Field: + return field('float32') + + @override + def vector_compute(self, keys: Iterable[VectorKey], vector_store: VectorStore) -> Iterable[Item]: + # The signal just sums the values of the embedding. + embedding_sums = vector_store.get(keys).sum(axis=1) + for embedding_sum in embedding_sums.tolist(): + yield embedding_sum + + +class ComputedKeySignal(TextSignal): + name = 'computed_key' + + @override + def fields(self) -> Field: + return field('int64') + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text in data: + yield 1 + + def key(self, is_computed_signal: Optional[bool] = False) -> str: + return f'key_{is_computed_signal}' + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_signal(LengthSignal) + register_signal(TestSplitter) + register_signal(TestEmbedding) + register_signal(TestSignal) + register_signal(TestEmbeddingSumSignal) + register_signal(ComputedKeySignal) + + # Unit test runs. + yield + # Teardown. + clear_signal_registry() + + +def test_udf(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello' + }, { + UUID_COLUMN: '2', + 'text': 'everybody' + }]) + + signal_col = Column('text', signal_udf=TestSignal()) + result = dataset.select_rows(['text', signal_col]) + + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': 'hello', + 'test_signal(text)': { + 'len': 5, + 'flen': 5.0 + } + }, { + UUID_COLUMN: '2', + 'text': 'everybody', + 'test_signal(text)': { + 'len': 9, + 'flen': 9.0 + } + }] + + +def test_udf_with_filters(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello' + }, { + UUID_COLUMN: '2', + 'text': 'everybody' + }]) + + signal_col = Column('text', signal_udf=TestSignal()) + # Filter by source feature. + filters: list[BinaryFilterTuple] = [('text', BinaryOp.EQUALS, 'everybody')] + result = dataset.select_rows(['text', signal_col], filters=filters) + assert list(result) == [{ + UUID_COLUMN: '2', + 'text': 'everybody', + 'test_signal(text)': { + 'len': 9, + 'flen': 9.0 + } + }] + + +def test_udf_with_uuid_filter(make_test_data: TestDataMaker) -> None: + + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello' + }, { + UUID_COLUMN: '2', + 'text': 'everybody' + }]) + + # Filter by a specific UUID. + filters: list[BinaryFilterTuple] = [(UUID_COLUMN, BinaryOp.EQUALS, '1')] + udf_col = Column('text', signal_udf=LengthSignal()) + result = dataset.select_rows(['text', udf_col], filters=filters) + assert list(result) == [{UUID_COLUMN: '1', 'text': 'hello', 'length_signal(text)': 5}] + assert cast(LengthSignal, udf_col.signal_udf)._call_count == 1 + + filters = [(UUID_COLUMN, BinaryOp.EQUALS, '2')] + result = dataset.select_rows(['text', udf_col], filters=filters) + assert list(result) == [{UUID_COLUMN: '2', 'text': 'everybody', 'length_signal(text)': 9}] + assert cast(LengthSignal, udf_col.signal_udf)._call_count == 1 + 1 + + # No filters. + result = dataset.select_rows(['text', udf_col]) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': 'hello', + 'length_signal(text)': 5 + }, { + UUID_COLUMN: '2', + 'text': 'everybody', + 'length_signal(text)': 9 + }] + assert cast(LengthSignal, udf_col.signal_udf)._call_count == 2 + 2 + + +def test_udf_with_uuid_filter_repeated(make_test_data: TestDataMaker) -> None: + + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': ['hello', 'hi'] + }, { + UUID_COLUMN: '2', + 'text': ['everybody', 'bye', 'test'] + }]) + + # Filter by a specific UUID. + filters: list[BinaryFilterTuple] = [(UUID_COLUMN, BinaryOp.EQUALS, '1')] + udf_col = Column(('text', '*'), signal_udf=LengthSignal()) + result = dataset.select_rows(['text', udf_col], filters=filters) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': ['hello', 'hi'], + 'length_signal(text)': [5, 2] + }] + assert cast(LengthSignal, udf_col.signal_udf)._call_count == 2 + + # Filter by a specific UUID. + filters = [(UUID_COLUMN, BinaryOp.EQUALS, '2')] + result = dataset.select_rows(['text', udf_col], filters=filters) + assert list(result) == [{ + UUID_COLUMN: '2', + 'text': ['everybody', 'bye', 'test'], + 'length_signal(text)': [9, 3, 4] + }] + assert cast(LengthSignal, udf_col.signal_udf)._call_count == 2 + 3 + + +def test_udf_deeply_nested(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': [['hello'], ['hi', 'bye']] + }, { + UUID_COLUMN: '2', + 'text': [['everybody', 'bye'], ['test']] + }]) + + udf_col = Column(('text', '*', '*'), signal_udf=LengthSignal()) + result = dataset.select_rows([udf_col]) + assert list(result) == [{ + UUID_COLUMN: '1', + 'length_signal(text.*)': [[5], [2, 3]] + }, { + UUID_COLUMN: '2', + 'length_signal(text.*)': [[9, 3], [4]] + }] + assert cast(LengthSignal, udf_col.signal_udf)._call_count == 6 + + +def test_udf_with_embedding(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello.', + }, { + UUID_COLUMN: '2', + 'text': 'hello2.', + }]) + + dataset.compute_signal(TestEmbedding(), 'text') + + signal_col = Column('text', signal_udf=TestEmbeddingSumSignal(embedding='test_embedding')) + result = dataset.select_rows([val('text'), signal_col]) + + expected_result: list[Item] = [{ + UUID_COLUMN: '1', + f'text.{VALUE_KEY}': 'hello.', + 'test_embedding_sum(text.test_embedding.*.embedding)': [1.0] + }, { + UUID_COLUMN: '2', + f'text.{VALUE_KEY}': 'hello2.', + 'test_embedding_sum(text.test_embedding.*.embedding)': [2.0] + }] + assert list(result) == expected_result + + # Select rows with alias. + signal_col = Column( + 'text', signal_udf=TestEmbeddingSumSignal(embedding='test_embedding'), alias='emb_sum') + result = dataset.select_rows([val('text'), signal_col]) + expected_result = [{ + UUID_COLUMN: '1', + f'text.{VALUE_KEY}': 'hello.', + 'emb_sum': [1.0] + }, { + UUID_COLUMN: '2', + f'text.{VALUE_KEY}': 'hello2.', + 'emb_sum': [2.0] + }] + assert list(result) == expected_result + + +def test_udf_with_nested_embedding(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': ['hello.', 'hello world.'], + }, { + UUID_COLUMN: '2', + 'text': ['hello world2.', 'hello2.'], + }]) + + dataset.compute_signal(TestEmbedding(), ('text', '*')) + + signal_col = Column(('text', '*'), signal_udf=TestEmbeddingSumSignal(embedding='test_embedding')) + result = dataset.select_rows([val(('text', '*')), signal_col]) + expected_result = [{ + UUID_COLUMN: '1', + f'text.*.{VALUE_KEY}': ['hello.', 'hello world.'], + 'test_embedding_sum(text.*.test_embedding.*.embedding)': [[1.0], [3.0]] + }, { + UUID_COLUMN: '2', + f'text.*.{VALUE_KEY}': ['hello world2.', 'hello2.'], + 'test_embedding_sum(text.*.test_embedding.*.embedding)': [[4.0], [2.0]] + }] + assert list(result) == expected_result + + +def test_udf_throws_without_precomputing(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello.', + }, { + UUID_COLUMN: '2', + 'text': 'hello2.', + }]) + + # Embedding is not precomputed, yet we ask for the embedding. + + signal_col = Column('text', signal_udf=TestEmbeddingSumSignal(embedding='test_embedding')) + + with pytest.raises(ValueError, match='Embedding signal "test_embedding" is not computed'): + dataset.select_rows([val('text'), signal_col]) + + +class TestSplitter(TextSplitterSignal): + """Split documents into sentence by splitting on period.""" + name = 'test_splitter' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + for text in data: + if not isinstance(text, str): + raise ValueError(f'Expected text to be a string, got {type(text)} instead.') + result: list[Item] = [] + for sentence in text.split('.'): + start = text.index(sentence) + end = start + len(sentence) + result.append(lilac_span(start, end)) + yield result + + +def test_udf_after_precomputed_split(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'sentence 1. sentence 2 is longer', + }, { + UUID_COLUMN: '2', + 'text': 'sentence 1 is longer. sent2 is short', + }]) + dataset.compute_signal(TestSplitter(), 'text') + udf = Column('text', signal_udf=LengthSignal()) + result = dataset.select_rows(['*', udf], combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item('sentence 1. sentence 2 is longer', { + 'length_signal': 32, + 'test_splitter': [lilac_span(0, 10), lilac_span(11, 32)] + }) + }, { + UUID_COLUMN: '2', + 'text': enriched_item('sentence 1 is longer. sent2 is short', { + 'length_signal': 36, + 'test_splitter': [lilac_span(0, 20), lilac_span(21, 36)] + }) + }] + + +def test_is_computed_signal_key(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello.', + }, { + UUID_COLUMN: '2', + 'text': 'hello2.', + }]) + + signal_col = Column('text', signal_udf=ComputedKeySignal()) + # Filter by source feature. + filters: list[BinaryFilterTuple] = [('text', BinaryOp.EQUALS, 'everybody')] + result = dataset.select_rows(['text', signal_col]) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': 'hello.', + 'key_False(text)': 1 + }, { + UUID_COLUMN: '2', + 'text': 'hello2.', + 'key_False(text)': 1 + }] diff --git a/src/data/dataset_stats_test.py b/src/data/dataset_stats_test.py new file mode 100644 index 0000000000000000000000000000000000000000..37acaa8b39cf3441809844056814d013d3058021 --- /dev/null +++ b/src/data/dataset_stats_test.py @@ -0,0 +1,122 @@ +"""Tests for dataset.stats().""" + +from typing import Any, cast + +import pytest +from pytest_mock import MockerFixture + +from ..schema import UUID_COLUMN, Item, schema +from . import dataset_duckdb +from .dataset import StatsResult +from .dataset_test_utils import TestDataMaker + +SIMPLE_ITEMS: list[Item] = [{ + UUID_COLUMN: '1', + 'str': 'a', + 'int': 1, + 'bool': False, + 'float': 3.0 +}, { + UUID_COLUMN: '2', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 2.0 +}, { + UUID_COLUMN: '3', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 1.0 +}] + + +def test_simple_stats(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(SIMPLE_ITEMS) + + result = dataset.stats(leaf_path='str') + assert result == StatsResult( + path=('str',), total_count=3, approx_count_distinct=2, avg_text_length=1) + + result = dataset.stats(leaf_path='float') + assert result == StatsResult( + path=('float',), total_count=3, approx_count_distinct=3, min_val=1.0, max_val=3.0) + + result = dataset.stats(leaf_path='bool') + assert result == StatsResult(path=('bool',), total_count=3, approx_count_distinct=2) + + result = dataset.stats(leaf_path='int') + assert result == StatsResult( + path=('int',), total_count=3, approx_count_distinct=2, min_val=1, max_val=2) + + +def test_nested_stats(make_test_data: TestDataMaker) -> None: + nested_items: list[Item] = [ + { + 'name': 'Name1', + 'addresses': [{ + 'zips': [5, 8] + }] + }, + { + 'name': 'Name2', + 'addresses': [{ + 'zips': [3] + }, { + 'zips': [11, 8] + }] + }, + { + 'name': 'Name2', + 'addresses': [] + }, # No addresses. + { + 'name': 'Name2', + 'addresses': [{ + 'zips': [] + }] + } # No zips in the first address. + ] + nested_schema = schema({ + UUID_COLUMN: 'string', + 'name': 'string', + 'addresses': [{ + 'zips': ['int32'] + }] + }) + dataset = make_test_data(nested_items, schema=nested_schema) + + result = dataset.stats(leaf_path='name') + assert result == StatsResult( + path=('name',), total_count=4, approx_count_distinct=2, avg_text_length=5) + + result = dataset.stats(leaf_path='addresses.*.zips.*') + assert result == StatsResult( + path=('addresses', '*', 'zips', '*'), + total_count=5, + approx_count_distinct=4, + min_val=3, + max_val=11) + + +def test_stats_approximation(make_test_data: TestDataMaker, mocker: MockerFixture) -> None: + sample_size = 5 + mocker.patch(f'{dataset_duckdb.__name__}.SAMPLE_SIZE_DISTINCT_COUNT', sample_size) + + nested_items: list[Item] = [{'feature': str(i)} for i in range(sample_size * 10)] + nested_schema = schema({UUID_COLUMN: 'string', 'feature': 'string'}) + dataset = make_test_data(nested_items, schema=nested_schema) + + result = dataset.stats(leaf_path='feature') + assert result == StatsResult( + path=('feature',), total_count=50, approx_count_distinct=50, avg_text_length=1) + + +def test_error_handling(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(SIMPLE_ITEMS) + + with pytest.raises(ValueError, match='leaf_path must be provided'): + dataset.stats(cast(Any, None)) + + with pytest.raises(ValueError, match='Leaf "\\(\'unknown\',\\)" not found in dataset'): + dataset.stats(leaf_path='unknown') diff --git a/src/data/dataset_test.py b/src/data/dataset_test.py new file mode 100644 index 0000000000000000000000000000000000000000..84053606137b9d84c85288cc9973a3b1abbe9113 --- /dev/null +++ b/src/data/dataset_test.py @@ -0,0 +1,860 @@ +"""Implementation-agnostic tests of the Dataset DB API.""" + +from typing import Iterable, Optional, cast + +import numpy as np +import pytest +from typing_extensions import override + +from ..schema import UUID_COLUMN, VALUE_KEY, Field, Item, RichData, field, schema +from ..signals.signal import TextEmbeddingSignal, TextSignal, clear_signal_registry, register_signal +from .dataset import Column, DatasetManifest, val +from .dataset_test_utils import TEST_DATASET_NAME, TEST_NAMESPACE, TestDataMaker, enriched_item +from .dataset_utils import lilac_embedding + +SIMPLE_ITEMS: list[Item] = [{ + UUID_COLUMN: '1', + 'str': 'a', + 'int': 1, + 'bool': False, + 'float': 3.0 +}, { + UUID_COLUMN: '2', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 2.0 +}, { + UUID_COLUMN: '3', + 'str': 'b', + 'int': 2, + 'bool': True, + 'float': 1.0 +}] + +EMBEDDINGS: list[tuple[str, list[float]]] = [('hello.', [1.0, 0.0, 0.0]), + ('hello2.', [1.0, 1.0, 0.0]), + ('hello world.', [1.0, 1.0, 1.0]), + ('hello world2.', [2.0, 1.0, 1.0])] + +STR_EMBEDDINGS: dict[str, list[float]] = {text: embedding for text, embedding in EMBEDDINGS} + + +class TestEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Call the embedding function.""" + for example in data: + yield [lilac_embedding(0, len(example), np.array(STR_EMBEDDINGS[cast(str, example)]))] + + +class LengthSignal(TextSignal): + name = 'length_signal' + + _call_count: int = 0 + + def fields(self) -> Field: + return field('int32') + + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text_content in data: + self._call_count += 1 + yield len(text_content) + + +class TestSignal(TextSignal): + name = 'test_signal' + + @override + def fields(self) -> Field: + return field(fields={'len': 'int32', 'flen': 'float32'}) + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + return [{'len': len(text_content), 'flen': float(len(text_content))} for text_content in data] + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_signal(TestSignal) + register_signal(LengthSignal) + register_signal(SignalWithQuoteInIt) + register_signal(SignalWithDoubleQuoteInIt) + + # Unit test runs. + yield + + # Teardown. + clear_signal_registry() + + +def test_select_all_columns(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(SIMPLE_ITEMS) + + result = dataset.select_rows() + assert list(result) == SIMPLE_ITEMS + + +def test_select_subcols_with_dot_seperator(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{ + UUID_COLUMN: '1', + 'people': [{ + 'name': 'A', + 'address': { + 'zip': 1 + } + }, { + 'name': 'B', + 'address': { + 'zip': 2 + } + }] + }, { + UUID_COLUMN: '2', + 'people': [{ + 'name': 'C', + 'address': { + 'zip': 3 + } + }] + }] + dataset = make_test_data(items) + + result = dataset.select_rows(['people.*.name', 'people.*.address.zip']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'people.*.name': ['A', 'B'], + 'people.*.address.zip': [1, 2] + }, { + UUID_COLUMN: '2', + 'people.*.name': ['C'], + 'people.*.address.zip': [3] + }] + + result = dataset.select_rows(['people.*.address.zip'], combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '1', + 'people': [{ + 'address': { + 'zip': 1 + } + }, { + 'address': { + 'zip': 2 + } + }] + }, { + UUID_COLUMN: '2', + 'people': [{ + 'address': { + 'zip': 3 + } + }] + }] + + result = dataset.select_rows(['people']) + assert list(result) == items + + +def test_select_subcols_with_escaped_dot(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{ + UUID_COLUMN: '1', + 'people.new': [{ + 'name': 'A' + }, { + 'name': 'B' + }] + }, { + UUID_COLUMN: '2', + 'people.new': [{ + 'name': 'C' + }] + }] + dataset = make_test_data(items) + + result = dataset.select_rows(['"people.new".*.name']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'people.new.*.name': ['A', 'B'], + }, { + UUID_COLUMN: '2', + 'people.new.*.name': ['C'], + }] + + # Escape name even though it does not need to be. + result = dataset.select_rows(['"people.new".*."name"']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'people.new.*.name': ['A', 'B'], + }, { + UUID_COLUMN: '2', + 'people.new.*.name': ['C'], + }] + + +def test_select_star(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{ + UUID_COLUMN: '1', + 'name': 'A', + 'info': { + 'age': 40 + } + }, { + UUID_COLUMN: '2', + 'name': 'B', + 'info': { + 'age': 42 + } + }] + dataset = make_test_data(items) + + # Select *. + result = dataset.select_rows(['*']) + assert list(result) == items + + # Select (*,). + result = dataset.select_rows([('*',)]) + assert list(result) == items + + # Select *, plus a redundant `info` column. + result = dataset.select_rows(['*', 'info']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'name': 'A', + 'info': { + 'age': 40 + }, + 'info_2': { + 'age': 40 + }, + }, { + UUID_COLUMN: '2', + 'name': 'B', + 'info': { + 'age': 42 + }, + 'info_2': { + 'age': 42 + }, + }] + + # Select * plus an inner `info.age` column. + result = dataset.select_rows(['*', ('info', 'age')]) + assert list(result) == [{ + UUID_COLUMN: '1', + 'name': 'A', + 'info': { + 'age': 40 + }, + 'info.age': 40 + }, { + UUID_COLUMN: '2', + 'name': 'B', + 'info': { + 'age': 42 + }, + 'info.age': 42 + }] + + +def test_select_star_with_combine_cols(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{ + UUID_COLUMN: '1', + 'name': 'A', + 'info': { + 'age': 40 + } + }, { + UUID_COLUMN: '2', + 'name': 'B', + 'info': { + 'age': 42 + } + }] + dataset = make_test_data(items) + + # Select *. + result = dataset.select_rows(['*'], combine_columns=True) + assert list(result) == items + + # Select *, plus a redundant `info` column. + result = dataset.select_rows(['*', 'info'], combine_columns=True) + assert list(result) == items + + # Select * plus an inner `info.age` column. + result = dataset.select_rows(['*', ('info', 'age')], combine_columns=True) + assert list(result) == items + + # Select *, plus redundant `name`, plus a udf. + udf = Column('name', signal_udf=TestSignal()) + result = dataset.select_rows(['*', 'name', udf], combine_columns=True) + + assert list(result) == [{ + UUID_COLUMN: '1', + 'name': enriched_item('A', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + 'info': { + 'age': 40 + } + }, { + UUID_COLUMN: '2', + 'name': enriched_item('B', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + 'info': { + 'age': 42 + } + }] + + +def test_select_ids(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(SIMPLE_ITEMS) + + result = dataset.select_rows([UUID_COLUMN]) + + assert list(result) == [{UUID_COLUMN: '1'}, {UUID_COLUMN: '2'}, {UUID_COLUMN: '3'}] + + +def test_select_ids_with_limit_and_offset(make_test_data: TestDataMaker) -> None: + items: list[Item] = [{UUID_COLUMN: str(i)} for i in range(10, 20)] + dataset = make_test_data(items) + + result = dataset.select_rows([UUID_COLUMN], offset=1, limit=3) + assert list(result) == [{UUID_COLUMN: '11'}, {UUID_COLUMN: '12'}, {UUID_COLUMN: '13'}] + + result = dataset.select_rows([UUID_COLUMN], offset=7, limit=2) + assert list(result) == [{UUID_COLUMN: '17'}, {UUID_COLUMN: '18'}] + + result = dataset.select_rows([UUID_COLUMN], offset=9, limit=200) + assert list(result) == [{UUID_COLUMN: '19'}] + + result = dataset.select_rows([UUID_COLUMN], offset=10, limit=200) + assert list(result) == [] + + +def test_columns(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(SIMPLE_ITEMS) + + result = dataset.select_rows(['str', 'float']) + + assert list(result) == [{ + UUID_COLUMN: '1', + 'str': 'a', + 'float': 3.0 + }, { + UUID_COLUMN: '2', + 'str': 'b', + 'float': 2.0 + }, { + UUID_COLUMN: '3', + 'str': 'b', + 'float': 1.0 + }] + + +def test_merge_values(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello' + }, { + UUID_COLUMN: '2', + 'text': 'everybody' + }]) + test_signal = TestSignal() + dataset.compute_signal(test_signal, 'text') + length_signal = LengthSignal() + dataset.compute_signal(length_signal, 'text') + + result = dataset.select_rows(['text']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item('hello', { + 'length_signal': 5, + 'test_signal': { + 'len': 5, + 'flen': 5.0 + } + }) + }, { + UUID_COLUMN: '2', + 'text': enriched_item('everybody', { + 'length_signal': 9, + 'test_signal': { + 'len': 9, + 'flen': 9.0 + } + }), + }] + + # Test subselection. + result = dataset.select_rows( + [val('text'), ('text', 'test_signal', 'flen'), ('text', 'test_signal', 'len')]) + assert list(result) == [{ + UUID_COLUMN: '1', + f'text.{VALUE_KEY}': 'hello', + 'text.test_signal.flen': 5.0, + 'text.test_signal.len': 5 + }, { + UUID_COLUMN: '2', + f'text.{VALUE_KEY}': 'everybody', + 'text.test_signal.flen': 9.0, + 'text.test_signal.len': 9 + }] + + # Test subselection with combine_columns=True. + result = dataset.select_rows( + ['text', ('text', 'test_signal', 'flen'), ('text', 'test_signal', 'len')], combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item('hello', { + 'length_signal': 5, + 'test_signal': { + 'len': 5, + 'flen': 5.0 + } + }) + }, { + UUID_COLUMN: '2', + 'text': enriched_item('everybody', { + 'length_signal': 9, + 'test_signal': { + 'len': 9, + 'flen': 9.0 + } + }), + }] + + # Test subselection with aliasing. + result = dataset.select_rows( + columns=[val('text'), Column(('text', 'test_signal', 'len'), alias='metadata')]) + assert list(result) == [{ + UUID_COLUMN: '1', + f'text.{VALUE_KEY}': 'hello', + 'metadata': 5 + }, { + UUID_COLUMN: '2', + f'text.{VALUE_KEY}': 'everybody', + 'metadata': 9 + }] + + result = dataset.select_rows(columns=[Column(('text'), alias='text_enrichment')]) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text_enrichment': enriched_item('hello', { + 'length_signal': 5, + 'test_signal': { + 'len': 5, + 'flen': 5.0 + } + }) + }, { + UUID_COLUMN: '2', + 'text_enrichment': enriched_item('everybody', { + 'length_signal': 9, + 'test_signal': { + 'len': 9, + 'flen': 9.0 + } + }) + }] + + +def test_merge_array_values(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'texts': ['hello', 'everybody'] + }, { + UUID_COLUMN: '2', + 'texts': ['a', 'bc', 'def'] + }]) + + test_signal = TestSignal() + dataset.compute_signal(test_signal, ('texts', '*')) + length_signal = LengthSignal() + dataset.compute_signal(length_signal, ('texts', '*')) + + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'texts': [ + field( + 'string', + fields={ + 'length_signal': field('int32', length_signal.dict()), + 'test_signal': field( + signal=test_signal.dict(), fields={ + 'len': 'int32', + 'flen': 'float32' + }) + }) + ], + }), + num_items=2) + + result = dataset.select_rows(['texts']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'texts': [ + enriched_item('hello', { + 'length_signal': 5, + 'test_signal': { + 'len': 5, + 'flen': 5.0 + } + }), + enriched_item('everybody', { + 'length_signal': 9, + 'test_signal': { + 'len': 9, + 'flen': 9.0 + } + }) + ], + }, { + UUID_COLUMN: '2', + 'texts': [ + enriched_item('a', { + 'length_signal': 1, + 'test_signal': { + 'len': 1, + 'flen': 1.0 + } + }), + enriched_item('bc', { + 'length_signal': 2, + 'test_signal': { + 'len': 2, + 'flen': 2.0 + } + }), + enriched_item('def', { + 'length_signal': 3, + 'test_signal': { + 'len': 3, + 'flen': 3.0 + } + }) + ], + }] + + # Test subselection. + result = dataset.select_rows( + [val(('texts', '*')), ('texts', '*', 'length_signal'), ('texts', '*', 'test_signal', 'flen')]) + assert list(result) == [{ + UUID_COLUMN: '1', + f'texts.*.{VALUE_KEY}': ['hello', 'everybody'], + 'texts.*.test_signal.flen': [5.0, 9.0], + 'texts.*.length_signal': [5, 9] + }, { + UUID_COLUMN: '2', + f'texts.*.{VALUE_KEY}': ['a', 'bc', 'def'], + 'texts.*.test_signal.flen': [1.0, 2.0, 3.0], + 'texts.*.length_signal': [1, 2, 3] + }] + + +def test_combining_columns(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello', + 'extra': { + 'text': { + 'length_signal': 5, + 'test_signal': { + 'len': 5, + 'flen': 5.0 + } + } + } + }, { + UUID_COLUMN: '2', + 'text': 'everybody', + 'extra': { + 'text': { + 'length_signal': 9, + 'test_signal': { + 'len': 9, + 'flen': 9.0 + } + } + } + }]) + + # Sub-select text and test_signal. + result = dataset.select_rows(['text', ('extra', 'text', 'test_signal')], combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': 'hello', + 'extra': { + 'text': { + 'test_signal': { + 'len': 5, + 'flen': 5.0 + } + } + } + }, { + UUID_COLUMN: '2', + 'text': 'everybody', + 'extra': { + 'text': { + 'test_signal': { + 'len': 9, + 'flen': 9.0 + } + } + } + }] + + # Sub-select text and length_signal. + result = dataset.select_rows(['text', ('extra', 'text', 'length_signal')], combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': 'hello', + 'extra': { + 'text': { + 'length_signal': 5 + } + } + }, { + UUID_COLUMN: '2', + 'text': 'everybody', + 'extra': { + 'text': { + 'length_signal': 9 + } + } + }] + + # Sub-select length_signal only. + result = dataset.select_rows([('extra', 'text', 'length_signal')], combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '1', + 'extra': { + 'text': { + 'length_signal': 5 + } + } + }, { + UUID_COLUMN: '2', + 'extra': { + 'text': { + 'length_signal': 9 + } + } + }] + + # Aliases are ignored when combing columns. + len_col = Column(('extra', 'text', 'length_signal'), alias='hello') + result = dataset.select_rows([len_col], combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '1', + 'extra': { + 'text': { + 'length_signal': 5 + } + } + }, { + UUID_COLUMN: '2', + 'extra': { + 'text': { + 'length_signal': 9 + } + } + }] + + # Works with UDFs and aliases are ignored. + udf_col = Column('text', alias='ignored', signal_udf=LengthSignal()) + result = dataset.select_rows(['text', udf_col], combine_columns=True) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item('hello', {'length_signal': 5}) + }, { + UUID_COLUMN: '2', + 'text': enriched_item('everybody', {'length_signal': 9}) + }] + + +def test_source_joined_with_named_signal(make_test_data: TestDataMaker) -> None: + dataset = make_test_data(SIMPLE_ITEMS) + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'str': 'string', + 'int': 'int32', + 'bool': 'boolean', + 'float': 'float32', + }), + num_items=3) + + test_signal = TestSignal() + dataset.compute_signal(test_signal, 'str') + + # Check the enriched dataset manifest has 'text' enriched. + assert dataset.manifest() == DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'str': field( + 'string', + fields={ + 'test_signal': field( + signal=test_signal.dict(), fields={ + 'len': 'int32', + 'flen': 'float32' + }) + }), + 'int': 'int32', + 'bool': 'boolean', + 'float': 'float32', + }), + num_items=3) + + # Select both columns, without val() on str. + result = dataset.select_rows(['str', Column(('str', 'test_signal'), alias='test_signal_on_str')]) + + assert list(result) == [{ + UUID_COLUMN: '1', + 'str': enriched_item('a', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + 'test_signal_on_str': { + 'len': 1, + 'flen': 1.0 + } + }, { + UUID_COLUMN: '2', + 'str': enriched_item('b', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + 'test_signal_on_str': { + 'len': 1, + 'flen': 1.0 + } + }, { + UUID_COLUMN: '3', + 'str': enriched_item('b', {'test_signal': { + 'len': 1, + 'flen': 1.0 + }}), + 'test_signal_on_str': { + 'len': 1, + 'flen': 1.0 + } + }] + + # Select both columns, with val() on str. + result = dataset.select_rows( + [val('str'), Column(('str', 'test_signal'), alias='test_signal_on_str')]) + + assert list(result) == [{ + UUID_COLUMN: '1', + f'str.{VALUE_KEY}': 'a', + 'test_signal_on_str': { + 'len': 1, + 'flen': 1.0 + } + }, { + UUID_COLUMN: '2', + f'str.{VALUE_KEY}': 'b', + 'test_signal_on_str': { + 'len': 1, + 'flen': 1.0 + } + }, { + UUID_COLUMN: '3', + f'str.{VALUE_KEY}': 'b', + 'test_signal_on_str': { + 'len': 1, + 'flen': 1.0 + } + }] + + +def test_invalid_column_paths(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': enriched_item('hello', {'test_signal': { + 'len': 5 + }}), + 'text2': [ + enriched_item('hello', {'test_signal': { + 'len': 5 + }}), + enriched_item('hi', {'test_signal': { + 'len': 2 + }}) + ], + }]) + + with pytest.raises(ValueError, match='Path part "invalid" not found in the dataset'): + dataset.select_rows([('text', 'test_signal', 'invalid')]) + + with pytest.raises(ValueError, match='Selecting a specific index of a repeated field'): + dataset.select_rows([('text2', '4', 'test_signal')]) + + +def test_signal_with_quote(make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello', + }, { + UUID_COLUMN: '2', + 'text': 'world', + }]) + dataset.compute_signal(SignalWithQuoteInIt(), 'text') + dataset.compute_signal(SignalWithDoubleQuoteInIt(), 'text') + result = dataset.select_rows(['text']) + assert list(result) == [{ + UUID_COLUMN: '1', + 'text': enriched_item('hello', { + "test'signal": True, + 'test"signal': True + }) + }, { + UUID_COLUMN: '2', + 'text': enriched_item('world', { + "test'signal": True, + 'test"signal': True + }), + }] + + +class SignalWithQuoteInIt(TextSignal): + name = "test'signal" + + @override + def fields(self) -> Field: + return field('boolean') + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for d in data: + yield True + + +class SignalWithDoubleQuoteInIt(TextSignal): + name = 'test"signal' + + @override + def fields(self) -> Field: + return field('boolean') + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for d in data: + yield True diff --git a/src/data/dataset_test_utils.py b/src/data/dataset_test_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..3e55f1c6ae1a04b72c2da2905bf7888ecffc6f03 --- /dev/null +++ b/src/data/dataset_test_utils.py @@ -0,0 +1,116 @@ +"""Tests utils of for dataset_test.""" +import os +import pathlib +from typing import Optional, Type, cast + +from typing_extensions import Protocol + +from ..schema import ( + MANIFEST_FILENAME, + PARQUET_FILENAME_PREFIX, + VALUE_KEY, + DataType, + Field, + Item, + Schema, + SourceManifest, + field, +) +from ..signals.signal import EMBEDDING_KEY +from ..utils import get_dataset_output_dir, open_file +from .dataset import Dataset +from .dataset_utils import is_primitive, lilac_span, write_items_to_parquet + +TEST_NAMESPACE = 'test_namespace' +TEST_DATASET_NAME = 'test_dataset' + + +def _infer_dtype(value: Item) -> DataType: + if isinstance(value, str): + return DataType.STRING + elif isinstance(value, bool): + return DataType.BOOLEAN + elif isinstance(value, bytes): + return DataType.BINARY + elif isinstance(value, float): + return DataType.FLOAT32 + elif isinstance(value, int): + return DataType.INT32 + else: + raise ValueError(f'Cannot infer dtype of primitive value: {value}') + + +def _infer_field(item: Item) -> Field: + """Infer the schema from the items.""" + if isinstance(item, dict): + fields: dict[str, Field] = {} + for k, v in item.items(): + fields[k] = _infer_field(cast(Item, v)) + dtype = None + if VALUE_KEY in fields: + dtype = fields[VALUE_KEY].dtype + del fields[VALUE_KEY] + return Field(fields=fields, dtype=dtype) + elif is_primitive(item): + return Field(dtype=_infer_dtype(item)) + elif isinstance(item, list): + return Field(repeated_field=_infer_field(item[0])) + else: + raise ValueError(f'Cannot infer schema of item: {item}') + + +def _infer_schema(items: list[Item]) -> Schema: + """Infer the schema from the items.""" + schema = Schema(fields={}) + for item in items: + field = _infer_field(item) + if not field.fields: + raise ValueError(f'Invalid schema of item. Expected an object, but got: {item}') + schema.fields = {**schema.fields, **field.fields} + return schema + + +class TestDataMaker(Protocol): + """A function that creates a test dataset.""" + + def __call__(self, items: list[Item], schema: Optional[Schema] = None) -> Dataset: + """Create a test dataset.""" + ... + + +def make_dataset(dataset_cls: Type[Dataset], + tmp_path: pathlib.Path, + items: list[Item], + schema: Optional[Schema] = None) -> Dataset: + """Create a test dataset.""" + schema = schema or _infer_schema(items) + _write_items(tmp_path, TEST_DATASET_NAME, items, schema) + return dataset_cls(TEST_NAMESPACE, TEST_DATASET_NAME) + + +def _write_items(tmpdir: pathlib.Path, dataset_name: str, items: list[Item], + schema: Schema) -> None: + """Write the items JSON to the dataset format: manifest.json and parquet files.""" + source_dir = get_dataset_output_dir(str(tmpdir), TEST_NAMESPACE, dataset_name) + os.makedirs(source_dir) + + simple_parquet_files, _ = write_items_to_parquet( + items, source_dir, schema, filename_prefix=PARQUET_FILENAME_PREFIX, shard_index=0, num_shards=1) + manifest = SourceManifest(files=[simple_parquet_files], data_schema=schema) + with open_file(os.path.join(source_dir, MANIFEST_FILENAME), 'w') as f: + f.write(manifest.json(indent=2, exclude_none=True)) + + +def enriched_item(value: Optional[Item] = None, metadata: dict[str, Item] = {}) -> Item: + """Wrap a value in a dict with the value key.""" + return {VALUE_KEY: value, **metadata} + + +def enriched_embedding_span(start: int, end: int, metadata: dict[str, Item] = {}) -> Item: + """Makes an item that represents an embedding span that was enriched with metadata.""" + return lilac_span(start, end, {EMBEDDING_KEY: {VALUE_KEY: None, **metadata}}) + + +def enriched_embedding_span_field(metadata: Optional[object] = {}) -> Field: + """Makes a field that represents an embedding span that was enriched with metadata.""" + return field('string_span', fields={EMBEDDING_KEY: field('embedding', fields=metadata)}) diff --git a/src/data/dataset_utils.py b/src/data/dataset_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..195a00cb4b3ec279da366eecc340d9971b115f81 --- /dev/null +++ b/src/data/dataset_utils.py @@ -0,0 +1,343 @@ +"""Utilities for working with datasets.""" + +import math +import os +import pickle +import pprint +import secrets +from collections.abc import Iterable +from typing import Any, Callable, Generator, Iterator, Optional, Sequence, TypeVar, Union, cast + +import numpy as np +import pyarrow as pa + +from ..parquet_writer import ParquetWriter +from ..schema import ( + PATH_WILDCARD, + TEXT_SPAN_END_FEATURE, + TEXT_SPAN_START_FEATURE, + UUID_COLUMN, + VALUE_KEY, + Field, + Item, + PathTuple, + Schema, + VectorKey, + field, + schema, + schema_to_arrow_schema, +) +from ..signals.signal import EMBEDDING_KEY, Signal +from ..utils import file_exists, log, open_file + +_KEYS_SUFFIX = '.keys.pkl' +_EMBEDDINGS_SUFFIX = '.npy' + + +def is_primitive(obj: object) -> bool: + """Returns True if the object is a primitive.""" + if isinstance(obj, (str, bytes, np.ndarray, int, float)): + return True + if isinstance(obj, Iterable): + return False + return True + + +def _replace_embeddings_with_none(input: Union[Item, Item]) -> Union[Item, Item]: + if isinstance(input, np.ndarray): + return None + if isinstance(input, dict): + return {k: _replace_embeddings_with_none(v) for k, v in input.items()} + if isinstance(input, list): + return [_replace_embeddings_with_none(v) for v in input] + + return input + + +def replace_embeddings_with_none(input: Union[Item, Item]) -> Item: + """Replaces all embeddings with None.""" + return cast(Item, _replace_embeddings_with_none(input)) + + +def lilac_span(start: int, end: int, metadata: dict[str, Any] = {}) -> Item: + """Creates a lilac span item, representing a pointer to a slice of text.""" + return {VALUE_KEY: {TEXT_SPAN_START_FEATURE: start, TEXT_SPAN_END_FEATURE: end}, **metadata} + + +def lilac_embedding(start: int, end: int, embedding: Optional[np.ndarray]) -> Item: + """Creates a lilac embedding item, representing a vector with a pointer to a slice of text.""" + return lilac_span(start, end, {EMBEDDING_KEY: embedding}) + + +Tflatten = TypeVar('Tflatten', object, np.ndarray) + + +def _flatten(input: Union[Iterable, object], is_primitive_predicate: Callable[[object], + bool]) -> Generator: + """Flattens a nested iterable.""" + if is_primitive_predicate(input): + yield input + elif isinstance(input, dict): + yield input + elif is_primitive(input): + yield input + else: + for elem in cast(Iterable, input): + yield from _flatten(elem, is_primitive_predicate) + + +def flatten(input: Union[Iterable, Tflatten], + is_primitive_predicate: Callable[[object], bool] = is_primitive) -> Iterable[Tflatten]: + """Flattens a nested iterable. + + Primitives and dictionaries are not flattened. The user can also provide a predicate to determine + what is a primitive. + """ + return _flatten(input, is_primitive_predicate) + + +def count_primitives(input: Iterable) -> int: + """Iterate through each element of the input, flattening each one, computing a count. + + Sum the final set of counts. This is the important iterable not to exhaust. + """ + return sum((len(list(flatten(i))) for i in input)) + + +def _wrap_value_in_dict(input: Union[object, dict], props: PathTuple) -> Union[object, dict]: + # If the signal produced no value, or nan, we should return None so the parquet value is sparse. + if isinstance(input, float) and math.isnan(input): + input = None + for prop in reversed(props): + input = {prop: input} + return input + + +def _unflatten(flat_input: Iterator[list[object]], + original_input: Union[Iterable, object]) -> Union[list, dict]: + """Unflattens a flattened iterable according to the original iterable's structure.""" + if is_primitive(original_input): + return next(flat_input) + else: + values: Iterable + if isinstance(original_input, dict): + values = original_input.values() + else: + values = cast(Iterable, original_input) + return [_unflatten(flat_input, orig_elem) for orig_elem in values] + + +def unflatten(flat_input: Iterable, original_input: Union[Iterable, object]) -> list: + """Unflattens a flattened iterable according to the original iterable's structure.""" + return cast(list, _unflatten(iter(flat_input), original_input)) + + +def _wrap_in_dicts(input: Union[object, Iterable[object]], + spec: list[PathTuple]) -> Union[object, Iterable[object]]: + """Wraps an object or iterable in a dict according to the spec.""" + props = spec[0] if spec else tuple() + if len(spec) == 1: + return _wrap_value_in_dict(input, props) + if input is None or isinstance(input, float) and math.isnan(input): + # Return empty dict for missing inputs. + return {} + res = [_wrap_in_dicts(elem, spec[1:]) for elem in cast(Iterable, input)] + return _wrap_value_in_dict(res, props) + + +def wrap_in_dicts(input: Iterable[object], spec: list[PathTuple]) -> Iterable[object]: + """Wraps an object or iterable in a dict according to the spec.""" + return [_wrap_in_dicts(elem, spec) for elem in input] + + +def _merge_field_into(schema: Field, destination: Field) -> None: + if isinstance(schema, Field): + destination.signal = destination.signal or schema.signal + destination.dtype = destination.dtype or schema.dtype + if schema.fields: + destination.fields = destination.fields or {} + for field_name, subfield in schema.fields.items(): + if field_name not in destination.fields: + destination.fields[field_name] = subfield.copy(deep=True) + else: + _merge_field_into(subfield, destination.fields[field_name]) + elif schema.repeated_field: + if not destination.repeated_field: + raise ValueError('Failed to merge schemas. Origin schema is repeated, but destination is not') + _merge_field_into(schema.repeated_field, destination.repeated_field) + else: + if destination.dtype != schema.dtype: + raise ValueError(f'Failed to merge schemas. Origin schema has dtype {schema.dtype}, ' + f'but destination has dtype {destination.dtype}') + + +def merge_schemas(schemas: Sequence[Union[Schema, Field]]) -> Schema: + """Merge a list of schemas.""" + merged_schema = Schema(fields={}) + for s in schemas: + _merge_field_into(cast(Field, s), cast(Field, merged_schema)) + return merged_schema + + +def schema_contains_path(schema: Schema, path: PathTuple) -> bool: + """Check if a schema contains a path.""" + current_field = cast(Field, schema) + for path_part in path: + # When we reach a value key, the schema should have a dtype defined on it. If not, it is derived + # and this schema does not contain the value. + if path_part == VALUE_KEY: + return current_field.dtype is not None + + if path_part == PATH_WILDCARD: + if current_field.repeated_field is None: + return False + current_field = current_field.repeated_field + else: + if current_field.fields is None or path_part not in current_field.fields: + return False + current_field = current_field.fields[str(path_part)] + return True + + +def create_signal_schema(signal: Signal, source_path: PathTuple, current_schema: Schema) -> Schema: + """Create a schema describing the enriched fields added an enrichment.""" + leafs = current_schema.leafs + # Validate that the enrich fields are actually a valid leaf path. + if source_path not in leafs: + raise ValueError(f'"{source_path}" is not a valid leaf path. Leaf paths: {leafs.keys()}') + + signal_schema = signal.fields() + signal_schema.signal = signal.dict() + + enriched_schema = field(fields={signal.key(is_computed_signal=True): signal_schema}) + + for path_part in reversed(source_path): + if path_part == PATH_WILDCARD: + enriched_schema = Field(repeated_field=enriched_schema) + else: + enriched_schema = Field(fields={path_part: enriched_schema}) + + if not enriched_schema.fields: + raise ValueError('This should not happen since enriched_schema always has fields (see above)') + + return schema({UUID_COLUMN: 'string', **cast(dict, enriched_schema.fields)}) + + +def write_item_embeddings_to_disk(keys: Iterable[str], embeddings: Iterable[object], + output_dir: str, shard_index: int, num_shards: int) -> str: + """Write a set of embeddings to disk.""" + output_path_prefix = embedding_index_filename_prefix(output_dir, shard_index, num_shards) + + # Restrict the keys to only those that are embeddings. + def embedding_predicate(input: Any) -> bool: + return isinstance(input, np.ndarray) + + flat_keys = flatten_keys(keys, embeddings, is_primitive_predicate=embedding_predicate) + embedding_vectors: list[np.ndarray] = [] + for lilac_embedding in flatten(embeddings, is_primitive_predicate=embedding_predicate): + # We use squeeze here because embedding functions can return outer dimensions of 1. + embedding_vector = lilac_embedding[EMBEDDING_KEY].reshape(-1) + if embedding_vector.ndim != 1: + raise ValueError(f'Expected embeddings to be 1-dimensional, got {embedding_vector.ndim} ' + f'with shape {embedding_vector.shape}.') + embedding_vectors.append(embedding_vector) + + flat_embeddings = np.array(embedding_vectors) + + # Write the embedding index and the ordered UUID column to disk so they can be joined later. + + with open_file(output_path_prefix + _EMBEDDINGS_SUFFIX, 'wb') as f: + np.save(f, flat_embeddings, allow_pickle=False) + with open_file(output_path_prefix + _KEYS_SUFFIX, 'wb') as f: + pickle.dump(flat_keys, f) + + return output_path_prefix + + +def read_embedding_index(filepath_prefix: str) -> tuple[list[VectorKey], np.ndarray]: + """Reads the embedding index for a column from disk.""" + if not file_exists(filepath_prefix + _EMBEDDINGS_SUFFIX): + raise ValueError(F'Embedding index does not exist at path {filepath_prefix}. ' + 'Please run dataset.compute_signal() on the embedding signal first.') + + # Read the embedding index from disk. + embeddings = np.load(filepath_prefix + _EMBEDDINGS_SUFFIX, allow_pickle=False) + with open_file(filepath_prefix + _KEYS_SUFFIX, 'rb') as f: + index_keys: list[VectorKey] = pickle.load(f) + return index_keys, embeddings + + +def write_items_to_parquet(items: Iterable[Item], output_dir: str, schema: Schema, + filename_prefix: str, shard_index: int, + num_shards: int) -> tuple[str, int]: + """Write a set of items to a parquet file, in columnar format.""" + arrow_schema = schema_to_arrow_schema(schema) + out_filename = parquet_filename(filename_prefix, shard_index, num_shards) + filepath = os.path.join(output_dir, out_filename) + f = open_file(filepath, mode='wb') + writer = ParquetWriter(schema) + writer.open(f) + num_items = 0 + for item in items: + # Add a UUID column. + if UUID_COLUMN not in item: + item[UUID_COLUMN] = secrets.token_urlsafe(nbytes=12) # 16 base64 characters. + if os.getenv('DEBUG'): + _validate(item, arrow_schema) + writer.write(item) + num_items += 1 + writer.close() + f.close() + return out_filename, num_items + + +def _validate(item: Item, schema: pa.Schema) -> None: + # Try to parse the item using the inferred schema. + try: + pa.RecordBatch.from_pylist([item], schema=schema) + except pa.ArrowTypeError: + log('Failed to parse arrow item using the arrow schema.') + log('Item:') + log(pprint.pformat(item, indent=2)) + log('Arrow schema:') + log(schema) + raise # Re-raise the same exception, same stacktrace. + + +def parquet_filename(prefix: str, shard_index: int, num_shards: int) -> str: + """Return the filename for a parquet file.""" + return f'{prefix}-{shard_index:05d}-of-{num_shards:05d}.parquet' + + +def _flatten_keys(uuid: str, nested_input: Iterable, location: list[int], + is_primitive_predicate: Callable[[object], bool]) -> list[VectorKey]: + if is_primitive_predicate(nested_input): + return [(uuid, *location)] + elif is_primitive(nested_input): + return [] + else: + result: list[VectorKey] = [] + if isinstance(nested_input, dict): + for value in nested_input.values(): + result.extend(_flatten_keys(uuid, value, location, is_primitive_predicate)) + else: + for i, input in enumerate(nested_input): + result.extend(_flatten_keys(uuid, input, [*location, i], is_primitive_predicate)) + return result + + +def flatten_keys( + uuids: Iterable[str], + nested_input: Iterable, + is_primitive_predicate: Callable[[object], bool] = is_primitive) -> list[VectorKey]: + """Flatten the uuid keys of a nested input.""" + result: list[VectorKey] = [] + for uuid, input in zip(uuids, nested_input): + result.extend(_flatten_keys(uuid, input, [], is_primitive_predicate)) + return result + + +def embedding_index_filename_prefix(output_dir: str, shard_index: int, num_shards: int) -> str: + """Return the filename prefix for the embedding index.""" + npy_filename = f'embeddings-{shard_index:05d}-of-{num_shards:05d}' + return os.path.join(output_dir, npy_filename) diff --git a/src/data/dataset_utils_test.py b/src/data/dataset_utils_test.py new file mode 100644 index 0000000000000000000000000000000000000000..e3c477f52481245b5acab359548bffec17b49806 --- /dev/null +++ b/src/data/dataset_utils_test.py @@ -0,0 +1,114 @@ +"""Tests for dataset utils.""" +from ..schema import PathTuple +from .dataset_utils import count_primitives, flatten, unflatten, wrap_in_dicts + + +def test_flatten() -> None: + a = [[1, 2], [[3]], [4, 5, 5]] + result = list(flatten(a)) + assert result == [1, 2, 3, 4, 5, 5] + + +def test_flatten_primitive() -> None: + result = list(flatten('hello')) + assert result == ['hello'] + + +def test_unflatten() -> None: + a = [[1, 2], [[3]], [4, 5, 5]] + flat_a = list(flatten(a)) + result = unflatten(flat_a, a) + assert result == [[1, 2], [[3]], [4, 5, 5]] + + +def test_count_nested() -> None: + a = [[1, 2], [[3]], [4, 5, 6]] + assert 6 == count_primitives(a) + + +def test_wrap_in_dicts_with_spec_of_one_repeated() -> None: + a = [[1, 2], [3], [4, 5, 5]] + spec: list[PathTuple] = [('a', 'b', 'c'), ('d',)] # Corresponds to a.b.c.*.d. + result = wrap_in_dicts(a, spec) + assert result == [{ + 'a': { + 'b': { + 'c': [{ + 'd': 1 + }, { + 'd': 2 + }] + } + } + }, { + 'a': { + 'b': { + 'c': [{ + 'd': 3 + }] + } + } + }, { + 'a': { + 'b': { + 'c': [{ + 'd': 4 + }, { + 'd': 5 + }, { + 'd': 5 + }] + } + } + }] + + +def test_wrap_in_dicts_with_spec_of_double_repeated() -> None: + a = [[[1, 2], [3, 4, 5]], [[6]], [[7], [8], [9, 10]]] + spec: list[PathTuple] = [('a', 'b'), tuple(), ('c',)] # Corresponds to a.b.*.*.c. + result = wrap_in_dicts(a, spec) + assert result == [{ + 'a': { + 'b': [[{ + 'c': 1 + }, { + 'c': 2 + }], [{ + 'c': 3 + }, { + 'c': 4 + }, { + 'c': 5 + }]] + } + }, { + 'a': { + 'b': [[{ + 'c': 6 + }]] + } + }, { + 'a': { + 'b': [[{ + 'c': 7 + }], [{ + 'c': 8 + }], [{ + 'c': 9 + }, { + 'c': 10 + }]] + } + }] + + +def test_unflatten_primitive() -> None: + original = 'hello' + result = unflatten(['hello'], original) + assert result == 'hello' + + +def test_unflatten_primitive_list() -> None: + original = ['hello', 'world'] + result = unflatten(['hello', 'world'], original) + assert result == ['hello', 'world'] diff --git a/src/data/duckdb_utils.py b/src/data/duckdb_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..ecf1bb8838d23636466a30314af711f2eabb0913 --- /dev/null +++ b/src/data/duckdb_utils.py @@ -0,0 +1,19 @@ +"""Utils for duckdb.""" +import duckdb + +from ..config import CONFIG + + +def duckdb_gcs_setup(con: duckdb.DuckDBPyConnection) -> str: + """Setup DuckDB for GCS.""" + con.install_extension('httpfs') + con.load_extension('httpfs') + + if 'GCS_REGION' in CONFIG: + return f""" + SET s3_region='{CONFIG['GCS_REGION']}'; + SET s3_access_key_id='{CONFIG['GCS_ACCESS_KEY']}'; + SET s3_secret_access_key='{CONFIG['GCS_SECRET_KEY']}'; + SET s3_endpoint='storage.googleapis.com'; + """ + return '' diff --git a/src/data/sources/__init__.py b/src/data/sources/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/data/sources/__pycache__/__init__.cpython-310.pyc b/src/data/sources/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c5a9d1949f42c83db9442ed6de7c3a3cd34b062e Binary files /dev/null and b/src/data/sources/__pycache__/__init__.cpython-310.pyc differ diff --git a/src/data/sources/__pycache__/__init__.cpython-39.pyc b/src/data/sources/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..917d0ad6c29dd90bd218f0e92879d846fa422564 Binary files /dev/null and b/src/data/sources/__pycache__/__init__.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/csv_source.cpython-39.pyc b/src/data/sources/__pycache__/csv_source.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7da754fc12734cc7e700c03ab4a673570ca924c0 Binary files /dev/null and b/src/data/sources/__pycache__/csv_source.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/csv_source_test.cpython-39-pytest-7.3.1.pyc b/src/data/sources/__pycache__/csv_source_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d8e821ea201db433cbf24861f1ae0a9f10560d61 Binary files /dev/null and b/src/data/sources/__pycache__/csv_source_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/sources/__pycache__/default_sources.cpython-39.pyc b/src/data/sources/__pycache__/default_sources.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0514d3c1032651fb22596a69c92462129a8a91a1 Binary files /dev/null and b/src/data/sources/__pycache__/default_sources.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/fake_source.cpython-39.pyc b/src/data/sources/__pycache__/fake_source.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c1c0fc6c0e1622ca83ff73a7b47fb63b324aa96 Binary files /dev/null and b/src/data/sources/__pycache__/fake_source.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/gmail_source.cpython-39.pyc b/src/data/sources/__pycache__/gmail_source.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8a5d0af92d679a34719bc64c7bfca6aaf2ec6bb1 Binary files /dev/null and b/src/data/sources/__pycache__/gmail_source.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/huggingface_source.cpython-39.pyc b/src/data/sources/__pycache__/huggingface_source.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..55f885859efb6ae7befdf8c3d95f0dbcf065e8de Binary files /dev/null and b/src/data/sources/__pycache__/huggingface_source.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/huggingface_source_test.cpython-39-pytest-7.2.2.pyc b/src/data/sources/__pycache__/huggingface_source_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3310e21d90dd2b712f2382a2bc84863dca4edfe5 Binary files /dev/null and b/src/data/sources/__pycache__/huggingface_source_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/data/sources/__pycache__/huggingface_source_test.cpython-39-pytest-7.3.1.pyc b/src/data/sources/__pycache__/huggingface_source_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f74f416f8882a365af30cc0c5b2ca50edf82bb54 Binary files /dev/null and b/src/data/sources/__pycache__/huggingface_source_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/sources/__pycache__/json_source.cpython-39.pyc b/src/data/sources/__pycache__/json_source.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c0b1c69271e2aa72a936fb67c834639f30b9b8b3 Binary files /dev/null and b/src/data/sources/__pycache__/json_source.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/json_source_test.cpython-39-pytest-7.2.2.pyc b/src/data/sources/__pycache__/json_source_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b253afd495840e57604e0a7d4fcce2e89a0390e1 Binary files /dev/null and b/src/data/sources/__pycache__/json_source_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/data/sources/__pycache__/json_source_test.cpython-39-pytest-7.3.1.pyc b/src/data/sources/__pycache__/json_source_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29dfa6fdad1d639bd3a5997232721b144b6f0e95 Binary files /dev/null and b/src/data/sources/__pycache__/json_source_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/sources/__pycache__/loader.cpython-39.pyc b/src/data/sources/__pycache__/loader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c20fadc94e533b653124ac81213b5a81da368822 Binary files /dev/null and b/src/data/sources/__pycache__/loader.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/pandas_source.cpython-39.pyc b/src/data/sources/__pycache__/pandas_source.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e1ac6600689496da68e1c00b3ed1a49988bdac5a Binary files /dev/null and b/src/data/sources/__pycache__/pandas_source.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/pandas_source_test.cpython-39-pytest-7.2.0.pyc b/src/data/sources/__pycache__/pandas_source_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a73668795db2c35c5d66e837beedac31a4f9ccfb Binary files /dev/null and b/src/data/sources/__pycache__/pandas_source_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/data/sources/__pycache__/pandas_source_test.cpython-39-pytest-7.2.2.pyc b/src/data/sources/__pycache__/pandas_source_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c027b0ac86edae1cfb5f0f91c147ccfc2116dfa4 Binary files /dev/null and b/src/data/sources/__pycache__/pandas_source_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/data/sources/__pycache__/pandas_source_test.cpython-39-pytest-7.3.1.pyc b/src/data/sources/__pycache__/pandas_source_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..873c224cde051f23506a4c390d45ef00f80daa64 Binary files /dev/null and b/src/data/sources/__pycache__/pandas_source_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/sources/__pycache__/reddit_hf_source.cpython-39.pyc b/src/data/sources/__pycache__/reddit_hf_source.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aea23b5353c9000012d1c2b390aa89d2349261fa Binary files /dev/null and b/src/data/sources/__pycache__/reddit_hf_source.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/source.cpython-310.pyc b/src/data/sources/__pycache__/source.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e6457bb00d2dc2b9801de8c4f20bc3b402acb624 Binary files /dev/null and b/src/data/sources/__pycache__/source.cpython-310.pyc differ diff --git a/src/data/sources/__pycache__/source.cpython-39.pyc b/src/data/sources/__pycache__/source.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09e8cebdaab271fba298ef2e010ec8583644016c Binary files /dev/null and b/src/data/sources/__pycache__/source.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/source_loader.cpython-39.pyc b/src/data/sources/__pycache__/source_loader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..01125f0d3fb3fb29cc07bb1c87e0fcae32fc6198 Binary files /dev/null and b/src/data/sources/__pycache__/source_loader.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/source_registry.cpython-39.pyc b/src/data/sources/__pycache__/source_registry.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bd786e6d602ed4ff5c54a0921c19d5e8f6ac96e5 Binary files /dev/null and b/src/data/sources/__pycache__/source_registry.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/source_registry_test.cpython-39-pytest-7.2.0.pyc b/src/data/sources/__pycache__/source_registry_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3117cb6d83513d40a9225f4a1a56795326f1fa8e Binary files /dev/null and b/src/data/sources/__pycache__/source_registry_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/data/sources/__pycache__/source_registry_test.cpython-39-pytest-7.2.2.pyc b/src/data/sources/__pycache__/source_registry_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6b3a8f643f6404c1b69566b6c999bfbfe0cf4883 Binary files /dev/null and b/src/data/sources/__pycache__/source_registry_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/data/sources/__pycache__/source_registry_test.cpython-39-pytest-7.3.1.pyc b/src/data/sources/__pycache__/source_registry_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3026145a505e13de3fca399f8b9f0c03600b4a6b Binary files /dev/null and b/src/data/sources/__pycache__/source_registry_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/data/sources/__pycache__/tfds.cpython-39.pyc b/src/data/sources/__pycache__/tfds.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ba7f38928d497bf8d02f0419371feae0a0d0dc6c Binary files /dev/null and b/src/data/sources/__pycache__/tfds.cpython-39.pyc differ diff --git a/src/data/sources/__pycache__/tfds_source.cpython-39.pyc b/src/data/sources/__pycache__/tfds_source.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..65fe658e617a717eea8aa7b2814cc6e28aa04b89 Binary files /dev/null and b/src/data/sources/__pycache__/tfds_source.cpython-39.pyc differ diff --git a/src/data/sources/csv_source.py b/src/data/sources/csv_source.py new file mode 100644 index 0000000000000000000000000000000000000000..8b0ef9658a76bee3db9f61533de737a166dc8e52 --- /dev/null +++ b/src/data/sources/csv_source.py @@ -0,0 +1,73 @@ +"""CSV source.""" +from typing import Iterable, Optional + +import duckdb +import pandas as pd +from pydantic import Field +from typing_extensions import override + +from ...schema import Item +from ...utils import download_http_files +from ..duckdb_utils import duckdb_gcs_setup +from .source import Source, SourceSchema, schema_from_df + +LINE_NUMBER_COLUMN = '__line_number__' + + +class CSVDataset(Source): + """CSV data loader + + CSV files can live locally as a filepath, or point to an external URL. + """ # noqa: D415, D400 + name = 'csv' + + filepaths: list[str] = Field(description='A list of filepaths to CSV files.') + delim: Optional[str] = Field(default=',', description='The CSV file delimiter to use.') + header: Optional[bool] = Field(default=True, description='Whether the CSV file has a header row.') + names: Optional[list[str]] = Field( + default=None, description='Provide header names if the file does not contain a header.') + + _source_schema: SourceSchema + _df: pd.DataFrame + + @override + def setup(self) -> None: + # Download CSV files to /tmp if they are via HTTP to speed up duckdb. + filepaths = download_http_files(self.filepaths) + + con = duckdb.connect(database=':memory:') + + # DuckDB expects s3 protocol: https://duckdb.org/docs/guides/import/s3_import.html. + s3_filepaths = [path.replace('gs://', 's3://') for path in filepaths] + + # NOTE: We use duckdb here to increase parallelism for multiple files. + # NOTE: We turn off the parallel reader because of https://github.com/lilacai/lilac/issues/373. + self._df = con.execute(f""" + {duckdb_gcs_setup(con)} + SELECT * FROM read_csv_auto( + {s3_filepaths}, + SAMPLE_SIZE=500000, + HEADER={self.header}, + {f'NAMES={self.names},' if self.names else ''} + DELIM='{self.delim or ','}', + IGNORE_ERRORS=true, + PARALLEL=false + ) + """).df() + + # Create the source schema in prepare to share it between process and source_schema. + self._source_schema = schema_from_df(self._df, LINE_NUMBER_COLUMN) + + @override + def source_schema(self) -> SourceSchema: + """Return the source schema.""" + return self._source_schema + + @override + def process(self) -> Iterable[Item]: + """Process the source upload request.""" + cols = self._df.columns.tolist() + yield from ({ + LINE_NUMBER_COLUMN: idx, + **dict(zip(cols, item_vals)), + } for idx, *item_vals in self._df.itertuples()) diff --git a/src/data/sources/csv_source_test.py b/src/data/sources/csv_source_test.py new file mode 100644 index 0000000000000000000000000000000000000000..3287cf8c2bdb95aad5c86c1203beffbb4200dac8 --- /dev/null +++ b/src/data/sources/csv_source_test.py @@ -0,0 +1,42 @@ +"""Tests for the CSV source.""" +import csv +import os +import pathlib + +from ...schema import schema +from .csv_source import LINE_NUMBER_COLUMN, CSVDataset +from .source import SourceSchema + + +def test_csv(tmp_path: pathlib.Path) -> None: + csv_rows = [{'x': 1, 'y': 'ten'}, {'x': 2, 'y': 'twenty'}] + + filename = 'test-dataset.csv' + filepath = os.path.join(tmp_path, filename) + with open(filepath, 'w') as f: + writer = csv.DictWriter(f, fieldnames=list(csv_rows[0].keys())) + writer.writeheader() + writer.writerows(csv_rows) + + source = CSVDataset(filepaths=[filepath]) + source.setup() + + source_schema = source.source_schema() + assert source_schema == SourceSchema( + fields=schema({ + LINE_NUMBER_COLUMN: 'int64', + 'x': 'int64', + 'y': 'string' + }).fields, num_items=2) + + items = list(source.process()) + + assert items == [{ + LINE_NUMBER_COLUMN: 0, + 'x': 1, + 'y': 'ten' + }, { + LINE_NUMBER_COLUMN: 1, + 'x': 2, + 'y': 'twenty' + }] diff --git a/src/data/sources/default_sources.py b/src/data/sources/default_sources.py new file mode 100644 index 0000000000000000000000000000000000000000..924a5975e84f2b8c9185d45bdadb6744547d1229 --- /dev/null +++ b/src/data/sources/default_sources.py @@ -0,0 +1,18 @@ +"""Registers all available default sources.""" +from .csv_source import CSVDataset +from .gmail_source import Gmail +from .huggingface_source import HuggingFaceDataset +from .json_source import JSONDataset +from .pandas_source import PandasDataset +from .reddit_hf_source import RedditDataset +from .source_registry import register_source + + +def register_default_sources() -> None: + """Register all the default sources.""" + register_source(CSVDataset) + register_source(HuggingFaceDataset) + register_source(RedditDataset) + register_source(JSONDataset) + register_source(PandasDataset) + register_source(Gmail) diff --git a/src/data/sources/gmail_source.py b/src/data/sources/gmail_source.py new file mode 100644 index 0000000000000000000000000000000000000000..731cd0e2e6aaaad1871f9771b466172d9d537a88 --- /dev/null +++ b/src/data/sources/gmail_source.py @@ -0,0 +1,220 @@ +"""Gmail source.""" +import base64 +import dataclasses +import os.path +import random +import re +from datetime import datetime +from time import sleep +from typing import Any, Iterable, Optional + +from email_reply_parser import EmailReplyParser +from google.auth.transport.requests import Request +from google.oauth2.credentials import Credentials +from google_auth_oauthlib.flow import InstalledAppFlow +from googleapiclient.discovery import build +from googleapiclient.errors import HttpError +from pydantic import Field as PydanticField +from typing_extensions import override + +from ...config import data_path +from ...schema import Item, field +from ...utils import log +from .source import Source, SourceSchema + +# If modifying these scopes, delete the token json file. +_SCOPES = ['https://www.googleapis.com/auth/gmail.readonly'] +_GMAIL_CONFIG_DIR = os.path.join(data_path(), '.gmail') +_TOKEN_FILENAME = 'token.json' +_CREDS_FILENAME = 'credentials.json' +_NUM_RETRIES = 10 +_MAX_NUM_THREADS = 30_000 + +_UNWRAP_PATTERN = re.compile(r'(\S)\n(\S)') +HTTP_PATTERN = re.compile(r'https?://[^\s]+') + + +class Gmail(Source): + """Connects to your Gmail and loads the text of your emails. + + **One time setup** + + Download the OAuth credentials file from the + [Google Cloud Console](https://console.cloud.google.com/apis/credentials) and save it to the + correct location. See + [guide](https://developers.google.com/gmail/api/quickstart/python#authorize_credentials_for_a_desktop_application) + for details. + """ + + name = 'gmail' + + credentials_file = PydanticField( + description='Path to the OAuth credentials file.', + default=os.path.join(_GMAIL_CONFIG_DIR, _CREDS_FILENAME)) + + _creds: Optional[Credentials] = None + + class Config: + # Language is required even though it has a default value. + schema_extra = {'required': ['credentials_file']} + + @override + def setup(self) -> None: + # The token file stores the user's access and refresh tokens, and is created automatically when + # the authorization flow completes for the first time. + token_filepath = os.path.join(_GMAIL_CONFIG_DIR, _TOKEN_FILENAME) + if os.path.exists(token_filepath): + self._creds = Credentials.from_authorized_user_file(token_filepath, _SCOPES) + # If there are no (valid) credentials available, let the user log in. + if not self._creds or not self._creds.valid: + if self._creds and self._creds.expired and self._creds.refresh_token: + self._creds.refresh(Request()) + else: + if not os.path.exists(self.credentials_file): + raise ValueError( + f'Could not find the OAuth credentials file at "{self.credentials_file}". Make sure to ' + 'download it from the Google Cloud Console and save it to the correct location.') + flow = InstalledAppFlow.from_client_secrets_file(self.credentials_file, _SCOPES) + self._creds = flow.run_local_server() + + os.makedirs(os.path.dirname(token_filepath), exist_ok=True) + # Save the token for the next run. + with open(token_filepath, 'w') as token: + token.write(self._creds.to_json()) + + @override + def source_schema(self) -> SourceSchema: + return SourceSchema( + fields={ + 'body': field('string'), + 'snippet': field('string'), + 'dates': field(fields=['string']), + 'subject': field('string'), + }) + + @override + def process(self) -> Iterable[Item]: + # Call the Gmail API + service = build('gmail', 'v1', credentials=self._creds) + + # threads.list API + threads_resource = service.users().threads() + + thread_batch: list[Item] = [] + retry_batch: set[str] = set() + num_retries = 0 + num_threads_fetched = 0 + + def _thread_fetched(request_id: str, response: Any, exception: Optional[HttpError]) -> None: + if exception is not None: + retry_batch.add(request_id) + return + + replies: list[str] = [] + dates: list[str] = [] + snippets: list[str] = [] + subject: Optional[str] = None + + for msg in response['messages']: + epoch_sec = int(msg['internalDate']) / 1000. + date = datetime.fromtimestamp(epoch_sec).strftime('%Y-%m-%d %H:%M:%S') + dates.append(date) + if 'snippet' in msg: + snippets.append(msg['snippet']) + email_info = _parse_payload(msg['payload']) + subject = subject or email_info.subject + parsed_parts: list[str] = [] + for body in email_info.parts: + if not body: + continue + text = base64.urlsafe_b64decode(body).decode('utf-8') + text = EmailReplyParser.parse_reply(text) + # Unwrap text. + text = _UNWRAP_PATTERN.sub('\\1 \\2', text) + # Remove URLs. + text = HTTP_PATTERN.sub('', text) + + if text: + parsed_parts.append(text) + if email_info.sender and parsed_parts: + parsed_parts = [ + f'--------------------{email_info.sender}--------------------', *parsed_parts + ] + if parsed_parts: + replies.append('\n'.join(parsed_parts)) + + if replies: + thread_batch.append({ + 'body': '\n\n'.join(replies), + 'snippet': '\n'.join(snippets) if snippets else None, + 'dates': dates, + 'subject': subject, + }) + if request_id in retry_batch: + retry_batch.remove(request_id) + + # First request. + thread_list_req = threads_resource.list(userId='me', includeSpamTrash=False) or None + thread_list = thread_list_req.execute(num_retries=_NUM_RETRIES) if thread_list_req else None + + while (num_threads_fetched < _MAX_NUM_THREADS and thread_list and thread_list_req): + batch = service.new_batch_http_request(callback=_thread_fetched) + + for gmail_thread in thread_list['threads']: + thread_id = gmail_thread['id'] + if not retry_batch or (thread_id in retry_batch): + batch.add( + service.users().threads().get(userId='me', id=thread_id, format='full'), + request_id=thread_id) + + batch.execute() + num_threads_fetched += len(thread_batch) + yield from thread_batch + thread_batch = [] + + if retry_batch: + log(f'Failed to fetch {len(retry_batch)} threads. Retrying...') + timeout = 2**(num_retries - 1) + random.uniform(0, 1) + sleep(timeout) + num_retries += 1 + else: + retry_batch = set() + num_retries = 0 + # Fetch next page. + thread_list_req = threads_resource.list_next(thread_list_req, thread_list) + thread_list = thread_list_req.execute(num_retries=_NUM_RETRIES) if thread_list_req else None + + +@dataclasses.dataclass +class EmailInfo: + """Stores parsed information about an email.""" + sender: Optional[str] = None + subject: Optional[str] = None + parts: list[bytes] = dataclasses.field(default_factory=list) + + +def _get_header(payload: Any, name: str) -> Optional[str]: + if 'headers' not in payload: + return None + values = [h['value'] for h in payload['headers'] if h['name'].lower().strip() == name] + return values[0] if values else None + + +def _parse_payload(payload: Any) -> EmailInfo: + sender = _get_header(payload, 'from') + subject = _get_header(payload, 'subject') + parts: list[bytes] = [] + + # Process the message body. + if 'mimeType' in payload and 'text/plain' in payload['mimeType']: + if 'body' in payload and 'data' in payload['body']: + parts.append(payload['body']['data'].encode('ascii')) + + # Process the message parts. + for part in payload.get('parts', []): + email_info = _parse_payload(part) + sender = sender or email_info.sender + subject = subject or email_info.subject + parts.extend(email_info.parts) + + return EmailInfo(sender, subject, parts) diff --git a/src/data/sources/huggingface_source.py b/src/data/sources/huggingface_source.py new file mode 100644 index 0000000000000000000000000000000000000000..a3b449ed84a5fdfcee420c1d4ce613c21196561b --- /dev/null +++ b/src/data/sources/huggingface_source.py @@ -0,0 +1,160 @@ +"""Huggingface source.""" +import multiprocessing +from typing import Iterable, Optional, Union + +import numpy as np +from datasets import ClassLabel, DatasetDict, Sequence, Value, load_dataset, load_from_disk +from pydantic import BaseModel +from pydantic import Field as PydanticField +from typing_extensions import override + +from ...schema import DataType, Field, Item, arrow_dtype_to_dtype +from .source import Source, SourceSchema + +HF_SPLIT_COLUMN = '__hfsplit__' + +# Used when the dataset is saved locally. +DEFAULT_LOCAL_SPLIT_NAME = 'default' + + +class SchemaInfo(BaseModel): + """Information about the processed huggingface schema.""" + fields: dict[str, Field] = {} + class_labels: dict[str, list[str]] + num_items: int + + +def _infer_field(feature_value: Union[Value, dict]) -> Field: + """Infer the field type from the feature value.""" + if isinstance(feature_value, dict): + return Field(fields={name: _infer_field(value) for name, value in feature_value.items()}) + elif isinstance(feature_value, Value): + return Field(dtype=arrow_dtype_to_dtype(feature_value.pa_type)) + elif isinstance(feature_value, Sequence): + # Huggingface Sequences can contain a dictionary of feature values, e.g. + # Sequence(feature={'x': Value(dtype='int32'), 'y': Value(dtype='float32')}} + # These are converted to {'x': [...]} and {'y': [...]} + if isinstance(feature_value.feature, dict): + return Field( + fields={ + name: Field(repeated_field=_infer_field(value)) + for name, value in feature_value.feature.items() + }) + else: + return Field(repeated_field=_infer_field(feature_value.feature)) + elif isinstance(feature_value, list): + if len(feature_value) > 1: + raise ValueError('Field arrays with multiple values are not supported.') + return Field(repeated_field=_infer_field(feature_value[0])) + elif isinstance(feature_value, ClassLabel): + raise ValueError('Nested ClassLabel is not supported.') + + else: + raise ValueError(f'Feature is not a `Value`, `Sequence`, or `dict`: {feature_value}') + + +def hf_schema_to_schema(hf_dataset_dict: DatasetDict, split: Optional[str]) -> SchemaInfo: + """Convert the HuggingFace schema to our schema.""" + if split: + split_datasets = [hf_dataset_dict[split]] + else: + split_datasets = [hf_dataset_dict[split] for split in hf_dataset_dict.keys()] + + fields: dict[str, Field] = {} + class_labels: dict[str, list[str]] = {} + num_items = 0 + + for split_dataset in split_datasets: + num_items += len(split_dataset) + features = split_dataset.features + for feature_name, feature_value in features.items(): + if feature_name in fields: + continue + + if isinstance(feature_value, ClassLabel): + # Class labels act as strings and we map the integer to a string before writing. + fields[feature_name] = Field(dtype=DataType.STRING) + class_labels[feature_name] = feature_value.names + else: + fields[feature_name] = _infer_field(feature_value) + + # Add the split column to the schema. + fields[HF_SPLIT_COLUMN] = Field(dtype=DataType.STRING) + + return SchemaInfo(fields=fields, class_labels=class_labels, num_items=num_items) + + +class HuggingFaceDataset(Source): + """HuggingFace data loader + + For a list of datasets see: [huggingface.co/datasets](https://huggingface.co/datasets). + + For documentation on dataset loading see: + [huggingface.co/docs/datasets/index](https://huggingface.co/docs/datasets/index) + """ # noqa: D415, D400 + name = 'huggingface' + + dataset_name: str = PydanticField( + required=True, + description='Either in the format `user/dataset` or `dataset`.', + ) + config_name: Optional[str] = PydanticField( + title='Dataset config name', description='Some datasets require this.', default=None) + split: Optional[str] = PydanticField( + title='Dataset split', description='Loads all splits by default.', default=None) + revision: Optional[str] = PydanticField(title='Dataset revision', default=None) + load_from_disk: Optional[bool] = PydanticField( + description='Load from local disk instead of the hub.', default=False) + + _dataset_dict: DatasetDict + _schema_info: SchemaInfo + + @override + def setup(self) -> None: + if self.load_from_disk: + # Load from disk. + hf_dataset_dict = {DEFAULT_LOCAL_SPLIT_NAME: load_from_disk(self.dataset_name)} + else: + hf_dataset_dict = load_dataset( + self.dataset_name, self.config_name, num_proc=multiprocessing.cpu_count()) + self._dataset_dict = hf_dataset_dict + self._schema_info = hf_schema_to_schema(self._dataset_dict, self.split) + + @override + def source_schema(self) -> SourceSchema: + return SourceSchema(fields=self._schema_info.fields, num_items=self._schema_info.num_items) + + @override + def process(self) -> Iterable[Item]: + if self.split: + split_names = [self.split] + else: + split_names = list(self._dataset_dict.keys()) + + for split_name in split_names: + split_dataset = self._dataset_dict[split_name] + + for example in split_dataset: + # Replace the class labels with strings. + for feature_name in self._schema_info.class_labels.keys(): + if feature_name in example: + example[feature_name] = self._schema_info.class_labels[feature_name][ + example[feature_name]] + + # Inject the split name. + example[HF_SPLIT_COLUMN] = split_name + + # Huggingface Sequences are represented as np.arrays. Convert them to lists. + example = _np_array_to_list_deep(example) + + yield example + + +def _np_array_to_list_deep(item: Item) -> Item: + """Convert all numpy arrays to lists.""" + for key, value in item.items(): + if isinstance(value, np.ndarray): + item[key] = value.tolist() + elif isinstance(value, dict): + item[key] = _np_array_to_list_deep(value) + return item diff --git a/src/data/sources/huggingface_source_test.py b/src/data/sources/huggingface_source_test.py new file mode 100644 index 0000000000000000000000000000000000000000..a4e5c6f77b88527b6d88cad669d7c09d09391daa --- /dev/null +++ b/src/data/sources/huggingface_source_test.py @@ -0,0 +1,170 @@ +"""Tests for the pandas source.""" +import os +import pathlib + +# mypy: disable-error-code="attr-defined" +from datasets import Dataset, Features, Sequence, Value + +from ...schema import schema +from .huggingface_source import HF_SPLIT_COLUMN, HuggingFaceDataset +from .source import SourceSchema + + +def test_hf(tmp_path: pathlib.Path) -> None: + dataset = Dataset.from_list([{'x': 1, 'y': 'ten'}, {'x': 2, 'y': 'twenty'}]) + + dataset_name = os.path.join(tmp_path, 'hf-test-dataset') + dataset.save_to_disk(dataset_name) + + source = HuggingFaceDataset(dataset_name=dataset_name, load_from_disk=True) + + items = source.process() + source.setup() + + source_schema = source.source_schema() + assert source_schema == SourceSchema( + fields=schema({ + HF_SPLIT_COLUMN: 'string', + 'x': 'int64', + 'y': 'string' + }).fields, num_items=2) + + items = list(source.process()) + + assert items == [{ + HF_SPLIT_COLUMN: 'default', + 'x': 1, + 'y': 'ten' + }, { + HF_SPLIT_COLUMN: 'default', + 'x': 2, + 'y': 'twenty' + }] + + +def test_hf_sequence(tmp_path: pathlib.Path) -> None: + dataset = Dataset.from_list([{ + 'scalar': 1, + 'seq': [1, 0], + 'seq_dict': { + 'x': [1, 2, 3], + 'y': ['four', 'five', 'six'] + } + }, { + 'scalar': 2, + 'seq': [2, 0], + 'seq_dict': { + 'x': [10, 20, 30], + 'y': ['forty', 'fifty', 'sixty'] + } + }], + features=Features({ + 'scalar': Value(dtype='int64'), + 'seq': Sequence(feature=Value(dtype='int64')), + 'seq_dict': Sequence(feature={ + 'x': Value(dtype='int64'), + 'y': Value(dtype='string') + }) + })) + + dataset_name = os.path.join(tmp_path, 'hf-test-dataset') + dataset.save_to_disk(dataset_name) + + source = HuggingFaceDataset(dataset_name=dataset_name, load_from_disk=True) + + items = source.process() + source.setup() + + source_schema = source.source_schema() + assert source_schema == SourceSchema( + fields=schema({ + HF_SPLIT_COLUMN: 'string', + 'scalar': 'int64', + 'seq': ['int64'], + 'seq_dict': { + 'x': ['int64'], + 'y': ['string'], + }, + }).fields, + num_items=2) + + items = list(source.process()) + + assert items == [{ + HF_SPLIT_COLUMN: 'default', + 'scalar': 1, + 'seq': [1, 0], + 'seq_dict': { + 'x': [1, 2, 3], + 'y': ['four', 'five', 'six'] + } + }, { + HF_SPLIT_COLUMN: 'default', + 'scalar': 2, + 'seq': [2, 0], + 'seq_dict': { + 'x': [10, 20, 30], + 'y': ['forty', 'fifty', 'sixty'] + } + }] + + +def test_hf_list(tmp_path: pathlib.Path) -> None: + dataset = Dataset.from_list([{ + 'scalar': 1, + 'list': [{ + 'x': 1, + 'y': 'two' + }] + }, { + 'scalar': 2, + 'list': [{ + 'x': 3, + 'y': 'four' + }] + }], + features=Features({ + 'scalar': Value(dtype='int64'), + 'list': [{ + 'x': Value(dtype='int64'), + 'y': Value(dtype='string') + }] + })) + + dataset_name = os.path.join(tmp_path, 'hf-test-dataset') + dataset.save_to_disk(dataset_name) + + source = HuggingFaceDataset(dataset_name=dataset_name, load_from_disk=True) + + items = source.process() + source.setup() + + source_schema = source.source_schema() + assert source_schema == SourceSchema( + fields=schema({ + HF_SPLIT_COLUMN: 'string', + 'scalar': 'int64', + 'list': [{ + 'x': 'int64', + 'y': 'string', + }], + }).fields, + num_items=2) + + items = list(source.process()) + + assert items == [{ + HF_SPLIT_COLUMN: 'default', + 'scalar': 1, + 'list': [{ + 'x': 1, + 'y': 'two' + }] + }, { + HF_SPLIT_COLUMN: 'default', + 'scalar': 2, + 'list': [{ + 'x': 3, + 'y': 'four' + }] + }] diff --git a/src/data/sources/json_source.py b/src/data/sources/json_source.py new file mode 100644 index 0000000000000000000000000000000000000000..444e35a1c86d59143c1b874f5b8c764206cee14f --- /dev/null +++ b/src/data/sources/json_source.py @@ -0,0 +1,65 @@ +"""CSV source.""" +from typing import Iterable + +import duckdb +import pandas as pd +from pydantic import Field as PydanticField +from typing_extensions import override + +from ...schema import Item +from ...utils import download_http_files +from ..duckdb_utils import duckdb_gcs_setup +from .source import Source, SourceSchema, schema_from_df + +ROW_ID_COLUMN = '__row_id__' + + +class JSONDataset(Source): + """JSON data loader + + Supports both JSON and JSONL. + + JSON files can live locally as a filepath, or point to an external URL. + """ # noqa: D415, D400 + name = 'json' + + filepaths: list[str] = PydanticField(description='A list of filepaths to JSON files.') + + _source_schema: SourceSchema + _df: pd.DataFrame + + @override + def setup(self) -> None: + # Download JSON files to local cache if they are via HTTP to speed up duckdb. + filepaths = download_http_files(self.filepaths) + + con = duckdb.connect(database=':memory:') + + # DuckDB expects s3 protocol: https://duckdb.org/docs/guides/import/s3_import.html. + s3_filepaths = [path.replace('gs://', 's3://') for path in filepaths] + + # NOTE: We use duckdb here to increase parallelism for multiple files. + self._df = con.execute(f""" + {duckdb_gcs_setup(con)} + SELECT * FROM read_json_auto( + {s3_filepaths}, + IGNORE_ERRORS=true + ) + """).df() + + # Create the source schema in prepare to share it between process and source_schema. + self._source_schema = schema_from_df(self._df, ROW_ID_COLUMN) + + @override + def source_schema(self) -> SourceSchema: + """Return the source schema.""" + return self._source_schema + + @override + def process(self) -> Iterable[Item]: + """Process the source upload request.""" + cols = self._df.columns.tolist() + yield from ({ + ROW_ID_COLUMN: idx, + **dict(zip(cols, item_vals)), + } for idx, *item_vals in self._df.itertuples()) diff --git a/src/data/sources/json_source_test.py b/src/data/sources/json_source_test.py new file mode 100644 index 0000000000000000000000000000000000000000..b26b2733770e52119fbc5e17b7d53e6d15dc8dc3 --- /dev/null +++ b/src/data/sources/json_source_test.py @@ -0,0 +1,74 @@ +"""Tests for the JSON source.""" +import json +import os +import pathlib + +from ...schema import schema +from .json_source import ROW_ID_COLUMN, JSONDataset +from .source import SourceSchema + + +def test_simple_json(tmp_path: pathlib.Path) -> None: + json_records = [{'x': 1, 'y': 'ten'}, {'x': 2, 'y': 'twenty'}] + + filename = 'test-dataset.jsonl' + filepath = os.path.join(tmp_path, filename) + with open(filepath, 'w') as f: + f.write(json.dumps(json_records)) + + source = JSONDataset(filepaths=[filepath]) + source.setup() + + source_schema = source.source_schema() + assert source_schema == SourceSchema( + fields=schema({ + ROW_ID_COLUMN: 'int64', + 'x': 'int64', + 'y': 'string' + }).fields, num_items=2) + + items = list(source.process()) + + assert items == [{ + ROW_ID_COLUMN: 0, + 'x': 1, + 'y': 'ten' + }, { + ROW_ID_COLUMN: 1, + 'x': 2, + 'y': 'twenty' + }] + + +def test_simple_jsonl(tmp_path: pathlib.Path) -> None: + json_records = [{'x': 1, 'y': 'ten'}, {'x': 2, 'y': 'twenty'}] + json_lines = [json.dumps(record) + '\n' for record in json_records] + + filename = 'test-dataset.jsonl' + filepath = os.path.join(tmp_path, filename) + with open(filepath, 'w') as f: + f.writelines(json_lines) + + source = JSONDataset(dataset_name='test_dataset', filepaths=[filepath]) + source.setup() + + source_schema = source.source_schema() + + assert source_schema == SourceSchema( + fields=schema({ + ROW_ID_COLUMN: 'int64', + 'x': 'int64', + 'y': 'string' + }).fields, num_items=2) + + items = list(source.process()) + + assert items == [{ + ROW_ID_COLUMN: 0, + 'x': 1, + 'y': 'ten' + }, { + ROW_ID_COLUMN: 1, + 'x': 2, + 'y': 'twenty' + }] diff --git a/src/data/sources/pandas_source.py b/src/data/sources/pandas_source.py new file mode 100644 index 0000000000000000000000000000000000000000..a4368bbf3b5e03805cdb7e9e599fda68316e02a9 --- /dev/null +++ b/src/data/sources/pandas_source.py @@ -0,0 +1,44 @@ +"""Pandas source.""" +from typing import Any, Iterable + +import pandas as pd +from typing_extensions import override + +from ...schema import Item +from .source import Source, SourceSchema, schema_from_df + +PANDAS_INDEX_COLUMN = '__pd_index__' + + +class PandasDataset(Source): + """Pandas source.""" + name = 'pandas' + + _df: pd.DataFrame + _source_schema: SourceSchema + + class Config: + underscore_attrs_are_private = True + + def __init__(self, df: pd.DataFrame, **kwargs: Any): + super().__init__(**kwargs) + self._df = df + + @override + def setup(self) -> None: + # Create the source schema in prepare to share it between process and source_schema. + self._source_schema = schema_from_df(self._df, PANDAS_INDEX_COLUMN) + + @override + def source_schema(self) -> SourceSchema: + """Return the source schema.""" + return self._source_schema + + @override + def process(self) -> Iterable[Item]: + """Process the source upload request.""" + cols = self._df.columns.tolist() + yield from ({ + PANDAS_INDEX_COLUMN: idx, + **dict(zip(cols, item_vals)), + } for idx, *item_vals in self._df.itertuples()) diff --git a/src/data/sources/pandas_source_test.py b/src/data/sources/pandas_source_test.py new file mode 100644 index 0000000000000000000000000000000000000000..72d241a993e53c6c81e39986a051962eb4892be5 --- /dev/null +++ b/src/data/sources/pandas_source_test.py @@ -0,0 +1,91 @@ +"""Tests for the pandas source.""" + +import pandas as pd + +from ...schema import schema +from .pandas_source import PANDAS_INDEX_COLUMN, PandasDataset +from .source import SourceSchema + + +def test_simple_dataframe() -> None: + df = pd.DataFrame.from_records([{ + 'name': 'a', + 'age': 1 + }, { + 'name': 'b', + 'age': 2 + }, { + 'name': 'c', + 'age': 3 + }]) + + source = PandasDataset(df) + source.setup() + + source_schema = source.source_schema() + assert source_schema == SourceSchema( + fields=schema({ + PANDAS_INDEX_COLUMN: 'int64', + 'name': 'string', + 'age': 'int64' + }).fields, + num_items=3) + + items = list(source.process()) + + assert items == [{ + PANDAS_INDEX_COLUMN: 0, + 'name': 'a', + 'age': 1 + }, { + PANDAS_INDEX_COLUMN: 1, + 'name': 'b', + 'age': 2 + }, { + PANDAS_INDEX_COLUMN: 2, + 'name': 'c', + 'age': 3 + }] + + +def test_simple_dataframe_with_index() -> None: + df = pd.DataFrame.from_records([{ + 'name': 'a', + 'age': 1 + }, { + 'name': 'b', + 'age': 2 + }, { + 'name': 'c', + 'age': 3 + }], + index=['id1', 'id2', 'id3']) + + source = PandasDataset(df) + source.setup() + + source_schema = source.source_schema() + assert source_schema == SourceSchema( + fields=schema({ + PANDAS_INDEX_COLUMN: 'string', + 'name': 'string', + 'age': 'int64' + }).fields, + num_items=3) + + items = list(source.process()) + + # The PANDAS_INDEX_COLUMN aligns with the pandas index. + assert items == [{ + PANDAS_INDEX_COLUMN: 'id1', + 'name': 'a', + 'age': 1 + }, { + PANDAS_INDEX_COLUMN: 'id2', + 'name': 'b', + 'age': 2 + }, { + PANDAS_INDEX_COLUMN: 'id3', + 'name': 'c', + 'age': 3 + }] diff --git a/src/data/sources/reddit_hf_source.py b/src/data/sources/reddit_hf_source.py new file mode 100644 index 0000000000000000000000000000000000000000..7480eb528b8b6e42d56e446f8f6ade95079c3a14 --- /dev/null +++ b/src/data/sources/reddit_hf_source.py @@ -0,0 +1,53 @@ +"""Loads reddit data from Huggingface.""" +from typing import Iterable, Optional + +from pydantic import Field as PydanticField +from typing_extensions import override + +from ...schema import Item +from .huggingface_source import HuggingFaceDataset +from .source import Source, SourceSchema + +HF_REDDIT_DATASET_NAME = 'reddit' +HF_SUBREDDIT_COL = 'subreddit' + + +class RedditDataset(Source): + """Reddit data loader, using Huggingface. + + Loads data from [huggingface.co/datasets/reddit](https://huggingface.co/datasets/reddit). + """ # noqa: D415, D400 + name = 'reddit' + + subreddits: Optional[list[str]] = PydanticField( + required=False, + description='If defined, only loads the subset of reddit data in these subreddit.', + ) + + _hf_dataset: HuggingFaceDataset + + @override + def setup(self) -> None: + self._hf_dataset = HuggingFaceDataset(dataset_name=HF_REDDIT_DATASET_NAME) + self._hf_dataset.setup() + + @override + def source_schema(self) -> SourceSchema: + return self._hf_dataset.source_schema() + + @override + def process(self) -> Iterable[Item]: + items = self._hf_dataset.process() + + if not self.subreddits: + return items + + lower_subreddits = [subreddit.lower() for subreddit in self.subreddits] + + for item in items: + item_subreddit = item[HF_SUBREDDIT_COL] + if item_subreddit.lower() not in lower_subreddits: + # Yield None so that the progress bar is accurate. + yield None + continue + yield item diff --git a/src/data/sources/source.py b/src/data/sources/source.py new file mode 100644 index 0000000000000000000000000000000000000000..c2f7df406fb1431189f1365ff7cea6b2534fa7f4 --- /dev/null +++ b/src/data/sources/source.py @@ -0,0 +1,107 @@ +"""Interface for implementing a source.""" + +import abc +from typing import ClassVar, Iterable, Optional + +import numpy as np +import pandas as pd +import pyarrow as pa +from pydantic import BaseModel, validator + +from ...schema import ( + Field, + ImageInfo, + Item, + Schema, + arrow_dtype_to_dtype, + arrow_schema_to_schema, + field, +) + + +class SourceSchema(BaseModel): + """The schema of a source.""" + fields: dict[str, Field] + num_items: Optional[int] + + +class SourceProcessResult(BaseModel): + """The result after processing all the shards of a source dataset.""" + filepaths: list[str] + data_schema: Schema + images: Optional[list[ImageInfo]] + num_items: int + + +class Source(abc.ABC, BaseModel): + """Interface for sources to implement. A source processes a set of shards and writes files.""" + # ClassVars do not get serialized with pydantic. + name: ClassVar[str] + + # The source_name will get populated in init automatically from the class name so it gets + # serialized and the source author doesn't have to define both the static property and the field. + source_name: Optional[str] + + class Config: + underscore_attrs_are_private = True + + @validator('source_name', always=True) + def validate_source_name(cls, source_name: str) -> str: + """Return the static name when the source_name name hasn't yet been set.""" + # When it's already been set from JSON, just return it. + if source_name: + return source_name + + if 'name' not in cls.__dict__: + raise ValueError('Source attribute "name" must be defined.') + + return cls.name + + @abc.abstractmethod + def source_schema(self) -> SourceSchema: + """Return the source schema for this source. + + Returns + A SourceSchema with + fields: mapping top-level columns to fields that describes the schema of the source. + num_items: the number of items in the source, used for progress. + + """ + pass + + def setup(self) -> None: + """Prepare the source for processing. + + This allows the source to do setup outside the constructor, but before its processed. This + avoids potentially expensive computation the pydantic model is deserialized. + """ + pass + + def teardown(self) -> None: + """Tears down the source after processing.""" + pass + + @abc.abstractmethod + def process(self) -> Iterable[Item]: + """Process the source upload request. + + Args: + task_step_id: The TaskManager `task_step_id` for this process run. This is used to update the + progress of the task. + """ + pass + + +def schema_from_df(df: pd.DataFrame, index_colname: str) -> SourceSchema: + """Create a source schema from a dataframe.""" + index_np_dtype = df.index.dtype + # String index dtypes are stored as objects. + if index_np_dtype == np.dtype(object): + index_np_dtype = np.dtype(str) + index_dtype = arrow_dtype_to_dtype(pa.from_numpy_dtype(index_np_dtype)) + + schema = arrow_schema_to_schema(pa.Schema.from_pandas(df, preserve_index=False)) + return SourceSchema( + fields={ + **schema.fields, index_colname: field(dtype=index_dtype) + }, num_items=len(df)) diff --git a/src/data/sources/source_registry.py b/src/data/sources/source_registry.py new file mode 100644 index 0000000000000000000000000000000000000000..6d4b1a292aaf7c9bd6e498b7ed422d52c2730087 --- /dev/null +++ b/src/data/sources/source_registry.py @@ -0,0 +1,47 @@ +"""Source registry for the dataset sources.""" + +from typing import Type, Union + +from .source import Source + +SOURCE_REGISTRY: dict[str, Type[Source]] = {} + + +def register_source(source_cls: Type[Source]) -> None: + """Register a source configuration globally.""" + if source_cls.name in SOURCE_REGISTRY: + raise ValueError(f'Source "{source_cls.name}" has already been registered!') + + SOURCE_REGISTRY[source_cls.name] = source_cls + + +def get_source_cls(source_name: str) -> Type[Source]: + """Return a registered source given the name in the registry.""" + if source_name not in SOURCE_REGISTRY: + raise ValueError(f'Source "{source_name}" not found in the registry') + + return SOURCE_REGISTRY[source_name] + + +def registered_sources() -> dict[str, Type[Source]]: + """Return all registered sources.""" + return SOURCE_REGISTRY + + +def resolve_source(source: Union[dict, Source]) -> Source: + """Resolve a generic source base class to a specific source class.""" + if isinstance(source, Source): + # The source is already parsed. + return source + + source_name = source.get('source_name') + if not source_name: + raise ValueError('"source_name" needs to be defined in the json dict.') + + source_cls = get_source_cls(source_name) + return source_cls(**source) + + +def clear_source_registry() -> None: + """Clear the source registry.""" + SOURCE_REGISTRY.clear() diff --git a/src/data/sources/source_registry_test.py b/src/data/sources/source_registry_test.py new file mode 100644 index 0000000000000000000000000000000000000000..6d910bc0c2bae139cda69eff25d54e01ace2bf59 --- /dev/null +++ b/src/data/sources/source_registry_test.py @@ -0,0 +1,55 @@ +"""A source to compute semantic search for a document.""" +from typing import Iterable, cast + +import pytest +from typing_extensions import override + +from ...schema import Item +from .source import Source, SourceSchema +from .source_registry import clear_source_registry, get_source_cls, register_source, resolve_source + + +class TestSource(Source): + """A test source.""" + name = 'test_source' + + @override + def setup(self) -> None: + pass + + @override + def source_schema(self) -> SourceSchema: + """Return the source schema.""" + return cast(SourceSchema, None) + + @override + def process(self) -> Iterable[Item]: + yield None + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_source(TestSource) + + # Unit test runs. + yield + + # Teardown. + clear_source_registry() + + +def test_get_source_cls() -> None: + """Test getting a source.""" + assert TestSource == get_source_cls('test_source') + + +def test_resolve_source() -> None: + """Test resolving a source.""" + test_source = TestSource() + + # sources pass through. + assert resolve_source(test_source) == test_source + + # Dicts resolve to the base class. + assert resolve_source(test_source.dict()) == test_source diff --git a/src/data_loader.py b/src/data_loader.py new file mode 100644 index 0000000000000000000000000000000000000000..f122e659c9572f3831ff29cb2391346cab004690 --- /dev/null +++ b/src/data_loader.py @@ -0,0 +1,150 @@ +"""A data loader standalone binary. This should only be run as a script to load a dataset. + +To run the source loader as a binary directly: + +poetry run python -m src.data_loader \ + --dataset_name=movies_dataset \ + --output_dir=./data/ \ + --config_path=./datasets/the_movies_dataset.json +""" +import json +import math +import os +import pathlib +import uuid +from typing import Iterable, Optional, Union, cast + +import click +import pandas as pd +from distributed import Client + +from .data.dataset_utils import write_items_to_parquet +from .data.sources.default_sources import register_default_sources +from .data.sources.source import Source +from .data.sources.source_registry import resolve_source +from .schema import ( + MANIFEST_FILENAME, + PARQUET_FILENAME_PREFIX, + UUID_COLUMN, + DataType, + Field, + Item, + Schema, + SourceManifest, + field, +) +from .tasks import TaskStepId, progress +from .utils import get_dataset_output_dir, log, open_file + + +def process_source(base_dir: Union[str, pathlib.Path], + namespace: str, + dataset_name: str, + source: Source, + task_step_id: Optional[TaskStepId] = None) -> tuple[str, int]: + """Process a source.""" + output_dir = get_dataset_output_dir(base_dir, namespace, dataset_name) + + source.setup() + source_schema = source.source_schema() + items = source.process() + + # Add UUIDs and fix NaN in string columns. + items = normalize_items(items, source_schema.fields) + + # Add progress. + if task_step_id is not None: + items = progress( + items, + task_step_id=task_step_id, + estimated_len=source_schema.num_items, + step_description=f'Reading from source {source.name}...') + + # Filter out the `None`s after progress. + items = cast(Iterable[Item], (item for item in items if item is not None)) + + data_schema = Schema(fields={**source_schema.fields, UUID_COLUMN: field('string')}) + filepath, num_items = write_items_to_parquet( + items=items, + output_dir=output_dir, + schema=data_schema, + filename_prefix=PARQUET_FILENAME_PREFIX, + shard_index=0, + num_shards=1) + + filenames = [os.path.basename(filepath)] + manifest = SourceManifest(files=filenames, data_schema=data_schema, images=None) + with open_file(os.path.join(output_dir, MANIFEST_FILENAME), 'w') as f: + f.write(manifest.json(indent=2, exclude_none=True)) + log(f'Manifest for dataset "{dataset_name}" written to {output_dir}') + + return output_dir, num_items + + +def normalize_items(items: Iterable[Item], fields: dict[str, Field]) -> Item: + """Sanitize items by removing NaNs and NaTs.""" + string_fields = set( + [field_name for field_name, field in fields.items() if field.dtype == DataType.STRING]) + timestamp_fields = set( + [field_name for field_name, field in fields.items() if field.dtype == DataType.TIMESTAMP]) + for item in items: + if item is None: + yield item + continue + + # Add row uuid if it doesn't exist. + if UUID_COLUMN not in item: + item[UUID_COLUMN] = uuid.uuid4().hex + + # Fix NaN string fields. + for name in string_fields: + item_value = item.get(name) + if item_value and not isinstance(item_value, str): + if math.isnan(item_value): + item[name] = None + else: + item[name] = str(item_value) + + # Fix NaT (not a time) timestamp fields. + for name in timestamp_fields: + item_value = item.get(name) + if item_value and pd.isnull(item_value): + item[name] = None + + yield item + + +@click.command() +@click.option( + '--output_dir', + required=True, + type=str, + help='The output directory to write the parquet files to.') +@click.option( + '--config_path', + required=True, + type=str, + help='The path to a json file describing the source configuration.') +@click.option( + '--dataset_name', required=True, type=str, help='The dataset name, used for binary mode only.') +@click.option( + '--namespace', + required=False, + default='local', + type=str, + help='The namespace to use. Defaults to "local".') +def main(output_dir: str, config_path: str, dataset_name: str, namespace: str) -> None: + """Run the source loader as a binary.""" + register_default_sources() + + with open_file(config_path) as f: + # Parse the json file in a dict. + source_dict = json.load(f) + source = resolve_source(source_dict) + + client = Client() + client.submit(process_source, output_dir, namespace, dataset_name, source).result() + + +if __name__ == '__main__': + main() diff --git a/src/data_loader_test.py b/src/data_loader_test.py new file mode 100644 index 0000000000000000000000000000000000000000..c476fa62f15c37723dc993d6dff02d277884e458 --- /dev/null +++ b/src/data_loader_test.py @@ -0,0 +1,74 @@ +"""Tests for data_loader.py.""" + +import os +import pathlib +import uuid +from typing import Iterable + +from pytest_mock import MockerFixture +from typing_extensions import override + +from .data.dataset_duckdb import read_source_manifest +from .data.dataset_utils import parquet_filename +from .data.sources.source import Source, SourceSchema +from .data_loader import process_source +from .schema import PARQUET_FILENAME_PREFIX, UUID_COLUMN, Item, SourceManifest, schema +from .test_utils import fake_uuid, read_items +from .utils import DATASETS_DIR_NAME + + +class TestSource(Source): + """A test source.""" + name = 'test_source' + + @override + def setup(self) -> None: + pass + + @override + def source_schema(self) -> SourceSchema: + """Return the source schema.""" + return SourceSchema(fields=schema({'x': 'int64', 'y': 'string'}).fields, num_items=2) + + @override + def process(self) -> Iterable[Item]: + return [{'x': 1, 'y': 'ten'}, {'x': 2, 'y': 'twenty'}] + + +def test_data_loader(tmp_path: pathlib.Path, mocker: MockerFixture) -> None: + mock_uuid = mocker.patch.object(uuid, 'uuid4', autospec=True) + mock_uuid.side_effect = [fake_uuid(b'1'), fake_uuid(b'2')] + + source = TestSource() + setup_mock = mocker.spy(TestSource, 'setup') + + output_dir, num_items = process_source(tmp_path, 'test_namespace', 'test_dataset', source) + + assert setup_mock.call_count == 1 + + assert output_dir == os.path.join(tmp_path, DATASETS_DIR_NAME, 'test_namespace', 'test_dataset') + assert num_items == 2 + + source_manifest = read_source_manifest(output_dir) + + assert source_manifest == SourceManifest( + files=[parquet_filename(PARQUET_FILENAME_PREFIX, 0, 1)], + data_schema=schema({ + # UUID_COLUMN is generated by the data loader. + UUID_COLUMN: 'string', + 'x': 'int64', + 'y': 'string' + }), + ) + + items = read_items(output_dir, source_manifest.files, source_manifest.data_schema) + + assert items == [{ + UUID_COLUMN: fake_uuid(b'1').hex, + 'x': 1, + 'y': 'ten' + }, { + UUID_COLUMN: fake_uuid(b'2').hex, + 'x': 2, + 'y': 'twenty' + }] diff --git a/src/db_manager.py b/src/db_manager.py new file mode 100644 index 0000000000000000000000000000000000000000..fc8f2bda84d5a6cf48b7bd2bb778a3487914d1da --- /dev/null +++ b/src/db_manager.py @@ -0,0 +1,42 @@ +"""Manages mapping the dataset name to the database instance.""" +import os +import threading +from typing import Type + +from .data.dataset import Dataset + +_DEFAULT_DATASET_CLS: Type[Dataset] + +_CACHED_DATASETS: dict[str, Dataset] = {} + +_db_lock = threading.Lock() + + +def get_dataset(namespace: str, dataset_name: str) -> Dataset: + """Get the dataset instance.""" + if not _DEFAULT_DATASET_CLS: + raise ValueError('Default dataset class not set.') + cache_key = f'{namespace}/{dataset_name}' + # https://docs.pytest.org/en/latest/example/simple.html#pytest-current-test-environment-variable + inside_test = 'PYTEST_CURRENT_TEST' in os.environ + with _db_lock: + if cache_key not in _CACHED_DATASETS or inside_test: + _CACHED_DATASETS[cache_key] = _DEFAULT_DATASET_CLS( + namespace=namespace, dataset_name=dataset_name) + return _CACHED_DATASETS[cache_key] + + +def remove_dataset_from_cache(namespace: str, dataset_name: str) -> None: + """Remove the dataset from the db manager cache.""" + cache_key = f'{namespace}/{dataset_name}' + with _db_lock: + if cache_key in _CACHED_DATASETS: + del _CACHED_DATASETS[cache_key] + + +# TODO(nsthorat): Make this a registry once we have multiple dataset implementations. This breaks a +# circular dependency. +def set_default_dataset_cls(dataset_cls: Type[Dataset]) -> None: + """Set the default dataset class.""" + global _DEFAULT_DATASET_CLS + _DEFAULT_DATASET_CLS = dataset_cls diff --git a/src/embeddings/__init__.py b/src/embeddings/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/embeddings/__pycache__/__init__.cpython-39.pyc b/src/embeddings/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c769dd89327d0b3a3e0d3c52ad6f57cd12c1618c Binary files /dev/null and b/src/embeddings/__pycache__/__init__.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/cohere.cpython-39.pyc b/src/embeddings/__pycache__/cohere.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..83b292d9c61a68c99abd01ddc3de8c4e78ccb3d3 Binary files /dev/null and b/src/embeddings/__pycache__/cohere.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/default_embeddings.cpython-39.pyc b/src/embeddings/__pycache__/default_embeddings.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15c935090ca51a019b9b45b3e19473c08439364a Binary files /dev/null and b/src/embeddings/__pycache__/default_embeddings.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/embedding.cpython-39.pyc b/src/embeddings/__pycache__/embedding.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c194c1f16d7779fac2dafbe896dca36a5da9e974 Binary files /dev/null and b/src/embeddings/__pycache__/embedding.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/embedding_index.cpython-39.pyc b/src/embeddings/__pycache__/embedding_index.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5688acdfabb87dcc065f87c4e2306a64a49f8686 Binary files /dev/null and b/src/embeddings/__pycache__/embedding_index.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/embedding_index_disk.cpython-39.pyc b/src/embeddings/__pycache__/embedding_index_disk.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bb50be945f8b4e070666bf62f46a1a9fcb8134af Binary files /dev/null and b/src/embeddings/__pycache__/embedding_index_disk.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/embedding_index_files.cpython-39.pyc b/src/embeddings/__pycache__/embedding_index_files.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c328b4e2409b1aeb0b898eb1abe48937d590f4a Binary files /dev/null and b/src/embeddings/__pycache__/embedding_index_files.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/embedding_index_test.cpython-39-pytest-7.2.0.pyc b/src/embeddings/__pycache__/embedding_index_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1449d9208b5f7b7261c667f4fade945f53ec0c4e Binary files /dev/null and b/src/embeddings/__pycache__/embedding_index_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/embeddings/__pycache__/embedding_index_test.cpython-39-pytest-7.2.2.pyc b/src/embeddings/__pycache__/embedding_index_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..947d97b8e387ff3d3768f03d271a0ede5aa88673 Binary files /dev/null and b/src/embeddings/__pycache__/embedding_index_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/embeddings/__pycache__/embedding_registry.cpython-39.pyc b/src/embeddings/__pycache__/embedding_registry.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b0556c3fdf42d15c8f700cd1dc145391330edfb6 Binary files /dev/null and b/src/embeddings/__pycache__/embedding_registry.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/embedding_registry_test.cpython-39-pytest-7.2.2.pyc b/src/embeddings/__pycache__/embedding_registry_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d609963e0b28bbd9ab44b6e73b1601c27831819 Binary files /dev/null and b/src/embeddings/__pycache__/embedding_registry_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/embeddings/__pycache__/embedding_test.cpython-39-pytest-7.3.1.pyc b/src/embeddings/__pycache__/embedding_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ec85227d4a877a7224ed5681aba6ebad7823022 Binary files /dev/null and b/src/embeddings/__pycache__/embedding_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/embeddings/__pycache__/registry.cpython-39.pyc b/src/embeddings/__pycache__/registry.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..013321ff2dcfce13832e551acc0880982395a2f6 Binary files /dev/null and b/src/embeddings/__pycache__/registry.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/sbert.cpython-39.pyc b/src/embeddings/__pycache__/sbert.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..447939d368cbf9ef7b7d11ac7c5bc09e29f6e44b Binary files /dev/null and b/src/embeddings/__pycache__/sbert.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/vector_store.cpython-39.pyc b/src/embeddings/__pycache__/vector_store.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7316be0d1bad4868aa674f40e28b3e8515a2dc07 Binary files /dev/null and b/src/embeddings/__pycache__/vector_store.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/vector_store_numpy.cpython-39.pyc b/src/embeddings/__pycache__/vector_store_numpy.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8115feeba0da1e45a709d51fff504e202e62a26a Binary files /dev/null and b/src/embeddings/__pycache__/vector_store_numpy.cpython-39.pyc differ diff --git a/src/embeddings/__pycache__/vector_store_test.cpython-39-pytest-7.2.2.pyc b/src/embeddings/__pycache__/vector_store_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..17297fc67dd215c2d86e3498dacc2bf7788733bc Binary files /dev/null and b/src/embeddings/__pycache__/vector_store_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/embeddings/__pycache__/vector_store_test.cpython-39-pytest-7.3.1.pyc b/src/embeddings/__pycache__/vector_store_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..504f4757d08a715eb4382ff60ed93981eb78da50 Binary files /dev/null and b/src/embeddings/__pycache__/vector_store_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/embeddings/cohere.py b/src/embeddings/cohere.py new file mode 100644 index 0000000000000000000000000000000000000000..49756abbda188e56d53615ffbc61b87f08ef256f --- /dev/null +++ b/src/embeddings/cohere.py @@ -0,0 +1,51 @@ +"""Cohere embeddings.""" +import functools +from typing import Iterable, cast + +import cohere +import numpy as np +from typing_extensions import override + +from ..config import CONFIG +from ..schema import Item, RichData +from ..signals.signal import TextEmbeddingSignal +from ..signals.splitters.chunk_splitter import split_text +from .embedding import compute_split_embeddings + +NUM_PARALLEL_REQUESTS = 10 +COHERE_BATCH_SIZE = 96 + + +@functools.cache +def _cohere() -> cohere.Client: + api_key = CONFIG['COHERE_API_KEY'] + if not api_key: + raise ValueError('`COHERE_API_KEY` environment variable not set.') + return cohere.Client(api_key, max_retries=10) + + +class Cohere(TextEmbeddingSignal): + """Computes embeddings using Cohere's embedding API. + +
**Important**: This will send data to an external server! + +
To use this signal, you must get a Cohere API key from + [cohere.com/embed](https://cohere.com/embed) and add it to your .env.local. + +
For details on pricing, see: https://cohere.com/pricing. + """ + + name = 'cohere' + display_name = 'Cohere Embeddings' + + @override + def compute(self, docs: Iterable[RichData]) -> Iterable[Item]: + """Compute embeddings for the given documents.""" + + def embed_fn(texts: list[str]) -> list[np.ndarray]: + return _cohere().embed(texts, truncate='END').embeddings + + docs = cast(Iterable[str], docs) + split_fn = split_text if self._split else None + yield from compute_split_embeddings( + docs, COHERE_BATCH_SIZE, embed_fn, split_fn, num_parallel_requests=NUM_PARALLEL_REQUESTS) diff --git a/src/embeddings/embedding.py b/src/embeddings/embedding.py new file mode 100644 index 0000000000000000000000000000000000000000..ffb64ae899f0416c2931ffa443010e227af5dc18 --- /dev/null +++ b/src/embeddings/embedding.py @@ -0,0 +1,99 @@ +"""Embedding registry.""" +from concurrent.futures import ThreadPoolExecutor +from typing import Callable, Generator, Iterable, Optional, Union, cast + +import numpy as np +from pydantic import StrictStr +from sklearn.preprocessing import normalize + +from ..data.dataset_utils import lilac_embedding +from ..schema import Item, RichData +from ..signals.signal import EMBEDDING_KEY, TextEmbeddingSignal, get_signal_by_type +from ..signals.splitters.chunk_splitter import TextChunk +from ..utils import chunks + +EmbeddingId = Union[StrictStr, TextEmbeddingSignal] + +EmbedFn = Callable[[Iterable[RichData]], np.ndarray] + + +def get_embed_fn(embedding_name: str) -> EmbedFn: + """Return a function that returns the embedding matrix for the given embedding signal.""" + embedding_cls = get_signal_by_type(embedding_name, TextEmbeddingSignal) + embedding = embedding_cls(split=False) + embedding.setup() + + def _embed_fn(data: Iterable[RichData]) -> np.ndarray: + items = embedding.compute(data) + + embedding_vectors: list[np.ndarray] = [] + for item in items: + if not item: + raise ValueError('Embedding signal returned None.') + if len(item) != 1: + raise ValueError( + f'Embedding signal returned {len(item)} items, but expected 1 since split was False') + embedding_vector = item[0][EMBEDDING_KEY] + if not isinstance(embedding_vector, np.ndarray): + raise ValueError( + f'Embedding signal returned {type(embedding_vector)} which is not an ndarray.') + # We use squeeze here because embedding functions can return outer dimensions of 1. + embedding_vector = embedding_vector.reshape(-1) + if embedding_vector.ndim != 1: + raise ValueError(f'Expected embeddings to be 1-dimensional, got {embedding_vector.ndim} ' + f'with shape {embedding_vector.shape}.') + embedding_vectors.append(embedding_vector) + return np.array(embedding_vectors) + + return _embed_fn + + +def compute_split_embeddings(docs: Iterable[str], + batch_size: int, + embed_fn: Callable[[list[str]], list[np.ndarray]], + split_fn: Optional[Callable[[str], list[TextChunk]]] = None, + num_parallel_requests: int = 1) -> Generator[Item, None, None]: + """Compute text embeddings in batches of chunks, using the provided splitter and embedding fn.""" + pool = ThreadPoolExecutor() + + def _splitter(doc: str) -> list[TextChunk]: + if doc is None: + return [] + if split_fn: + return split_fn(doc) + else: + # Return a single chunk that spans the entire document. + return [(doc, (0, len(doc)))] + + def _flat_split_batch_docs(docs: Iterable[str]) -> Generator[tuple[int, TextChunk], None, None]: + """Split a batch of documents into chunks and yield them.""" + for i, doc in enumerate(docs): + chunks = _splitter(doc) or [cast(TextChunk, ('', (0, 0)))] + for chunk in chunks: + yield (i, chunk) + + doc_chunks = _flat_split_batch_docs(docs) + items_to_yield: list[Item] = [] + current_index = 0 + + mega_batch_size = batch_size * num_parallel_requests + + for batch in chunks(doc_chunks, mega_batch_size): + texts = [text for _, (text, _) in batch] + embeddings: list[np.ndarray] = [] + for x in list(pool.map(lambda x: embed_fn(x), chunks(texts, batch_size))): + embeddings.extend(x) + matrix = normalize(np.array(embeddings)).astype(np.float16) + # np.split returns a shallow copy of each embedding so we don't increase the mem footprint. + embeddings_batch = cast(list[np.ndarray], np.split(matrix, matrix.shape[0])) + for (index, (_, (start, end))), embedding in zip(batch, embeddings_batch): + if index == current_index: + items_to_yield.append(lilac_embedding(start, end, embedding)) + else: + yield items_to_yield + items_to_yield = [lilac_embedding(start, end, embedding)] + current_index = index + + # Yield the last batch. + if items_to_yield: + yield items_to_yield diff --git a/src/embeddings/embedding_test.py b/src/embeddings/embedding_test.py new file mode 100644 index 0000000000000000000000000000000000000000..eae244d7421dfad40c9e4d665f2d1f35799dac83 --- /dev/null +++ b/src/embeddings/embedding_test.py @@ -0,0 +1,87 @@ +"""Tests for embedding.py.""" + +import numpy as np + +from ..data.dataset_utils import lilac_embedding +from ..signals.splitters.chunk_splitter import TextChunk +from .embedding import compute_split_embeddings + + +def char_splitter(text: str) -> list[TextChunk]: + return [(letter, (i, i + 1)) for i, letter in enumerate(text)] + + +def test_split_and_combine_text_embeddings_batch_across_two_docs() -> None: + docs = ['This is', '123'] + batch_size = 3 + + embed_fn_inputs: list[list[str]] = [] + + def embed_fn(batch: list[str]) -> list[np.ndarray]: + embed_fn_inputs.append(batch) + return [np.ones(1) for _ in batch] + + result = list(compute_split_embeddings(docs, batch_size, embed_fn, char_splitter)) + + # Each input to embed_fn is a batch of at most 3 letters. + assert embed_fn_inputs == [ + ['T', 'h', 'i'], + ['s', ' ', 'i'], + ['s', '1', '2'], + ['3'], + ] + + assert result == [ + [ + lilac_embedding(0, 1, np.array(1)), # T + lilac_embedding(1, 2, np.array(1)), # h + lilac_embedding(2, 3, np.array(1)), # i + lilac_embedding(3, 4, np.array(1)), # s + lilac_embedding(4, 5, np.array(1)), # ' ' + lilac_embedding(5, 6, np.array(1)), # i + lilac_embedding(6, 7, np.array(1)), # s + ], + [ + lilac_embedding(0, 1, np.array(1)), # 1 + lilac_embedding(1, 2, np.array(1)), # 2 + lilac_embedding(2, 3, np.array(1)), # 3 + ], + ] + + +def test_split_and_combine_text_embeddings_no_docs() -> None: + docs: list[str] = [] + batch_size = 3 + + embed_fn_inputs: list[list[str]] = [] + + def embed_fn(batch: list[str]) -> list[np.ndarray]: + embed_fn_inputs.append(batch) + return [np.ones(1) for _ in batch] + + result = list(compute_split_embeddings(docs, batch_size, embed_fn, char_splitter)) + assert embed_fn_inputs == [] + assert result == [] + + +def test_split_and_combine_text_embeddings_empty_docs() -> None: + docs: list[str] = ['', '', '123'] + batch_size = 3 + + embed_fn_inputs: list[list[str]] = [] + + def embed_fn(batch: list[str]) -> list[np.ndarray]: + embed_fn_inputs.append(batch) + return [np.ones(1) for _ in batch] + + result = list(compute_split_embeddings(docs, batch_size, embed_fn, char_splitter)) + assert embed_fn_inputs == [['', '', '1'], ['2', '3']] + assert result == [ + [lilac_embedding(0, 0, np.array(1))], # '' + [lilac_embedding(0, 0, np.array(1))], # '' + [ + lilac_embedding(0, 1, np.array(1)), # 1 + lilac_embedding(1, 2, np.array(1)), # 2 + lilac_embedding(2, 3, np.array(1)), # 3 + ], + ] diff --git a/src/embeddings/sbert.py b/src/embeddings/sbert.py new file mode 100644 index 0000000000000000000000000000000000000000..bbe6043084bb5790fd99e9e09b9738ec7d7571a6 --- /dev/null +++ b/src/embeddings/sbert.py @@ -0,0 +1,60 @@ +"""Sentence-BERT embeddings. Open-source models, designed to run on device.""" +import functools +from typing import Iterable, Optional, cast + +import torch +from sentence_transformers import SentenceTransformer +from typing_extensions import override + +from ..schema import Item, RichData +from ..signals.signal import TextEmbeddingSignal +from ..signals.splitters.chunk_splitter import split_text +from ..utils import log +from .embedding import compute_split_embeddings + +# The `all-mpnet-base-v2` model provides the best quality, while `all-MiniLM-L6-v2`` is 5 times +# faster and still offers good quality. See https://www.sbert.net/docs/pretrained_models.html#sentence-embedding-models/ +MINI_LM_MODEL = 'all-MiniLM-L6-v2' + +SBERT_DEFAULT_BATCH_SIZE = 64 +# Maps a tuple of model name and device to the optimal batch size, found empirically. +SBERT_OPTIMAL_BATCH_SIZE: dict[tuple[str, str], int] = { + (MINI_LM_MODEL, 'mps'): 256, +} + +MODEL_NAME = MINI_LM_MODEL + + +@functools.cache +def _sbert() -> tuple[Optional[str], SentenceTransformer]: + preferred_device: Optional[str] = None + if torch.backends.mps.is_available(): + preferred_device = 'mps' + elif not torch.backends.mps.is_built(): + log('MPS not available because the current PyTorch install was not built with MPS enabled.') + return preferred_device, SentenceTransformer(MODEL_NAME, device=preferred_device) + + +def _optimal_batch_size(preferred_device: Optional[str]) -> int: + model_device = (MODEL_NAME, str(preferred_device)) + if model_device in SBERT_OPTIMAL_BATCH_SIZE: + return SBERT_OPTIMAL_BATCH_SIZE[model_device] + return SBERT_DEFAULT_BATCH_SIZE + + +class SBERT(TextEmbeddingSignal): + """Computes embeddings using Sentence-BERT library.""" + + name = 'sbert' + display_name = 'SBERT Embeddings' + + @override + def compute(self, docs: Iterable[RichData]) -> Iterable[Item]: + """Call the embedding function.""" + preferred_device, model = _sbert() + batch_size = _optimal_batch_size(preferred_device) + + embed_fn = model.encode + split_fn = split_text if self._split else None + docs = cast(Iterable[str], docs) + yield from compute_split_embeddings(docs, batch_size, embed_fn=embed_fn, split_fn=split_fn) diff --git a/src/embeddings/vector_store.py b/src/embeddings/vector_store.py new file mode 100644 index 0000000000000000000000000000000000000000..b9648ee46e441b839cb09e19fb11be5e061ebe76 --- /dev/null +++ b/src/embeddings/vector_store.py @@ -0,0 +1,57 @@ +"""Interface for storing vectors.""" + +import abc +from typing import Iterable, Optional + +import numpy as np + +from ..schema import VectorKey + + +class VectorStore(abc.ABC): + """Interface for storing and retrieving vectors.""" + + @abc.abstractmethod + def keys(self) -> list[VectorKey]: + """Return the keys in the store.""" + pass + + @abc.abstractmethod + def add(self, keys: list[VectorKey], embeddings: np.ndarray) -> None: + """Add or edit the given keyed embeddings to the store. + + If the keys already exist they will be overwritten, acting as an "upsert". + + Args: + keys: The keys to add the embeddings for. + embeddings: The embeddings to add. This should be a 2D matrix with the same length as keys. + """ + pass + + @abc.abstractmethod + def get(self, keys: Iterable[VectorKey]) -> np.ndarray: + """Return the embeddings for given keys. + + Args: + keys: The keys to return the embeddings for. If None, return all embeddings. + + Returns + The embeddings for the given keys. + """ + pass + + def topk(self, + query: np.ndarray, + k: int, + key_prefixes: Optional[Iterable[VectorKey]] = None) -> list[tuple[VectorKey, float]]: + """Return the top k most similar vectors. + + Args: + query: The query vector. + k: The number of results to return. + key_prefixes: Optional key prefixes to restrict the search to. + + Returns + A list of (key, score) tuples. + """ + raise NotImplementedError diff --git a/src/embeddings/vector_store_numpy.py b/src/embeddings/vector_store_numpy.py new file mode 100644 index 0000000000000000000000000000000000000000..78683b2674745da8d3ea3e18777c43d8cec4af84 --- /dev/null +++ b/src/embeddings/vector_store_numpy.py @@ -0,0 +1,81 @@ +"""NumpyVectorStore class for storing vectors in numpy arrays.""" + +from typing import Iterable, Optional, cast + +import numpy as np +import pandas as pd +from typing_extensions import override + +from ..schema import VectorKey +from .vector_store import VectorStore + + +class NumpyVectorStore(VectorStore): + """Stores vectors as in-memory np arrays.""" + _embeddings: np.ndarray + _keys: list[VectorKey] + # Maps a `VectorKey` to a row index in `_embeddings`. + _lookup: pd.Series + + @override + def keys(self) -> list[VectorKey]: + return self._keys + + @override + def add(self, keys: list[VectorKey], embeddings: np.ndarray) -> None: + if hasattr(self, '_embeddings') or hasattr(self, '_keys'): + raise ValueError('Embeddings already exist in this store. Upsert is not yet supported.') + + if len(keys) != embeddings.shape[0]: + raise ValueError( + f'Length of keys ({len(keys)}) does not match number of embeddings {embeddings.shape[0]}.') + + self._keys = keys + # Cast to float32 since dot product with float32 is 40-50x faster than float16 and 2.5x faster + # than float64. + self._embeddings = embeddings.astype(np.float32) + + index = pd.MultiIndex.from_tuples(keys) + row_indices = np.arange(len(self._embeddings), dtype=np.uint32) + self._lookup = pd.Series(row_indices, index=index) + + @override + def get(self, keys: Iterable[VectorKey]) -> np.ndarray: + """Return the embeddings for given keys. + + Args: + keys: The keys to return the embeddings for. + + Returns + The embeddings for the given keys. + """ + return self._embeddings.take(self._lookup.loc[keys], axis=0) + + @override + def topk(self, + query: np.ndarray, + k: int, + key_prefixes: Optional[Iterable[VectorKey]] = None) -> list[tuple[VectorKey, float]]: + if key_prefixes is not None: + # Cast tuples of length 1 to the element itself to avoid a pandas bug. + key_prefixes = cast( + list[VectorKey], + [k[0] if isinstance(k, tuple) and len(k) == 1 else k for k in key_prefixes]) + # This uses the hierarchical index (MutliIndex) to do a prefix lookup. + row_indices = self._lookup.loc[key_prefixes] + keys, embeddings = list(row_indices.index), self._embeddings.take(row_indices, axis=0) + else: + keys, embeddings = self._keys, self._embeddings + + query = query.astype(embeddings.dtype) + similarities: np.ndarray = np.dot(embeddings, query).reshape(-1) + k = min(k, len(similarities)) + + # We do a partition + sort only top K to save time: O(n + klogk) instead of O(nlogn). + indices = np.argpartition(similarities, -k)[-k:] + # Indices sorted by value from largest to smallest. + indices = indices[np.argsort(similarities[indices])][::-1] + + topk_similarities = similarities[indices] + topk_keys = [keys[idx] for idx in indices] + return list(zip(topk_keys, topk_similarities)) diff --git a/src/embeddings/vector_store_test.py b/src/embeddings/vector_store_test.py new file mode 100644 index 0000000000000000000000000000000000000000..1652b04802232408325e240f428e11ee5bf64551 --- /dev/null +++ b/src/embeddings/vector_store_test.py @@ -0,0 +1,69 @@ +"""Tests the vector store interface.""" + +from typing import Type + +import numpy as np +import pytest + +from .vector_store import VectorStore +from .vector_store_numpy import NumpyVectorStore + +ALL_STORES = [NumpyVectorStore] + + +@pytest.mark.parametrize('store_cls', ALL_STORES) +class VectorStoreSuite: + + def test_get_all(self, store_cls: Type[VectorStore]) -> None: + store = store_cls() + + store.add([('a',), ('b',), ('c',)], np.array([[1, 2], [3, 4], [5, 6]])) + + np.testing.assert_array_equal( + store.get([('a',), ('b',), ('c',)]), np.array([[1, 2], [3, 4], [5, 6]])) + + def test_get_subset(self, store_cls: Type[VectorStore]) -> None: + store = store_cls() + + store.add([('a',), ('b',), ('c',)], np.array([[1, 2], [3, 4], [5, 6]])) + + np.testing.assert_array_equal(store.get([('b',), ('c',)]), np.array([[3, 4], [5, 6]])) + + def test_topk(self, store_cls: Type[VectorStore]) -> None: + store = store_cls() + embedding = np.array([[0.45, 0.89], [0.6, 0.8], [0.64, 0.77]]) + query = np.array([0.89, 0.45]) + topk = 3 + store.add([('a',), ('b',), ('c',)], embedding) + result = store.topk(query, topk) + assert [key for key, _ in result] == [('c',), ('b',), ('a',)] + assert [score for _, score in result] == pytest.approx([0.9161, 0.894, 0.801], 1e-3) + + def test_topk_with_restricted_keys(self, store_cls: Type[VectorStore]) -> None: + store = store_cls() + embedding = np.array([[0.45, 0.89], [0.6, 0.8], [0.64, 0.77]]) + query = np.array([0.89, 0.45]) + topk = 3 + store.add([('a',), ('b',), ('c',)], embedding) + result = store.topk(query, topk, key_prefixes=[('b',), ('a',)]) + assert [key for key, _ in result] == [('b',), ('a',)] + assert [score for _, score in result] == pytest.approx([0.894, 0.801], 1e-3) + + result = store.topk(query, topk, key_prefixes=[('a',), ('b',)]) + assert [key for key, _ in result] == [('b',), ('a',)] + assert [score for _, score in result] == pytest.approx([0.894, 0.801], 1e-3) + + result = store.topk(query, topk, key_prefixes=[('a',), ('c',)]) + assert [key for key, _ in result] == [('c',), ('a',)] + assert [score for _, score in result] == pytest.approx([0.9161, 0.801], 1e-3) + + def test_topk_with_key_prefixes(self, store_cls: Type[VectorStore]) -> None: + store = store_cls() + embedding = np.array([[8], [9], [3], [10]]) + store.add([('a', 0), ('a', 1), ('b', 0), ('c', 0)], embedding) + query = np.array([1]) + result = store.topk(query, k=2, key_prefixes=[('b',), ('c',)]) + assert result == [(('c', 0), 10.0), (('b', 0), 3.0)] + + result = store.topk(query, k=10, key_prefixes=[('b',), ('a',)]) + assert result == [(('a', 1), 9.0), (('a', 0), 8.0), (('b', 0), 3.0)] diff --git a/src/integration_tests/__pycache__/db_integration_test.cpython-39-pytest-7.2.0.pyc b/src/integration_tests/__pycache__/db_integration_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..63902720e033ed88838ddece45e2d4c359ff75fa Binary files /dev/null and b/src/integration_tests/__pycache__/db_integration_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/integration_tests/__pycache__/db_integration_test.cpython-39-pytest-7.2.2.pyc b/src/integration_tests/__pycache__/db_integration_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d1e358849fc29ea641440a2ad0cde601ec84438 Binary files /dev/null and b/src/integration_tests/__pycache__/db_integration_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/make_openapi.py b/src/make_openapi.py new file mode 100644 index 0000000000000000000000000000000000000000..1530df69122e5dfca05344f89276b40c823d84b7 --- /dev/null +++ b/src/make_openapi.py @@ -0,0 +1,29 @@ +"""Writes the openapi.json file to the specified output. + +This is meant to run as a standalone script. It lives in src/ so that we can import the FastAPI app. +""" +import json + +import click +from fastapi.openapi.utils import get_openapi + +from .server import app + + +@click.command() +@click.option( + '--output', required=True, type=str, help='The output filepath for the opepnapi.json file.') +def main(output: str) -> None: + """Create the openapi.json file for the API to generate TypeScript stubs.""" + with open(output, 'w') as f: + json.dump( + get_openapi( + title=app.title, + version=app.version, + openapi_version=app.openapi_version, + description=app.description, + routes=app.routes), f) + + +if __name__ == '__main__': + main() diff --git a/src/parquet_writer.py b/src/parquet_writer.py new file mode 100644 index 0000000000000000000000000000000000000000..d3e32b170d6998cb631909835a26859e979cbe79 --- /dev/null +++ b/src/parquet_writer.py @@ -0,0 +1,70 @@ +"""A Parquet file writer that wraps the pyarrow writer.""" +from typing import IO, Optional + +import pyarrow as pa +import pyarrow.parquet as pq + +from .schema import Item, Schema, schema_to_arrow_schema + + +class ParquetWriter: + """A writer to parquet.""" + + def __init__(self, + schema: Schema, + codec: str = 'snappy', + row_group_buffer_size: int = 128 * 1024 * 1024, + record_batch_size: int = 10_000): + self._schema = schema_to_arrow_schema(schema) + self._codec = codec + self._row_group_buffer_size = row_group_buffer_size + self._buffer: list[list[Optional[Item]]] = [[] for _ in range(len(self._schema.names))] + self._buffer_size = record_batch_size + self._record_batches: list[pa.RecordBatch] = [] + self._record_batches_byte_size = 0 + self.writer: pq.ParquetWriter = None + + def open(self, file_handle: IO) -> None: + """Open the destination file for writing.""" + self.writer = pq.ParquetWriter(file_handle, self._schema, compression=self._codec) + + def write(self, record: Item) -> None: + """Write the record to the destination file.""" + if len(self._buffer[0]) >= self._buffer_size: + self._flush_buffer() + + if self._record_batches_byte_size >= self._row_group_buffer_size: + self._write_batches() + + # reorder the data in columnar format. + for i, n in enumerate(self._schema.names): + self._buffer[i].append(record.get(n)) + + def close(self) -> None: + """Flushes the write buffer and closes the destination file.""" + if len(self._buffer[0]) > 0: + self._flush_buffer() + if self._record_batches_byte_size > 0: + self._write_batches() + + self.writer.close() + + def _write_batches(self) -> None: + table = pa.Table.from_batches(self._record_batches, schema=self._schema) + self._record_batches = [] + self._record_batches_byte_size = 0 + self.writer.write_table(table) + + def _flush_buffer(self) -> None: + arrays: list[pa.array] = [[] for _ in range(len(self._schema.names))] + for x, y in enumerate(self._buffer): + arrays[x] = pa.array(y, type=self._schema.types[x]) + self._buffer[x] = [] + rb = pa.RecordBatch.from_arrays(arrays, schema=self._schema) + self._record_batches.append(rb) + size = 0 + for x in arrays: + for b in x.buffers(): # type: ignore + if b is not None: + size = size + b.size + self._record_batches_byte_size = self._record_batches_byte_size + size diff --git a/src/router_concept.py b/src/router_concept.py new file mode 100644 index 0000000000000000000000000000000000000000..85b17afe958a9a76847c2a3ce55983335e6e55b8 --- /dev/null +++ b/src/router_concept.py @@ -0,0 +1,169 @@ +"""Router for the concept database.""" + +from typing import Optional + +import openai +from fastapi import APIRouter, HTTPException +from openai_function_call import OpenAISchema +from pydantic import BaseModel, Field + +from .concepts.concept import DRAFT_MAIN, Concept, ConceptModel, DraftId, draft_examples +from .concepts.db_concept import DISK_CONCEPT_DB, DISK_CONCEPT_MODEL_DB, ConceptInfo, ConceptUpdate +from .config import CONFIG +from .router_utils import RouteErrorHandler +from .schema import SignalInputType + +router = APIRouter(route_class=RouteErrorHandler) + + +@router.get('/', response_model_exclude_none=True) +def get_concepts() -> list[ConceptInfo]: + """List the concepts.""" + return DISK_CONCEPT_DB.list() + + +@router.get('/{namespace}/{concept_name}', response_model_exclude_none=True) +def get_concept(namespace: str, + concept_name: str, + draft: Optional[DraftId] = DRAFT_MAIN) -> Concept: + """Get a concept from a database.""" + concept = DISK_CONCEPT_DB.get(namespace, concept_name) + if not concept: + raise HTTPException( + status_code=404, detail=f'Concept "{namespace}/{concept_name}" was not found') + + # Only return the examples from the draft. + concept.data = draft_examples(concept, draft or DRAFT_MAIN) + + return concept + + +class CreateConceptOptions(BaseModel): + """Options for creating a concept.""" + # Namespace of the concept. + namespace: str + # Name of the concept. + name: str + # Input type (modality) of the concept. + type: SignalInputType + + +@router.post('/create', response_model_exclude_none=True) +def create_concept(options: CreateConceptOptions) -> Concept: + """Edit a concept in the database.""" + return DISK_CONCEPT_DB.create(options.namespace, options.name, options.type) + + +@router.post('/{namespace}/{concept_name}', response_model_exclude_none=True) +def edit_concept(namespace: str, concept_name: str, change: ConceptUpdate) -> Concept: + """Edit a concept in the database.""" + return DISK_CONCEPT_DB.edit(namespace, concept_name, change) + + +@router.delete('/{namespace}/{concept_name}') +def delete_concept(namespace: str, concept_name: str) -> None: + """Deletes the concept from the database.""" + DISK_CONCEPT_DB.remove(namespace, concept_name) + # Delete concept models from all datasets that are using this concept. + DISK_CONCEPT_MODEL_DB.remove_all(namespace, concept_name) + + +class MergeConceptDraftOptions(BaseModel): + """Merge a draft into main.""" + draft: DraftId + + +@router.post('/{namespace}/{concept_name}/merge_draft', response_model_exclude_none=True) +def merge_concept_draft(namespace: str, concept_name: str, + options: MergeConceptDraftOptions) -> Concept: + """Merge a draft in the concept into main.""" + return DISK_CONCEPT_DB.merge_draft(namespace, concept_name, options.draft) + + +class ScoreExample(BaseModel): + """Example to score along a specific concept.""" + text: Optional[str] + img: Optional[bytes] + + +class ScoreBody(BaseModel): + """Request body for the score endpoint.""" + examples: list[ScoreExample] + draft: str = DRAFT_MAIN + + +class ScoreResponse(BaseModel): + """Response body for the score endpoint.""" + scores: list[float] + model_synced: bool + + +class ConceptModelResponse(BaseModel): + """Response body for the get_concept_model endpoint.""" + model: ConceptModel + model_synced: bool + + +@router.get('/{namespace}/{concept_name}/{embedding_name}') +def get_concept_model(namespace: str, + concept_name: str, + embedding_name: str, + sync_model: bool = False) -> ConceptModelResponse: + """Get a concept model from a database.""" + concept = DISK_CONCEPT_DB.get(namespace, concept_name) + if not concept: + raise HTTPException( + status_code=404, detail=f'Concept "{namespace}/{concept_name}" was not found') + + model = DISK_CONCEPT_MODEL_DB.get(namespace, concept_name, embedding_name) + if not model: + model = DISK_CONCEPT_MODEL_DB.create(namespace, concept_name, embedding_name) + + if sync_model: + model_synced = DISK_CONCEPT_MODEL_DB.sync(model, column_info=None) + else: + model_synced = DISK_CONCEPT_MODEL_DB.in_sync(model) + return ConceptModelResponse(model=model, model_synced=model_synced) + + +@router.post('/{namespace}/{concept_name}/{embedding_name}/score', response_model_exclude_none=True) +def score(namespace: str, concept_name: str, embedding_name: str, body: ScoreBody) -> ScoreResponse: + """Score examples along the specified concept.""" + concept = DISK_CONCEPT_DB.get(namespace, concept_name) + if not concept: + raise HTTPException( + status_code=404, detail=f'Concept "{namespace}/{concept_name}" was not found') + model = DISK_CONCEPT_MODEL_DB.get(namespace, concept_name, embedding_name) + if model is None: + model = DISK_CONCEPT_MODEL_DB.create(namespace, concept_name, embedding_name) + models_updated = DISK_CONCEPT_MODEL_DB.sync(model, column_info=None) + # TODO(smilkov): Support images. + texts = [example.text or '' for example in body.examples] + return ScoreResponse(scores=model.score(body.draft, texts), model_synced=models_updated) + + +class Examples(OpenAISchema): + """Generated text examples.""" + examples: list[str] = Field(..., description='List of generated examples') + + +@router.get('/generate_examples') +def generate_examples(description: str) -> list[str]: + """Generate positive examples for a given concept using an LLM model.""" + openai.api_key = CONFIG['OPENAI_API_KEY'] + completion = openai.ChatCompletion.create( + model='gpt-3.5-turbo-0613', + functions=[Examples.openai_schema], + messages=[ + { + 'role': 'system', + 'content': 'You must call the `Examples` function with the generated sentences.', + }, + { + 'role': 'user', + 'content': f'Give me 5 diverse examples of sentences that demonstrate "{description}"', + }, + ], + ) + result = Examples.from_response(completion) + return result.examples diff --git a/src/router_data_loader.py b/src/router_data_loader.py new file mode 100644 index 0000000000000000000000000000000000000000..ee223ea3288fef09bdf56b1f97c5b2e43d4310a1 --- /dev/null +++ b/src/router_data_loader.py @@ -0,0 +1,79 @@ +"""The source loader runner which loads data into parquet files for the app. + +To run the source loader as a binary directly: + +poetry run python -m src.datasets.loader \ + --dataset_name=$DATASET \ + --output_dir=./data/ \ + --config_path=./datasets/the_movies_dataset.json +""" +from typing import Any + +from fastapi import APIRouter, Request +from pydantic import BaseModel + +from .config import data_path +from .data.sources.default_sources import register_default_sources +from .data.sources.source_registry import get_source_cls, registered_sources +from .data_loader import process_source +from .router_utils import RouteErrorHandler +from .tasks import TaskId, task_manager + +REQUEST_TIMEOUT_SEC = 30 * 60 # 30 mins. + +register_default_sources() + +router = APIRouter(route_class=RouteErrorHandler) + + +class ProcessSourceRequest(BaseModel): + """The interface to the /process_source endpoint.""" + username: str + dataset_name: str + + +class SourcesList(BaseModel): + """The interface to the /process_source endpoint.""" + sources: list[str] + + +@router.get('/') +def get_sources() -> SourcesList: + """Get the list of available sources.""" + sources = registered_sources() + return SourcesList(sources=list(sources.keys())) + + +@router.get('/{source_name}') +def get_source_schema(source_name: str) -> dict[str, Any]: + """Get the fields for a source.""" + source_cls = get_source_cls(source_name) + return source_cls.schema() + + +class LoadDatasetOptions(BaseModel): + """Options for loading a dataset.""" + namespace: str + dataset_name: str + config: dict[str, Any] + + +class LoadDatasetResponse(BaseModel): + """Response of the load dataset endpoint.""" + task_id: TaskId + + +@router.post('/{source_name}/load') +async def load(source_name: str, options: LoadDatasetOptions, + request: Request) -> LoadDatasetResponse: + """Load a dataset.""" + source_cls = get_source_cls(source_name) + source = source_cls(**options.config) + + task_id = task_manager().task_id( + name=f'[{options.namespace}/{options.dataset_name}] Load dataset', + description=f'Loader: {source.name}. \n Config: {source}') + task_manager().execute(task_id, process_source, data_path(), options.namespace, + options.dataset_name, source, (task_id, 0)) + + return LoadDatasetResponse(task_id=task_id) diff --git a/src/router_dataset.py b/src/router_dataset.py new file mode 100644 index 0000000000000000000000000000000000000000..24d44486189d954fe27843daf3c4ebf39d074a51 --- /dev/null +++ b/src/router_dataset.py @@ -0,0 +1,311 @@ +"""Router for the dataset database.""" +import os +from typing import Optional, Sequence, Union, cast +from urllib.parse import unquote + +from fastapi import APIRouter, Response +from fastapi.responses import ORJSONResponse +from pydantic import BaseModel, validator + +from .config import data_path +from .data.dataset import BinaryOp +from .data.dataset import Column as DBColumn +from .data.dataset import DatasetManifest, FeatureListValue, FeatureValue +from .data.dataset import Filter as PyFilter +from .data.dataset import ( + GroupsSortBy, + ListOp, + Search, + SelectGroupsResult, + SelectRowsSchemaResult, + SortOrder, + StatsResult, + UnaryOp, +) +from .data.dataset_duckdb import DatasetDuckDB +from .db_manager import get_dataset, remove_dataset_from_cache, set_default_dataset_cls +from .router_utils import RouteErrorHandler +from .schema import Bin, Path, normalize_path +from .signals.concept_scorer import ConceptScoreSignal +from .signals.default_signals import register_default_signals +from .signals.signal import ( + Signal, + TextEmbeddingModelSignal, + TextEmbeddingSignal, + TextSignal, + resolve_signal, +) +from .tasks import TaskId, task_manager +from .utils import DATASETS_DIR_NAME + +router = APIRouter(route_class=RouteErrorHandler) + +register_default_signals() +set_default_dataset_cls(DatasetDuckDB) + + +class DatasetInfo(BaseModel): + """Information about a dataset.""" + namespace: str + dataset_name: str + description: Optional[str] + + +@router.get('/', response_model_exclude_none=True) +def get_datasets() -> list[DatasetInfo]: + """List the datasets.""" + datasets_path = os.path.join(data_path(), DATASETS_DIR_NAME) + # Skip if 'datasets' doesn't exist. + if not os.path.isdir(datasets_path): + return [] + + dataset_infos: list[DatasetInfo] = [] + for namespace in os.listdir(datasets_path): + dataset_dir = os.path.join(datasets_path, namespace) + # Skip if namespace is not a directory. + if not os.path.isdir(dataset_dir): + continue + if namespace.startswith('.'): + continue + + for dataset_name in os.listdir(dataset_dir): + # Skip if dataset_name is not a directory. + dataset_path = os.path.join(dataset_dir, dataset_name) + if not os.path.isdir(dataset_path): + continue + if dataset_name.startswith('.'): + continue + + dataset_infos.append(DatasetInfo(namespace=namespace, dataset_name=dataset_name)) + + return dataset_infos + + +class WebManifest(BaseModel): + """Information about a dataset.""" + dataset_manifest: DatasetManifest + + +@router.get('/{namespace}/{dataset_name}') +def get_manifest(namespace: str, dataset_name: str) -> WebManifest: + """Get the web manifest for the dataset.""" + dataset = get_dataset(namespace, dataset_name) + res = WebManifest(dataset_manifest=dataset.manifest()) + # Avoids the error that Signal abstract class is not serializable. + return cast(WebManifest, ORJSONResponse(res.dict(exclude_none=True))) + + +class ComputeSignalOptions(BaseModel): + """The request for the compute signal endpoint.""" + signal: Signal + + # The leaf path to compute the signal on. + leaf_path: Path + + @validator('signal', pre=True) + def parse_signal(cls, signal: dict) -> Signal: + """Parse a signal to its specific subclass instance.""" + return resolve_signal(signal) + + +@router.delete('/{namespace}/{dataset_name}') +def delete_dataset(namespace: str, dataset_name: str) -> None: + """Delete the dataset.""" + dataset = get_dataset(namespace, dataset_name) + dataset.delete() + remove_dataset_from_cache(namespace, dataset_name) + + +class ComputeSignalResponse(BaseModel): + """Response of the compute signal column endpoint.""" + task_id: TaskId + + +@router.post('/{namespace}/{dataset_name}/compute_signal') +def compute_signal(namespace: str, dataset_name: str, + options: ComputeSignalOptions) -> ComputeSignalResponse: + """Compute a signal for a dataset.""" + + def _task_compute_signal(namespace: str, dataset_name: str, options_dict: dict, + task_id: TaskId) -> None: + # NOTE: We manually call .dict() to avoid the dask serializer, which doesn't call the underlying + # pydantic serializer. + options = ComputeSignalOptions(**options_dict) + dataset = get_dataset(namespace, dataset_name) + dataset.compute_signal(options.signal, options.leaf_path, task_step_id=(task_id, 0)) + + path_str = '.'.join(map(str, options.leaf_path)) + task_id = task_manager().task_id( + name=f'[{namespace}/{dataset_name}] Compute signal "{options.signal.name}" on "{path_str}"', + description=f'Config: {options.signal}') + task_manager().execute(task_id, _task_compute_signal, namespace, dataset_name, options.dict(), + task_id) + + return ComputeSignalResponse(task_id=task_id) + + +class DeleteSignalOptions(BaseModel): + """The request for the delete signal endpoint.""" + # The signal path holding the data from the signal. + signal_path: Path + + +class DeleteSignalResponse(BaseModel): + """Response of the compute signal column endpoint.""" + completed: bool + + +@router.delete('/{namespace}/{dataset_name}/delete_signal') +def delete_signal(namespace: str, dataset_name: str, + options: DeleteSignalOptions) -> DeleteSignalResponse: + """Delete a signal from a dataset.""" + dataset = get_dataset(namespace, dataset_name) + dataset.delete_signal(options.signal_path) + return DeleteSignalResponse(completed=True) + + +class GetStatsOptions(BaseModel): + """The request for the get stats endpoint.""" + leaf_path: Path + + +@router.post('/{namespace}/{dataset_name}/stats') +def get_stats(namespace: str, dataset_name: str, options: GetStatsOptions) -> StatsResult: + """Get the stats for the dataset.""" + dataset = get_dataset(namespace, dataset_name) + return dataset.stats(options.leaf_path) + + +class BinaryFilter(BaseModel): + """A filter on a column.""" + path: Path + op: BinaryOp + value: FeatureValue + + +class UnaryFilter(BaseModel): + """A filter on a column.""" + path: Path + op: UnaryOp + value: None = None + + +class ListFilter(BaseModel): + """A filter on a column.""" + path: Path + op: ListOp + value: FeatureListValue + + +Filter = Union[BinaryFilter, UnaryFilter, ListFilter] + +AllSignalTypes = Union[ConceptScoreSignal, TextEmbeddingModelSignal, TextEmbeddingSignal, + TextSignal, Signal] + + +# We override the `Column` class so we can add explicitly all signal types for better OpenAPI spec. +class Column(DBColumn): + """A column in the dataset.""" + signal_udf: Optional[AllSignalTypes] = None + + +class SelectRowsOptions(BaseModel): + """The request for the select rows endpoint.""" + columns: Optional[Sequence[Union[Path, Column]]] + searches: Optional[Sequence[Search]] + filters: Optional[Sequence[Filter]] + sort_by: Optional[Sequence[Path]] + sort_order: Optional[SortOrder] = SortOrder.DESC + limit: Optional[int] + offset: Optional[int] + combine_columns: Optional[bool] + + +class SelectRowsSchemaOptions(BaseModel): + """The request for the select rows schema endpoint.""" + columns: Optional[Sequence[Union[Path, Column]]] + searches: Optional[Sequence[Search]] + sort_by: Optional[Sequence[Path]] + sort_order: Optional[SortOrder] = SortOrder.DESC + combine_columns: Optional[bool] + + +class SelectRowsResponse(BaseModel): + """The response for the select rows endpoint.""" + rows: list[dict] + total_num_rows: int + + +@router.get('/{namespace}/{dataset_name}/select_rows_download', response_model=None) +def select_rows_download(namespace: str, dataset_name: str, url_safe_options: str) -> list[dict]: + """Select rows from the dataset database and downloads them.""" + options = SelectRowsOptions.parse_raw(unquote(url_safe_options)) + return select_rows(namespace, dataset_name, options).rows + + +@router.post('/{namespace}/{dataset_name}/select_rows', response_model_exclude_none=True) +def select_rows(namespace: str, dataset_name: str, + options: SelectRowsOptions) -> SelectRowsResponse: + """Select rows from the dataset database.""" + dataset = get_dataset(namespace, dataset_name) + + sanitized_filters = [ + PyFilter(path=normalize_path(f.path), op=f.op, value=f.value) for f in (options.filters or []) + ] + + res = dataset.select_rows( + columns=options.columns, + searches=options.searches or [], + filters=sanitized_filters, + sort_by=options.sort_by, + sort_order=options.sort_order, + limit=options.limit, + offset=options.offset, + combine_columns=options.combine_columns or False) + + return SelectRowsResponse(rows=list(res), total_num_rows=res.total_num_rows) + + +@router.post('/{namespace}/{dataset_name}/select_rows_schema', response_model_exclude_none=True) +def select_rows_schema(namespace: str, dataset_name: str, + options: SelectRowsSchemaOptions) -> SelectRowsSchemaResult: + """Select rows from the dataset database.""" + dataset = get_dataset(namespace, dataset_name) + return dataset.select_rows_schema( + columns=options.columns, + searches=options.searches or [], + sort_by=options.sort_by, + sort_order=options.sort_order, + combine_columns=options.combine_columns or False) + + +class SelectGroupsOptions(BaseModel): + """The request for the select groups endpoint.""" + leaf_path: Path + filters: Optional[Sequence[Filter]] + sort_by: Optional[GroupsSortBy] = GroupsSortBy.COUNT + sort_order: Optional[SortOrder] = SortOrder.DESC + limit: Optional[int] = 100 + bins: Optional[list[Bin]] + + +@router.post('/{namespace}/{dataset_name}/select_groups') +def select_groups(namespace: str, dataset_name: str, + options: SelectGroupsOptions) -> SelectGroupsResult: + """Select groups from the dataset database.""" + dataset = get_dataset(namespace, dataset_name) + sanitized_filters = [ + PyFilter(path=normalize_path(f.path), op=f.op, value=f.value) for f in (options.filters or []) + ] + return dataset.select_groups(options.leaf_path, sanitized_filters, options.sort_by, + options.sort_order, options.limit, options.bins) + + +@router.get('/{namespace}/{dataset_name}/media') +def get_media(namespace: str, dataset_name: str, item_id: str, leaf_path: str) -> Response: + """Get the media for the dataset.""" + dataset = get_dataset(namespace, dataset_name) + path = tuple(leaf_path.split('.')) + result = dataset.media(item_id, path) + # Return the response via HTTP. + return Response(content=result.data) diff --git a/src/router_signal.py b/src/router_signal.py new file mode 100644 index 0000000000000000000000000000000000000000..982a67b18bc132b917c8ea74c8c0d7b9cf4c9811 --- /dev/null +++ b/src/router_signal.py @@ -0,0 +1,50 @@ +"""Router for the signal registry.""" + +import math +from typing import Any + +from fastapi import APIRouter +from pydantic import BaseModel + +from .router_utils import RouteErrorHandler +from .schema import SignalInputType +from .signals.signal import SIGNAL_REGISTRY, TextEmbeddingSignal + +router = APIRouter(route_class=RouteErrorHandler) + +EMBEDDING_SORT_PRIORITIES = ['sbert'] + + +class SignalInfo(BaseModel): + """Information about a signal.""" + name: str + input_type: SignalInputType + json_schema: dict[str, Any] + + +@router.get('/', response_model_exclude_none=True) +def get_signals() -> list[SignalInfo]: + """List the signals.""" + return [ + SignalInfo(name=s.name, input_type=s.input_type, json_schema=s.schema()) + for s in SIGNAL_REGISTRY.values() + if not issubclass(s, TextEmbeddingSignal) + ] + + +@router.get('/embeddings', response_model_exclude_none=True) +def get_embeddings() -> list[SignalInfo]: + """List the embeddings.""" + embedding_infos = [ + SignalInfo(name=s.name, input_type=s.input_type, json_schema=s.schema()) + for s in SIGNAL_REGISTRY.values() + if issubclass(s, TextEmbeddingSignal) + ] + + # Sort the embedding infos by priority. + embedding_infos = sorted( + embedding_infos, + key=lambda s: EMBEDDING_SORT_PRIORITIES.index(s.name) + if s.name in EMBEDDING_SORT_PRIORITIES else math.inf) + + return embedding_infos diff --git a/src/router_tasks.py b/src/router_tasks.py new file mode 100644 index 0000000000000000000000000000000000000000..1eb86b8862cefeb6f52492131309af13fc957f63 --- /dev/null +++ b/src/router_tasks.py @@ -0,0 +1,14 @@ +"""Router for tasks.""" + +from fastapi import APIRouter + +from .router_utils import RouteErrorHandler +from .tasks import TaskManifest, task_manager + +router = APIRouter(route_class=RouteErrorHandler) + + +@router.get('/') +async def get_task_manifest() -> TaskManifest: + """Get the tasks, both completed and pending.""" + return await task_manager().manifest() diff --git a/src/router_utils.py b/src/router_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..f4b7328524575ba9997fc3cd9dfbd24d1f8e736d --- /dev/null +++ b/src/router_utils.py @@ -0,0 +1,31 @@ +"""Utils for routers.""" + +import traceback +from typing import Callable + +from fastapi import HTTPException, Request, Response +from fastapi.routing import APIRoute + + +class RouteErrorHandler(APIRoute): + """Custom APIRoute that handles application errors and exceptions.""" + + def get_route_handler(self) -> Callable: + """Get the route handler.""" + original_route_handler = super().get_route_handler() + + async def custom_route_handler(request: Request) -> Response: + try: + return await original_route_handler(request) + except Exception as ex: + if isinstance(ex, HTTPException): + raise ex + + print('Route error:', request.url) + print(ex) + print(traceback.format_exc()) + + # wrap error into pretty 500 exception + raise HTTPException(status_code=500, detail=traceback.format_exc()) from ex + + return custom_route_handler diff --git a/src/schema.py b/src/schema.py new file mode 100644 index 0000000000000000000000000000000000000000..ec1c627bc22686d496cfbb3956d2d1afeccfa5db --- /dev/null +++ b/src/schema.py @@ -0,0 +1,559 @@ +"""Item: an individual entry in the dataset.""" + +import csv +import io +from collections import deque +from datetime import datetime +from enum import Enum +from typing import Any, Optional, Union, cast + +import pyarrow as pa +from pydantic import BaseModel, StrictInt, StrictStr, validator + +MANIFEST_FILENAME = 'manifest.json' +PARQUET_FILENAME_PREFIX = 'data' + +# We choose `__rowid__` inspired by the standard `rowid` pseudocolumn in DBs: +# https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm +UUID_COLUMN = '__rowid__' +PATH_WILDCARD = '*' +VALUE_KEY = '__value__' +SIGNAL_METADATA_KEY = '__metadata__' +TEXT_SPAN_START_FEATURE = 'start' +TEXT_SPAN_END_FEATURE = 'end' + +# Python doesn't work with recursive types. These types provide some notion of type-safety. +Scalar = Union[bool, datetime, int, float, str, bytes] +Item = Any + +# Contains a string field name, a wildcard for repeateds, or a specific integer index for repeateds. +# This path represents a path to a particular column. +# Examples: +# ['article', 'field'] represents {'article': {'field': VALUES}} +# ['article', '*', 'field'] represents {'article': [{'field': VALUES}, {'field': VALUES}]} +# ['article', '0', 'field'] represents {'article': {'field': VALUES}} +PathTuple = tuple[StrictStr, ...] +Path = Union[PathTuple, StrictStr] + +PathKeyedItem = tuple[Path, Item] + +# These fields are for for python only and not written to a schema. +RichData = Union[str, bytes] +VectorKey = tuple[Union[StrictStr, StrictInt], ...] + + +class DataType(str, Enum): + """Enum holding the dtype for a field.""" + STRING = 'string' + # Contains {start, end} offset integers with a reference_column. + STRING_SPAN = 'string_span' + BOOLEAN = 'boolean' + + # Ints. + INT8 = 'int8' + INT16 = 'int16' + INT32 = 'int32' + INT64 = 'int64' + UINT8 = 'uint8' + UINT16 = 'uint16' + UINT32 = 'uint32' + UINT64 = 'uint64' + + # Floats. + FLOAT16 = 'float16' + FLOAT32 = 'float32' + FLOAT64 = 'float64' + + ### Time ### + # Time of day (no time zone). + TIME = 'time' + # Calendar date (year, month, day), no time zone. + DATE = 'date' + # An "Instant" stored as number of microseconds (µs) since 1970-01-01 00:00:00+00 (UTC time zone). + TIMESTAMP = 'timestamp' + # Time span, stored as microseconds. + INTERVAL = 'interval' + + BINARY = 'binary' + + EMBEDDING = 'embedding' + + def __repr__(self) -> str: + return self.value + + +class SignalInputType(str, Enum): + """Enum holding the signal input type.""" + TEXT = 'text' + TEXT_EMBEDDING = 'text_embedding' + IMAGE = 'image' + + def __repr__(self) -> str: + return self.value + + +SIGNAL_COMPUTE_TYPE_TO_VALID_DTYPES: dict[SignalInputType, list[DataType]] = { + SignalInputType.TEXT: [DataType.STRING, DataType.STRING_SPAN], + SignalInputType.TEXT_EMBEDDING: [DataType.EMBEDDING], + SignalInputType.IMAGE: [DataType.BINARY], +} + + +def signal_compute_type_supports_dtype(input_type: SignalInputType, dtype: DataType) -> bool: + """Returns True if the signal compute type supports the dtype.""" + return dtype in SIGNAL_COMPUTE_TYPE_TO_VALID_DTYPES[input_type] + + +Bin = tuple[str, Optional[Union[float, int]], Optional[Union[float, int]]] + + +class Field(BaseModel): + """Holds information for a field in the schema.""" + repeated_field: Optional['Field'] + fields: Optional[dict[str, 'Field']] + dtype: Optional[DataType] + # Defined as the serialized signal when this field is the root result of a signal. + signal: Optional[dict[str, Any]] + # Maps a named bin to a tuple of (start, end) values. + bins: Optional[list[Bin]] + + @validator('fields') + def either_fields_or_repeated_field_is_defined( + cls, fields: Optional[dict[str, 'Field']], values: dict[str, + Any]) -> Optional[dict[str, 'Field']]: + """Error if both `fields` and `repeated_fields` are defined.""" + if not fields: + return fields + if values.get('repeated_field'): + raise ValueError('Both "fields" and "repeated_field" should not be defined') + if VALUE_KEY in fields: + raise ValueError(f'{VALUE_KEY} is a reserved field name.') + return fields + + @validator('dtype', always=True) + def infer_default_dtype(cls, dtype: Optional[DataType], values: dict[str, + Any]) -> Optional[DataType]: + """Infers the default value for dtype if not explicitly provided.""" + if dtype and values.get('repeated_field'): + raise ValueError('dtype and repeated_field cannot both be defined.') + if not values.get('repeated_field') and not values.get('fields') and not dtype: + raise ValueError('One of "fields", "repeated_field", or "dtype" should be defined') + return dtype + + @validator('bins') + def validate_bins(cls, bins: list[Bin]) -> list[Bin]: + """Validate the bins.""" + if len(bins) < 2: + raise ValueError('Please specify at least two bins.') + _, first_start, _ = bins[0] + if first_start is not None: + raise ValueError('The first bin should have a `None` start value.') + _, _, last_end = bins[-1] + if last_end is not None: + raise ValueError('The last bin should have a `None` end value.') + for i, (_, start, _) in enumerate(bins): + if i == 0: + continue + prev_bin = bins[i - 1] + _, _, prev_end = prev_bin + if start != prev_end: + raise ValueError( + f'Bin {i} start ({start}) should be equal to the previous bin end {prev_end}.') + return bins + + def __str__(self) -> str: + return _str_field(self, indent=0) + + def __repr__(self) -> str: + return f' {self.__class__.__name__}::{self.json(exclude_none=True, indent=2)}' + + +class Schema(BaseModel): + """Database schema.""" + fields: dict[str, Field] + # Cached leafs. + _leafs: Optional[dict[PathTuple, Field]] = None + + class Config: + arbitrary_types_allowed = True + underscore_attrs_are_private = True + + @property + def leafs(self) -> dict[PathTuple, Field]: + """Return all the leaf fields in the schema. A leaf is defined as a node that contains a value. + + NOTE: Leafs may contain children. Leafs can be found as any node that has a dtype defined. + """ + if self._leafs: + return self._leafs + result: dict[PathTuple, Field] = {} + q: deque[tuple[PathTuple, Field]] = deque([((), Field(fields=self.fields))]) + while q: + path, field = q.popleft() + if field.dtype: + # Nodes with dtypes act as leafs. They also may have children. + result[path] = field + if field.fields: + for name, child_field in field.fields.items(): + child_path = (*path, name) + q.append((child_path, child_field)) + elif field.repeated_field: + child_path = (*path, PATH_WILDCARD) + q.append((child_path, field.repeated_field)) + + self._leafs = result + return result + + def has_field(self, path: PathTuple) -> bool: + """Returns if the field is found at the given path.""" + field = cast(Field, self) + for path_part in path: + if field.fields: + field = cast(Field, field.fields.get(path_part)) + if not field: + return False + elif field.repeated_field: + if path_part != PATH_WILDCARD: + return False + field = field.repeated_field + else: + return False + return True + + def get_field(self, path: PathTuple) -> Field: + """Returns the field at the given path.""" + field = cast(Field, self) + for name in path: + if field.fields: + field = field.fields[str(name)] + elif field.repeated_field: + if name != PATH_WILDCARD: + raise ValueError(f'Invalid path {path}') + field = field.repeated_field + else: + raise ValueError(f'Invalid path {path}') + return field + + def __str__(self) -> str: + return _str_fields(self.fields, indent=0) + + def __repr__(self) -> str: + return self.json(exclude_none=True, indent=2) + + +def schema(schema_like: object) -> Schema: + """Parse a schema-like object to a Schema object.""" + field = _parse_field_like(schema_like) + return Schema(fields=field.fields) + + +def field( + dtype: Optional[Union[DataType, str]] = None, + signal: Optional[dict] = None, + fields: Optional[object] = None, + bins: Optional[list[Bin]] = None, +) -> Field: + """Parse a field-like object to a Field object.""" + field = _parse_field_like(fields or {}, dtype) + if signal: + field.signal = signal + if dtype: + if isinstance(dtype, str): + dtype = DataType(dtype) + field.dtype = dtype + if bins: + field.bins = bins + return field + + +def _parse_field_like(field_like: object, dtype: Optional[Union[DataType, str]] = None) -> Field: + if isinstance(field_like, Field): + return field_like + elif isinstance(field_like, dict): + fields: dict[str, Field] = {} + for k, v in field_like.items(): + fields[k] = _parse_field_like(v) + if isinstance(dtype, str): + dtype = DataType(dtype) + return Field(fields=fields or None, dtype=dtype) + elif isinstance(field_like, str): + return Field(dtype=DataType(field_like)) + elif isinstance(field_like, list): + return Field(repeated_field=_parse_field_like(field_like[0], dtype=dtype)) + else: + raise ValueError(f'Cannot parse field like: {field_like}') + + +def child_item_from_column_path(item: Item, path: Path) -> Item: + """Return the last (child) item from a column path.""" + child_item_value = item + for path_part in path: + if path_part == PATH_WILDCARD: + raise ValueError( + 'child_item_from_column_path cannot be called with a path that contains a repeated ' + f'wildcard: "{path}"') + # path_part can either be an integer or a string for a dictionary, both of which we can + # directly index with. + child_path = int(path_part) if path_part.isdigit() else path_part + child_item_value = child_item_value[child_path] + return child_item_value + + +def column_paths_match(path_match: Path, specific_path: Path) -> bool: + """Test whether two column paths match. + + Args: + path_match: A column path that contains wildcards, and sub-paths. This path will be used for + testing the second specific path. + specific_path: A column path that specifically identifies an field. + + Returns + Whether specific_path matches the path_match. This will only match when the + paths are equal length. If a user wants to enrich everything with an array, they must use the + path wildcard '*' in their patch match. + """ + if isinstance(path_match, str): + path_match = (path_match,) + if isinstance(specific_path, str): + specific_path = (specific_path,) + + if len(path_match) != len(specific_path): + return False + + for path_match_p, specific_path_p in zip(path_match, specific_path): + if path_match_p == PATH_WILDCARD: + continue + + if path_match_p != specific_path_p: + return False + + return True + + +def normalize_path(path: Path) -> PathTuple: + """Normalizes a dot seperated path, but ignores dots inside quotes, like regular SQL. + + Examples + - 'a.b.c' will be parsed as ('a', 'b', 'c'). + - '"a.b".c' will be parsed as ('a.b', 'c'). + - '"a".b.c' will be parsed as ('a', 'b', 'c'). + """ + if isinstance(path, str): + return tuple(next(csv.reader(io.StringIO(path), delimiter='.'))) + return path + + +class ImageInfo(BaseModel): + """Info about an individual image.""" + path: Path + + +class SourceManifest(BaseModel): + """The manifest that describes the dataset run, including schema and parquet files.""" + # List of a parquet filepaths storing the data. The paths can be relative to `manifest.json`. + files: list[str] + # The data schema. + data_schema: Schema + + # Image information for the dataset. + images: Optional[list[ImageInfo]] + + +def _str_fields(fields: dict[str, Field], indent: int) -> str: + prefix = ' ' * indent + out: list[str] = [] + for name, field in fields.items(): + out.append(f'{prefix}{name}:{_str_field(field, indent=indent + 2)}') + return '\n'.join(out) + + +def _str_field(field: Field, indent: int) -> str: + if field.fields: + prefix = '\n' if indent > 0 else '' + return f'{prefix}{_str_fields(field.fields, indent)}' + if field.repeated_field: + return f' list({_str_field(field.repeated_field, indent)})' + return f' {cast(DataType, field.dtype)}' + + +def dtype_to_arrow_schema(dtype: DataType) -> Union[pa.Schema, pa.DataType]: + """Convert the dtype to an arrow dtype.""" + if dtype == DataType.STRING: + return pa.string() + elif dtype == DataType.BOOLEAN: + return pa.bool_() + elif dtype == DataType.FLOAT16: + return pa.float16() + elif dtype == DataType.FLOAT32: + return pa.float32() + elif dtype == DataType.FLOAT64: + return pa.float64() + elif dtype == DataType.INT8: + return pa.int8() + elif dtype == DataType.INT16: + return pa.int16() + elif dtype == DataType.INT32: + return pa.int32() + elif dtype == DataType.INT64: + return pa.int64() + elif dtype == DataType.UINT8: + return pa.uint8() + elif dtype == DataType.UINT16: + return pa.uint16() + elif dtype == DataType.UINT32: + return pa.uint32() + elif dtype == DataType.UINT64: + return pa.uint64() + elif dtype == DataType.BINARY: + return pa.binary() + elif dtype == DataType.TIME: + return pa.time64() + elif dtype == DataType.DATE: + return pa.date64() + elif dtype == DataType.TIMESTAMP: + return pa.timestamp('us') + elif dtype == DataType.INTERVAL: + return pa.duration('us') + elif dtype == DataType.EMBEDDING: + # We reserve an empty column for embeddings in parquet files so they can be queried. + # The values are *not* filled out. If parquet and duckdb support embeddings in the future, we + # can set this dtype to the relevant pyarrow type. + return pa.null() + elif dtype == DataType.STRING_SPAN: + return pa.struct({ + VALUE_KEY: pa.struct({ + TEXT_SPAN_START_FEATURE: pa.int32(), + TEXT_SPAN_END_FEATURE: pa.int32() + }) + }) + else: + raise ValueError(f'Can not convert dtype "{dtype}" to arrow dtype') + + +def schema_to_arrow_schema(schema: Union[Schema, Field]) -> pa.Schema: + """Convert our schema to arrow schema.""" + arrow_schema = cast(pa.Schema, _schema_to_arrow_schema_impl(schema)) + arrow_fields = {field.name: field.type for field in arrow_schema} + return pa.schema(arrow_fields) + + +def _schema_to_arrow_schema_impl(schema: Union[Schema, Field]) -> Union[pa.Schema, pa.DataType]: + """Convert a schema to an apache arrow schema.""" + if schema.fields: + arrow_fields: dict[str, Union[pa.Schema, pa.DataType]] = {} + for name, field in schema.fields.items(): + if name == UUID_COLUMN: + arrow_schema = dtype_to_arrow_schema(cast(DataType, field.dtype)) + else: + arrow_schema = _schema_to_arrow_schema_impl(field) + arrow_fields[name] = arrow_schema + + if isinstance(schema, Schema): + # Top-level schemas do not have __value__ fields. + return pa.schema(arrow_fields) + else: + # When nodes have both dtype and children, we add __value__ alongside the fields. + if schema.dtype: + value_schema = dtype_to_arrow_schema(schema.dtype) + if schema.dtype == DataType.STRING_SPAN: + value_schema = value_schema[VALUE_KEY].type + arrow_fields[VALUE_KEY] = value_schema + + return pa.struct(arrow_fields) + + field = cast(Field, schema) + if field.repeated_field: + return pa.list_(_schema_to_arrow_schema_impl(field.repeated_field)) + + return dtype_to_arrow_schema(cast(DataType, field.dtype)) + + +def arrow_dtype_to_dtype(arrow_dtype: pa.DataType) -> DataType: + """Convert arrow dtype to our dtype.""" + # Ints. + if arrow_dtype == pa.int8(): + return DataType.INT8 + elif arrow_dtype == pa.int16(): + return DataType.INT16 + elif arrow_dtype == pa.int32(): + return DataType.INT32 + elif arrow_dtype == pa.int64(): + return DataType.INT64 + elif arrow_dtype == pa.uint8(): + return DataType.UINT8 + elif arrow_dtype == pa.uint16(): + return DataType.UINT16 + elif arrow_dtype == pa.uint32(): + return DataType.UINT32 + elif arrow_dtype == pa.uint64(): + return DataType.UINT64 + # Floats. + elif arrow_dtype == pa.float16(): + return DataType.FLOAT16 + elif arrow_dtype == pa.float32(): + return DataType.FLOAT32 + elif arrow_dtype == pa.float64(): + return DataType.FLOAT64 + # Time. + elif pa.types.is_time(arrow_dtype): + return DataType.TIME + elif pa.types.is_date(arrow_dtype): + return DataType.DATE + elif pa.types.is_timestamp(arrow_dtype): + return DataType.TIMESTAMP + elif pa.types.is_duration(arrow_dtype): + return DataType.INTERVAL + # Others. + elif arrow_dtype == pa.string(): + return DataType.STRING + elif pa.types.is_binary(arrow_dtype) or pa.types.is_fixed_size_binary(arrow_dtype): + return DataType.BINARY + elif pa.types.is_boolean(arrow_dtype): + return DataType.BOOLEAN + else: + raise ValueError(f'Can not convert arrow dtype "{arrow_dtype}" to our dtype') + + +def arrow_schema_to_schema(schema: pa.Schema) -> Schema: + """Convert arrow schema to our schema.""" + # TODO(nsthorat): Change this implementation to allow more complicated reading of arrow schemas + # into our schema by inferring values when {__value__: value} is present in the pyarrow schema. + # This isn't necessary today as this util is only needed by sources which do not have data in the + # lilac format. + return cast(Schema, _arrow_schema_to_schema_impl(schema)) + + +def _arrow_schema_to_schema_impl(schema: Union[pa.Schema, pa.DataType]) -> Union[Schema, Field]: + """Convert an apache arrow schema to our schema.""" + if isinstance(schema, (pa.Schema, pa.StructType)): + fields: dict[str, Field] = { + field.name: cast(Field, _arrow_schema_to_schema_impl(field.type)) for field in schema + } + return Schema(fields=fields) if isinstance(schema, pa.Schema) else Field(fields=fields) + elif isinstance(schema, pa.ListType): + return Field(repeated_field=cast(Field, _arrow_schema_to_schema_impl(schema.value_field.type))) + else: + return Field(dtype=arrow_dtype_to_dtype(schema)) + + +def is_float(dtype: DataType) -> bool: + """Check if a dtype is a float dtype.""" + return dtype in [DataType.FLOAT16, DataType.FLOAT32, DataType.FLOAT64] + + +def is_integer(dtype: DataType) -> bool: + """Check if a dtype is an integer dtype.""" + return dtype in [ + DataType.INT8, DataType.INT16, DataType.INT32, DataType.INT64, DataType.UINT8, DataType.UINT16, + DataType.UINT32, DataType.UINT64 + ] + + +def is_temporal(dtype: DataType) -> bool: + """Check if a dtype is a temporal dtype.""" + return dtype in [DataType.TIME, DataType.DATE, DataType.TIMESTAMP, DataType.INTERVAL] + + +def is_ordinal(dtype: DataType) -> bool: + """Check if a dtype is an ordinal dtype.""" + return is_float(dtype) or is_integer(dtype) or is_temporal(dtype) diff --git a/src/schema_test.py b/src/schema_test.py new file mode 100644 index 0000000000000000000000000000000000000000..26a936b410de3e96a6ef0118b424d937284eca30 --- /dev/null +++ b/src/schema_test.py @@ -0,0 +1,262 @@ +"""Tests for item.py.""" + +import pyarrow as pa +import pytest + +from .schema import ( + PATH_WILDCARD, + TEXT_SPAN_END_FEATURE, + TEXT_SPAN_START_FEATURE, + VALUE_KEY, + DataType, + Field, + Item, + arrow_schema_to_schema, + child_item_from_column_path, + column_paths_match, + field, + schema, + schema_to_arrow_schema, +) + +NESTED_TEST_SCHEMA = schema({ + 'person': { + 'name': 'string', + 'last_name': 'string_span', + # Contains a double nested array of primitives. + 'data': [['float32']], + # Contains a value and children. + 'description': field( + 'string', + fields={ + 'toxicity': 'float32', + 'sentences': [field('string_span', fields={'len': 'int32'})] + }) + }, + 'addresses': [{ + 'city': 'string', + 'zipcode': 'int16', + 'current': 'boolean', + 'locations': [{ + 'latitude': 'float16', + 'longitude': 'float64' + }] + }], + 'blob': 'binary' +}) +NESTED_TEST_ITEM: Item = { + 'person': { + 'name': 'Test Name', + 'last_name': (5, 9) + }, + 'addresses': [{ + 'city': 'a', + 'zipcode': 1, + 'current': False, + 'locations': [{ + 'latitude': 1.5, + 'longitude': 3.8 + }, { + 'latitude': 2.9, + 'longitude': 15.3 + }], + }, { + 'city': 'b', + 'zipcode': 2, + 'current': True, + 'locations': [{ + 'latitude': 11.2, + 'longitude': 20.1 + }, { + 'latitude': 30.1, + 'longitude': 40.2 + }], + }] +} + + +def test_field_ctor_validation() -> None: + with pytest.raises( + ValueError, match='One of "fields", "repeated_field", or "dtype" should be defined'): + Field() + + with pytest.raises(ValueError, match='Both "fields" and "repeated_field" should not be defined'): + Field( + fields={'name': Field(dtype=DataType.STRING)}, + repeated_field=Field(dtype=DataType.INT32), + ) + + with pytest.raises(ValueError, match=f'{VALUE_KEY} is a reserved field name'): + Field(fields={VALUE_KEY: Field(dtype=DataType.STRING)},) + + +def test_schema_leafs() -> None: + expected = { + ('addresses', PATH_WILDCARD, 'city'): Field(dtype=DataType.STRING), + ('addresses', PATH_WILDCARD, 'current'): Field(dtype=DataType.BOOLEAN), + ('addresses', PATH_WILDCARD, 'locations', PATH_WILDCARD, 'latitude'): + Field(dtype=DataType.FLOAT16), + ('addresses', PATH_WILDCARD, 'locations', PATH_WILDCARD, 'longitude'): + Field(dtype=DataType.FLOAT64), + ('addresses', PATH_WILDCARD, 'zipcode'): Field(dtype=DataType.INT16), + ('blob',): Field(dtype=DataType.BINARY), + ('person', 'name'): Field(dtype=DataType.STRING), + ('person', 'last_name'): Field(dtype=DataType.STRING_SPAN), + ('person', 'data', PATH_WILDCARD, PATH_WILDCARD): Field(dtype=DataType.FLOAT32), + ('person', 'description'): Field( + dtype=DataType.STRING, + fields={ + 'toxicity': Field(dtype=DataType.FLOAT32), + 'sentences': Field( + repeated_field=Field( + dtype=DataType.STRING_SPAN, fields={'len': Field(dtype=DataType.INT32)})) + }), + ('person', 'description', 'toxicity'): Field(dtype=DataType.FLOAT32), + ('person', 'description', 'sentences', PATH_WILDCARD): Field( + fields={'len': Field(dtype=DataType.INT32)}, dtype=DataType.STRING_SPAN), + ('person', 'description', 'sentences', PATH_WILDCARD, 'len'): Field(dtype=DataType.INT32), + } + assert NESTED_TEST_SCHEMA.leafs == expected + + +def test_schema_to_arrow_schema() -> None: + arrow_schema = schema_to_arrow_schema(NESTED_TEST_SCHEMA) + + assert arrow_schema == pa.schema({ + 'person': pa.struct({ + 'name': pa.string(), + # The dtype for STRING_SPAN is implemented as a struct with a {start, end}. + 'last_name': pa.struct({ + VALUE_KEY: pa.struct({ + TEXT_SPAN_START_FEATURE: pa.int32(), + TEXT_SPAN_END_FEATURE: pa.int32(), + }) + }), + 'data': pa.list_(pa.list_(pa.float32())), + 'description': pa.struct({ + 'toxicity': pa.float32(), + 'sentences': pa.list_( + pa.struct({ + 'len': pa.int32(), + VALUE_KEY: pa.struct({ + TEXT_SPAN_START_FEATURE: pa.int32(), + TEXT_SPAN_END_FEATURE: pa.int32(), + }) + })), + VALUE_KEY: pa.string(), + }) + }), + 'addresses': pa.list_( + pa.struct({ + 'city': pa.string(), + 'zipcode': pa.int16(), + 'current': pa.bool_(), + 'locations': pa.list_(pa.struct({ + 'latitude': pa.float16(), + 'longitude': pa.float64() + })), + })), + 'blob': pa.binary(), + }) + + +def test_arrow_schema_to_schema() -> None: + arrow_schema = pa.schema({ + 'person': pa.struct({ + 'name': pa.string(), + 'data': pa.list_(pa.list_(pa.float32())) + }), + 'addresses': pa.list_( + pa.struct({ + 'city': pa.string(), + 'zipcode': pa.int16(), + 'current': pa.bool_(), + 'locations': pa.list_(pa.struct({ + 'latitude': pa.float16(), + 'longitude': pa.float64() + })), + })), + 'blob': pa.binary(), + }) + expected_schema = schema({ + 'person': { + 'name': 'string', + 'data': [['float32']] + }, + 'addresses': [{ + 'city': 'string', + 'zipcode': 'int16', + 'current': 'boolean', + 'locations': [{ + 'latitude': 'float16', + 'longitude': 'float64', + }] + }], + 'blob': 'binary', + }) + assert arrow_schema_to_schema(arrow_schema) == expected_schema + + +def test_simple_schema_str() -> None: + assert str(schema({'person': 'string'})) == 'person: string' + + +def test_child_item_from_column_path() -> None: + assert child_item_from_column_path(NESTED_TEST_ITEM, + ('addresses', '0', 'locations', '0', 'longitude')) == 3.8 + assert child_item_from_column_path(NESTED_TEST_ITEM, ('addresses', '1', 'city')) == 'b' + + +def test_child_item_from_column_path_raises_wildcard() -> None: + with pytest.raises( + ValueError, match='cannot be called with a path that contains a repeated wildcard'): + child_item_from_column_path(NESTED_TEST_ITEM, ('addresses', PATH_WILDCARD, 'city')) + + +def test_column_paths_match() -> None: + assert column_paths_match(path_match=('person', 'name'), specific_path=('person', 'name')) is True + assert column_paths_match( + path_match=('person', 'name'), specific_path=('person', 'not_name')) is False + + # Wildcards work for structs. + assert column_paths_match( + path_match=(PATH_WILDCARD, 'name'), specific_path=('person', 'name')) is True + assert column_paths_match( + path_match=(PATH_WILDCARD, 'name'), specific_path=('person', 'not_name')) is False + + # Wildcards work for repeateds. + assert column_paths_match( + path_match=('person', PATH_WILDCARD, 'name'), specific_path=('person', '0', 'name')) is True + assert column_paths_match( + path_match=('person', PATH_WILDCARD, 'name'), + specific_path=('person', '0', 'not_name')) is False + + # Sub-path matches always return False. + assert column_paths_match(path_match=(PATH_WILDCARD,), specific_path=('person', 'name')) is False + assert column_paths_match( + path_match=( + 'person', + PATH_WILDCARD, + ), specific_path=('person', '0', 'name')) is False + + +def test_nested_schema_str() -> None: + + assert str(NESTED_TEST_SCHEMA) == """\ +person: + name: string + last_name: string_span + data: list( list( float32)) + description: + toxicity: float32 + sentences: list( + len: int32) +addresses: list( + city: string + zipcode: int16 + current: boolean + locations: list( + latitude: float16 + longitude: float64)) +blob: binary\ +""" diff --git a/src/server.py b/src/server.py new file mode 100644 index 0000000000000000000000000000000000000000..2a7f841de64985a00ccca175770ec92453ec0e5b --- /dev/null +++ b/src/server.py @@ -0,0 +1,70 @@ +"""Serves the Lilac server.""" + +import logging +import os +from typing import Any + +from fastapi import APIRouter, FastAPI +from fastapi.responses import ORJSONResponse +from fastapi.routing import APIRoute +from fastapi.staticfiles import StaticFiles + +from . import router_concept, router_data_loader, router_dataset, router_signal, router_tasks +from .router_utils import RouteErrorHandler +from .tasks import task_manager + +DIST_PATH = os.path.abspath(os.path.join('web', 'blueprint', 'build')) + +tags_metadata: list[dict[str, Any]] = [{ + 'name': 'datasets', + 'description': 'API for querying a dataset.', +}, { + 'name': 'concepts', + 'description': 'API for managing concepts.', +}, { + 'name': 'data_loaders', + 'description': 'API for loading data.', +}, { + 'name': 'signals', + 'description': 'API for managing signals.', +}] + + +def custom_generate_unique_id(route: APIRoute) -> str: + """Generate the name for the API endpoint.""" + return route.name + + +app = FastAPI( + default_response_class=ORJSONResponse, + generate_unique_id_function=custom_generate_unique_id, + openapi_tags=tags_metadata) + +v1_router = APIRouter(route_class=RouteErrorHandler) +v1_router.include_router(router_dataset.router, prefix='/datasets', tags=['datasets']) +v1_router.include_router(router_concept.router, prefix='/concepts', tags=['concepts']) +v1_router.include_router(router_data_loader.router, prefix='/data_loaders', tags=['data_loaders']) +v1_router.include_router(router_signal.router, prefix='/signals', tags=['signals']) +v1_router.include_router(router_tasks.router, prefix='/tasks', tags=['tasks']) + +app.include_router(v1_router, prefix='/api/v1') + +# Serve static files in production mode. +app.mount('/', StaticFiles(directory=os.path.join(DIST_PATH), html=True, check_dir=False)) + + +@app.on_event('shutdown') +async def shutdown_event() -> None: + """Kill the task manager when FastAPI shuts down.""" + await task_manager().stop() + + +class GetTasksFilter(logging.Filter): + """Task filter for /tasks.""" + + def filter(self, record: logging.LogRecord) -> bool: + """Filters out /api/v1/tasks/ from the logs.""" + return record.getMessage().find('/api/v1/tasks/') == -1 + + +logging.getLogger('uvicorn.access').addFilter(GetTasksFilter()) diff --git a/src/server_concept_test.py b/src/server_concept_test.py new file mode 100644 index 0000000000000000000000000000000000000000..7a6e74b4a1d826c7d1766765627415ccf5047dc4 --- /dev/null +++ b/src/server_concept_test.py @@ -0,0 +1,412 @@ +"""Test the public REST API for concepts.""" +import uuid +from pathlib import Path +from typing import Iterable, cast + +import numpy as np +import pytest +from fastapi.testclient import TestClient +from pydantic import parse_obj_as +from pytest_mock import MockerFixture +from typing_extensions import override + +from .concepts.concept import ( + DRAFT_MAIN, + Concept, + ConceptModel, + Example, + ExampleIn, + ExampleOrigin, + LogisticEmbeddingModel, +) +from .concepts.db_concept import ConceptInfo, ConceptUpdate +from .config import CONFIG +from .data.dataset_utils import lilac_embedding +from .router_concept import ( + ConceptModelResponse, + CreateConceptOptions, + MergeConceptDraftOptions, + ScoreBody, + ScoreExample, + ScoreResponse, +) +from .schema import Item, RichData, SignalInputType +from .server import app +from .signals.signal import TextEmbeddingSignal, clear_signal_registry, register_signal +from .test_utils import fake_uuid + +client = TestClient(app) + +EMBEDDINGS: list[tuple[str, list[float]]] = [('hello', [1.0, 0.0, 0.0]), ('hello2', [1.0, 1.0, + 0.0]), + ('hello world', [1.0, 1.0, 1.0]), + ('hello world2', [2.0, 1.0, 1.0])] + +STR_EMBEDDINGS: dict[str, list[float]] = {text: embedding for text, embedding in EMBEDDINGS} + + +class TestEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Call the embedding function.""" + for example in data: + yield [lilac_embedding(0, len(example), np.array(STR_EMBEDDINGS[cast(str, example)]))] + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_signal(TestEmbedding) + # Unit test runs. + yield + # Teardown. + clear_signal_registry() + + +@pytest.fixture(scope='function', autouse=True) +def setup_data_dir(tmp_path: Path, mocker: MockerFixture) -> None: + mocker.patch.dict(CONFIG, {'LILAC_DATA_PATH': str(tmp_path)}) + + +def test_concept_create() -> None: + url = '/api/v1/concepts/' + response = client.get(url) + + assert response.status_code == 200 + assert response.json() == [] + + # Create a concept. + url = '/api/v1/concepts/create' + create_concept = CreateConceptOptions( + namespace='concept_namespace', name='concept', type=SignalInputType.TEXT) + response = client.post(url, json=create_concept.dict()) + assert response.status_code == 200 + assert response.json() == Concept( + namespace='concept_namespace', + concept_name='concept', + type=SignalInputType.TEXT, + data={}, + version=0).dict() + + # Make sure list shows us the new concept. + url = '/api/v1/concepts/' + response = client.get(url) + assert response.status_code == 200 + assert parse_obj_as(list[ConceptInfo], response.json()) == [ + ConceptInfo( + namespace='concept_namespace', name='concept', type=SignalInputType.TEXT, drafts=[DRAFT_MAIN]) + ] + + +def test_concept_edits(mocker: MockerFixture) -> None: + mock_uuid = mocker.patch.object(uuid, 'uuid4', autospec=True) + + # Create the concept. + response = client.post( + '/api/v1/concepts/create', + json=CreateConceptOptions( + namespace='concept_namespace', name='concept', type=SignalInputType.TEXT).dict()) + + # Make sure we can add an example. + mock_uuid.return_value = fake_uuid(b'1') + url = '/api/v1/concepts/concept_namespace/concept' + concept_update = ConceptUpdate(insert=[ + ExampleIn( + label=True, + text='hello', + origin=ExampleOrigin( + dataset_namespace='dataset_namespace', dataset_name='dataset', dataset_row_id='d1')) + ]) + response = client.post(url, json=concept_update.dict()) + assert response.status_code == 200 + assert Concept.parse_obj(response.json()) == Concept( + namespace='concept_namespace', + concept_name='concept', + type='text', + data={ + fake_uuid(b'1').hex: Example( + id=fake_uuid(b'1').hex, + label=True, + text='hello', + origin=ExampleOrigin( + dataset_namespace='dataset_namespace', dataset_name='dataset', dataset_row_id='d1')) + }, + version=1) + + url = '/api/v1/concepts/' + response = client.get(url) + + assert response.status_code == 200 + assert parse_obj_as(list[ConceptInfo], response.json()) == [ + ConceptInfo( + namespace='concept_namespace', name='concept', type=SignalInputType.TEXT, drafts=[DRAFT_MAIN]) + ] + + # Add another example. + mock_uuid.return_value = fake_uuid(b'2') + url = '/api/v1/concepts/concept_namespace/concept' + concept_update = ConceptUpdate(insert=[ + ExampleIn( + label=True, + text='hello2', + origin=ExampleOrigin( + dataset_namespace='dataset_namespace', dataset_name='dataset', dataset_row_id='d2')) + ]) + response = client.post(url, json=concept_update.dict()) + assert response.status_code == 200 + assert Concept.parse_obj(response.json()) == Concept( + namespace='concept_namespace', + concept_name='concept', + type='text', + data={ + fake_uuid(b'1').hex: Example( + id=fake_uuid(b'1').hex, + label=True, + text='hello', + origin=ExampleOrigin( + dataset_namespace='dataset_namespace', dataset_name='dataset', dataset_row_id='d1')), + fake_uuid(b'2').hex: Example( + id=fake_uuid(b'2').hex, + label=True, + text='hello2', + origin=ExampleOrigin( + dataset_namespace='dataset_namespace', dataset_name='dataset', dataset_row_id='d2')) + }, + version=2) + + # Edit both examples. + url = '/api/v1/concepts/concept_namespace/concept' + concept_update = ConceptUpdate(update=[ + # Switch the label. + Example(id=fake_uuid(b'1').hex, label=False, text='hello'), + # Switch the text. + Example(id=fake_uuid(b'2').hex, label=True, text='hello world'), + ]) + response = client.post(url, json=concept_update.dict()) + assert response.status_code == 200 + assert Concept.parse_obj(response.json()) == Concept( + namespace='concept_namespace', + concept_name='concept', + type='text', + data={ + fake_uuid(b'1').hex: Example(id=fake_uuid(b'1').hex, label=False, text='hello'), + fake_uuid(b'2').hex: Example(id=fake_uuid(b'2').hex, label=True, text='hello world') + }, + version=3) + + # Delete the first example. + url = '/api/v1/concepts/concept_namespace/concept' + concept_update = ConceptUpdate(remove=[fake_uuid(b'1').hex]) + response = client.post(url, json=concept_update.dict()) + assert response.status_code == 200 + assert Concept.parse_obj(response.json()) == Concept( + namespace='concept_namespace', + concept_name='concept', + type='text', + data={fake_uuid(b'2').hex: Example(id=fake_uuid(b'2').hex, label=True, text='hello world')}, + version=4) + + # The concept still exists. + url = '/api/v1/concepts/' + response = client.get(url) + + assert response.status_code == 200 + assert parse_obj_as(list[ConceptInfo], response.json()) == [ + ConceptInfo( + namespace='concept_namespace', name='concept', type=SignalInputType.TEXT, drafts=[DRAFT_MAIN]) + ] + + +def test_concept_drafts(mocker: MockerFixture) -> None: + mock_uuid = mocker.patch.object(uuid, 'uuid4', autospec=True) + + # Create the concept. + response = client.post( + '/api/v1/concepts/create', + json=CreateConceptOptions( + namespace='concept_namespace', name='concept', type=SignalInputType.TEXT).dict()) + + # Add examples, some drafts. + mock_uuid.side_effect = [fake_uuid(b'1'), fake_uuid(b'2'), fake_uuid(b'3'), fake_uuid(b'4')] + url = '/api/v1/concepts/concept_namespace/concept' + concept_update = ConceptUpdate(insert=[ + ExampleIn(label=True, text='in concept'), + ExampleIn(label=False, text='out of concept'), + ExampleIn(label=False, text='in concept', draft='test_draft'), + ExampleIn(label=False, text='out of concept draft', draft='test_draft') + ]) + response = client.post(url, json=concept_update.dict()) + assert response.status_code == 200 + + # Make sure list shows us the drafts + url = '/api/v1/concepts/' + response = client.get(url) + assert response.status_code == 200 + assert parse_obj_as(list[ConceptInfo], response.json()) == [ + ConceptInfo( + namespace='concept_namespace', + name='concept', + type=SignalInputType.TEXT, + drafts=[DRAFT_MAIN, 'test_draft']) + ] + + # Make sure when we request main, we only get data in main. + url = '/api/v1/concepts/concept_namespace/concept' + response = client.get(url) + assert response.status_code == 200 + assert Concept.parse_obj(response.json()) == Concept( + namespace='concept_namespace', + concept_name='concept', + type='text', + data={ + # Only main are returned. + fake_uuid(b'1').hex: Example(id=fake_uuid(b'1').hex, label=True, text='in concept'), + fake_uuid(b'2').hex: Example(id=fake_uuid(b'2').hex, label=False, text='out of concept') + }, + version=1) + + # Make sure when we request the draft, we get the draft data deduped with main. + url = '/api/v1/concepts/concept_namespace/concept?draft=test_draft' + response = client.get(url) + assert response.status_code == 200 + assert Concept.parse_obj(response.json()) == Concept( + namespace='concept_namespace', + concept_name='concept', + type='text', + data={ + # b'1' is deduped with b'3'. + fake_uuid(b'2').hex: Example(id=fake_uuid(b'2').hex, label=False, text='out of concept'), + # ID 3 is a duplicate of main's 1. + fake_uuid(b'3').hex: Example( + id=fake_uuid(b'3').hex, label=False, text='in concept', draft='test_draft'), + fake_uuid(b'4').hex: Example( + id=fake_uuid(b'4').hex, label=False, text='out of concept draft', draft='test_draft') + }, + version=1) + + # Merge the draft. + response = client.post( + '/api/v1/concepts/concept_namespace/concept/merge_draft', + json=MergeConceptDraftOptions(draft='test_draft').dict()) + assert response.status_code == 200 + + # Make sure we get the merged drafts. + url = '/api/v1/concepts/concept_namespace/concept' + response = client.get(url) + assert response.status_code == 200 + assert Concept.parse_obj(response.json()).dict() == Concept( + namespace='concept_namespace', + concept_name='concept', + type='text', + data={ + # b'1' is deduped with b'3'. + fake_uuid(b'2').hex: Example(id=fake_uuid(b'2').hex, label=False, text='out of concept'), + # ID 3 is a duplicate of main's 1. + fake_uuid(b'3').hex: Example(id=fake_uuid(b'3').hex, label=False, text='in concept'), + fake_uuid(b'4').hex: Example( + id=fake_uuid(b'4').hex, label=False, text='out of concept draft') + }, + version=2).dict() + + +def test_concept_model_sync(mocker: MockerFixture) -> None: + mock_uuid = mocker.patch.object(uuid, 'uuid4', autospec=True) + + # Create the concept. + response = client.post( + '/api/v1/concepts/create', + json=CreateConceptOptions( + namespace='concept_namespace', name='concept', type=SignalInputType.TEXT).dict()) + + # Add two examples. + mock_uuid.side_effect = [fake_uuid(b'1'), fake_uuid(b'2')] + url = '/api/v1/concepts/concept_namespace/concept' + concept_update = ConceptUpdate(insert=[ + ExampleIn( + label=True, + text='hello', + origin=ExampleOrigin( + dataset_namespace='dataset_namespace', dataset_name='dataset', dataset_row_id='d1')), + ExampleIn( + label=False, + text='hello world', + origin=ExampleOrigin( + dataset_namespace='dataset_namespace', dataset_name='dataset', dataset_row_id='d2')) + ]) + response = client.post(url, json=concept_update.dict()) + assert response.status_code == 200 + + # Get the concept model. + url = '/api/v1/concepts/concept_namespace/concept/test_embedding?sync_model=False' + response = client.get(url) + assert response.status_code == 200 + assert ConceptModelResponse.parse_obj(response.json()) == ConceptModelResponse( + model=ConceptModel( + namespace='concept_namespace', + concept_name='concept', + embedding_name='test_embedding', + version=-1), + # The model shouldn't yet be synced because we set sync_model=False. + model_synced=False) + + # Sync the concept model. + url = '/api/v1/concepts/concept_namespace/concept/test_embedding?sync_model=True' + response = client.get(url) + assert response.status_code == 200 + assert ConceptModelResponse.parse_obj(response.json()) == ConceptModelResponse( + model=ConceptModel( + namespace='concept_namespace', + concept_name='concept', + embedding_name='test_embedding', + version=1), + # The model should be synced because we set sync_model=True. + model_synced=True) + + # Score an example. + mock_score_emb = mocker.patch.object(LogisticEmbeddingModel, 'score_embeddings', autospec=True) + mock_score_emb.return_value = np.array([0.9, 1.0]) + url = '/api/v1/concepts/concept_namespace/concept/test_embedding/score' + score_body = ScoreBody(examples=[ScoreExample(text='hello world'), ScoreExample(text='hello')]) + response = client.post(url, json=score_body.dict()) + assert response.status_code == 200 + assert ScoreResponse.parse_obj(response.json()) == ScoreResponse( + scores=[0.9, 1.0], + # The model should already be synced. + model_synced=False) + + +def test_concept_edits_error_before_create(mocker: MockerFixture) -> None: + url = '/api/v1/concepts/concept_namespace/concept' + concept_update = ConceptUpdate(insert=[ + ExampleIn( + label=True, + text='hello', + origin=ExampleOrigin( + dataset_namespace='dataset_namespace', dataset_name='dataset', dataset_row_id='d1')) + ]) + response = client.post(url, json=concept_update.dict()) + assert response.is_error is True + assert response.status_code == 500 + + +def test_concept_edits_wrong_type(mocker: MockerFixture) -> None: + # Create the concept. + response = client.post( + '/api/v1/concepts/create', + json=CreateConceptOptions( + namespace='concept_namespace', name='concept', type=SignalInputType.IMAGE).dict()) + + url = '/api/v1/concepts/concept_namespace/concept' + concept_update = ConceptUpdate(insert=[ + ExampleIn( + label=True, + text='hello', + origin=ExampleOrigin( + dataset_namespace='dataset_namespace', dataset_name='dataset', dataset_row_id='d1')) + ]) + response = client.post(url, json=concept_update.dict()) + assert response.is_error is True + assert response.status_code == 500 diff --git a/src/server_test.py b/src/server_test.py new file mode 100644 index 0000000000000000000000000000000000000000..092dbfc68c8f4ad65a1221f7f0b2dfe9c7481e3c --- /dev/null +++ b/src/server_test.py @@ -0,0 +1,286 @@ +"""Test our public REST API.""" +from typing import Iterable, Optional, Type + +import pytest +from fastapi.testclient import TestClient +from pytest_mock import MockerFixture + +from .config import CONFIG +from .data.dataset import ( + Column, + Dataset, + DatasetManifest, + SelectRowsSchemaResult, + SelectRowsSchemaUDF, +) +from .data.dataset_duckdb import DatasetDuckDB +from .data.dataset_test_utils import TEST_DATASET_NAME, TEST_NAMESPACE, enriched_item, make_dataset +from .router_dataset import ( + SelectRowsOptions, + SelectRowsResponse, + SelectRowsSchemaOptions, + WebManifest, +) +from .schema import UUID_COLUMN, Field, Item, RichData, field, schema +from .server import app +from .signals.signal import TextSignal, clear_signal_registry, register_signal + +client = TestClient(app) + +DATASET_CLASSES = [DatasetDuckDB] + +TEST_DATA: list[Item] = [{ + UUID_COLUMN: '1', + 'erased': False, + 'people': [{ + 'name': 'A', + 'zipcode': 0, + 'locations': [{ + 'city': 'city1', + 'state': 'state1' + }, { + 'city': 'city2', + 'state': 'state2' + }] + }] +}, { + UUID_COLUMN: '2', + 'erased': True, + 'people': [{ + 'name': 'B', + 'zipcode': 1, + 'locations': [{ + 'city': 'city3', + 'state': 'state3' + }, { + 'city': 'city4' + }, { + 'city': 'city5' + }] + }, { + 'name': 'C', + 'zipcode': 2, + 'locations': [{ + 'city': 'city1', + 'state': 'state1' + }] + }] +}, { + UUID_COLUMN: '3', + 'erased': True, +}] + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_signal(LengthSignal) + # Unit test runs. + yield + # Teardown. + clear_signal_registry() + + +@pytest.fixture(scope='module', autouse=True, params=DATASET_CLASSES) +def test_data(tmp_path_factory: pytest.TempPathFactory, module_mocker: MockerFixture, + request: pytest.FixtureRequest) -> None: + tmp_path = tmp_path_factory.mktemp('data') + module_mocker.patch.dict(CONFIG, {'LILAC_DATA_PATH': str(tmp_path)}) + dataset_cls: Type[Dataset] = request.param + make_dataset(dataset_cls, tmp_path, TEST_DATA) + + +def test_get_manifest() -> None: + url = f'/api/v1/datasets/{TEST_NAMESPACE}/{TEST_DATASET_NAME}' + response = client.get(url) + assert response.status_code == 200 + assert WebManifest.parse_obj(response.json()) == WebManifest( + dataset_manifest=DatasetManifest( + namespace=TEST_NAMESPACE, + dataset_name=TEST_DATASET_NAME, + data_schema=schema({ + UUID_COLUMN: 'string', + 'erased': 'boolean', + 'people': [{ + 'name': 'string', + 'zipcode': 'int32', + 'locations': [{ + 'city': 'string', + 'state': 'string' + }] + }] + }), + num_items=3)) + + +def test_select_rows_no_options() -> None: + url = f'/api/v1/datasets/{TEST_NAMESPACE}/{TEST_DATASET_NAME}/select_rows' + options = SelectRowsOptions() + response = client.post(url, json=options.dict()) + assert response.status_code == 200 + assert SelectRowsResponse.parse_obj(response.json()) == SelectRowsResponse( + rows=TEST_DATA, total_num_rows=3) + + +def test_select_rows_with_cols_and_limit() -> None: + url = f'/api/v1/datasets/{TEST_NAMESPACE}/{TEST_DATASET_NAME}/select_rows' + options = SelectRowsOptions( + columns=[('people', '*', 'zipcode'), ('people', '*', 'locations', '*', 'city')], + limit=1, + offset=1) + response = client.post(url, json=options.dict()) + assert response.status_code == 200 + assert SelectRowsResponse.parse_obj(response.json()) == SelectRowsResponse( + rows=[{ + UUID_COLUMN: '2', + 'people.*.zipcode': [1, 2], + 'people.*.locations.*.city': [['city3', 'city4', 'city5'], ['city1']] + }], + total_num_rows=3) + + +def test_select_rows_with_cols_and_combine() -> None: + url = f'/api/v1/datasets/{TEST_NAMESPACE}/{TEST_DATASET_NAME}/select_rows' + options = SelectRowsOptions( + columns=[('people', '*', 'zipcode'), ('people', '*', 'locations', '*', 'city')], + combine_columns=True) + response = client.post(url, json=options.dict()) + assert response.status_code == 200 + assert SelectRowsResponse.parse_obj(response.json()) == SelectRowsResponse( + rows=[{ + UUID_COLUMN: '1', + 'people': [{ + 'zipcode': 0, + 'locations': [{ + 'city': 'city1', + }, { + 'city': 'city2', + }] + }] + }, { + UUID_COLUMN: '2', + 'people': [{ + 'zipcode': 1, + 'locations': [{ + 'city': 'city3', + }, { + 'city': 'city4' + }, { + 'city': 'city5' + }] + }, { + 'zipcode': 2, + 'locations': [{ + 'city': 'city1' + }] + }] + }, { + UUID_COLUMN: '3', + 'people': None + }], + total_num_rows=3) + + +class LengthSignal(TextSignal): + name = 'length_signal' + + def fields(self) -> Field: + return field('int32') + + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text_content in data: + yield len(text_content) if text_content is not None else None + + +def test_select_rows_star_plus_udf() -> None: + url = f'/api/v1/datasets/{TEST_NAMESPACE}/{TEST_DATASET_NAME}/select_rows' + udf = Column('people.*.name', alias='len', signal_udf=LengthSignal()) + options = SelectRowsOptions(columns=['*', udf], combine_columns=True) + response = client.post(url, json=options.dict()) + assert response.status_code == 200 + assert SelectRowsResponse.parse_obj(response.json()) == SelectRowsResponse( + rows=[{ + UUID_COLUMN: '1', + 'erased': False, + 'people': [{ + 'name': enriched_item('A', {'length_signal': 1}), + 'zipcode': 0, + 'locations': [{ + 'city': 'city1', + 'state': 'state1' + }, { + 'city': 'city2', + 'state': 'state2' + }] + }] + }, { + UUID_COLUMN: '2', + 'erased': True, + 'people': [{ + 'name': enriched_item('B', {'length_signal': 1}), + 'zipcode': 1, + 'locations': [{ + 'city': 'city3', + 'state': 'state3' + }, { + 'city': 'city4' + }, { + 'city': 'city5' + }] + }, { + 'name': enriched_item('C', {'length_signal': 1}), + 'zipcode': 2, + 'locations': [{ + 'city': 'city1', + 'state': 'state1' + }] + }] + }, { + UUID_COLUMN: '3', + 'erased': True, + }], + total_num_rows=3) + + +def test_select_rows_schema_star_plus_udf() -> None: + url = f'/api/v1/datasets/{TEST_NAMESPACE}/{TEST_DATASET_NAME}/select_rows_schema' + signal = LengthSignal() + udf = Column('people.*.name', alias='len', signal_udf=signal) + options = SelectRowsSchemaOptions(columns=['*', udf], combine_columns=True) + response = client.post(url, json=options.dict()) + assert response.status_code == 200 + assert SelectRowsSchemaResult.parse_obj(response.json()) == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'erased': 'boolean', + 'people': [{ + 'name': field( + 'string', fields={'length_signal': field('int32', signal.dict(exclude_none=True))}), + 'zipcode': 'int32', + 'locations': [{ + 'city': 'string', + 'state': 'string' + }] + }] + }), + udfs=[SelectRowsSchemaUDF(path=('people', '*', 'name', 'length_signal'), alias='len')]) + + +def test_select_rows_schema_no_cols() -> None: + url = f'/api/v1/datasets/{TEST_NAMESPACE}/{TEST_DATASET_NAME}/select_rows_schema' + options = SelectRowsSchemaOptions(combine_columns=True) + response = client.post(url, json=options.dict()) + assert response.status_code == 200 + assert SelectRowsSchemaResult.parse_obj(response.json()) == SelectRowsSchemaResult( + data_schema=schema({ + UUID_COLUMN: 'string', + 'erased': 'boolean', + 'people': [{ + 'name': 'string', + 'zipcode': 'int32', + 'locations': [{ + 'city': 'string', + 'state': 'string' + }] + }] + })) diff --git a/src/signals/__init__.py b/src/signals/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/signals/__pycache__/__init__.cpython-39.pyc b/src/signals/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a52885f2330d2a093cc6de325ff22f8b47b67356 Binary files /dev/null and b/src/signals/__pycache__/__init__.cpython-39.pyc differ diff --git a/src/signals/__pycache__/concept_labels.cpython-39.pyc b/src/signals/__pycache__/concept_labels.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..279d52313bff115002ac69906c8c4ed7eab9f52a Binary files /dev/null and b/src/signals/__pycache__/concept_labels.cpython-39.pyc differ diff --git a/src/signals/__pycache__/concept_labels_test.cpython-39-pytest-7.3.1.pyc b/src/signals/__pycache__/concept_labels_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df8376453fb5bfd100ca70b4a59716f3e739dbe0 Binary files /dev/null and b/src/signals/__pycache__/concept_labels_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/__pycache__/concept_scorer.cpython-39.pyc b/src/signals/__pycache__/concept_scorer.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5959d0b4579561d30b878f56dbaae9efe71b289b Binary files /dev/null and b/src/signals/__pycache__/concept_scorer.cpython-39.pyc differ diff --git a/src/signals/__pycache__/concept_scorer_test.cpython-39-pytest-7.2.2.pyc b/src/signals/__pycache__/concept_scorer_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8129b4b73416163707111b38867ff8a2e085b85 Binary files /dev/null and b/src/signals/__pycache__/concept_scorer_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/signals/__pycache__/concept_scorer_test.cpython-39-pytest-7.3.1.pyc b/src/signals/__pycache__/concept_scorer_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5cd743adc07e3d3e99734c801daac00e6e64a740 Binary files /dev/null and b/src/signals/__pycache__/concept_scorer_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/__pycache__/default_signals.cpython-39.pyc b/src/signals/__pycache__/default_signals.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f2581cf7254c0979a515ab2882abaa71490cbde0 Binary files /dev/null and b/src/signals/__pycache__/default_signals.cpython-39.pyc differ diff --git a/src/signals/__pycache__/pii.cpython-39.pyc b/src/signals/__pycache__/pii.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..78feb027df83a79fa6679a83f3037e0040ea00e7 Binary files /dev/null and b/src/signals/__pycache__/pii.cpython-39.pyc differ diff --git a/src/signals/__pycache__/pii_test.cpython-39-pytest-7.2.2.pyc b/src/signals/__pycache__/pii_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dd03cd50da5a6d2987fb0f59d4b6063030e547d5 Binary files /dev/null and b/src/signals/__pycache__/pii_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/signals/__pycache__/pii_test.cpython-39-pytest-7.3.1.pyc b/src/signals/__pycache__/pii_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..08010ed776703e79eb0ba65b25c16fea2ccacb3b Binary files /dev/null and b/src/signals/__pycache__/pii_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/__pycache__/semantic_search.cpython-39.pyc b/src/signals/__pycache__/semantic_search.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c65257aa6b1f99ec315fd6984fad0829c6b222f2 Binary files /dev/null and b/src/signals/__pycache__/semantic_search.cpython-39.pyc differ diff --git a/src/signals/__pycache__/semantic_search_test.cpython-39-pytest-7.2.0.pyc b/src/signals/__pycache__/semantic_search_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e56b0ffeff0c61e87ba678d6170a9f6b424b456f Binary files /dev/null and b/src/signals/__pycache__/semantic_search_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/signals/__pycache__/semantic_search_test.cpython-39-pytest-7.2.2.pyc b/src/signals/__pycache__/semantic_search_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..93892ce15ab6dfc6e786c44d1e76b0d404b73237 Binary files /dev/null and b/src/signals/__pycache__/semantic_search_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/signals/__pycache__/semantic_search_test.cpython-39-pytest-7.3.1.pyc b/src/signals/__pycache__/semantic_search_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d982af8547293c997b984e8961fa36b0897014ca Binary files /dev/null and b/src/signals/__pycache__/semantic_search_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/__pycache__/semantic_similarity.cpython-39.pyc b/src/signals/__pycache__/semantic_similarity.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d9127140080e387c2b652b81baa9040b73eb6cfc Binary files /dev/null and b/src/signals/__pycache__/semantic_similarity.cpython-39.pyc differ diff --git a/src/signals/__pycache__/semantic_similarity_test.cpython-39-pytest-7.3.1.pyc b/src/signals/__pycache__/semantic_similarity_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bd5bdbac522e74b9a979edff79aeb62a8e7fea3d Binary files /dev/null and b/src/signals/__pycache__/semantic_similarity_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/__pycache__/signal.cpython-39-pytest-7.3.1.pyc b/src/signals/__pycache__/signal.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c8da0df69a37da6a526adda21ea2a017a1df8976 Binary files /dev/null and b/src/signals/__pycache__/signal.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/__pycache__/signal.cpython-39.pyc b/src/signals/__pycache__/signal.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f3a2ce16fa226d9a625b04a36baca1d22021ac53 Binary files /dev/null and b/src/signals/__pycache__/signal.cpython-39.pyc differ diff --git a/src/signals/__pycache__/signal_registry.cpython-39.pyc b/src/signals/__pycache__/signal_registry.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8e48218498608508e7af2a255f2b5afb95725a42 Binary files /dev/null and b/src/signals/__pycache__/signal_registry.cpython-39.pyc differ diff --git a/src/signals/__pycache__/signal_registry_test.cpython-39-pytest-7.2.0.pyc b/src/signals/__pycache__/signal_registry_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e67560bd2291251627253d0edbe7c4a2fed48105 Binary files /dev/null and b/src/signals/__pycache__/signal_registry_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/signals/__pycache__/signal_registry_test.cpython-39-pytest-7.2.2.pyc b/src/signals/__pycache__/signal_registry_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..854d63e5f956e254ff28b532cfe76dc5fa5805a5 Binary files /dev/null and b/src/signals/__pycache__/signal_registry_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/signals/__pycache__/signal_registry_test.cpython-39-pytest-7.3.1.pyc b/src/signals/__pycache__/signal_registry_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0df7c840b4b06411f99afdbdc6ea8769abf4b375 Binary files /dev/null and b/src/signals/__pycache__/signal_registry_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/__pycache__/signal_test.cpython-39-pytest-7.2.0.pyc b/src/signals/__pycache__/signal_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e909c4b7f79779d146481e25cb4b907c97374bed Binary files /dev/null and b/src/signals/__pycache__/signal_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/signals/__pycache__/signal_test.cpython-39-pytest-7.2.2.pyc b/src/signals/__pycache__/signal_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f2b8904fa52e667e868b0e266c4b473ebe549fa9 Binary files /dev/null and b/src/signals/__pycache__/signal_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/signals/__pycache__/signal_test.cpython-39-pytest-7.3.1.pyc b/src/signals/__pycache__/signal_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..515c94553a66b42f2cfa154d4cdc14dd78f98274 Binary files /dev/null and b/src/signals/__pycache__/signal_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/__pycache__/signal_utils.cpython-39.pyc b/src/signals/__pycache__/signal_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ac8d2ce77a4137cef071ced8df39ccd7e9ef5acb Binary files /dev/null and b/src/signals/__pycache__/signal_utils.cpython-39.pyc differ diff --git a/src/signals/__pycache__/substring_search.cpython-39.pyc b/src/signals/__pycache__/substring_search.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f05a8dd45a0d841bc1de223ba50afea93a9b3aa6 Binary files /dev/null and b/src/signals/__pycache__/substring_search.cpython-39.pyc differ diff --git a/src/signals/__pycache__/substring_search_test.cpython-39-pytest-7.3.1.pyc b/src/signals/__pycache__/substring_search_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4b907013f34bd09e6b2db110d5c3d87d5c41903f Binary files /dev/null and b/src/signals/__pycache__/substring_search_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/__pycache__/text_statistics.cpython-39.pyc b/src/signals/__pycache__/text_statistics.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..52b46e71b588806ec379da93e036b20919ad32b6 Binary files /dev/null and b/src/signals/__pycache__/text_statistics.cpython-39.pyc differ diff --git a/src/signals/__pycache__/text_statistics_test.cpython-39-pytest-7.2.0.pyc b/src/signals/__pycache__/text_statistics_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1947b0cdf63949ebf91c7bee2db98b8c43d7096c Binary files /dev/null and b/src/signals/__pycache__/text_statistics_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/signals/__pycache__/text_statistics_test.cpython-39-pytest-7.2.2.pyc b/src/signals/__pycache__/text_statistics_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..65ae7ec7e340ad634a1dde840bf35e7a25b4a939 Binary files /dev/null and b/src/signals/__pycache__/text_statistics_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/signals/__pycache__/text_statistics_test.cpython-39-pytest-7.3.1.pyc b/src/signals/__pycache__/text_statistics_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..33449b0081375243ce02cfc0580d980105a47ada Binary files /dev/null and b/src/signals/__pycache__/text_statistics_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/concept_labels.py b/src/signals/concept_labels.py new file mode 100644 index 0000000000000000000000000000000000000000..774b0514173b88621a082da0cbbac46abfbef0c6 --- /dev/null +++ b/src/signals/concept_labels.py @@ -0,0 +1,79 @@ +"""A signal to compute span offsets of already labeled concept text.""" +from typing import Iterable, Optional + +from typing_extensions import override + +from ..concepts.concept import DRAFT_MAIN, draft_examples +from ..concepts.db_concept import DISK_CONCEPT_DB, ConceptDB +from ..data.dataset_utils import lilac_span +from ..schema import Field, Item, RichData, field +from .signal import TextSignal + + +class ConceptLabelsSignal(TextSignal): + """Computes spans where text is labeled for the concept, either positive or negative.""" + name = 'concept_labels' + display_name = 'Concept Labels' + + namespace: str + concept_name: str + + # The draft version of the concept to use. If not provided, the latest version is used. + draft: str = DRAFT_MAIN + + _concept_db: ConceptDB = DISK_CONCEPT_DB + + @override + def fields(self) -> Field: + return field(fields=[field('string_span', fields={'label': 'boolean', 'draft': 'string'})]) + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + concept = self._concept_db.get(self.namespace, self.concept_name) + if not concept: + raise ValueError(f'Concept "{self.namespace}/{self.concept_name}" does not exist.') + + examples = draft_examples(concept, draft=self.draft) + for text in data: + if not text: + yield None + continue + + if not isinstance(text, str): + raise ValueError(f'{str(text)} is a {type(text)}, which is not a string.') + + label_spans: list[Item] = [] + for example in examples.values(): + if not example.text: + continue + + offset = 0 + while offset < len(text): + offset = text.find(example.text, offset) + if offset == -1: + break + label_spans.append( + lilac_span( + offset, offset + len(example.text), { + 'label': example.label, + **({ + 'draft': example.draft + } if example.draft != DRAFT_MAIN else {}) + })) + offset += len(example.text) + + if label_spans: + yield label_spans + else: + yield None + + @override + def key(self, is_computed_signal: Optional[bool] = False) -> str: + version = '' + if is_computed_signal: + concept = self._concept_db.get(self.namespace, self.concept_name) + if not concept: + raise ValueError(f'Concept "{self.namespace}/{self.concept_name}" does not exist.') + version = f'/v{concept.version}' + + return f'{self.namespace}/{self.concept_name}/labels{version}' diff --git a/src/signals/concept_labels_test.py b/src/signals/concept_labels_test.py new file mode 100644 index 0000000000000000000000000000000000000000..64212f6dd447bafc8f6e8fb40447fb966616e46e --- /dev/null +++ b/src/signals/concept_labels_test.py @@ -0,0 +1,129 @@ +"""Test for the concept label signal.""" + +import pathlib +from typing import Generator, Type + +import pytest +from pytest_mock import MockerFixture + +from ..concepts.concept import ExampleIn +from ..concepts.db_concept import ConceptDB, ConceptUpdate, DiskConceptDB, DiskConceptModelDB +from ..config import CONFIG +from ..data.dataset_duckdb import DatasetDuckDB +from ..data.dataset_utils import lilac_span +from ..db_manager import set_default_dataset_cls +from ..schema import SignalInputType +from .concept_labels import ConceptLabelsSignal +from .signal import clear_signal_registry + +ALL_CONCEPT_DBS = [DiskConceptDB] +ALL_CONCEPT_MODEL_DBS = [DiskConceptModelDB] + + +@pytest.fixture(autouse=True) +def set_data_path(tmp_path: pathlib.Path, mocker: MockerFixture) -> None: + mocker.patch.dict(CONFIG, {'LILAC_DATA_PATH': str(tmp_path)}) + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Generator: + # Setup. + set_default_dataset_cls(DatasetDuckDB) + + # Unit test runs. + yield + + # Teardown. + clear_signal_registry() + + +def test_concept_does_not_exist() -> None: + signal = ConceptLabelsSignal(namespace='test', concept_name='concept_doesnt_exist') + with pytest.raises(ValueError, match='Concept "test/concept_doesnt_exist" does not exist'): + list(signal.compute(['a new data point', 'not in concept'])) + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +def test_concept_labels(concept_db_cls: Type[ConceptDB]) -> None: + concept_db = concept_db_cls() + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='no in concept'), + ExampleIn(label=True, text='yes in concept'), + # This should never show since we request the main draft. + ExampleIn(label=False, text='this is unrelated', draft='test_draft') + ] + concept_db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + signal = ConceptLabelsSignal(namespace='test', concept_name='test_concept') + results = list( + signal.compute([ + 'this is no in concept', 'this is yes in concept', + 'this is no in concept. filler. this is yes in concept.', 'this is unrelated' + ])) + + assert results == [ + [lilac_span(8, 8 + len('no in concept'), {'label': False})], + [lilac_span(8, 8 + len('yes in concept'), {'label': True})], + [ + lilac_span(8, 8 + len('no in concept'), {'label': False}), + lilac_span(39, 39 + len('yes in concept'), {'label': True}) + ], + # This example is in the draft, which was not requested. + None + ] + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +def test_concept_labels_draft(concept_db_cls: Type[ConceptDB]) -> None: + concept_db = concept_db_cls() + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + concept_update = ConceptUpdate(insert=[ + ExampleIn(label=True, text='in concept'), + ExampleIn(label=False, text='out of concept'), + ExampleIn(label=True, text='in draft', draft='test_draft'), + ExampleIn(label=False, text='out draft', draft='test_draft') + ]) + + concept_db.edit(namespace, concept_name, concept_update) + + signal = ConceptLabelsSignal(namespace='test', concept_name='test_concept', draft='test_draft') + results = list(signal.compute(['this is in concept', 'this is in draft', 'this is out draft'])) + + assert results == [[lilac_span(8, 8 + len('in concept'), {'label': True})], + [lilac_span(8, 8 + len('in draft'), { + 'label': True, + 'draft': 'test_draft' + })], + [lilac_span(8, 8 + len('out draft'), { + 'label': False, + 'draft': 'test_draft' + })]] + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +def test_concept_labels_key(concept_db_cls: Type[ConceptDB]) -> None: + concept_db = concept_db_cls() + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + signal = ConceptLabelsSignal(namespace='test', concept_name='test_concept') + assert signal.key() == 'test/test_concept/labels' + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +def test_concept_labels_compute_signal_key(concept_db_cls: Type[ConceptDB]) -> None: + concept_db = concept_db_cls() + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + signal = ConceptLabelsSignal(namespace='test', concept_name='test_concept') + assert signal.key(is_computed_signal=True) == 'test/test_concept/labels/v0' diff --git a/src/signals/concept_scorer.py b/src/signals/concept_scorer.py new file mode 100644 index 0000000000000000000000000000000000000000..7e4d698f1f896bd08b515d463fcc03b12d391ce6 --- /dev/null +++ b/src/signals/concept_scorer.py @@ -0,0 +1,83 @@ +"""A signal to compute a score along a concept.""" +from typing import Iterable, Optional + +import numpy as np +from typing_extensions import override + +from ..concepts.concept import DEFAULT_NUM_NEG_EXAMPLES, DRAFT_MAIN, ConceptColumnInfo, ConceptModel +from ..concepts.db_concept import DISK_CONCEPT_MODEL_DB, ConceptModelDB +from ..embeddings.vector_store import VectorStore +from ..schema import Field, Item, RichData, VectorKey, field +from .signal import TextEmbeddingModelSignal + + +class ConceptScoreSignal(TextEmbeddingModelSignal): + """Compute scores along a given concept for documents.""" + name = 'concept_score' + display_name = 'Concept' + + namespace: str + concept_name: str + + # The draft version of the concept to use. If not provided, the latest version is used. + draft: str = DRAFT_MAIN + + # Number of randomly chosen negative examples to use when training the concept. This is used to + # obtain a better suited model for the concrete dataset. + num_negative_examples = DEFAULT_NUM_NEG_EXAMPLES + + _column_info: Optional[ConceptColumnInfo] = None + _concept_model_db: ConceptModelDB = DISK_CONCEPT_MODEL_DB + + @override + def fields(self) -> Field: + return field( + 'float32', + bins=[('Not in concept', None, 0.5), ('In concept', 0.5, None)], + ) + + def set_column_info(self, column_info: ConceptColumnInfo) -> None: + """Set the dataset info for this signal.""" + self._column_info = column_info + self._column_info.num_negative_examples = self.num_negative_examples + + def _get_concept_model(self) -> ConceptModel: + model = self._concept_model_db.get(self.namespace, self.concept_name, self.embedding, + self._column_info) + if not model: + model = self._concept_model_db.create(self.namespace, self.concept_name, self.embedding, + self._column_info) + if self._column_info: + model.calibrate_on_dataset(self._column_info) + self._concept_model_db.sync(model, self._column_info) + return model + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + concept_model = self._get_concept_model() + return concept_model.score(self.draft, data) + + @override + def vector_compute(self, keys: Iterable[VectorKey], + vector_store: VectorStore) -> Iterable[Optional[Item]]: + concept_model = self._get_concept_model() + embeddings = vector_store.get(keys) + return concept_model.score_embeddings(self.draft, embeddings).tolist() + + @override + def vector_compute_topk( + self, + topk: int, + vector_store: VectorStore, + keys: Optional[Iterable[VectorKey]] = None) -> list[tuple[VectorKey, Optional[Item]]]: + concept_model = self._get_concept_model() + query: np.ndarray = concept_model.coef(self.draft) + topk_keys = [key for key, _ in vector_store.topk(query, topk, keys)] + return list(zip(topk_keys, self.vector_compute(topk_keys, vector_store))) + + @override + def key(self, is_computed_signal: Optional[bool] = False) -> str: + # NOTE: The embedding is a value so already exists in the path structure. This means we do not + # need to provide the name as part of the key, which still guarantees uniqueness. + version = f'/v{self._get_concept_model().version}' if is_computed_signal else '' + return f'{self.namespace}/{self.concept_name}{version}' diff --git a/src/signals/concept_scorer_test.py b/src/signals/concept_scorer_test.py new file mode 100644 index 0000000000000000000000000000000000000000..e000782280633b506691ab22fc326f31cb6f8ee1 --- /dev/null +++ b/src/signals/concept_scorer_test.py @@ -0,0 +1,311 @@ +"""Test for the concept scorer.""" + +import pathlib +from typing import Generator, Iterable, Type, cast + +import numpy as np +import pytest +from pytest_mock import MockerFixture +from typing_extensions import override + +from ..concepts.concept import ConceptColumnInfo, ConceptModel, ExampleIn +from ..concepts.db_concept import ( + ConceptDB, + ConceptModelDB, + ConceptUpdate, + DiskConceptDB, + DiskConceptModelDB, +) +from ..config import CONFIG +from ..data.dataset_duckdb import DatasetDuckDB +from ..data.dataset_test_utils import TestDataMaker +from ..data.dataset_utils import lilac_embedding +from ..db_manager import set_default_dataset_cls +from ..embeddings.vector_store_numpy import NumpyVectorStore +from ..schema import UUID_COLUMN, Item, RichData, SignalInputType +from .concept_scorer import ConceptScoreSignal +from .signal import TextEmbeddingSignal, clear_signal_registry, register_signal + +ALL_CONCEPT_DBS = [DiskConceptDB] +ALL_CONCEPT_MODEL_DBS = [DiskConceptModelDB] + + +@pytest.fixture(autouse=True) +def set_data_path(tmp_path: pathlib.Path, mocker: MockerFixture) -> None: + mocker.patch.dict(CONFIG, {'LILAC_DATA_PATH': str(tmp_path)}) + + +EMBEDDING_MAP: dict[str, list[float]] = { + 'not in concept': [0.1, 0.9, 0.0], + 'in concept': [0.9, 0.1, 0.0], + 'a new data point': [0.1, 0.2, 0.3], + 'hello.': [0.1, 0.2, 0.3], + 'hello2.': [0.1, 0.2, 0.3], +} + + +class TestEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Embed the examples, use a hashmap to the vector for simplicity.""" + for example in data: + if example not in EMBEDDING_MAP: + raise ValueError(f'Example "{str(example)}" not in embedding map') + yield [lilac_embedding(0, len(example), np.array(EMBEDDING_MAP[cast(str, example)]))] + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Generator: + # Setup. + set_default_dataset_cls(DatasetDuckDB) + register_signal(TestEmbedding) + + # Unit test runs. + yield + + # Teardown. + clear_signal_registry() + + +@pytest.mark.parametrize('db_cls', ALL_CONCEPT_DBS) +def test_embedding_does_not_exist(db_cls: Type[ConceptDB]) -> None: + db = db_cls() + namespace = 'test' + concept_name = 'test_concept' + db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept') + ] + db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + with pytest.raises(ValueError, match='Signal "unknown_embedding" not found in the registry'): + ConceptScoreSignal(namespace='test', concept_name='test_concept', embedding='unknown_embedding') + + +def test_concept_does_not_exist() -> None: + signal = ConceptScoreSignal( + namespace='test', concept_name='test_concept', embedding='test_embedding') + with pytest.raises(ValueError, match='Concept "test/test_concept" does not exist'): + signal.compute(['a new data point', 'not in concept']) + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +@pytest.mark.parametrize('model_db_cls', ALL_CONCEPT_MODEL_DBS) +def test_concept_model_score(concept_db_cls: Type[ConceptDB], + model_db_cls: Type[ConceptModelDB]) -> None: + concept_db = concept_db_cls() + model_db = model_db_cls(concept_db) + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept') + ] + concept_db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + signal = ConceptScoreSignal( + namespace='test', concept_name='test_concept', embedding='test_embedding') + + # Explicitly sync the model with the concept. + model = ConceptModel( + namespace='test', concept_name='test_concept', embedding_name='test_embedding') + model_db.sync(model, column_info=None) + + scores = cast(list[float], list(signal.compute(['a new data point', 'not in concept']))) + assert scores[0] > 0 and scores[0] < 1 + assert scores[1] < 0.5 + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +@pytest.mark.parametrize('model_db_cls', ALL_CONCEPT_MODEL_DBS) +def test_concept_model_with_dataset_score(concept_db_cls: Type[ConceptDB], + model_db_cls: Type[ConceptModelDB], + make_test_data: TestDataMaker) -> None: + dataset = make_test_data([{ + UUID_COLUMN: '1', + 'text': 'hello.', + }, { + UUID_COLUMN: '2', + 'text': 'hello2.', + }]) + + concept_db = concept_db_cls() + model_db = model_db_cls(concept_db) + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept') + ] + concept_db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + column_info = ConceptColumnInfo( + namespace=dataset.namespace, name=dataset.dataset_name, path='text') + signal = ConceptScoreSignal( + namespace='test', concept_name='test_concept', embedding='test_embedding') + signal.set_column_info(column_info) + + # Explicitly sync the model with the concept. + model = ConceptModel( + namespace='test', concept_name='test_concept', embedding_name='test_embedding') + model_db.sync(model, column_info) + + scores = cast(list[float], + list(signal.compute(['a new data point', 'in concept', 'not in concept']))) + assert scores[0] > 0 and scores[0] < 1 # 'a new data point' may or may not be in the concept. + assert scores[1] > 0.5 # 'in concept' is in the concept. + assert scores[2] < 0.5 # 'not in concept' is not in the concept. + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +@pytest.mark.parametrize('model_db_cls', ALL_CONCEPT_MODEL_DBS) +def test_concept_model_vector_score(concept_db_cls: Type[ConceptDB], + model_db_cls: Type[ConceptModelDB]) -> None: + concept_db = concept_db_cls() + model_db = model_db_cls(concept_db) + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept') + ] + concept_db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + signal = ConceptScoreSignal( + namespace='test', concept_name='test_concept', embedding='test_embedding') + + # Explicitly sync the model with the concept. + model = ConceptModel( + namespace='test', concept_name='test_concept', embedding_name='test_embedding') + model_db.sync(model, column_info=None) + + vector_store = NumpyVectorStore() + embeddings = np.array([ + EMBEDDING_MAP['in concept'], EMBEDDING_MAP['not in concept'], EMBEDDING_MAP['a new data point'] + ]) + vector_store.add([('1',), ('2',), ('3',)], embeddings) + + scores = cast(list[float], list(signal.vector_compute([('1',), ('2',), ('3',)], vector_store))) + assert scores[0] > 0.5 # '1' is in the concept. + assert scores[1] < 0.5 # '2' is not in the concept. + assert scores[2] > 0 and scores[2] < 1 # '3' may or may not be in the concept. + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +@pytest.mark.parametrize('model_db_cls', ALL_CONCEPT_MODEL_DBS) +def test_concept_model_topk_score(concept_db_cls: Type[ConceptDB], + model_db_cls: Type[ConceptModelDB]) -> None: + concept_db = concept_db_cls() + model_db = model_db_cls(concept_db) + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept') + ] + concept_db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + signal = ConceptScoreSignal( + namespace='test', concept_name='test_concept', embedding='test_embedding') + + # Explicitly sync the model with the concept. + model = ConceptModel( + namespace='test', concept_name='test_concept', embedding_name='test_embedding') + model_db.sync(model, column_info=None) + vector_store = NumpyVectorStore() + vector_store.add([('1',), ('2',), ('3',)], + np.array([[0.1, 0.2, 0.3], [0.1, 0.87, 0.0], [1.0, 0.0, 0.0]])) + + # Compute topk without id restriction. + topk_result = signal.vector_compute_topk(3, vector_store) + expected_result = [('3',), ('1',), ('2',)] + for (id, _), expected_id in zip(topk_result, expected_result): + assert id == expected_id + + # Compute top 1. + topk_result = signal.vector_compute_topk(1, vector_store) + expected_result = [('3',)] + for (id, _), expected_id in zip(topk_result, expected_result): + assert id == expected_id + + # Compute topk with id restriction. + topk_result = signal.vector_compute_topk(3, vector_store, keys=[('1',), ('2',)]) + expected_result = [('1',), ('2',)] + for (id, _), expected_id in zip(topk_result, expected_result): + assert id == expected_id + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +@pytest.mark.parametrize('model_db_cls', ALL_CONCEPT_MODEL_DBS) +def test_concept_model_draft(concept_db_cls: Type[ConceptDB], + model_db_cls: Type[ConceptModelDB]) -> None: + concept_db = concept_db_cls() + model_db = model_db_cls(concept_db) + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + train_data = [ + ExampleIn(label=False, text='not in concept'), + ExampleIn(label=True, text='in concept'), + ExampleIn(label=False, text='a new data point', draft='test_draft'), + ] + concept_db.edit(namespace, concept_name, ConceptUpdate(insert=train_data)) + + signal = ConceptScoreSignal( + namespace='test', concept_name='test_concept', embedding='test_embedding') + draft_signal = ConceptScoreSignal( + namespace='test', concept_name='test_concept', embedding='test_embedding', draft='test_draft') + + # Explicitly sync the model with the concept. + model = ConceptModel( + namespace='test', concept_name='test_concept', embedding_name='test_embedding') + model_db.sync(model, column_info=None) + + vector_store = NumpyVectorStore() + vector_store.add([('1',), ('2',), ('3',)], + np.array([[1.0, 0.0, 0.0], [0.9, 0.1, 0.0], [0.1, 0.9, 0.0]])) + + scores = cast(list[float], list(signal.vector_compute([('1',), ('2',), ('3',)], vector_store))) + assert scores[0] > 0.5 + assert scores[1] > 0.5 + assert scores[2] < 0.5 + + # Make sure the draft signal works. It has different values than the original signal. + vector_store = NumpyVectorStore() + vector_store.add([('1',), ('2',), ('3',)], + np.array([[1.0, 0.0, 0.0], [0.9, 0.1, 0.0], [0.1, 0.2, 0.3]])) + + draft_scores = draft_signal.vector_compute([('1',), ('2',), ('3',)], vector_store) + assert draft_scores != scores + + +def test_concept_score_key() -> None: + signal = ConceptScoreSignal( + namespace='test', concept_name='test_concept', embedding=TestEmbedding.name) + assert signal.key() == 'test/test_concept' + + +@pytest.mark.parametrize('concept_db_cls', ALL_CONCEPT_DBS) +def test_concept_score_compute_signal_key(concept_db_cls: Type[ConceptDB]) -> None: + concept_db = concept_db_cls() + namespace = 'test' + concept_name = 'test_concept' + concept_db.create(namespace=namespace, name=concept_name, type=SignalInputType.TEXT) + + signal = ConceptScoreSignal( + namespace='test', concept_name='test_concept', embedding=TestEmbedding.name) + assert signal.key(is_computed_signal=True) == 'test/test_concept/v0' diff --git a/src/signals/default_signals.py b/src/signals/default_signals.py new file mode 100644 index 0000000000000000000000000000000000000000..c3acd05194ad01d48d13f2f1f542aaf4d5d473e8 --- /dev/null +++ b/src/signals/default_signals.py @@ -0,0 +1,21 @@ +"""Registers all available default signals.""" +from ..embeddings.cohere import Cohere +from ..embeddings.sbert import SBERT +from .concept_scorer import ConceptScoreSignal +from .pii import PIISignal +from .signal import register_signal +from .text_statistics import TextStatisticsSignal + + +def register_default_signals() -> None: + """Register all the default signals.""" + # Concepts. + register_signal(ConceptScoreSignal) + + # Text. + register_signal(PIISignal) + register_signal(TextStatisticsSignal) + + # Embeddings. + register_signal(Cohere) + register_signal(SBERT) diff --git a/src/signals/pii.py b/src/signals/pii.py new file mode 100644 index 0000000000000000000000000000000000000000..a3eebdf85c08f399586f8378f85c864e36fce30f --- /dev/null +++ b/src/signals/pii.py @@ -0,0 +1,40 @@ +"""Compute text statistics for a document.""" +import re +from typing import Iterable, Optional + +from typing_extensions import override + +from ..data.dataset_utils import lilac_span +from ..schema import Field, Item, RichData, SignalInputType, field +from .signal import TextSignal + +EMAILS_KEY = 'emails' +NUM_EMAILS_KEY = 'num_emails' + +# This regex is a fully RFC 5322 regex for email addresses. +# https://uibakery.io/regex-library/email-regex-python +EMAIL_REGEX = re.compile( + "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])", + re.IGNORECASE) + + +class PIISignal(TextSignal): + """Find personally identifiable information (emails, phone numbers, etc).""" + name = 'pii' + display_name = 'Personal Information (PII)' + + input_type = SignalInputType.TEXT + compute_type = SignalInputType.TEXT + + @override + def fields(self) -> Field: + return field(fields={EMAILS_KEY: ['string_span'], NUM_EMAILS_KEY: 'int32'}) + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text in data: + if not isinstance(text, str): + yield None + continue + emails = [lilac_span(m.start(0), m.end(0)) for m in EMAIL_REGEX.finditer(text)] + yield {EMAILS_KEY: emails, NUM_EMAILS_KEY: len(emails)} diff --git a/src/signals/pii_test.py b/src/signals/pii_test.py new file mode 100644 index 0000000000000000000000000000000000000000..0ae080c3d30663b81d3f20d742482f8518e6976f --- /dev/null +++ b/src/signals/pii_test.py @@ -0,0 +1,32 @@ +"""Test the PII signal.""" + +from ..schema import field +from .pii import EMAILS_KEY, NUM_EMAILS_KEY, PIISignal +from .splitters.text_splitter_test_utils import text_to_expected_spans + + +def test_pii_fields() -> None: + signal = PIISignal() + assert signal.fields() == field(fields={EMAILS_KEY: ['string_span'], NUM_EMAILS_KEY: 'int32'}) + + +def test_pii_compute() -> None: + signal = PIISignal() + + text = 'This is an email nik@test.com. pii@gmail.com are where emails are read.' + emails = list(signal.compute([text])) + + expected_spans = text_to_expected_spans(text, ['nik@test.com', 'pii@gmail.com']) + + assert emails == [{EMAILS_KEY: expected_spans, NUM_EMAILS_KEY: 2}] + + +def test_pii_case_insensitive() -> None: + signal = PIISignal() + + text = 'These are some emails: NIK@Test.com. pII@gmAIL.COM are where emails are read.' + emails = list(signal.compute([text])) + + expected_spans = text_to_expected_spans(text, ['NIK@Test.com', 'pII@gmAIL.COM']) + + assert emails == [{EMAILS_KEY: expected_spans, NUM_EMAILS_KEY: 2}] diff --git a/src/signals/semantic_similarity.py b/src/signals/semantic_similarity.py new file mode 100644 index 0000000000000000000000000000000000000000..b22253b27e43e04805793857fdbfb8625f139e8e --- /dev/null +++ b/src/signals/semantic_similarity.py @@ -0,0 +1,75 @@ +"""A signal to compute semantic search for a document.""" +from typing import Any, Iterable, Optional, Union + +import numpy as np +from scipy.interpolate import interp1d +from typing_extensions import override + +from ..embeddings.embedding import EmbedFn, get_embed_fn +from ..embeddings.vector_store import VectorStore +from ..schema import Field, Item, RichData, VectorKey, field +from .signal import TextEmbeddingModelSignal + + +class SemanticSimilaritySignal(TextEmbeddingModelSignal): + """Compute semantic similarity for a query and a document. + +
This is done by embedding the query with the same embedding as the document and computing a + a similarity score between them. + """ + name = 'semantic_similarity' + display_name = 'Semantic Similarity' + + query: str + + _embed_fn: EmbedFn + # Dot products are in the range [-1, 1]. We want to map this to [0, 1] for the similarity score + # with a slight bias towards 1 since dot product of <0.2 is not really relevant. + _interpolate_fn = interp1d([-1, 0.2, 1], [0, 0.5, 1]) + _search_text_embedding: Optional[np.ndarray] = None + + def __init__(self, query: Union[str, bytes], embedding: str, **kwargs: Any): + if isinstance(query, bytes): + raise ValueError('Image queries are not yet supported for SemanticSimilarity.') + + super().__init__(query=query, embedding=embedding, **kwargs) + + # TODO(nsthorat): The embedding cls might have arguments. This needs to be resolved. + self._embed_fn = get_embed_fn(embedding) + + @override + def fields(self) -> Field: + return field('float32') + + def _get_search_embedding(self) -> np.ndarray: + """Return the embedding for the search text.""" + if self._search_text_embedding is None: + self._search_text_embedding = self._embed_fn([self.query])[0].reshape(-1) + + return self._search_text_embedding + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + text_embeddings = self._embed_fn(data) + similarities = text_embeddings.dot(self._get_search_embedding()).reshape(-1) + return similarities.tolist() + + @override + def vector_compute(self, keys: Iterable[VectorKey], + vector_store: VectorStore) -> Iterable[Optional[Item]]: + text_embeddings = vector_store.get(keys) + similarities = text_embeddings.dot(self._get_search_embedding()).reshape(-1) + # Clip the similarities since float precision can cause these to be barely outside the range and + # throw an exception with interp1d. + similarities = np.clip(similarities, -1., 1.) + return self._interpolate_fn(similarities).tolist() + + @override + def vector_compute_topk( + self, + topk: int, + vector_store: VectorStore, + keys: Optional[Iterable[VectorKey]] = None) -> list[tuple[VectorKey, Optional[Item]]]: + query = self._get_search_embedding() + topk_keys = [key for key, _ in vector_store.topk(query, topk, keys)] + return list(zip(topk_keys, self.vector_compute(topk_keys, vector_store))) diff --git a/src/signals/semantic_similarity_test.py b/src/signals/semantic_similarity_test.py new file mode 100644 index 0000000000000000000000000000000000000000..abfd4085825749a44ae6d2d1bca7556682f656c0 --- /dev/null +++ b/src/signals/semantic_similarity_test.py @@ -0,0 +1,95 @@ +"""Test the semantic search signal.""" + +from typing import Iterable, cast + +import numpy as np +import pytest +from pytest import approx +from pytest_mock import MockerFixture +from typing_extensions import override + +from ..data.dataset_utils import lilac_embedding +from ..embeddings.vector_store import VectorStore +from ..schema import Item, RichData, VectorKey +from .semantic_similarity import SemanticSimilaritySignal +from .signal import TextEmbeddingSignal, clear_signal_registry, register_signal + +EMBEDDINGS: dict[VectorKey, list[float]] = { + ('1',): [1.0, 0.0, 0.0], + ('2',): [0.9, 0.1, 0.0], + ('3',): [0.0, 0.0, 1.0] +} + +STR_EMBEDDINGS: dict[str, list[float]] = { + 'hello': [1.0, 0.0, 0.0], + 'hello world': [0.9, 0.1, 0.0], + 'far': [0.0, 0.0, 1.0] +} + + +class TestVectorStore(VectorStore): + """A test vector store with fixed embeddings.""" + + @override + def keys(self) -> list[VectorKey]: + return [] + + @override + def add(self, keys: list[VectorKey], embeddings: np.ndarray) -> None: + # We fix the vectors for the test vector store. + pass + + @override + def get(self, keys: Iterable[VectorKey]) -> np.ndarray: + keys = keys or [] + return np.array([EMBEDDINGS[row_id] for row_id in keys]) + + +class TestEmbedding(TextEmbeddingSignal): + """A test embed function.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Item]: + """Embed the examples, use a hashmap to the vector for simplicity.""" + for example in data: + yield [lilac_embedding(0, len(example), np.array(STR_EMBEDDINGS[cast(str, example)]))] + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_signal(TestEmbedding) + + # Unit test runs. + yield + + # Teardown. + clear_signal_registry() + + +def test_semantic_similarity_compute_keys(mocker: MockerFixture) -> None: + vector_store = TestVectorStore() + + embed_mock = mocker.spy(TestEmbedding, 'compute') + + signal = SemanticSimilaritySignal(query='hello', embedding=TestEmbedding.name) + scores = list(signal.vector_compute([('1',), ('2',), ('3',)], vector_store)) + + # Embeddings should be called only 1 time for the search. + assert embed_mock.call_count == 1 + + assert scores == [1.0, approx(0.938, 1e-3), approx(0.417, 1e-3)] + + +def test_semantic_similarity_compute_data(mocker: MockerFixture) -> None: + embed_mock = mocker.spy(TestEmbedding, 'compute') + + signal = SemanticSimilaritySignal(query='hello', embedding=TestEmbedding.name) + # Compute over the text. + scores = list(signal.compute(STR_EMBEDDINGS.keys())) + + # Embeddings should be called only 2 times, once for the search, once for the query itself. + assert embed_mock.call_count == 2 + + assert scores == [1.0, 0.9, 0.0] diff --git a/src/signals/signal.py b/src/signals/signal.py new file mode 100644 index 0000000000000000000000000000000000000000..87bfae6e06811a83726d728490f4160639817c71 --- /dev/null +++ b/src/signals/signal.py @@ -0,0 +1,315 @@ +"""Interface for implementing a signal.""" + +import abc +from typing import Any, ClassVar, Iterable, Optional, Sequence, Type, TypeVar, Union + +from pydantic import BaseModel, Extra, validator +from pydantic.fields import ModelField +from typing_extensions import override + +from ..embeddings.vector_store import VectorStore +from ..schema import Field, Item, RichData, SignalInputType, VectorKey, field + +EMBEDDING_KEY = 'embedding' + + +class Signal(abc.ABC, BaseModel): + """Interface for signals to implement. A signal can score documents and a dataset column.""" + # ClassVars do not get serialized with pydantic. + name: ClassVar[str] + # The display name is just used for rendering in the UI. + display_name: ClassVar[Optional[str]] + + signal_type: ClassVar[Type['Signal']] + # The input type is used to populate the UI for signals that require other signals. For example, + # if a signal is an TextEmbeddingModelSignal, it computes over embeddings, but it's input type + # will be text. + input_type: ClassVar[SignalInputType] + # The compute type defines what should be passed to compute(). + compute_type: ClassVar[SignalInputType] + + # The signal_name will get populated in init automatically from the class name so it gets + # serialized and the signal author doesn't have to define both the static property and the field. + signal_name: Optional[str] + + class Config: + underscore_attrs_are_private = True + extra = Extra.forbid + + @staticmethod + def schema_extra(schema: dict[str, Any], signal: Type['Signal']) -> None: + """Add the title to the schema from the display name and name. + + Pydantic defaults this to the class name. + """ + if hasattr(signal, 'display_name'): + schema['title'] = signal.display_name + if hasattr(signal, 'name'): + schema['properties']['signal_name']['enum'] = [signal.name] + + @validator('signal_name', pre=True, always=True) + def validate_signal_name(cls, signal_name: str) -> str: + """Return the static name when the signal name hasn't yet been set.""" + # When it's already been set from JSON, just return it. + if signal_name: + return signal_name + + if 'name' not in cls.__dict__: + raise ValueError('Signal attribute "name" must be defined.') + + return cls.name + + @abc.abstractmethod + def fields(self) -> Field: + """Return the fields schema for this signal. + + Returns + A Field object that describes the schema of the signal. + """ + pass + + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + """Compute the signal for an iterable of documents or images. + + Args: + data: An iterable of rich data to compute the signal over. + + Returns + An iterable of items. Sparse signals should return "None" for skipped inputs. + """ + raise NotImplementedError + + def vector_compute(self, keys: Iterable[VectorKey], + vector_store: VectorStore) -> Iterable[Optional[Item]]: + """Compute the signal for an iterable of keys that point to documents or images. + + Args: + keys: An iterable of value ids (at row-level or lower) to lookup precomputed embeddings. + vector_store: The vector store to lookup pre-computed embeddings. + + Returns + An iterable of items. Sparse signals should return "None" for skipped inputs. + """ + raise NotImplementedError + + def vector_compute_topk( + self, + topk: int, + vector_store: VectorStore, + keys: Optional[Iterable[VectorKey]] = None) -> Sequence[tuple[VectorKey, Optional[Item]]]: + """Return signal results only for the top k documents or images. + + Signals decide how to rank each document/image in the dataset, usually by a similarity score + obtained via the vector store. + + Args: + topk: The number of items to return, ranked by the signal. + vector_store: The vector store to lookup pre-computed embeddings. + keys: Optional iterable of row ids to restrict the search to. + + Returns + A list of (key, signal_output) tuples containing the "topk" items. Sparse signals should + return "None" for skipped inputs. + """ + raise NotImplementedError + + def key(self, is_computed_signal: Optional[bool] = False) -> str: + """Get the key for a signal. + + This is used to make sure signals with multiple arguments do not collide. + + NOTE: Overriding this method is sensitive. If you override it, make sure that it is globally + unique. It will be used as the dictionary key for enriched values. + + Args: + is_computed_signal: True when the signal is computed over the column and written to + disk. False when the signal is used as a preview UDF. + """ + args_dict = self.dict(exclude_unset=True, exclude_defaults=True) + # If a user explicitly defines a signal name for whatever reason, remove it as it's redundant. + if 'signal_name' in args_dict: + del args_dict['signal_name'] + + return self.name + _args_key_from_dict(args_dict) + + def setup(self) -> None: + """Setup the signal.""" + pass + + def teardown(self) -> None: + """Tears down the signal.""" + pass + + +def _args_key_from_dict(args_dict: dict[str, Any]) -> str: + args = None + args_list: list[str] = [] + for k, v in args_dict.items(): + if v: + args_list.append(f'{k}={v}') + + args = ','.join(args_list) + return '' if not args_list else f'({args})' + + +class SignalTypeEnum(str): + """A class that represents a string enum for a signal type. + + This allows us to populate the JSON schema enum field in the UI. + """ + signal_type: ClassVar[Type[Signal]] + + @classmethod + def __modify_schema__(cls, field_schema: dict[str, Any], field: Optional[ModelField]) -> None: + if field: + field_schema['enum'] = [x.name for x in get_signals_by_type(cls.signal_type)] + return None + + +class TextSplitterSignal(Signal): + """An interface for signals that compute over text.""" + input_type = SignalInputType.TEXT + compute_type = SignalInputType.TEXT + + @override + def fields(self) -> Field: + return field(fields=['string_span']) + + +class TextSplitterEnum(SignalTypeEnum): + """A string enum that represents a text splitter signal.""" + signal_type = TextSplitterSignal + + +# Signal base classes, used for inferring the dependency chain required for computing a signal. +class TextSignal(Signal): + """An interface for signals that compute over text.""" + input_type = SignalInputType.TEXT + compute_type = SignalInputType.TEXT + + @override + def key(self, is_computed_signal: Optional[bool] = False) -> str: + args_dict = self.dict(exclude_unset=True, exclude_defaults=True) + if 'signal_name' in args_dict: + del args_dict['signal_name'] + return self.name + _args_key_from_dict(args_dict) + + +class TextEmbeddingSignal(TextSignal): + """An interface for signals that compute embeddings for text.""" + input_type = SignalInputType.TEXT + compute_type = SignalInputType.TEXT + + _split = True + + def __init__(self, split: bool = True, **kwargs: Any): + super().__init__(**kwargs) + self._split = split + + @override + def fields(self) -> Field: + """NOTE: Override this method at your own risk if you want to add extra metadata. + + Embeddings should not come with extra metadata. + """ + return field(fields=[field('string_span', fields={EMBEDDING_KEY: 'embedding'})]) + + +class TextEmbeddingEnum(SignalTypeEnum): + """A string enum that represents a text embedding signal.""" + signal_type = TextEmbeddingSignal + + +class TextEmbeddingModelSignal(TextSignal): + """An interface for signals that take embeddings and produce items.""" + input_type = SignalInputType.TEXT + # compute() takes embeddings, while it operates over text fields by transitively computing splits + # and embeddings. + compute_type = SignalInputType.TEXT_EMBEDDING + + embedding: TextEmbeddingEnum + _embedding_signal: TextEmbeddingSignal + + def __init__(self, **kwargs: Any): + super().__init__(**kwargs) + + # Validate the embedding signal is registered and the correct type. + # TODO(nsthorat): Allow arguments passed to the embedding signal. + self._embedding_signal = get_signal_by_type(self.embedding, TextEmbeddingSignal)() + + def get_embedding_signal(self) -> TextEmbeddingSignal: + """Return the embedding signal.""" + return self._embedding_signal + + @override + def key(self, is_computed_signal: Optional[bool] = False) -> str: + # NOTE: The embedding and split already exists in the path structure. This means we do not + # need to provide the signal names as part of the key, which still guarantees uniqueness. + + args_dict = self.dict(exclude_unset=True) + if 'signal_name' in args_dict: + del args_dict['signal_name'] + del args_dict['embedding'] + return self.name + _args_key_from_dict(args_dict) + + +Tsignal = TypeVar('Tsignal', bound=Signal) + + +def get_signal_by_type(signal_name: str, signal_type: Type[Tsignal]) -> Type[Tsignal]: + """Return a signal class by name and signal type.""" + if signal_name not in SIGNAL_REGISTRY: + raise ValueError(f'Signal "{signal_name}" not found in the registry') + + signal_cls = SIGNAL_REGISTRY[signal_name] + if not issubclass(signal_cls, signal_type): + raise ValueError(f'"{signal_name}" is a `{signal_cls.__name__}`, ' + f'which is not a subclass of `{signal_type.__name__}`.') + return signal_cls + + +def get_signals_by_type(signal_type: Type[Tsignal]) -> list[Type[Tsignal]]: + """Return all signals that match a signal type.""" + signal_clses: list[Type[Tsignal]] = [] + for signal_cls in SIGNAL_REGISTRY.values(): + if issubclass(signal_cls, signal_type): + signal_clses.append(signal_cls) + return signal_clses + + +SIGNAL_REGISTRY: dict[str, Type[Signal]] = {} + + +def register_signal(signal_cls: Type[Signal]) -> None: + """Register a signal in the global registry.""" + if signal_cls.name in SIGNAL_REGISTRY: + raise ValueError(f'Signal "{signal_cls.name}" has already been registered!') + + SIGNAL_REGISTRY[signal_cls.name] = signal_cls + + +def get_signal_cls(signal_name: str) -> Type[Signal]: + """Return a registered signal given the name in the registry.""" + if signal_name not in SIGNAL_REGISTRY: + raise ValueError(f'Signal "{signal_name}" not found in the registry') + + return SIGNAL_REGISTRY[signal_name] + + +def resolve_signal(signal: Union[dict, Signal]) -> Signal: + """Resolve a generic signal base class to a specific signal class.""" + if isinstance(signal, Signal): + # The signal config is already parsed. + return signal + + signal_name = signal.get('signal_name') + if not signal_name: + raise ValueError('"signal_name" needs to be defined in the json dict.') + + signal_cls = get_signal_cls(signal_name) + return signal_cls(**signal) + + +def clear_signal_registry() -> None: + """Clear the signal registry.""" + SIGNAL_REGISTRY.clear() diff --git a/src/signals/signal_test.py b/src/signals/signal_test.py new file mode 100644 index 0000000000000000000000000000000000000000..25d9db14c3c00e4a0e93c7d897dfee4d9d1a935a --- /dev/null +++ b/src/signals/signal_test.py @@ -0,0 +1,151 @@ +"""Test signal base class.""" +from typing import Iterable, Optional + +import pytest +from typing_extensions import override + +from ..embeddings.vector_store import VectorStore +from ..schema import Field, Item, RichData, SignalInputType, VectorKey, field +from .signal import ( + Signal, + TextEmbeddingModelSignal, + TextEmbeddingSignal, + TextSplitterSignal, + clear_signal_registry, + get_signal_by_type, + get_signal_cls, + get_signals_by_type, + register_signal, + resolve_signal, +) + + +class TestSignal(Signal): + """A test signal.""" + + # Pydantic fields + name = 'test_signal' + input_type = SignalInputType.TEXT + + query: str + + @override + def fields(self) -> Field: + return field('float32') + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + del data + return [] + + +class TestTextSplitter(TextSplitterSignal): + """A test text splitter.""" + name = 'test_splitter' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + del data + return [] + + +class TestTextEmbedding(TextEmbeddingSignal): + """A test text embedding.""" + name = 'test_embedding' + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + del data + return [] + + +class TestTextEmbeddingModelSignal(TextEmbeddingModelSignal): + """A test text embedding model.""" + name = 'test_embedding_model' + + @override + def fields(self) -> Field: + return field('float32') + + @override + def vector_compute(self, keys: Iterable[VectorKey], vector_store: VectorStore) -> Iterable[Item]: + # The signal just sums the values of the embedding. + del keys, vector_store + return [] + + +@pytest.fixture(scope='module', autouse=True) +def setup_teardown() -> Iterable[None]: + # Setup. + register_signal(TestSignal) + register_signal(TestTextSplitter) + register_signal(TestTextEmbedding) + register_signal(TestTextEmbeddingModelSignal) + + # Unit test runs. + yield + + # Teardown. + clear_signal_registry() + + +def test_signal_serialization() -> None: + signal = TestSignal(query='test') + + # The class variables should not be included. + assert signal.dict() == {'signal_name': 'test_signal', 'query': 'test'} + + +def test_get_signal_cls() -> None: + """Test getting a signal.""" + assert TestSignal == get_signal_cls('test_signal') + + +def test_resolve_signal() -> None: + """Test resolving a signal.""" + test_signal = TestSignal(query='hello') + + # Signals pass through. + assert resolve_signal(test_signal) == test_signal + + # Dicts resolve to the base class. + assert resolve_signal(test_signal.dict()) == test_signal + + +def test_get_signal_by_type() -> None: + assert get_signal_by_type(TestTextSplitter.name, TextSplitterSignal) == TestTextSplitter + assert get_signal_by_type(TestTextEmbedding.name, TextEmbeddingSignal) == TestTextEmbedding + + +def test_get_signal_by_type_validation() -> None: + with pytest.raises(ValueError, match='Signal "invalid_signal" not found in the registry'): + get_signal_by_type('invalid_signal', TextSplitterSignal) + + with pytest.raises( + ValueError, match=f'"{TestTextSplitter.name}" is a `{TestTextSplitter.__name__}`'): + get_signal_by_type(TestTextSplitter.name, TextEmbeddingSignal) + + +def test_get_signals_by_type() -> None: + assert get_signals_by_type(TextSplitterSignal) == [TestTextSplitter] + assert get_signals_by_type(TextEmbeddingSignal) == [TestTextEmbedding] + + +def test_signal_type_enum() -> None: + model_signal = TestTextEmbeddingModelSignal(embedding='test_embedding') + schema_properties = model_signal.schema()['properties'] + assert schema_properties['embedding']['enum'] == [TestTextEmbedding.name] + + +class TestSignalNoDisplayName(Signal): + name = 'signal_no_name' + + +class TestSignalDisplayName(Signal): + name = 'signal_display_name' + display_name = 'test display name' + + +def test_signal_title_schema() -> None: + assert TestSignalNoDisplayName.schema()['title'] == TestSignalNoDisplayName.__name__ + assert TestSignalDisplayName.schema()['title'] == 'test display name' diff --git a/src/signals/splitters/__init__.py b/src/signals/splitters/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/signals/splitters/__pycache__/__init__.cpython-39.pyc b/src/signals/splitters/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1de7583689dcfbefec2c9b535e4c05dd18f3aef3 Binary files /dev/null and b/src/signals/splitters/__pycache__/__init__.cpython-39.pyc differ diff --git a/src/signals/splitters/__pycache__/chunk_splitter.cpython-39.pyc b/src/signals/splitters/__pycache__/chunk_splitter.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..16bd1c7854a6812d2212fabe1a939e370d57ee56 Binary files /dev/null and b/src/signals/splitters/__pycache__/chunk_splitter.cpython-39.pyc differ diff --git a/src/signals/splitters/__pycache__/chunk_splitter_test.cpython-39-pytest-7.3.1.pyc b/src/signals/splitters/__pycache__/chunk_splitter_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e5b612b4e279c6814e5442b34397e02283c38a9d Binary files /dev/null and b/src/signals/splitters/__pycache__/chunk_splitter_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/splitters/__pycache__/sentence_splitter_spacy.cpython-39.pyc b/src/signals/splitters/__pycache__/sentence_splitter_spacy.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c51864f90fbf0cb35ba9a660ba460fe8d3e17487 Binary files /dev/null and b/src/signals/splitters/__pycache__/sentence_splitter_spacy.cpython-39.pyc differ diff --git a/src/signals/splitters/__pycache__/sentence_splitter_spacy_test.cpython-39-pytest-7.2.0.pyc b/src/signals/splitters/__pycache__/sentence_splitter_spacy_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf321610b733577b29eedf3e5286cc3e120bdaf1 Binary files /dev/null and b/src/signals/splitters/__pycache__/sentence_splitter_spacy_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/signals/splitters/__pycache__/spacy_utils.cpython-39.pyc b/src/signals/splitters/__pycache__/spacy_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..814b39e77d54cd9ab4c766c046c11a4bf206d911 Binary files /dev/null and b/src/signals/splitters/__pycache__/spacy_utils.cpython-39.pyc differ diff --git a/src/signals/splitters/__pycache__/splitter.cpython-39.pyc b/src/signals/splitters/__pycache__/splitter.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e1eb08c2c665de0f3b44a45da07948b2638ece84 Binary files /dev/null and b/src/signals/splitters/__pycache__/splitter.cpython-39.pyc differ diff --git a/src/signals/splitters/__pycache__/splitter_registry.cpython-39.pyc b/src/signals/splitters/__pycache__/splitter_registry.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..62b7d4c5f460f7f76c80a9ae04fdca0679dd0cba Binary files /dev/null and b/src/signals/splitters/__pycache__/splitter_registry.cpython-39.pyc differ diff --git a/src/signals/splitters/__pycache__/text_splitter.cpython-39.pyc b/src/signals/splitters/__pycache__/text_splitter.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8bb42932e76e1eb330798a88aa1a9bb2decc8397 Binary files /dev/null and b/src/signals/splitters/__pycache__/text_splitter.cpython-39.pyc differ diff --git a/src/signals/splitters/__pycache__/text_splitter_spacy.cpython-39.pyc b/src/signals/splitters/__pycache__/text_splitter_spacy.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..77a7f895619fafa657bd363779e332ec5e888c9f Binary files /dev/null and b/src/signals/splitters/__pycache__/text_splitter_spacy.cpython-39.pyc differ diff --git a/src/signals/splitters/__pycache__/text_splitter_spacy_test.cpython-39-pytest-7.2.0.pyc b/src/signals/splitters/__pycache__/text_splitter_spacy_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a6f5837c6f5eeb461fa2e7ab376941cd7c6d248e Binary files /dev/null and b/src/signals/splitters/__pycache__/text_splitter_spacy_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/signals/splitters/__pycache__/text_splitter_spacy_test.cpython-39-pytest-7.2.2.pyc b/src/signals/splitters/__pycache__/text_splitter_spacy_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..39dc2058e969b6fdbd6c31fc3703c5f2f808baf9 Binary files /dev/null and b/src/signals/splitters/__pycache__/text_splitter_spacy_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/signals/splitters/__pycache__/text_splitter_spacy_test.cpython-39-pytest-7.3.1.pyc b/src/signals/splitters/__pycache__/text_splitter_spacy_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..57cc56ec6b1491d7f49f4a14e26943bf3b1550b8 Binary files /dev/null and b/src/signals/splitters/__pycache__/text_splitter_spacy_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/splitters/__pycache__/text_splitter_test_utils.cpython-39.pyc b/src/signals/splitters/__pycache__/text_splitter_test_utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9d43e145014976c005c4fb2564edd3138887e78a Binary files /dev/null and b/src/signals/splitters/__pycache__/text_splitter_test_utils.cpython-39.pyc differ diff --git a/src/signals/splitters/__pycache__/text_splitter_test_utils_test.cpython-39-pytest-7.2.0.pyc b/src/signals/splitters/__pycache__/text_splitter_test_utils_test.cpython-39-pytest-7.2.0.pyc new file mode 100644 index 0000000000000000000000000000000000000000..63e323e841e0be5d423a209149ec9ceec526f7be Binary files /dev/null and b/src/signals/splitters/__pycache__/text_splitter_test_utils_test.cpython-39-pytest-7.2.0.pyc differ diff --git a/src/signals/splitters/__pycache__/text_splitter_test_utils_test.cpython-39-pytest-7.2.2.pyc b/src/signals/splitters/__pycache__/text_splitter_test_utils_test.cpython-39-pytest-7.2.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8d76c174e07066ac8ee95372df7ea27851b5fae Binary files /dev/null and b/src/signals/splitters/__pycache__/text_splitter_test_utils_test.cpython-39-pytest-7.2.2.pyc differ diff --git a/src/signals/splitters/__pycache__/text_splitter_test_utils_test.cpython-39-pytest-7.3.1.pyc b/src/signals/splitters/__pycache__/text_splitter_test_utils_test.cpython-39-pytest-7.3.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76e849c443509469ee781361062efcef4c87d6d0 Binary files /dev/null and b/src/signals/splitters/__pycache__/text_splitter_test_utils_test.cpython-39-pytest-7.3.1.pyc differ diff --git a/src/signals/splitters/chunk_splitter.py b/src/signals/splitters/chunk_splitter.py new file mode 100644 index 0000000000000000000000000000000000000000..12753b6585e3332f548e2ed5f6608781838b7b79 --- /dev/null +++ b/src/signals/splitters/chunk_splitter.py @@ -0,0 +1,198 @@ +"""Implementation of splitting text that looks at characters. + +Recursively tries to split by different characters to find one that works. + +The implementation below is forked from the LangChain project with the MIT license below. +See `RecursiveCharacterTextSplitter` in +https://github.com/hwchase17/langchain/blob/master/langchain/text_splitter.py +""" + +# The MIT License + +# Copyright (c) Harrison Chase + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +from typing import Any, Callable, Iterable, Optional + +from pydantic import validator +from typing_extensions import override + +from ...data.dataset_utils import lilac_span +from ...schema import Item, RichData +from ...utils import log +from ..signal import TextSplitterSignal + +TextChunk = tuple[str, tuple[int, int]] + +DEFAULT_SEPARATORS = ['\n\n', '\n', ' ', ''] +CHUNK_SIZE = 400 +CHUNK_OVERLAP = 50 + + +class ChunkSplitter(TextSplitterSignal): + """Recursively split documents by different characters to find one that works.""" + + name = 'chunk' + display_name = 'Chunk Splitter' + + chunk_size: int = CHUNK_SIZE + chunk_overlap: int = CHUNK_OVERLAP + separators: list[str] = DEFAULT_SEPARATORS + + _length_function: Callable[[str], int] = len + + @validator('chunk_overlap') + def check_overlap_smaller_than_chunk(cls, chunk_overlap: int, values: dict[str, Any]) -> int: + """Check that the chunk overlap is smaller than the chunk size.""" + chunk_size: int = values['chunk_size'] + if chunk_overlap > chunk_size: + raise ValueError(f'Got a larger chunk overlap ({chunk_overlap}) than chunk size ' + f'({chunk_size}), should be smaller.') + return chunk_overlap + + @validator('separators') + def check_separators_are_strings(cls, separators: list[str]) -> list[str]: + """Check that the separators are strings.""" + separators = list(separators) or DEFAULT_SEPARATORS + for sep in separators: + if not isinstance(sep, str): + raise ValueError(f'Got separator {sep} that is not a string.') + return separators + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text in data: + if not isinstance(text, str): + yield None + continue + + chunks = split_text(text, self.chunk_size, self.chunk_overlap, self.separators, + self._length_function) + if not chunks: + yield None + continue + + yield [lilac_span(start, end) for _, (start, end) in chunks] + + +def _sep_split(text: str, separator: str) -> list[TextChunk]: + if separator == '': + # We need to split by char. + return [(letter, (i, i + 1)) for i, letter in enumerate(text)] + + offset = 0 + chunks: list[TextChunk] = [] + end_index = text.find(separator, offset) + + while end_index >= 0: + chunks.append((text[offset:end_index], (offset, end_index))) + offset = end_index + len(separator) + end_index = text.find(separator, offset) + + # Append the last chunk. + chunks.append((text[offset:], (offset, len(text)))) + + return chunks + + +def split_text(text: str, + chunk_size: int = CHUNK_SIZE, + chunk_overlap: int = CHUNK_OVERLAP, + separators: list[str] = DEFAULT_SEPARATORS, + length_function: Callable[[str], int] = len) -> list[TextChunk]: + """Split incoming text and return chunks.""" + + def _merge_splits(splits: Iterable[TextChunk], separator: str) -> list[TextChunk]: + # We now want to combine these smaller pieces into medium size + # chunks to send to the LLM. + separator_len = length_function(separator) + + docs: list[TextChunk] = [] + current_doc: list[TextChunk] = [] + total = 0 + for chunk in splits: + text_chunk, _ = chunk + _len = length_function(text_chunk) + if (total + _len + (separator_len if len(current_doc) > 0 else 0) > chunk_size): + if total > chunk_size: + log(f'Created a chunk of size {total}, ' + f'which is longer than the specified {chunk_size}') + if len(current_doc) > 0: + doc = _join_chunks(current_doc, separator) + if doc is not None: + docs.append(doc) + # Keep on popping if: + # - we have a larger chunk than in the chunk overlap + # - or if we still have any chunks and the length is long + while total > chunk_overlap or ( + total + _len + + (separator_len if len(current_doc) > 0 else 0) > chunk_size and total > 0): + total -= length_function(current_doc[0][0]) + ( + separator_len if len(current_doc) > 1 else 0) + current_doc = current_doc[1:] + current_doc.append(chunk) + total += _len + (separator_len if len(current_doc) > 1 else 0) + doc = _join_chunks(current_doc, separator) + if doc is not None: + docs.append(doc) + return docs + + final_chunks: list[TextChunk] = [] + # Get appropriate separator to use + separator = separators[-1] + for _s in separators: + if _s == '': + separator = _s + break + if _s in text: + separator = _s + break + # Now that we have the separator, split the text. + splits = _sep_split(text, separator) + # Now go merging things, recursively splitting longer texts. + good_splits: list[TextChunk] = [] + for chunk in splits: + text_chunk, (start, _) = chunk + if length_function(text_chunk) < chunk_size: + good_splits.append(chunk) + else: + if good_splits: + merged_text = _merge_splits(good_splits, separator) + final_chunks.extend(merged_text) + good_splits = [] + other_chunks = split_text(text_chunk, chunk_size, chunk_overlap, separators, length_function) + # Adjust the offsets of the other chunks. + other_chunks = [(t, (s + start, e + start)) for t, (s, e) in other_chunks] + final_chunks.extend(other_chunks) + if good_splits: + merged_text = _merge_splits(good_splits, separator) + final_chunks.extend(merged_text) + return final_chunks + + +def _join_chunks(chunks: list[TextChunk], separator: str) -> Optional[TextChunk]: + text = separator.join([text for text, _ in chunks]) + text = text.strip() + if text == '': + return None + + _, (first_span_start, _) = chunks[0] + _, (_, last_span_end) = chunks[-1] + return (text, (first_span_start, last_span_end)) diff --git a/src/signals/splitters/chunk_splitter_test.py b/src/signals/splitters/chunk_splitter_test.py new file mode 100644 index 0000000000000000000000000000000000000000..ce414814c0114d6754633c2f83ad898d82e8d024 --- /dev/null +++ b/src/signals/splitters/chunk_splitter_test.py @@ -0,0 +1,43 @@ +"""Tests the chunk splitter.""" + +from .chunk_splitter import ChunkSplitter +from .text_splitter_test_utils import spans_to_text, text_to_expected_spans + + +def test_paragraphs_no_overlap() -> None: + signal = ChunkSplitter(chunk_size=12, chunk_overlap=0) + text = 'Hello.\n\nThis will get split.\n\nThe sentence\n\nA.\n\nB.\n\nC.' + split_items = list(signal.compute([text])) + + # "This will get split" should split in 2 chunks, and "A.\n\nB.\n\nC." should be 1 chunk. + expected_spans = text_to_expected_spans( + text, ['Hello.', 'This will', 'get split.', 'The sentence', 'A.\n\nB.\n\nC.']) + assert split_items == [expected_spans] + + +def test_single_world_is_too_long_no_overlap() -> None: + signal = ChunkSplitter(chunk_size=6, chunk_overlap=0) + text = 'ThisIsASingleWordThatIsTooLong' + split_items = list(signal.compute([text])) + + expected_spans = text_to_expected_spans(text, ['ThisIs', 'ASingl', 'eWordT', 'hatIsT', 'ooLong']) + assert split_items == [expected_spans] + + +def test_newlines_with_overlap() -> None: + signal = ChunkSplitter(chunk_size=12, chunk_overlap=5) + text = 'Hello.\n\nWorld.\n\nThis will get split.' + spans = list(signal.compute([text]))[0] + + expected_chunks = ['Hello.', 'World.', 'This will', 'will get', 'get split.'] + assert spans_to_text(text, spans) == expected_chunks + + +def test_serialization() -> None: + signal = ChunkSplitter(chunk_size=12, chunk_overlap=5) + assert signal.dict() == { + 'signal_name': 'chunk', + 'chunk_size': 12, + 'chunk_overlap': 5, + 'separators': ['\n\n', '\n', ' ', ''] + } diff --git a/src/signals/splitters/text_splitter_spacy.py b/src/signals/splitters/text_splitter_spacy.py new file mode 100644 index 0000000000000000000000000000000000000000..59b7e345e49fcfce23101c0359caf750025072ea --- /dev/null +++ b/src/signals/splitters/text_splitter_spacy.py @@ -0,0 +1,43 @@ +"""Text splitters using spaCy.""" +from typing import Any, Iterable, Optional + +import spacy +from spacy import Language +from typing_extensions import override + +from ...data.dataset_utils import lilac_span +from ...schema import Item, RichData +from ...signals.signal import TextSplitterSignal + + +class SentenceSplitterSpacy(TextSplitterSignal): + """Splits documents into sentences using the SpaCy sentence tokenizer.""" + name = 'sentences' + display_name = 'Sentence Splitter' + + language: str = 'en' + + _tokenizer: Language + + def __init__(self, **kwargs: Any): + super().__init__(**kwargs) + self._tokenizer = spacy.blank(self.language) + self._tokenizer.add_pipe('sentencizer') + # Increase the number of characters of the tokenizer as we're not using a parser or NER. + self._tokenizer.max_length = 10_000_000 + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + text_data = (row if isinstance(row, str) else '' for row in data) + + for doc in self._tokenizer.pipe(text_data): + sentences = doc.sents + result = [lilac_span(token.start_char, token.end_char) for token in sentences] + if result: + yield result + else: + yield None + + class Config: + # Language is required even though it has a default value. + schema_extra = {'required': ['language']} diff --git a/src/signals/splitters/text_splitter_spacy_test.py b/src/signals/splitters/text_splitter_spacy_test.py new file mode 100644 index 0000000000000000000000000000000000000000..ce3681613fcb09b50914b0b12fca07ec709edb5a --- /dev/null +++ b/src/signals/splitters/text_splitter_spacy_test.py @@ -0,0 +1,38 @@ +"""Tests the spacy sentence splitter.""" + +from typing import cast + +from .text_splitter_spacy import SentenceSplitterSpacy +from .text_splitter_test_utils import text_to_expected_spans + + +def test_splitter_spacy() -> None: + signal = SentenceSplitterSpacy() + text = 'Hello. This is a test. Final sentence.' + + # Compute over the text. + split_items = list(signal.compute([text])) + + expected_spans = text_to_expected_spans(text, ['Hello.', 'This is a test.', 'Final sentence.']) + assert split_items == [expected_spans] + + +def test_spacy_key() -> None: + signal = SentenceSplitterSpacy() + assert signal.key() == 'sentences' + + +def test_spacy_non_en_key() -> None: + signal = SentenceSplitterSpacy(language='es') + assert signal.key() == 'sentences(language=es)' + + +def test_splitter_spacy_float() -> None: + signal = SentenceSplitterSpacy() + text = 1.2 + + # Compute over the input, make sure it doesn't crash when we pass a non-string value which can + # happen accidentally in user data. + split_items = list(signal.compute([cast(str, text)])) + + assert split_items == [None] diff --git a/src/signals/splitters/text_splitter_test_utils.py b/src/signals/splitters/text_splitter_test_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..f5bf42fd48d8444c91b868f6ca4d135366876e48 --- /dev/null +++ b/src/signals/splitters/text_splitter_test_utils.py @@ -0,0 +1,29 @@ +"""Utilities for testing text splitters.""" + +from typing import Optional + +from ...data.dataset_utils import lilac_span +from ...schema import TEXT_SPAN_END_FEATURE, TEXT_SPAN_START_FEATURE, VALUE_KEY, Item + + +def spans_to_text(text: str, spans: Optional[list[Item]]) -> list[str]: + """Convert text and a list of spans to a list of strings.""" + if not spans: + return [] + return [ + text[span[VALUE_KEY][TEXT_SPAN_START_FEATURE]:span[VALUE_KEY][TEXT_SPAN_END_FEATURE]] + for span in spans + ] + + +def text_to_expected_spans(text: str, splits: list[str]) -> list[Item]: + """Convert text and a list of splits to a list of expected spans.""" + start_offset = 0 + expected_spans: list[Item] = [] + for split in splits: + start = text.find(split, start_offset) + end = start + len(split) + expected_spans.append(lilac_span(start=start, end=end)) + start_offset = end + + return expected_spans diff --git a/src/signals/splitters/text_splitter_test_utils_test.py b/src/signals/splitters/text_splitter_test_utils_test.py new file mode 100644 index 0000000000000000000000000000000000000000..2b3959ae459ac0c9a939264f2031899f2d7e3a0e --- /dev/null +++ b/src/signals/splitters/text_splitter_test_utils_test.py @@ -0,0 +1,13 @@ +"""Test the text splitter utils.""" + +from ...data.dataset_utils import lilac_span +from .text_splitter_test_utils import text_to_expected_spans + + +def test_text_to_expected_spans() -> None: + """Tests the sentences_to_expected_spans function.""" + text = 'Hello. Hello. Final sentence.' + sentences = ['Hello.', 'Hello.', 'Final sentence.'] + assert text_to_expected_spans( + text, sentences) == [lilac_span(0, 6), lilac_span(7, 13), + lilac_span(14, 29)] diff --git a/src/signals/substring_search.py b/src/signals/substring_search.py new file mode 100644 index 0000000000000000000000000000000000000000..4bc4a9cd38cb03d59b245277c9a51ef301412b7e --- /dev/null +++ b/src/signals/substring_search.py @@ -0,0 +1,37 @@ +"""A signal to search for a substring in a document.""" +import re +from typing import Any, Iterable, Optional + +from typing_extensions import override + +from ..data.dataset_utils import lilac_span +from ..schema import Field, Item, RichData, SignalInputType, field +from .signal import Signal + + +class SubstringSignal(Signal): + """Find a substring in a document.""" + name = 'substring_search' + display_name = 'Substring Search' + input_type = SignalInputType.TEXT + compute_type = SignalInputType.TEXT + + query: str + + _regex: re.Pattern[str] + + def __init__(self, **kwargs: Any): + super().__init__(**kwargs) + self._regex = re.compile(self.query, re.IGNORECASE) + + @override + def fields(self) -> Field: + return field(fields=['string_span']) + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for text in data: + if not isinstance(text, str): + yield None + continue + yield [lilac_span(m.start(), m.end()) for m in self._regex.finditer(text)] diff --git a/src/signals/substring_search_test.py b/src/signals/substring_search_test.py new file mode 100644 index 0000000000000000000000000000000000000000..cedf61438ad0bfd38c4c5aeb1974bd28d19516a2 --- /dev/null +++ b/src/signals/substring_search_test.py @@ -0,0 +1,28 @@ +"""Test the Substring Search signal.""" + +import pytest +from pydantic import ValidationError + +from ..schema import field +from .splitters.text_splitter_test_utils import text_to_expected_spans +from .substring_search import SubstringSignal + + +def test_substring_fields() -> None: + signal = SubstringSignal(query='test') + assert signal.fields() == field(fields=['string_span']) + + +def test_query_is_required() -> None: + with pytest.raises(ValidationError): + SubstringSignal() + + +def test_compute() -> None: + signal = SubstringSignal(query='test') + + text = 'The word TEST shows up 3 times, teST and test' + spans = list(signal.compute([text])) + + expected_spans = text_to_expected_spans(text, ['TEST', 'teST', 'test']) + assert [expected_spans] == spans diff --git a/src/signals/text_statistics.py b/src/signals/text_statistics.py new file mode 100644 index 0000000000000000000000000000000000000000..e55e621a596f641da34431282468b2687b44ff85 --- /dev/null +++ b/src/signals/text_statistics.py @@ -0,0 +1,68 @@ +"""Compute text statistics for a document.""" +from typing import Iterable, Optional, cast + +import spacy +import textacy +from spacy import Language +from spacy.tokens import Doc +from textacy import text_stats +from typing_extensions import override + +from ..schema import Field, Item, RichData, field +from ..utils import chunks +from .signal import TextSignal + +SPACY_LANG_MODEL = 'en_core_web_sm' +SPACY_BATCH_SIZE = 128 + +NUM_CHARS = 'num_characters' +READABILITY = 'readability' +TYPE_TOKEN_RATIO = 'type_token_ratio' + + +class TextStatisticsSignal(TextSignal): + """Compute text statistics for a document such as readability scores, type-token-ratio, etc..""" + name = 'text_statistics' + display_name = 'Text Statistics' + + _lang: Optional[Language] = None + + @override + def fields(self) -> Field: + return field(fields={ + NUM_CHARS: 'int32', + READABILITY: 'float32', + TYPE_TOKEN_RATIO: 'float32', + }) + + @override + def setup(self) -> None: + if not spacy.util.is_package(SPACY_LANG_MODEL): + spacy.cli.download(SPACY_LANG_MODEL) + self._lang = spacy.load( + SPACY_LANG_MODEL, + disable=[ + 'parser', 'tagger', 'ner', 'lemmatizer', 'textcat', 'custom', 'tok2vec', 'attribute_ruler' + ]) + + @override + def compute(self, data: Iterable[RichData]) -> Iterable[Optional[Item]]: + for batch in chunks(data, SPACY_BATCH_SIZE): + # Replace None with empty strings to avoid spacy errors. + batch = [x or '' for x in batch] + # See https://textacy.readthedocs.io/en/0.11.0/api_reference/text_stats.html for a list of + # available statistics. + corpus = textacy.Corpus(lang=self._lang, data=batch) + for doc in cast(Iterable[Doc], corpus): + if not len(doc): + yield None + continue + readability = text_stats.readability.automated_readability_index(doc) + ttr = text_stats.diversity.ttr(doc) + num_chars = text_stats.basics.n_chars(doc) + + yield { + NUM_CHARS: num_chars, + READABILITY: readability, + TYPE_TOKEN_RATIO: ttr, + } diff --git a/src/signals/text_statistics_test.py b/src/signals/text_statistics_test.py new file mode 100644 index 0000000000000000000000000000000000000000..fb2b6978b2bea6977cf68256444a7458a7791b50 --- /dev/null +++ b/src/signals/text_statistics_test.py @@ -0,0 +1,53 @@ +"""Test the semantic search signal.""" + +from typing import cast + +from pytest import approx + +from ..schema import DataType, Field +from .text_statistics import NUM_CHARS, READABILITY, TYPE_TOKEN_RATIO, TextStatisticsSignal + + +def test_text_statistics_fields() -> None: + signal = TextStatisticsSignal() + signal.setup() + assert signal.fields() == Field( + fields={ + NUM_CHARS: Field(dtype=DataType.INT32), + READABILITY: Field(dtype=DataType.FLOAT32), + TYPE_TOKEN_RATIO: Field(dtype=DataType.FLOAT32) + }) + + +def test_text_statistics_compute() -> None: + signal = TextStatisticsSignal() + signal.setup() + + scores = signal.compute(['hello', 'hello world']) + + assert list(scores) == [{ + NUM_CHARS: 5, + READABILITY: approx(2.62), + TYPE_TOKEN_RATIO: 1.0 + }, { + NUM_CHARS: 10, + READABILITY: approx(3.12), + TYPE_TOKEN_RATIO: 1.0 + }] + + +def test_text_statistics_missing_value() -> None: + signal = TextStatisticsSignal() + signal.setup() + + scores = signal.compute(['hello', cast(str, None), 'everybody']) + + assert list(scores) == [{ + NUM_CHARS: 5, + READABILITY: approx(2.62), + TYPE_TOKEN_RATIO: 1.0 + }, None, { + NUM_CHARS: 9, + READABILITY: approx(21.46), + TYPE_TOKEN_RATIO: 1.0 + }] diff --git a/src/tasks.py b/src/tasks.py new file mode 100644 index 0000000000000000000000000000000000000000..9ffffc821a45c16b90af673f0283be3fbfe60a54 --- /dev/null +++ b/src/tasks.py @@ -0,0 +1,296 @@ +"""Manage FastAPI background tasks.""" + +import asyncio +import functools +import time +import traceback +import uuid +from datetime import datetime, timedelta +from enum import Enum +from typing import Any, Awaitable, Callable, Iterable, Optional, TypeVar, Union + +import dask +import psutil +from dask.distributed import Client, Variable +from distributed import Future, get_client, get_worker +from pydantic import BaseModel, parse_obj_as +from tqdm import tqdm + +from .utils import log, pretty_timedelta + +TaskId = str +# ID for the step of a task. +TaskStepId = tuple[str, int] +Task = Union[Callable[..., Any], Callable[..., Awaitable[Any]]] + + +class TaskStatus(str, Enum): + """Enum holding a tasks status.""" + PENDING = 'pending' + COMPLETED = 'completed' + ERROR = 'error' + + +class TaskStepInfo(BaseModel): + """Information about a step of the task..""" + progress: Optional[float] + description: Optional[str] + details: Optional[str] + + +class TaskInfo(BaseModel): + """Metadata about a task.""" + name: str + status: TaskStatus + progress: Optional[float] + message: Optional[str] + details: Optional[str] + # The current step's progress. + step_progress: Optional[float] + + # A task may have multiple progress indicators, e.g. for chained signals that compute 3 signals. + steps: Optional[list[TaskStepInfo]] + description: Optional[str] + start_timestamp: str + end_timestamp: Optional[str] + error: Optional[str] + + +class TaskManifest(BaseModel): + """Information for tasks that are running or completed.""" + tasks: dict[str, TaskInfo] + progress: Optional[float] + + +STEPS_LOG_KEY = 'steps' + + +class TaskManager: + """Manage FastAPI background tasks.""" + _tasks: dict[str, TaskInfo] = {} + + def __init__(self, dask_client: Optional[Client] = None) -> None: + """By default, use a dask multi-processing client. + + A user can pass in a dask client to use a different executor. + """ + # Set dasks workers to be non-daemonic so they can spawn child processes if they need to. This + # is particularly useful for signals that use libraries with multiprocessing support. + dask.config.set({'distributed.worker.daemon': False}) + + total_memory_gb = psutil.virtual_memory().total / (1024**3) + self._dask_client = dask_client or Client( + asynchronous=True, memory_limit=f'{total_memory_gb} GB') + + async def _update_tasks(self) -> None: + for task_id, task in self._tasks.items(): + if task.status == TaskStatus.COMPLETED: + continue + + step_events = self._dask_client.get_events(_progress_event_topic(task_id)) + # This allows us to work with both sync and async clients. + if not isinstance(step_events, tuple): + step_events = await step_events + + if step_events: + _, log_message = step_events[-1] + steps = parse_obj_as(list[TaskStepInfo], log_message[STEPS_LOG_KEY]) + task.steps = steps + if steps: + cur_step = 0 + for i, step in enumerate(reversed(steps)): + if step.progress is not None: + cur_step = len(steps) - i - 1 + break + task.details = steps[cur_step].details + task.step_progress = steps[cur_step].progress + task.progress = (sum([step.progress or 0.0 for step in steps])) / len(steps) + # Don't show an indefinite jump if there are multiple steps. + if cur_step > 0 and task.step_progress is None: + task.step_progress = 0.0 + + task.message = f'Step {cur_step+1}/{len(steps)}' + if steps[cur_step].description: + task.message += f': {steps[cur_step].description}' + else: + task.progress = None + + async def manifest(self) -> TaskManifest: + """Get all tasks.""" + await self._update_tasks() + tasks_with_progress = [ + task.progress + for task in self._tasks.values() + if task.progress and task.status != TaskStatus.COMPLETED + ] + return TaskManifest( + tasks=self._tasks, + progress=sum(tasks_with_progress) / len(tasks_with_progress) if tasks_with_progress else None) + + def task_id(self, name: str, description: Optional[str] = None) -> TaskId: + """Create a unique ID for a task.""" + task_id = uuid.uuid4().hex + self._tasks[task_id] = TaskInfo( + name=name, + status=TaskStatus.PENDING, + progress=None, + description=description, + start_timestamp=datetime.now().isoformat()) + return task_id + + def _set_task_completed(self, task_id: TaskId, task_future: Future) -> None: + end_timestamp = datetime.now().isoformat() + self._tasks[task_id].end_timestamp = end_timestamp + + elapsed = datetime.fromisoformat(end_timestamp) - datetime.fromisoformat( + self._tasks[task_id].start_timestamp) + elapsed_formatted = pretty_timedelta(elapsed) + + if task_future.status == 'error': + self._tasks[task_id].status = TaskStatus.ERROR + tb = traceback.format_tb(task_future.traceback()) + e = task_future.exception() + self._tasks[task_id].error = f'{e}: \n{tb}' + raise e + else: + # This runs in dask callback thread, so we have to make a new event loop. + loop = asyncio.new_event_loop() + loop.run_until_complete(self._update_tasks()) + for step in self._tasks[task_id].steps or []: + step.progress = 1.0 + + self._tasks[task_id].status = TaskStatus.COMPLETED + self._tasks[task_id].progress = 1.0 + self._tasks[task_id].message = f'Completed in {elapsed_formatted}' + + log(f'Task completed "{task_id}": "{self._tasks[task_id].name}" in ' + f'{elapsed_formatted}.') + + def execute(self, task_id: str, task: Task, *args: Any) -> None: + """Create a unique ID for a task.""" + log(f'Scheduling task "{task_id}": "{self._tasks[task_id].name}".') + + task_info = self._tasks[task_id] + task_future = self._dask_client.submit( + functools.partial(_execute_task, task, task_info, task_id), *args, key=task_id) + task_future.add_done_callback( + lambda task_future: self._set_task_completed(task_id, task_future)) + + async def stop(self) -> None: + """Stop the task manager and close the dask client.""" + await self._dask_client.close() + + +@functools.cache +def task_manager() -> TaskManager: + """The global singleton for the task manager.""" + return TaskManager() + + +def _execute_task(task: Task, task_info: TaskInfo, task_id: str, *args: Any) -> None: + get_worker().state.tasks[task_id].annotations['task_info'] = task_info + task(*args) + + +def _progress_event_topic(task_id: TaskId) -> Variable: + return f'{task_id}_progress' + + +TProgress = TypeVar('TProgress') + + +def progress(it: Iterable[TProgress], + task_step_id: Optional[TaskStepId], + estimated_len: Optional[int], + step_description: Optional[str] = None, + emit_every_frac: float = .01) -> Iterable[TProgress]: + """An iterable wrapper that emits progress and yields the original iterable.""" + if not task_step_id: + yield from it + return + + task_id, step_id = task_step_id + steps = get_worker_steps(task_id) + if not steps: + steps = [TaskStepInfo(description=step_description, progress=0.0)] + elif len(steps) <= step_id: + # If the step given exceeds the length of the last step, add a new step. + steps.append(TaskStepInfo(description=step_description, progress=0.0)) + else: + steps[step_id].description = step_description + steps[step_id].progress = 0.0 + set_worker_steps(task_id, steps) + + estimated_len = max(1, estimated_len) if estimated_len else None + + emit_every = max(1, int(estimated_len * emit_every_frac)) if estimated_len else None + + task_info: TaskInfo = get_worker().state.tasks[task_id].annotations['task_info'] + + it_idx = 0 + start_time = time.time() + with tqdm(it, desc=task_info.name, total=estimated_len) as tq: + for t in tq: + if estimated_len and emit_every and it_idx % emit_every == 0: + it_per_sec = tq.format_dict['rate'] or 0.0 + set_worker_task_progress( + task_step_id=task_step_id, + it_idx=it_idx, + elapsed_sec=tq.format_dict['elapsed'] or 0.0, + it_per_sec=it_per_sec or 0.0, + estimated_total_sec=((estimated_len) / it_per_sec if it_per_sec else 0), + estimated_len=estimated_len) + yield t + it_idx += 1 + + total_time = time.time() - start_time + set_worker_task_progress( + task_step_id=task_step_id, + it_idx=estimated_len if estimated_len else it_idx, + elapsed_sec=total_time, + it_per_sec=(estimated_len or it_idx) / total_time, + estimated_total_sec=total_time, + estimated_len=estimated_len or it_idx) + + +def set_worker_steps(task_id: TaskId, steps: list[TaskStepInfo]) -> None: + """Sets up worker steps. Use to provide task step descriptions before they compute.""" + get_worker().log_event( + _progress_event_topic(task_id), {STEPS_LOG_KEY: [step.dict() for step in steps]}) + + +def get_worker_steps(task_id: TaskId) -> list[TaskStepInfo]: + """Gets the last worker steps.""" + events = get_client().get_events(_progress_event_topic(task_id)) + if not events or not events[-1]: + return [] + + (_, last_event) = events[-1] + last_info = last_event.get(STEPS_LOG_KEY) + return [TaskStepInfo(**step_info) for step_info in last_info] + + +def set_worker_task_progress(task_step_id: TaskStepId, it_idx: int, elapsed_sec: float, + it_per_sec: float, estimated_total_sec: float, + estimated_len: int) -> None: + """Updates a task step with a progress between 0 and 1. + + This method does not exist on the TaskManager as it is meant to be a standalone method used by + workers running tasks on separate processes so does not have access to task manager state. + """ + progress = float(it_idx) / estimated_len + task_id, step_id = task_step_id + steps = get_worker_steps(task_id) + if len(steps) <= step_id: + raise ValueError(f'No step with idx {step_id} exists. Got steps: {steps}') + steps[step_id].progress = progress + + # 1748/1748 [elapsed 00:16<00:00, 106.30 ex/s] + elapsed = f'{pretty_timedelta(timedelta(seconds=elapsed_sec))}' + if it_idx != estimated_len: + # Only show estimated when in progress. + elapsed = f'{elapsed} < {pretty_timedelta(timedelta(seconds=estimated_total_sec))}' + steps[step_id].details = (f'{it_idx:,}/{estimated_len:,} ' + f'[{elapsed}, {it_per_sec:,.2f} ex/s]') + + set_worker_steps(task_id, steps) diff --git a/src/test_utils.py b/src/test_utils.py new file mode 100644 index 0000000000000000000000000000000000000000..504119bc0db95d1fa032e42972658244ff787cca --- /dev/null +++ b/src/test_utils.py @@ -0,0 +1,26 @@ +"""Utilities for unit tests.""" + +import os +import pathlib +import uuid +from typing import Union + +import pyarrow.parquet as pq + +from .schema import Item, Schema, schema_to_arrow_schema + + +def read_items(data_dir: Union[str, pathlib.Path], filepaths: list[str], + schema: Schema) -> list[Item]: + """Read the source items from a dataset output directory.""" + items: list[Item] = [] + for filepath in filepaths: + items.extend( + pq.read_table(os.path.join(data_dir, filepath), + schema=schema_to_arrow_schema(schema)).to_pylist()) + return items + + +def fake_uuid(id: bytes) -> uuid.UUID: + """Create a test UUID.""" + return uuid.UUID((id * 16).hex()) diff --git a/src/utils.py b/src/utils.py new file mode 100644 index 0000000000000000000000000000000000000000..eb99ceaba72e27a7eb728e7e7778c8759fdcba2f --- /dev/null +++ b/src/utils.py @@ -0,0 +1,274 @@ +"""Utils for the python server.""" +import asyncio +import functools +import itertools +import logging +import os +import pathlib +import re +import shutil +import threading +import time +import uuid +from asyncio import AbstractEventLoop +from concurrent.futures import Executor, ThreadPoolExecutor +from datetime import timedelta +from functools import partial, wraps +from typing import IO, Any, Awaitable, Callable, Iterable, Optional, TypeVar, Union + +import requests +from google.cloud.storage import Blob, Client +from pydantic import BaseModel + +from .config import data_path +from .schema import Path + +GCS_PROTOCOL = 'gs://' +GCS_REGEX = re.compile(f'{GCS_PROTOCOL}(.*?)/(.*)') +GCS_COPY_CHUNK_SIZE = 1_000 +IMAGES_DIR_NAME = 'images' +DATASETS_DIR_NAME = 'datasets' + + +@functools.cache +def _get_storage_client(thread_id: Optional[int] = None) -> Client: + # The storage client is not thread safe so we use a thread_id to make sure each thread gets a + # separate storage client. + del thread_id + return Client() + + +def _parse_gcs_path(filepath: str) -> tuple[str, str]: + # match a regular expression to extract the bucket and filename + if matches := GCS_REGEX.match(filepath): + bucket_name, object_name = matches.groups() + return bucket_name, object_name + raise ValueError(f'Failed to parse GCS path: {filepath}') + + +def _get_gcs_blob(filepath: str) -> Blob: + bucket_name, object_name = _parse_gcs_path(filepath) + storage_client = _get_storage_client(threading.get_ident()) + bucket = storage_client.bucket(bucket_name) + return bucket.blob(object_name) + + +def open_file(filepath: str, mode: str = 'r') -> IO: + """Open a file handle. It works with both GCS and local paths.""" + if filepath.startswith(GCS_PROTOCOL): + blob = _get_gcs_blob(filepath) + return blob.open(mode) + + write_mode = 'w' in mode + binary_mode = 'b' in mode + + if write_mode: + base_path = os.path.dirname(filepath) + os.makedirs(base_path, exist_ok=True) + + encoding = None if binary_mode else 'utf-8' + return open(filepath, mode=mode, encoding=encoding) + + +def download_http_files(filepaths: list[str]) -> list[str]: + """Download files from HTTP(s) URLs.""" + out_filepaths: list[str] = [] + for filepath in filepaths: + if filepath.startswith(('http://', 'https://')): + tmp_filename = uuid.uuid4().hex + tmp_filepath = f'/tmp/{data_path()}/local_cache/{tmp_filename}' + log(f'Downloading from url {filepath} to {tmp_filepath}') + dl = requests.get(filepath, timeout=10000, allow_redirects=True) + with open_file(tmp_filepath, 'wb') as f: + f.write(dl.content) + filepath = tmp_filepath + + out_filepaths.append(filepath) + + return out_filepaths + + +def makedirs(dir_path: str) -> None: + """Recursively makes the directories. It works with both GCS and local paths.""" + if dir_path.startswith(GCS_PROTOCOL): + return + os.makedirs(dir_path, exist_ok=True) + + +def get_datasets_dir(base_dir: Union[str, pathlib.Path]) -> str: + """Return the output directory that holds all datasets.""" + return os.path.join(base_dir, DATASETS_DIR_NAME) + + +def get_dataset_output_dir(base_dir: Union[str, pathlib.Path], namespace: str, + dataset_name: str) -> str: + """Return the output directory for a dataset.""" + return os.path.join(get_datasets_dir(base_dir), namespace, dataset_name) + + +class CopyRequest(BaseModel): + """A request to copy a file from source to destination path. Used to copy media files to GCS.""" + from_path: str + to_path: str + + +def copy_batch(copy_requests: list[CopyRequest]) -> None: + """Copy a single item from a CopyRequest.""" + storage_client = _get_storage_client(threading.get_ident()) + with storage_client.batch(): + for copy_request in copy_requests: + from_gcs = False + if GCS_REGEX.match(copy_request.from_path): + from_gcs = True + to_gcs = False + if GCS_REGEX.match(copy_request.to_path): + to_gcs = True + + makedirs(os.path.dirname(copy_request.to_path)) + + # When both source and destination are local, use the shutil copy. + if not from_gcs and not to_gcs: + shutil.copyfile(copy_request.from_path, copy_request.to_path) + continue + + if from_gcs: + from_bucket_name, from_object_name = _parse_gcs_path(copy_request.from_path) + from_bucket = storage_client.bucket(from_bucket_name) + from_gcs_blob = from_bucket.blob(from_object_name) + + if to_gcs: + to_bucket_name, to_object_name = _parse_gcs_path(copy_request.to_path) + to_bucket = storage_client.bucket(to_bucket_name) + + if from_gcs and to_gcs: + from_bucket.copy_blob(from_gcs_blob, from_bucket, to_object_name) + elif from_gcs and not to_gcs: + from_gcs_blob.download_to_filename(copy_request.to_path) + elif not from_gcs and to_gcs: + to_gcs_blob = to_bucket.blob(to_object_name) + to_gcs_blob.upload_from_filename(copy_request.from_path) + + +def copy_files(copy_requests: Iterable[CopyRequest], input_gcs: bool, output_gcs: bool) -> None: + """Copy media files from an input gcs path to an output gcs path.""" + start_time = time.time() + + chunk_size = 1 + if output_gcs and input_gcs: + # When downloading or uploading locally, batching greatly slows down the parallelism as GCS + # batching with storage.batch() has no effect. + # When copying files locally, storage.batch() has no effect and it's better to run each copy in + # separate thread. + chunk_size = GCS_COPY_CHUNK_SIZE + + batched_copy_requests = chunks(copy_requests, chunk_size) + with ThreadPoolExecutor() as executor: + executor.map(copy_batch, batched_copy_requests) + + log(f'Copy took {time.time() - start_time} seconds.') + + +def delete_file(filepath: str) -> None: + """Delete a file. It works for both GCS and local paths.""" + if filepath.startswith(GCS_PROTOCOL): + blob = _get_gcs_blob(filepath) + blob.delete() + return + + os.remove(filepath) + + +def file_exists(filepath: str) -> bool: + """Return true if the file exists. It works with both GCS and local paths.""" + if filepath.startswith(GCS_PROTOCOL): + return _get_gcs_blob(filepath).exists() + return os.path.exists(filepath) + + +def get_image_path(output_dir: str, path: Path, row_id: bytes) -> str: + """Return the GCS file path to an image associated with a specific row.""" + path_subdir = '_'.join([str(p) for p in path]) + filename = row_id.hex() + return os.path.join(output_dir, IMAGES_DIR_NAME, path_subdir, filename) + + +Tout = TypeVar('Tout') + + +def async_wrap(func: Callable[..., Tout], + loop: Optional[AbstractEventLoop] = None, + executor: Optional[Executor] = None) -> Callable[..., Awaitable[Tout]]: + """Wrap a sync function into an async function.""" + + @wraps(func) + async def run(*args: Any, **kwargs: Any) -> Any: + current_loop = loop or asyncio.get_running_loop() + pfunc: Callable = partial(func, *args, **kwargs) + return await current_loop.run_in_executor(executor, pfunc) + + return run + + +Tchunk = TypeVar('Tchunk') + + +def chunks(iterable: Iterable[Tchunk], size: int) -> Iterable[list[Tchunk]]: + """Split a list of items into equal-sized chunks. The last chunk might be smaller.""" + it = iter(iterable) + chunk = list(itertools.islice(it, size)) + while chunk: + yield chunk + chunk = list(itertools.islice(it, size)) + + +# TODO(nsthorat): Centralize environment flags. +DISABLE_LOGS = os.getenv('DISABLE_LOGS', False) + + +def log(log_str: str) -> None: + """Print and logs a message so it shows up in the logs on cloud.""" + if DISABLE_LOGS: + return + + print(log_str) + logging.info(log_str) + + +class DebugTimer: + """A context manager that prints the time elapsed in a block of code. + + ```py + with DebugTimer('dot product'): + np.dot(np.random.randn(1000), np.random.randn(1000)) + ``` + + $ dot product took 0.001s. + """ + + def __init__(self, name: str) -> None: + self.name = name + + def __enter__(self) -> 'DebugTimer': + """Start a timer.""" + self.start = time.perf_counter() + return self + + def __exit__(self, *args: list[Any]) -> None: + """Stop the timer and print the elapsed time.""" + log(f'{self.name} took {(time.perf_counter() - self.start):.3f}s.') + + +def pretty_timedelta(delta: timedelta) -> str: + """Pretty-prints a `timedelta`.""" + seconds = delta.total_seconds() + days, seconds = divmod(seconds, 86400) + hours, seconds = divmod(seconds, 3600) + minutes, seconds = divmod(seconds, 60) + if days > 0: + return '%dd%dh%dm%ds' % (days, hours, minutes, seconds) + elif hours > 0: + return '%dh%dm%ds' % (hours, minutes, seconds) + elif minutes > 0: + return '%dm%ds' % (minutes, seconds) + else: + return '%ds' % (seconds,) diff --git a/web/blueprint/build/_app/immutable/assets/0.5f010142.css b/web/blueprint/build/_app/immutable/assets/0.5f010142.css new file mode 100644 index 0000000000000000000000000000000000000000..db182b96bf77e9023cdba7bbad333cbb53ae5202 --- /dev/null +++ b/web/blueprint/build/_app/immutable/assets/0.5f010142.css @@ -0,0 +1 @@ +.progress-container .bx--progress-bar__label,.progress-container .bx--progress-bar__helper-text{font-size:.75rem;line-height:1rem;font-weight:300}.task-button .bx--popover-contents{width:28rem;max-width:28rem}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.bottom-4{bottom:1rem}.left-0{left:0px}.right-4{right:1rem}.top-0{top:0px}.z-0{z-index:0}.z-10{z-index:10}.z-50{z-index:50}.m-4{margin:1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-px{margin-top:1px;margin-bottom:1px}.-ml-4{margin-left:-1rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mr-8{margin-right:2rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.contents{display:contents}.hidden{display:none}.h-6{height:1.5rem}.h-8{height:2rem}.h-full{height:100%}.h-screen{height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-2\/3{width:66.666667%}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-32{width:8rem}.w-36{width:9rem}.w-48{width:12rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-96{width:24rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.border-spacing-y-2{--tw-border-spacing-y: .5rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-6{--tw-translate-y: 1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-clip{overflow-x:clip}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.whitespace-break-spaces{white-space:break-spaces}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-x{border-left-width:1px;border-right-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-emerald-100{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-indigo-200{--tw-bg-opacity: 1;background-color:rgb(199 210 254 / var(--tw-bg-opacity))}.bg-neutral-50{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.fill-blue-600{fill:#2563eb}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.\!text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-50{opacity:.5}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.outline-red-500{outline-color:#ef4444}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.hover\:border-red-400:hover{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.hover\:bg-slate-400:hover{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-60:hover{opacity:.6}@media (prefers-color-scheme: dark){.dark\:text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:""}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:IBM Plex Sans,Helvetica Neue,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:IBM Plex Mono,Menlo,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier,monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:var(--cds-productive-heading-06-font-size, 2.625rem);font-weight:var(--cds-productive-heading-06-font-weight, 300);line-height:var(--cds-productive-heading-06-line-height, 1.199);letter-spacing:var(--cds-productive-heading-06-letter-spacing, 0)}h2{font-size:var(--cds-productive-heading-05-font-size, 2rem);font-weight:var(--cds-productive-heading-05-font-weight, 400);line-height:var(--cds-productive-heading-05-line-height, 1.25);letter-spacing:var(--cds-productive-heading-05-letter-spacing, 0)}h3{font-size:var(--cds-productive-heading-04-font-size, 1.75rem);font-weight:var(--cds-productive-heading-04-font-weight, 400);line-height:var(--cds-productive-heading-04-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-04-letter-spacing, 0)}h4{font-size:var(--cds-productive-heading-03-font-size, 1.25rem);font-weight:var(--cds-productive-heading-03-font-weight, 400);line-height:var(--cds-productive-heading-03-line-height, 1.4);letter-spacing:var(--cds-productive-heading-03-letter-spacing, 0)}h5{font-size:var(--cds-productive-heading-02-font-size, 1rem);font-weight:var(--cds-productive-heading-02-font-weight, 600);line-height:var(--cds-productive-heading-02-line-height, 1.375);letter-spacing:var(--cds-productive-heading-02-letter-spacing, 0)}h6{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px)}p{font-size:var(--cds-body-long-02-font-size, 1rem);font-weight:var(--cds-body-long-02-font-weight, 400);line-height:var(--cds-body-long-02-line-height, 1.5);letter-spacing:var(--cds-body-long-02-letter-spacing, 0)}a{color:#0f62fe}em{font-style:italic}@keyframes skeleton{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}to{opacity:.3;transform:scaleX(0);transform-origin:left}}.bx--tag{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);background-color:var(--cds-tag-background-gray, #e0e0e0);color:var(--cds-tag-color-gray, #393939);display:inline-flex;min-width:2rem;max-width:100%;min-height:1.5rem;align-items:center;justify-content:center;padding:.25rem .5rem;margin:.25rem;border-radius:.9375rem;cursor:default;vertical-align:middle;word-break:break-word}.bx--tag::-moz-focus-inner{border:0}.bx--tag.bx--tag--interactive:hover,.bx--tag .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-gray, #c6c6c6)}.bx--tag:not(:first-child){margin-left:0}.bx--tag--red{background-color:var(--cds-tag-background-red, #ffd7d9);color:var(--cds-tag-color-red, #750e13)}.bx--tag--red.bx--tag--interactive:hover,.bx--tag--red .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-red, #ffb3b8)}.bx--tag--magenta{background-color:var(--cds-tag-background-magenta, #ffd6e8);color:var(--cds-tag-color-magenta, #740937)}.bx--tag--magenta.bx--tag--interactive:hover,.bx--tag--magenta .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-magenta, #ffafd2)}.bx--tag--purple{background-color:var(--cds-tag-background-purple, #e8daff);color:var(--cds-tag-color-purple, #491d8b)}.bx--tag--purple.bx--tag--interactive:hover,.bx--tag--purple .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-purple, #d4bbff)}.bx--tag--blue{background-color:var(--cds-tag-background-blue, #d0e2ff);color:var(--cds-tag-color-blue, #002d9c)}.bx--tag--blue.bx--tag--interactive:hover,.bx--tag--blue .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-blue, #a6c8ff)}.bx--tag--cyan{background-color:var(--cds-tag-background-cyan, #bae6ff);color:var(--cds-tag-color-cyan, #003a6d)}.bx--tag--cyan.bx--tag--interactive:hover,.bx--tag--cyan .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-cyan, #82cfff)}.bx--tag--teal{background-color:var(--cds-tag-background-teal, #9ef0f0);color:var(--cds-tag-color-teal, #004144)}.bx--tag--teal.bx--tag--interactive:hover,.bx--tag--teal .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-teal, #3ddbd9)}.bx--tag--green{background-color:var(--cds-tag-background-green, #a7f0ba);color:var(--cds-tag-color-green, #044317)}.bx--tag--green.bx--tag--interactive:hover,.bx--tag--green .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-green, #6fdc8c)}.bx--tag--gray{background-color:var(--cds-tag-background-gray, #e0e0e0);color:var(--cds-tag-color-gray, #393939)}.bx--tag--gray.bx--tag--interactive:hover,.bx--tag--gray .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-gray, #c6c6c6)}.bx--tag--cool-gray{background-color:var(--cds-tag-background-cool-gray, #dde1e6);color:var(--cds-tag-color-cool-gray, #343a3f)}.bx--tag--cool-gray.bx--tag--interactive:hover,.bx--tag--cool-gray .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-cool-gray, #c1c7cd)}.bx--tag--warm-gray{background-color:var(--cds-tag-background-warm-gray, #e5e0df);color:var(--cds-tag-color-warm-gray, #3c3838)}.bx--tag--warm-gray.bx--tag--interactive:hover,.bx--tag--warm-gray .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-warm-gray, #cac5c4)}.bx--tag--high-contrast{background-color:var(--cds-inverse-02, #393939);color:var(--cds-inverse-01, #ffffff)}.bx--tag--high-contrast.bx--tag--interactive:hover,.bx--tag--high-contrast .bx--tag__close-icon:hover{background-color:var(--cds-inverse-hover-ui, #4c4c4c)}.bx--tag--outline{background-color:var(--cds-background, #ffffff);color:var(--cds-text-01, #161616);box-shadow:inset 0 0 0 1px var(--cds-inverse-02, #393939)}.bx--tag--outline.bx--tag--interactive:hover,.bx--tag--outline .bx--tag__close-icon:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--tag--disabled,.bx--tag--filter.bx--tag--disabled,.bx--tag--interactive.bx--tag--disabled{background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6)}.bx--tag--disabled.bx--tag--interactive:hover,.bx--tag--disabled .bx--tag__close-icon:hover,.bx--tag--filter.bx--tag--disabled.bx--tag--interactive:hover,.bx--tag--filter.bx--tag--disabled .bx--tag__close-icon:hover,.bx--tag--interactive.bx--tag--disabled.bx--tag--interactive:hover,.bx--tag--interactive.bx--tag--disabled .bx--tag__close-icon:hover{background-color:var(--cds-disabled-01, #f4f4f4)}.bx--tag--disabled:hover,.bx--tag--filter.bx--tag--disabled:hover,.bx--tag--interactive.bx--tag--disabled:hover{cursor:not-allowed}.bx--tag__label{overflow:hidden;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.bx--tag--interactive:focus{box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe);outline:none}.bx--tag--interactive:hover{cursor:pointer}.bx--tag--filter{padding-top:0;padding-right:0;padding-bottom:0;cursor:pointer}.bx--tag--filter:hover{outline:none}.bx--tag--interactive{transition:background-color 70ms cubic-bezier(0,0,.38,.9)}.bx--tag__close-icon{display:flex;width:1.5rem;height:1.5rem;flex-shrink:0;align-items:center;justify-content:center;padding:0;border:0;margin:0 0 0 .125rem;background-color:#0000;border-radius:50%;color:currentColor;cursor:pointer;transition:background-color 70ms cubic-bezier(.2,0,.38,.9),box-shadow 70ms cubic-bezier(.2,0,.38,.9)}.bx--tag__close-icon svg{fill:currentColor}.bx--tag__custom-icon{width:1rem;height:1rem;flex-shrink:0;padding:0;border:0;margin-right:var(--cds-spacing-02, .25rem);background-color:#0000;color:currentColor;outline:none}.bx--tag__custom-icon svg{fill:currentColor}.bx--tag--disabled .bx--tag__close-icon{cursor:not-allowed}.bx--tag__close-icon:focus{border-radius:50%;box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe);outline:none}.bx--tag--high-contrast .bx--tag__close-icon:focus{box-shadow:inset 0 0 0 1px var(--cds-inverse-focus-ui, #ffffff)}.bx--tag--filter.bx--tag--disabled .bx--tag__close-icon:hover{background-color:#0000}.bx--tag--filter.bx--tag--disabled svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--tag--sm{min-height:1.125rem;padding:0 .5rem}.bx--tag--sm.bx--tag--filter{padding-right:0}.bx--tag--sm .bx--tag__close-icon{width:1.125rem;height:1.125rem;margin-left:.3125rem}.bx--tag.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;background-color:var(--cds-skeleton-01, #e5e5e5);color:var(--cds-text-01, #161616);overflow:hidden;width:3.75rem}.bx--tag.bx--skeleton:hover,.bx--tag.bx--skeleton:focus,.bx--tag.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--tag.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--tag.bx--skeleton:before{animation:none}}.bx--tag.bx--skeleton.bx--tag--interactive:hover,.bx--tag.bx--skeleton .bx--tag__close-icon:hover{background-color:var(--cds-skeleton-01, #e5e5e5)}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){.bx--tag.bx--skeleton{transform:translateZ(0)}}}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--tag{outline:1px solid rgba(0,0,0,0)}.bx--tag__close-icon svg,.bx--tag__custom-icon svg{fill:ButtonText}.bx--tag__close-icon:focus{color:Highlight;outline:1px solid Highlight}}.bx--text-truncate--end{display:inline-block;overflow:hidden;width:100%;text-overflow:ellipsis;white-space:nowrap}.bx--text-truncate--front{display:inline-block;overflow:hidden;width:100%;direction:rtl;text-overflow:ellipsis;white-space:nowrap}.bx--inline-notification{position:relative;display:flex;width:100%;min-width:18rem;max-width:18rem;height:auto;min-height:3rem;flex-wrap:wrap;margin-top:1rem;margin-bottom:1rem;color:var(--cds-inverse-01, #ffffff)}@media (min-width: 42rem){.bx--inline-notification{max-width:38rem;flex-wrap:nowrap}}@media (min-width: 66rem){.bx--inline-notification{max-width:46rem}}@media (min-width: 99rem){.bx--inline-notification{max-width:52rem}}.bx--inline-notification:not(.bx--inline-notification--low-contrast) a{color:var(--cds-inverse-link, #78a9ff)}.bx--inline-notification a{text-decoration:none}.bx--inline-notification a:hover{text-decoration:underline}.bx--inline-notification a:focus{outline:1px solid var(--cds-inverse-link, #78a9ff)}.bx--inline-notification.bx--inline-notification--low-contrast a:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--inline-notification.bx--inline-notification--low-contrast a:focus{outline-style:dotted}}.bx--inline-notification--low-contrast{color:var(--cds-text-01, #161616)}.bx--inline-notification--low-contrast:before{position:absolute;top:0;left:0;width:100%;height:100%;box-sizing:border-box;border-width:1px 1px 1px 0;border-style:solid;content:"";filter:opacity(.4);pointer-events:none}.bx--inline-notification--error{border-left:3px solid var(--cds-inverse-support-01, #fa4d56);background:var(--cds-inverse-02, #393939)}.bx--inline-notification--error .bx--inline-notification__icon,.bx--inline-notification--error .bx--toast-notification__icon,.bx--inline-notification--error .bx--actionable-notification__icon{fill:var(--cds-inverse-support-01, #fa4d56)}.bx--inline-notification--low-contrast.bx--inline-notification--error{border-left:3px solid var(--cds-support-01, #da1e28);background:var(--cds-notification-background-error, #fff1f1)}.bx--inline-notification--low-contrast.bx--inline-notification--error .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--error .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--error .bx--actionable-notification__icon{fill:var(--cds-support-01, #da1e28)}.bx--inline-notification--low-contrast.bx--inline-notification--error:before{border-color:var(--cds-support-01, #da1e28)}.bx--inline-notification--success{border-left:3px solid var(--cds-inverse-support-02, #42be65);background:var(--cds-inverse-02, #393939)}.bx--inline-notification--success .bx--inline-notification__icon,.bx--inline-notification--success .bx--toast-notification__icon,.bx--inline-notification--success .bx--actionable-notification__icon{fill:var(--cds-inverse-support-02, #42be65)}.bx--inline-notification--low-contrast.bx--inline-notification--success{border-left:3px solid var(--cds-support-02, #198038);background:var(--cds-notification-background-success, #defbe6)}.bx--inline-notification--low-contrast.bx--inline-notification--success .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--success .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--success .bx--actionable-notification__icon{fill:var(--cds-support-02, #198038)}.bx--inline-notification--low-contrast.bx--inline-notification--success:before{border-color:var(--cds-support-02, #198038)}.bx--inline-notification--info,.bx--inline-notification--info-square{border-left:3px solid var(--cds-inverse-support-04, #4589ff);background:var(--cds-inverse-02, #393939)}.bx--inline-notification--info .bx--inline-notification__icon,.bx--inline-notification--info .bx--toast-notification__icon,.bx--inline-notification--info .bx--actionable-notification__icon,.bx--inline-notification--info-square .bx--inline-notification__icon,.bx--inline-notification--info-square .bx--toast-notification__icon,.bx--inline-notification--info-square .bx--actionable-notification__icon{fill:var(--cds-inverse-support-04, #4589ff)}.bx--inline-notification--low-contrast.bx--inline-notification--info,.bx--inline-notification--low-contrast.bx--inline-notification--info-square{border-left:3px solid var(--cds-support-04, #0043ce);background:var(--cds-notification-background-info, #edf5ff)}.bx--inline-notification--low-contrast.bx--inline-notification--info .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--info .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--info .bx--actionable-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--info-square .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--info-square .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--info-square .bx--actionable-notification__icon{fill:var(--cds-support-04, #0043ce)}.bx--inline-notification--low-contrast.bx--inline-notification--info:before,.bx--inline-notification--low-contrast.bx--inline-notification--info-square:before{border-color:var(--cds-support-04, #0043ce)}.bx--inline-notification--warning,.bx--inline-notification--warning-alt{border-left:3px solid var(--cds-inverse-support-03, #f1c21b);background:var(--cds-inverse-02, #393939)}.bx--inline-notification--warning .bx--inline-notification__icon,.bx--inline-notification--warning .bx--toast-notification__icon,.bx--inline-notification--warning .bx--actionable-notification__icon,.bx--inline-notification--warning-alt .bx--inline-notification__icon,.bx--inline-notification--warning-alt .bx--toast-notification__icon,.bx--inline-notification--warning-alt .bx--actionable-notification__icon{fill:var(--cds-inverse-support-03, #f1c21b)}.bx--inline-notification--low-contrast.bx--inline-notification--warning,.bx--inline-notification--low-contrast.bx--inline-notification--warning-alt{border-left:3px solid var(--cds-support-03, #f1c21b);background:var(--cds-notification-background-warning, #fdf6dd)}.bx--inline-notification--low-contrast.bx--inline-notification--warning .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--warning .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--warning .bx--actionable-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--warning-alt .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--warning-alt .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--warning-alt .bx--actionable-notification__icon{fill:var(--cds-support-03, #f1c21b)}.bx--inline-notification--low-contrast.bx--inline-notification--warning:before,.bx--inline-notification--low-contrast.bx--inline-notification--warning-alt:before{border-color:var(--cds-support-03, #f1c21b)}.bx--inline-notification--warning .bx--inline-notification__icon path[opacity="0"]{fill:#000;opacity:1}.bx--inline-notification__details{display:flex;flex-grow:1;margin:0 3rem 0 1rem}@media (min-width: 42rem){.bx--inline-notification__details{margin:0 1rem}}.bx--inline-notification__icon{flex-shrink:0;margin-top:.875rem;margin-right:1rem}.bx--inline-notification__text-wrapper{display:flex;flex-wrap:wrap;padding:.9375rem 0}.bx--inline-notification__title{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);margin:0 .25rem 0 0}.bx--inline-notification__subtitle{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);word-break:break-word}.bx--inline-notification__action-button.bx--btn--ghost{height:2rem;margin-bottom:.5rem;margin-left:2.5rem}@media (min-width: 42rem){.bx--inline-notification__action-button.bx--btn--ghost{margin:.5rem 0}}.bx--inline-notification:not(.bx--inline-notification--low-contrast) .bx--inline-notification__action-button.bx--btn--ghost{color:var(--cds-inverse-link, #78a9ff)}.bx--inline-notification__action-button.bx--btn--ghost:active,.bx--inline-notification__action-button.bx--btn--ghost:hover{background-color:var(--cds-inverse-hover-ui, #4c4c4c)}.bx--inline-notification--low-contrast .bx--inline-notification__action-button.bx--btn--ghost:active,.bx--inline-notification--low-contrast .bx--inline-notification__action-button.bx--btn--ghost:hover{background-color:var(--cds-notification-action-hover, #ffffff)}.bx--inline-notification__action-button.bx--btn--ghost:focus{border-color:#0000;box-shadow:none;outline:2px solid var(--cds-inverse-focus-ui, #ffffff);outline-offset:-2px}.bx--inline-notification--low-contrast .bx--inline-notification__action-button.bx--btn--ghost:focus{outline-color:var(--cds-focus, #0f62fe)}.bx--inline-notification--hide-close-button .bx--inline-notification__action-button.bx--btn--ghost{margin-right:.5rem}.bx--inline-notification__close-button{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:absolute;top:0;right:0;display:flex;width:3rem;min-width:3rem;max-width:3rem;height:3rem;flex-direction:column;align-items:center;justify-content:center;padding:0;border:none;background:rgba(0,0,0,0);cursor:pointer;transition:outline .11s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9)}.bx--inline-notification__close-button:focus{outline:2px solid var(--cds-inverse-focus-ui, #ffffff);outline-offset:-2px}.bx--inline-notification__close-button .bx--inline-notification__close-icon{fill:var(--cds-inverse-01, #ffffff)}@media (min-width: 42rem){.bx--inline-notification__close-button{position:static}}.bx--inline-notification--low-contrast .bx--inline-notification__close-button:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--inline-notification--low-contrast .bx--inline-notification__close-button:focus{outline-style:dotted}}.bx--inline-notification--low-contrast .bx--inline-notification__close-button .bx--inline-notification__close-icon{fill:var(--cds-icon-01, #161616)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--inline-notification{outline:1px solid rgba(0,0,0,0)}.bx--inline-notification__close-button:focus,.bx--btn.bx--btn--ghost.bx--inline-notification__action-button:focus{color:Highlight;outline:1px solid Highlight}.bx--inline-notification__icon{fill:ButtonText}}.bx--toast-notification{display:flex;width:18rem;height:auto;padding-left:1rem;margin-top:.5rem;margin-right:1rem;margin-bottom:.5rem;box-shadow:0 2px 6px #0003;color:var(--cds-inverse-01, #ffffff)}.bx--toast-notification:first-child{margin-top:1rem}@media (min-width: 99rem){.bx--toast-notification{width:22rem}}.bx--toast-notification:not(.bx--toast-notification--low-contrast) a{color:var(--cds-inverse-link, #78a9ff)}.bx--toast-notification a{text-decoration:none}.bx--toast-notification a:hover{text-decoration:underline}.bx--toast-notification a:focus{outline:1px solid var(--cds-inverse-link, #78a9ff)}.bx--toast-notification.bx--toast-notification--low-contrast a:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--toast-notification.bx--toast-notification--low-contrast a:focus{outline-style:dotted}}.bx--toast-notification--low-contrast{color:var(--cds-text-01, #161616)}.bx--toast-notification--error{border-left:3px solid var(--cds-inverse-support-01, #fa4d56);background:var(--cds-inverse-02, #393939)}.bx--toast-notification--error .bx--inline-notification__icon,.bx--toast-notification--error .bx--toast-notification__icon,.bx--toast-notification--error .bx--actionable-notification__icon{fill:var(--cds-inverse-support-01, #fa4d56)}.bx--toast-notification--low-contrast.bx--toast-notification--error{border-left:3px solid var(--cds-support-01, #da1e28);background:var(--cds-notification-background-error, #fff1f1)}.bx--toast-notification--low-contrast.bx--toast-notification--error .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--error .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--error .bx--actionable-notification__icon{fill:var(--cds-support-01, #da1e28)}.bx--toast-notification--success{border-left:3px solid var(--cds-inverse-support-02, #42be65);background:var(--cds-inverse-02, #393939)}.bx--toast-notification--success .bx--inline-notification__icon,.bx--toast-notification--success .bx--toast-notification__icon,.bx--toast-notification--success .bx--actionable-notification__icon{fill:var(--cds-inverse-support-02, #42be65)}.bx--toast-notification--low-contrast.bx--toast-notification--success{border-left:3px solid var(--cds-support-02, #198038);background:var(--cds-notification-background-success, #defbe6)}.bx--toast-notification--low-contrast.bx--toast-notification--success .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--success .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--success .bx--actionable-notification__icon{fill:var(--cds-support-02, #198038)}.bx--toast-notification--info,.bx--toast-notification--info-square{border-left:3px solid var(--cds-inverse-support-04, #4589ff);background:var(--cds-inverse-02, #393939)}.bx--toast-notification--info .bx--inline-notification__icon,.bx--toast-notification--info .bx--toast-notification__icon,.bx--toast-notification--info .bx--actionable-notification__icon,.bx--toast-notification--info-square .bx--inline-notification__icon,.bx--toast-notification--info-square .bx--toast-notification__icon,.bx--toast-notification--info-square .bx--actionable-notification__icon{fill:var(--cds-inverse-support-04, #4589ff)}.bx--toast-notification--low-contrast.bx--toast-notification--info,.bx--toast-notification--low-contrast.bx--toast-notification--info-square{border-left:3px solid var(--cds-support-04, #0043ce);background:var(--cds-notification-background-info, #edf5ff)}.bx--toast-notification--low-contrast.bx--toast-notification--info .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--info .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--info .bx--actionable-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--info-square .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--info-square .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--info-square .bx--actionable-notification__icon{fill:var(--cds-support-04, #0043ce)}.bx--toast-notification--warning,.bx--toast-notification--warning-alt{border-left:3px solid var(--cds-inverse-support-03, #f1c21b);background:var(--cds-inverse-02, #393939)}.bx--toast-notification--warning .bx--inline-notification__icon,.bx--toast-notification--warning .bx--toast-notification__icon,.bx--toast-notification--warning .bx--actionable-notification__icon,.bx--toast-notification--warning-alt .bx--inline-notification__icon,.bx--toast-notification--warning-alt .bx--toast-notification__icon,.bx--toast-notification--warning-alt .bx--actionable-notification__icon{fill:var(--cds-inverse-support-03, #f1c21b)}.bx--toast-notification--low-contrast.bx--toast-notification--warning,.bx--toast-notification--low-contrast.bx--toast-notification--warning-alt{border-left:3px solid var(--cds-support-03, #f1c21b);background:var(--cds-notification-background-warning, #fdf6dd)}.bx--toast-notification--low-contrast.bx--toast-notification--warning .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--warning .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--warning .bx--actionable-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--warning-alt .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--warning-alt .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--warning-alt .bx--actionable-notification__icon{fill:var(--cds-support-03, #f1c21b)}.bx--toast-notification--warning .bx--toast-notification__icon path[opacity="0"]{fill:#000;opacity:1}.bx--toast-notification__icon{flex-shrink:0;margin-top:1rem;margin-right:1rem}.bx--toast-notification__details{margin-right:1rem}.bx--toast-notification__close-button{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:flex;width:3rem;min-width:3rem;height:3rem;min-height:3rem;flex-direction:column;align-items:center;justify-content:center;padding:0;border:none;margin-left:auto;background-color:#0000;cursor:pointer;transition:outline .11s,background-color .11s}.bx--toast-notification__close-button:focus{outline:2px solid var(--cds-inverse-focus-ui, #ffffff);outline-offset:-2px}.bx--toast-notification__close-button .bx--toast-notification__close-icon{fill:var(--cds-inverse-01, #ffffff)}.bx--toast-notification--low-contrast .bx--toast-notification__close-button:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--toast-notification--low-contrast .bx--toast-notification__close-button:focus{outline-style:dotted}}.bx--toast-notification--low-contrast .bx--toast-notification__close-button .bx--toast-notification__close-icon{fill:var(--cds-icon-01, #161616)}.bx--toast-notification__title{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);margin-top:1rem;font-weight:600;word-break:break-word}.bx--toast-notification__subtitle{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);margin-top:0;margin-bottom:1rem;color:var(--cds-inverse-01, #ffffff);word-break:break-word}.bx--toast-notification--low-contrast .bx--toast-notification__subtitle{color:var(--cds-text-primary, #161616)}.bx--toast-notification__caption{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);padding-top:.5rem;margin-bottom:1rem;color:var(--cds-inverse-01, #ffffff)}.bx--toast-notification--low-contrast .bx--toast-notification__caption{color:var(--cds-text-01, #161616)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--toast-notification{outline:1px solid rgba(0,0,0,0)}.bx--toast-notification__close-button:focus{color:Highlight;outline:1px solid Highlight}.bx--toast-notification__icon{fill:ButtonText}}.bx--popover{--cds-popover-offset: 0rem;--cds-popover-caret-offset: 1rem;position:absolute;z-index:6000;display:none}.bx--popover:before{position:absolute;display:block;content:""}.bx--popover--open{display:block}.bx--popover-contents{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:relative;width:-moz-max-content;width:max-content;max-width:23rem;background-color:var(--cds-ui-01, #f4f4f4);border-radius:2px;color:var(--cds-text-01, #161616)}.bx--popover--light .bx--popover-contents{background-color:var(--cds-ui-background, #ffffff)}.bx--popover--high-contrast .bx--popover-contents{background-color:var(--cds-inverse-02, #393939);color:var(--cds-inverse-01, #ffffff)}.bx--popover--caret{--cds-popover-offset: .5rem}.bx--popover--caret .bx--popover-contents:before,.bx--popover--caret .bx--popover-contents:after{position:absolute;display:inline-block;width:.5rem;height:.5rem;background-color:inherit;content:""}.bx--popover--caret .bx--popover-contents:before{z-index:-1;box-shadow:2px 2px 6px #0003}.bx--popover--bottom{bottom:0;left:50%;transform:translate(-50%,calc(100% + var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--bottom .bx--popover-contents:before,.bx--popover--caret.bx--popover--bottom .bx--popover-contents:after{top:0;left:50%;transform:translate(-50%,-50%) rotate(45deg)}.bx--popover--bottom-left{bottom:0;left:0;transform:translateY(calc(100% + var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--bottom-left .bx--popover-contents:before,.bx--popover--caret.bx--popover--bottom-left .bx--popover-contents:after{top:0;left:0;transform:translate(var(--cds-popover-caret-offset),-50%) rotate(45deg)}.bx--popover--bottom-right{right:0;bottom:0;transform:translateY(calc(100% + var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--bottom-right .bx--popover-contents:before,.bx--popover--caret.bx--popover--bottom-right .bx--popover-contents:after{top:0;right:0;transform:translate(calc(-1 * var(--cds-popover-caret-offset)),-50%) rotate(45deg)}.bx--popover--bottom.bx--popover:before,.bx--popover--bottom-left.bx--popover:before,.bx--popover--bottom-right.bx--popover:before{top:0;right:0;left:0;height:var(--cds-popover-offset);transform:translateY(-100%)}.bx--popover--top{bottom:100%;left:50%;transform:translate(-50%,calc(-1 * var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--top .bx--popover-contents:before,.bx--popover--caret.bx--popover--top .bx--popover-contents:after{bottom:0;left:50%;transform:translate(-50%,50%) rotate(45deg)}.bx--popover--top-left{bottom:100%;left:0;transform:translateY(calc(-1 * var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--top-left .bx--popover-contents:before,.bx--popover--caret.bx--popover--top-left .bx--popover-contents:after{bottom:0;left:0;transform:translate(var(--cds-popover-caret-offset),50%) rotate(45deg)}.bx--popover--top-right{right:0;bottom:100%;transform:translateY(calc(-1 * var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--top-right .bx--popover-contents:before,.bx--popover--caret.bx--popover--top-right .bx--popover-contents:after{right:0;bottom:0;transform:translate(calc(-1 * var(--cds-popover-caret-offset)),50%) rotate(45deg)}.bx--popover--top.bx--popover:before,.bx--popover--top-left.bx--popover:before,.bx--popover--top-right.bx--popover:before{right:0;bottom:0;left:0;height:var(--cds-popover-offset);transform:translateY(100%)}.bx--popover--right{top:50%;left:100%;transform:translate(var(--cds-popover-offset),-50%)}.bx--popover--caret.bx--popover--right .bx--popover-contents:before,.bx--popover--caret.bx--popover--right .bx--popover-contents:after{top:50%;left:0;transform:translate(-50%,-50%) rotate(45deg)}.bx--popover--right-top{top:0;left:100%;transform:translate(8px)}.bx--popover--caret.bx--popover--right-top .bx--popover-contents:before,.bx--popover--caret.bx--popover--right-top .bx--popover-contents:after{top:0;left:0;transform:translate(-50%,var(--cds-popover-caret-offset)) rotate(45deg)}.bx--popover--right-bottom{bottom:0;left:100%;transform:translate(var(--cds-popover-offset))}.bx--popover--caret.bx--popover--right-bottom .bx--popover-contents:before,.bx--popover--caret.bx--popover--right-bottom .bx--popover-contents:after{bottom:0;left:0;transform:translate(-50%,calc(-1 * var(--cds-popover-caret-offset))) rotate(45deg)}.bx--popover--right.bx--popover:before,.bx--popover--right-top.bx--popover:before,.bx--popover--right-bottom.bx--popover:before{top:0;bottom:0;left:0;width:var(--cds-popover-offset);transform:translate(-100%)}.bx--popover--left{top:50%;right:100%;transform:translate(calc(-1 * var(--cds-popover-offset)),-50%)}.bx--popover--caret.bx--popover--left .bx--popover-contents:before,.bx--popover--caret.bx--popover--left .bx--popover-contents:after{top:50%;right:0;transform:translate(50%,-50%) rotate(45deg)}.bx--popover--left-top{top:0;right:100%;transform:translate(calc(-1 * var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--left-top .bx--popover-contents:before,.bx--popover--caret.bx--popover--left-top .bx--popover-contents:after{top:0;right:0;transform:translate(50%,var(--cds-popover-caret-offset)) rotate(45deg)}.bx--popover--left-bottom{right:100%;bottom:0;transform:translate(calc(-1 * var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--left-bottom .bx--popover-contents:before,.bx--popover--caret.bx--popover--left-bottom .bx--popover-contents:after{right:0;bottom:0;transform:translate(50%,calc(-1 * var(--cds-popover-caret-offset))) rotate(45deg)}.bx--popover--left.bx--popover:before,.bx--popover--left-top.bx--popover:before,.bx--popover--left-bottom.bx--popover:before{top:0;right:0;bottom:0;width:var(--cds-popover-offset);transform:translate(100%)}:root{--cds-interactive-01: #0f62fe;--cds-interactive-02: #393939;--cds-interactive-03: #0f62fe;--cds-interactive-04: #0f62fe;--cds-ui-background: #ffffff;--cds-ui-01: #f4f4f4;--cds-ui-02: #ffffff;--cds-ui-03: #e0e0e0;--cds-ui-04: #8d8d8d;--cds-ui-05: #161616;--cds-text-01: #161616;--cds-text-02: #525252;--cds-text-03: #a8a8a8;--cds-text-04: #ffffff;--cds-text-05: #6f6f6f;--cds-text-error: #da1e28;--cds-icon-01: #161616;--cds-icon-02: #525252;--cds-icon-03: #ffffff;--cds-link-01: #0f62fe;--cds-link-02: #0043ce;--cds-inverse-link: #78a9ff;--cds-field-01: #f4f4f4;--cds-field-02: #ffffff;--cds-inverse-01: #ffffff;--cds-inverse-02: #393939;--cds-support-01: #da1e28;--cds-support-02: #198038;--cds-support-03: #f1c21b;--cds-support-04: #0043ce;--cds-inverse-support-01: #fa4d56;--cds-inverse-support-02: #42be65;--cds-inverse-support-03: #f1c21b;--cds-inverse-support-04: #4589ff;--cds-overlay-01: rgba(22, 22, 22, .5);--cds-danger-01: #da1e28;--cds-danger-02: #da1e28;--cds-focus: #0f62fe;--cds-inverse-focus-ui: #ffffff;--cds-hover-primary: #0353e9;--cds-active-primary: #002d9c;--cds-hover-primary-text: #0043ce;--cds-hover-secondary: #4c4c4c;--cds-active-secondary: #6f6f6f;--cds-hover-tertiary: #0353e9;--cds-active-tertiary: #002d9c;--cds-hover-ui: #e5e5e5;--cds-hover-light-ui: #e5e5e5;--cds-hover-selected-ui: #cacaca;--cds-active-ui: #c6c6c6;--cds-active-light-ui: #c6c6c6;--cds-selected-ui: #e0e0e0;--cds-selected-light-ui: #e0e0e0;--cds-inverse-hover-ui: #4c4c4c;--cds-hover-danger: #b81921;--cds-active-danger: #750e13;--cds-hover-row: #e5e5e5;--cds-visited-link: #8a3ffc;--cds-disabled-01: #f4f4f4;--cds-disabled-02: #c6c6c6;--cds-disabled-03: #8d8d8d;--cds-highlight: #d0e2ff;--cds-decorative-01: #e0e0e0;--cds-button-separator: #e0e0e0;--cds-skeleton-01: #e5e5e5;--cds-skeleton-02: #c6c6c6;--cds-background: #ffffff;--cds-layer: #f4f4f4;--cds-layer-accent: #e0e0e0;--cds-layer-accent-hover: #d1d1d1;--cds-layer-accent-active: #a8a8a8;--cds-field: #f4f4f4;--cds-background-inverse: #393939;--cds-background-brand: #0f62fe;--cds-interactive: #0f62fe;--cds-border-subtle: #e0e0e0;--cds-border-strong: #8d8d8d;--cds-border-inverse: #161616;--cds-border-interactive: #0f62fe;--cds-text-primary: #161616;--cds-text-secondary: #525252;--cds-text-placeholder: #a8a8a8;--cds-text-helper: #6f6f6f;--cds-text-on-color: #ffffff;--cds-text-inverse: #ffffff;--cds-link-primary: #0f62fe;--cds-link-secondary: #0043ce;--cds-link-visited: #8a3ffc;--cds-link-inverse: #78a9ff;--cds-icon-primary: #161616;--cds-icon-secondary: #525252;--cds-icon-on-color: #ffffff;--cds-icon-inverse: #ffffff;--cds-support-error: #da1e28;--cds-support-success: #198038;--cds-support-warning: #f1c21b;--cds-support-info: #0043ce;--cds-support-error-inverse: #fa4d56;--cds-support-success-inverse: #42be65;--cds-support-warning-inverse: #f1c21b;--cds-support-info-inverse: #4589ff;--cds-overlay: rgba(22, 22, 22, .5);--cds-toggle-off: #8d8d8d;--cds-shadow: rgba(0, 0, 0, .3);--cds-button-primary: #0f62fe;--cds-button-secondary: #393939;--cds-button-tertiary: #0f62fe;--cds-button-danger-primary: #da1e28;--cds-button-danger-secondary: #da1e28;--cds-background-active: #c6c6c6;--cds-layer-active: #c6c6c6;--cds-button-danger-active: #750e13;--cds-button-primary-active: #002d9c;--cds-button-secondary-active: #6f6f6f;--cds-button-tertiary-active: #002d9c;--cds-focus-inset: #ffffff;--cds-focus-inverse: #ffffff;--cds-background-hover: #e5e5e5;--cds-layer-hover: #e5e5e5;--cds-field-hover: #e5e5e5;--cds-background-inverse-hover: #4c4c4c;--cds-link-primary-hover: #0043ce;--cds-button-danger-hover: #b81921;--cds-button-primary-hover: #0353e9;--cds-button-secondary-hover: #4c4c4c;--cds-button-tertiary-hover: #0353e9;--cds-background-selected: #e0e0e0;--cds-background-selected-hover: #cacaca;--cds-layer-selected: #e0e0e0;--cds-layer-selected-hover: #cacaca;--cds-layer-selected-inverse: #161616;--cds-border-subtle-selected: #c6c6c6;--cds-border-disabled: #f4f4f4;--cds-text-disabled: #c6c6c6;--cds-button-disabled: #c6c6c6;--cds-icon-disabled: #c6c6c6;--cds-text-on-color-disabled: #8d8d8d;--cds-icon-on-color-disabled: #8d8d8d;--cds-layer-selected-disabled: #8d8d8d;--cds-skeleton-background: #e5e5e5;--cds-skeleton-element: #c6c6c6;--cds-brand-01: #0f62fe;--cds-brand-02: #393939;--cds-brand-03: #0f62fe;--cds-active-01: #c6c6c6;--cds-hover-field: #e5e5e5;--cds-danger: #da1e28;--cds-caption-01-font-size: .75rem;--cds-caption-01-font-weight: 400;--cds-caption-01-line-height: 1.33333;--cds-caption-01-letter-spacing: .32px;--cds-caption-02-font-size: .875rem;--cds-caption-02-font-weight: 400;--cds-caption-02-line-height: 1.28572;--cds-caption-02-letter-spacing: .32px;--cds-label-01-font-size: .75rem;--cds-label-01-font-weight: 400;--cds-label-01-line-height: 1.33333;--cds-label-01-letter-spacing: .32px;--cds-label-02-font-size: .875rem;--cds-label-02-font-weight: 400;--cds-label-02-line-height: 1.28572;--cds-label-02-letter-spacing: .16px;--cds-helper-text-01-font-size: .75rem;--cds-helper-text-01-line-height: 1.33333;--cds-helper-text-01-letter-spacing: .32px;--cds-helper-text-02-font-size: .875rem;--cds-helper-text-02-line-height: 1.28572;--cds-helper-text-02-letter-spacing: .16px;--cds-body-short-01-font-size: .875rem;--cds-body-short-01-font-weight: 400;--cds-body-short-01-line-height: 1.28572;--cds-body-short-01-letter-spacing: .16px;--cds-body-long-01-font-size: .875rem;--cds-body-long-01-font-weight: 400;--cds-body-long-01-line-height: 1.42857;--cds-body-long-01-letter-spacing: .16px;--cds-body-short-02-font-size: 1rem;--cds-body-short-02-font-weight: 400;--cds-body-short-02-line-height: 1.375;--cds-body-short-02-letter-spacing: 0;--cds-body-long-02-font-size: 1rem;--cds-body-long-02-font-weight: 400;--cds-body-long-02-line-height: 1.5;--cds-body-long-02-letter-spacing: 0;--cds-code-01-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-01-font-size: .75rem;--cds-code-01-font-weight: 400;--cds-code-01-line-height: 1.33333;--cds-code-01-letter-spacing: .32px;--cds-code-02-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-02-font-size: .875rem;--cds-code-02-font-weight: 400;--cds-code-02-line-height: 1.42857;--cds-code-02-letter-spacing: .32px;--cds-heading-01-font-size: .875rem;--cds-heading-01-font-weight: 600;--cds-heading-01-line-height: 1.42857;--cds-heading-01-letter-spacing: .16px;--cds-productive-heading-01-font-size: .875rem;--cds-productive-heading-01-font-weight: 600;--cds-productive-heading-01-line-height: 1.28572;--cds-productive-heading-01-letter-spacing: .16px;--cds-heading-02-font-size: 1rem;--cds-heading-02-font-weight: 600;--cds-heading-02-line-height: 1.5;--cds-heading-02-letter-spacing: 0;--cds-productive-heading-02-font-size: 1rem;--cds-productive-heading-02-font-weight: 600;--cds-productive-heading-02-line-height: 1.375;--cds-productive-heading-02-letter-spacing: 0;--cds-productive-heading-03-font-size: 1.25rem;--cds-productive-heading-03-font-weight: 400;--cds-productive-heading-03-line-height: 1.4;--cds-productive-heading-03-letter-spacing: 0;--cds-productive-heading-04-font-size: 1.75rem;--cds-productive-heading-04-font-weight: 400;--cds-productive-heading-04-line-height: 1.28572;--cds-productive-heading-04-letter-spacing: 0;--cds-productive-heading-05-font-size: 2rem;--cds-productive-heading-05-font-weight: 400;--cds-productive-heading-05-line-height: 1.25;--cds-productive-heading-05-letter-spacing: 0;--cds-productive-heading-06-font-size: 2.625rem;--cds-productive-heading-06-font-weight: 300;--cds-productive-heading-06-line-height: 1.199;--cds-productive-heading-06-letter-spacing: 0;--cds-productive-heading-07-font-size: 3.375rem;--cds-productive-heading-07-font-weight: 300;--cds-productive-heading-07-line-height: 1.199;--cds-productive-heading-07-letter-spacing: 0;--cds-expressive-heading-01-font-size: .875rem;--cds-expressive-heading-01-font-weight: 600;--cds-expressive-heading-01-line-height: 1.25;--cds-expressive-heading-01-letter-spacing: .16px;--cds-expressive-heading-02-font-size: 1rem;--cds-expressive-heading-02-font-weight: 600;--cds-expressive-heading-02-line-height: 1.5;--cds-expressive-heading-02-letter-spacing: 0;--cds-expressive-heading-03-font-size: 1.25rem;--cds-expressive-heading-03-font-weight: 400;--cds-expressive-heading-03-line-height: 1.4;--cds-expressive-heading-03-letter-spacing: 0;--cds-expressive-heading-04-font-size: 1.75rem;--cds-expressive-heading-04-font-weight: 400;--cds-expressive-heading-04-line-height: 1.28572;--cds-expressive-heading-04-letter-spacing: 0;--cds-expressive-heading-05-font-size: 2rem;--cds-expressive-heading-05-font-weight: 400;--cds-expressive-heading-05-line-height: 1.25;--cds-expressive-heading-05-letter-spacing: 0;--cds-expressive-heading-06-font-size: 2rem;--cds-expressive-heading-06-font-weight: 600;--cds-expressive-heading-06-line-height: 1.25;--cds-expressive-heading-06-letter-spacing: 0;--cds-expressive-paragraph-01-font-size: 1.5rem;--cds-expressive-paragraph-01-font-weight: 300;--cds-expressive-paragraph-01-line-height: 1.334;--cds-expressive-paragraph-01-letter-spacing: 0;--cds-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-01-font-size: 1.25rem;--cds-quotation-01-font-weight: 400;--cds-quotation-01-line-height: 1.3;--cds-quotation-01-letter-spacing: 0;--cds-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-02-font-size: 2rem;--cds-quotation-02-font-weight: 300;--cds-quotation-02-line-height: 1.25;--cds-quotation-02-letter-spacing: 0;--cds-display-01-font-size: 2.625rem;--cds-display-01-font-weight: 300;--cds-display-01-line-height: 1.19;--cds-display-01-letter-spacing: 0;--cds-display-02-font-size: 2.625rem;--cds-display-02-font-weight: 600;--cds-display-02-line-height: 1.19;--cds-display-02-letter-spacing: 0;--cds-display-03-font-size: 2.625rem;--cds-display-03-font-weight: 300;--cds-display-03-line-height: 1.19;--cds-display-03-letter-spacing: 0;--cds-display-04-font-size: 2.625rem;--cds-display-04-font-weight: 600;--cds-display-04-line-height: 1.19;--cds-display-04-letter-spacing: 0;--cds-legal-01-font-size: .75rem;--cds-legal-01-font-weight: 400;--cds-legal-01-line-height: 1.33333;--cds-legal-01-letter-spacing: .32px;--cds-legal-02-font-size: .875rem;--cds-legal-02-font-weight: 400;--cds-legal-02-line-height: 1.28572;--cds-legal-02-letter-spacing: .16px;--cds-body-compact-01-font-size: .875rem;--cds-body-compact-01-font-weight: 400;--cds-body-compact-01-line-height: 1.28572;--cds-body-compact-01-letter-spacing: .16px;--cds-body-compact-02-font-size: 1rem;--cds-body-compact-02-font-weight: 400;--cds-body-compact-02-line-height: 1.375;--cds-body-compact-02-letter-spacing: 0;--cds-body-01-font-size: .875rem;--cds-body-01-font-weight: 400;--cds-body-01-line-height: 1.42857;--cds-body-01-letter-spacing: .16px;--cds-body-02-font-size: 1rem;--cds-body-02-font-weight: 400;--cds-body-02-line-height: 1.5;--cds-body-02-letter-spacing: 0;--cds-heading-compact-01-font-size: .875rem;--cds-heading-compact-01-font-weight: 600;--cds-heading-compact-01-line-height: 1.28572;--cds-heading-compact-01-letter-spacing: .16px;--cds-heading-compact-02-font-size: 1rem;--cds-heading-compact-02-font-weight: 600;--cds-heading-compact-02-line-height: 1.375;--cds-heading-compact-02-letter-spacing: 0;--cds-heading-03-font-size: 1.25rem;--cds-heading-03-font-weight: 400;--cds-heading-03-line-height: 1.4;--cds-heading-03-letter-spacing: 0;--cds-heading-04-font-size: 1.75rem;--cds-heading-04-font-weight: 400;--cds-heading-04-line-height: 1.28572;--cds-heading-04-letter-spacing: 0;--cds-heading-05-font-size: 2rem;--cds-heading-05-font-weight: 400;--cds-heading-05-line-height: 1.25;--cds-heading-05-letter-spacing: 0;--cds-heading-06-font-size: 2.625rem;--cds-heading-06-font-weight: 300;--cds-heading-06-line-height: 1.199;--cds-heading-06-letter-spacing: 0;--cds-heading-07-font-size: 3.375rem;--cds-heading-07-font-weight: 300;--cds-heading-07-line-height: 1.199;--cds-heading-07-letter-spacing: 0;--cds-fluid-heading-03-font-size: 1.25rem;--cds-fluid-heading-03-font-weight: 400;--cds-fluid-heading-03-line-height: 1.4;--cds-fluid-heading-03-letter-spacing: 0;--cds-fluid-heading-04-font-size: 1.75rem;--cds-fluid-heading-04-font-weight: 400;--cds-fluid-heading-04-line-height: 1.28572;--cds-fluid-heading-04-letter-spacing: 0;--cds-fluid-heading-05-font-size: 2rem;--cds-fluid-heading-05-font-weight: 400;--cds-fluid-heading-05-line-height: 1.25;--cds-fluid-heading-05-letter-spacing: 0;--cds-fluid-heading-06-font-size: 2rem;--cds-fluid-heading-06-font-weight: 600;--cds-fluid-heading-06-line-height: 1.25;--cds-fluid-heading-06-letter-spacing: 0;--cds-fluid-paragraph-01-font-size: 1.5rem;--cds-fluid-paragraph-01-font-weight: 300;--cds-fluid-paragraph-01-line-height: 1.334;--cds-fluid-paragraph-01-letter-spacing: 0;--cds-fluid-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-01-font-size: 1.25rem;--cds-fluid-quotation-01-font-weight: 400;--cds-fluid-quotation-01-line-height: 1.3;--cds-fluid-quotation-01-letter-spacing: 0;--cds-fluid-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-02-font-size: 2rem;--cds-fluid-quotation-02-font-weight: 300;--cds-fluid-quotation-02-line-height: 1.25;--cds-fluid-quotation-02-letter-spacing: 0;--cds-fluid-display-01-font-size: 2.625rem;--cds-fluid-display-01-font-weight: 300;--cds-fluid-display-01-line-height: 1.19;--cds-fluid-display-01-letter-spacing: 0;--cds-fluid-display-02-font-size: 2.625rem;--cds-fluid-display-02-font-weight: 600;--cds-fluid-display-02-line-height: 1.19;--cds-fluid-display-02-letter-spacing: 0;--cds-fluid-display-03-font-size: 2.625rem;--cds-fluid-display-03-font-weight: 300;--cds-fluid-display-03-line-height: 1.19;--cds-fluid-display-03-letter-spacing: 0;--cds-fluid-display-04-font-size: 2.625rem;--cds-fluid-display-04-font-weight: 600;--cds-fluid-display-04-line-height: 1.19;--cds-fluid-display-04-letter-spacing: 0;--cds-spacing-01: .125rem;--cds-spacing-02: .25rem;--cds-spacing-03: .5rem;--cds-spacing-04: .75rem;--cds-spacing-05: 1rem;--cds-spacing-06: 1.5rem;--cds-spacing-07: 2rem;--cds-spacing-08: 2.5rem;--cds-spacing-09: 3rem;--cds-spacing-10: 4rem;--cds-spacing-11: 5rem;--cds-spacing-12: 6rem;--cds-spacing-13: 10rem;--cds-fluid-spacing-01: 0;--cds-fluid-spacing-02: 2vw;--cds-fluid-spacing-03: 5vw;--cds-fluid-spacing-04: 10vw;--cds-layout-01: 1rem;--cds-layout-02: 1.5rem;--cds-layout-03: 2rem;--cds-layout-04: 3rem;--cds-layout-05: 4rem;--cds-layout-06: 6rem;--cds-layout-07: 10rem;--cds-container-01: 1.5rem;--cds-container-02: 2rem;--cds-container-03: 2.5rem;--cds-container-04: 3rem;--cds-container-05: 4rem;--cds-size-xsmall: 1.5rem;--cds-size-small: 2rem;--cds-size-medium: 2.5rem;--cds-size-large: 3rem;--cds-size-xlarge: 4rem;--cds-size-2XLarge: 5rem;--cds-icon-size-01: 1rem;--cds-icon-size-02: 1.25rem;--cds-tag-background-red: #ffd7d9;--cds-tag-color-red: #750e13;--cds-tag-hover-red: #ffb3b8;--cds-tag-background-magenta: #ffd6e8;--cds-tag-color-magenta: #740937;--cds-tag-hover-magenta: #ffafd2;--cds-tag-background-purple: #e8daff;--cds-tag-color-purple: #491d8b;--cds-tag-hover-purple: #d4bbff;--cds-tag-background-blue: #d0e2ff;--cds-tag-color-blue: #002d9c;--cds-tag-hover-blue: #a6c8ff;--cds-tag-background-cyan: #bae6ff;--cds-tag-color-cyan: #003a6d;--cds-tag-hover-cyan: #82cfff;--cds-tag-background-teal: #9ef0f0;--cds-tag-color-teal: #004144;--cds-tag-hover-teal: #3ddbd9;--cds-tag-background-green: #a7f0ba;--cds-tag-color-green: #044317;--cds-tag-hover-green: #6fdc8c;--cds-tag-background-gray: #e0e0e0;--cds-tag-color-gray: #393939;--cds-tag-hover-gray: #c6c6c6;--cds-tag-background-cool-gray: #dde1e6;--cds-tag-color-cool-gray: #343a3f;--cds-tag-hover-cool-gray: #c1c7cd;--cds-tag-background-warm-gray: #e5e0df;--cds-tag-color-warm-gray: #3c3838;--cds-tag-hover-warm-gray: #cac5c4;--cds-notification-background-error: #fff1f1;--cds-notification-background-success: #defbe6;--cds-notification-background-info: #edf5ff;--cds-notification-background-warning: #fdf6dd;--cds-notification-action-hover: #ffffff}:root[theme=g10]{--cds-interactive-01: #0f62fe;--cds-interactive-02: #393939;--cds-interactive-03: #0f62fe;--cds-interactive-04: #0f62fe;--cds-ui-background: #f4f4f4;--cds-ui-01: #ffffff;--cds-ui-02: #f4f4f4;--cds-ui-03: #e0e0e0;--cds-ui-04: #8d8d8d;--cds-ui-05: #161616;--cds-text-01: #161616;--cds-text-02: #525252;--cds-text-03: #a8a8a8;--cds-text-04: #ffffff;--cds-text-05: #6f6f6f;--cds-text-error: #da1e28;--cds-icon-01: #161616;--cds-icon-02: #525252;--cds-icon-03: #ffffff;--cds-link-01: #0f62fe;--cds-link-02: #0043ce;--cds-inverse-link: #78a9ff;--cds-field-01: #ffffff;--cds-field-02: #f4f4f4;--cds-inverse-01: #ffffff;--cds-inverse-02: #393939;--cds-support-01: #da1e28;--cds-support-02: #198038;--cds-support-03: #f1c21b;--cds-support-04: #0043ce;--cds-inverse-support-01: #fa4d56;--cds-inverse-support-02: #42be65;--cds-inverse-support-03: #f1c21b;--cds-inverse-support-04: #4589ff;--cds-overlay-01: rgba(22, 22, 22, .5);--cds-danger-01: #da1e28;--cds-danger-02: #da1e28;--cds-focus: #0f62fe;--cds-inverse-focus-ui: #ffffff;--cds-hover-primary: #0353e9;--cds-active-primary: #002d9c;--cds-hover-primary-text: #0043ce;--cds-hover-secondary: #4c4c4c;--cds-active-secondary: #6f6f6f;--cds-hover-tertiary: #0353e9;--cds-active-tertiary: #002d9c;--cds-hover-ui: #e5e5e5;--cds-hover-light-ui: #e5e5e5;--cds-hover-selected-ui: #cacaca;--cds-active-ui: #c6c6c6;--cds-active-light-ui: #c6c6c6;--cds-selected-ui: #e0e0e0;--cds-selected-light-ui: #e0e0e0;--cds-inverse-hover-ui: #4c4c4c;--cds-hover-danger: #b81921;--cds-active-danger: #750e13;--cds-hover-row: #e5e5e5;--cds-visited-link: #8a3ffc;--cds-disabled-01: #ffffff;--cds-disabled-02: #c6c6c6;--cds-disabled-03: #8d8d8d;--cds-highlight: #d0e2ff;--cds-decorative-01: #e0e0e0;--cds-button-separator: #e0e0e0;--cds-skeleton-01: #e5e5e5;--cds-skeleton-02: #c6c6c6;--cds-background: #f4f4f4;--cds-layer: #ffffff;--cds-layer-accent: #e0e0e0;--cds-layer-accent-hover: #d1d1d1;--cds-layer-accent-active: #a8a8a8;--cds-field: #ffffff;--cds-background-inverse: #393939;--cds-background-brand: #0f62fe;--cds-interactive: #0f62fe;--cds-border-subtle: #e0e0e0;--cds-border-strong: #8d8d8d;--cds-border-inverse: #161616;--cds-border-interactive: #0f62fe;--cds-text-primary: #161616;--cds-text-secondary: #525252;--cds-text-placeholder: #a8a8a8;--cds-text-helper: #6f6f6f;--cds-text-on-color: #ffffff;--cds-text-inverse: #ffffff;--cds-link-primary: #0f62fe;--cds-link-secondary: #0043ce;--cds-link-visited: #8a3ffc;--cds-link-inverse: #78a9ff;--cds-icon-primary: #161616;--cds-icon-secondary: #525252;--cds-icon-on-color: #ffffff;--cds-icon-inverse: #ffffff;--cds-support-error: #da1e28;--cds-support-success: #198038;--cds-support-warning: #f1c21b;--cds-support-info: #0043ce;--cds-support-error-inverse: #fa4d56;--cds-support-success-inverse: #42be65;--cds-support-warning-inverse: #f1c21b;--cds-support-info-inverse: #4589ff;--cds-overlay: rgba(22, 22, 22, .5);--cds-toggle-off: #8d8d8d;--cds-shadow: rgba(0, 0, 0, .3);--cds-button-primary: #0f62fe;--cds-button-secondary: #393939;--cds-button-tertiary: #0f62fe;--cds-button-danger-primary: #da1e28;--cds-button-danger-secondary: #da1e28;--cds-background-active: #c6c6c6;--cds-layer-active: #c6c6c6;--cds-button-danger-active: #750e13;--cds-button-primary-active: #002d9c;--cds-button-secondary-active: #6f6f6f;--cds-button-tertiary-active: #002d9c;--cds-focus-inset: #ffffff;--cds-focus-inverse: #ffffff;--cds-background-hover: #e5e5e5;--cds-layer-hover: #e5e5e5;--cds-field-hover: #e5e5e5;--cds-background-inverse-hover: #4c4c4c;--cds-link-primary-hover: #0043ce;--cds-button-danger-hover: #b81921;--cds-button-primary-hover: #0353e9;--cds-button-secondary-hover: #4c4c4c;--cds-button-tertiary-hover: #0353e9;--cds-background-selected: #e0e0e0;--cds-background-selected-hover: #cacaca;--cds-layer-selected: #e0e0e0;--cds-layer-selected-hover: #cacaca;--cds-layer-selected-inverse: #161616;--cds-border-subtle-selected: #c6c6c6;--cds-border-disabled: #ffffff;--cds-text-disabled: #c6c6c6;--cds-button-disabled: #c6c6c6;--cds-icon-disabled: #c6c6c6;--cds-text-on-color-disabled: #8d8d8d;--cds-icon-on-color-disabled: #8d8d8d;--cds-layer-selected-disabled: #8d8d8d;--cds-skeleton-background: #e5e5e5;--cds-skeleton-element: #c6c6c6;--cds-brand-01: #0f62fe;--cds-brand-02: #393939;--cds-brand-03: #0f62fe;--cds-active-01: #c6c6c6;--cds-hover-field: #e5e5e5;--cds-danger: #da1e28;--cds-caption-01-font-size: .75rem;--cds-caption-01-font-weight: 400;--cds-caption-01-line-height: 1.33333;--cds-caption-01-letter-spacing: .32px;--cds-caption-02-font-size: .875rem;--cds-caption-02-font-weight: 400;--cds-caption-02-line-height: 1.28572;--cds-caption-02-letter-spacing: .32px;--cds-label-01-font-size: .75rem;--cds-label-01-font-weight: 400;--cds-label-01-line-height: 1.33333;--cds-label-01-letter-spacing: .32px;--cds-label-02-font-size: .875rem;--cds-label-02-font-weight: 400;--cds-label-02-line-height: 1.28572;--cds-label-02-letter-spacing: .16px;--cds-helper-text-01-font-size: .75rem;--cds-helper-text-01-line-height: 1.33333;--cds-helper-text-01-letter-spacing: .32px;--cds-helper-text-02-font-size: .875rem;--cds-helper-text-02-line-height: 1.28572;--cds-helper-text-02-letter-spacing: .16px;--cds-body-short-01-font-size: .875rem;--cds-body-short-01-font-weight: 400;--cds-body-short-01-line-height: 1.28572;--cds-body-short-01-letter-spacing: .16px;--cds-body-long-01-font-size: .875rem;--cds-body-long-01-font-weight: 400;--cds-body-long-01-line-height: 1.42857;--cds-body-long-01-letter-spacing: .16px;--cds-body-short-02-font-size: 1rem;--cds-body-short-02-font-weight: 400;--cds-body-short-02-line-height: 1.375;--cds-body-short-02-letter-spacing: 0;--cds-body-long-02-font-size: 1rem;--cds-body-long-02-font-weight: 400;--cds-body-long-02-line-height: 1.5;--cds-body-long-02-letter-spacing: 0;--cds-code-01-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-01-font-size: .75rem;--cds-code-01-font-weight: 400;--cds-code-01-line-height: 1.33333;--cds-code-01-letter-spacing: .32px;--cds-code-02-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-02-font-size: .875rem;--cds-code-02-font-weight: 400;--cds-code-02-line-height: 1.42857;--cds-code-02-letter-spacing: .32px;--cds-heading-01-font-size: .875rem;--cds-heading-01-font-weight: 600;--cds-heading-01-line-height: 1.42857;--cds-heading-01-letter-spacing: .16px;--cds-productive-heading-01-font-size: .875rem;--cds-productive-heading-01-font-weight: 600;--cds-productive-heading-01-line-height: 1.28572;--cds-productive-heading-01-letter-spacing: .16px;--cds-heading-02-font-size: 1rem;--cds-heading-02-font-weight: 600;--cds-heading-02-line-height: 1.5;--cds-heading-02-letter-spacing: 0;--cds-productive-heading-02-font-size: 1rem;--cds-productive-heading-02-font-weight: 600;--cds-productive-heading-02-line-height: 1.375;--cds-productive-heading-02-letter-spacing: 0;--cds-productive-heading-03-font-size: 1.25rem;--cds-productive-heading-03-font-weight: 400;--cds-productive-heading-03-line-height: 1.4;--cds-productive-heading-03-letter-spacing: 0;--cds-productive-heading-04-font-size: 1.75rem;--cds-productive-heading-04-font-weight: 400;--cds-productive-heading-04-line-height: 1.28572;--cds-productive-heading-04-letter-spacing: 0;--cds-productive-heading-05-font-size: 2rem;--cds-productive-heading-05-font-weight: 400;--cds-productive-heading-05-line-height: 1.25;--cds-productive-heading-05-letter-spacing: 0;--cds-productive-heading-06-font-size: 2.625rem;--cds-productive-heading-06-font-weight: 300;--cds-productive-heading-06-line-height: 1.199;--cds-productive-heading-06-letter-spacing: 0;--cds-productive-heading-07-font-size: 3.375rem;--cds-productive-heading-07-font-weight: 300;--cds-productive-heading-07-line-height: 1.199;--cds-productive-heading-07-letter-spacing: 0;--cds-expressive-heading-01-font-size: .875rem;--cds-expressive-heading-01-font-weight: 600;--cds-expressive-heading-01-line-height: 1.25;--cds-expressive-heading-01-letter-spacing: .16px;--cds-expressive-heading-02-font-size: 1rem;--cds-expressive-heading-02-font-weight: 600;--cds-expressive-heading-02-line-height: 1.5;--cds-expressive-heading-02-letter-spacing: 0;--cds-expressive-heading-03-font-size: 1.25rem;--cds-expressive-heading-03-font-weight: 400;--cds-expressive-heading-03-line-height: 1.4;--cds-expressive-heading-03-letter-spacing: 0;--cds-expressive-heading-04-font-size: 1.75rem;--cds-expressive-heading-04-font-weight: 400;--cds-expressive-heading-04-line-height: 1.28572;--cds-expressive-heading-04-letter-spacing: 0;--cds-expressive-heading-05-font-size: 2rem;--cds-expressive-heading-05-font-weight: 400;--cds-expressive-heading-05-line-height: 1.25;--cds-expressive-heading-05-letter-spacing: 0;--cds-expressive-heading-06-font-size: 2rem;--cds-expressive-heading-06-font-weight: 600;--cds-expressive-heading-06-line-height: 1.25;--cds-expressive-heading-06-letter-spacing: 0;--cds-expressive-paragraph-01-font-size: 1.5rem;--cds-expressive-paragraph-01-font-weight: 300;--cds-expressive-paragraph-01-line-height: 1.334;--cds-expressive-paragraph-01-letter-spacing: 0;--cds-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-01-font-size: 1.25rem;--cds-quotation-01-font-weight: 400;--cds-quotation-01-line-height: 1.3;--cds-quotation-01-letter-spacing: 0;--cds-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-02-font-size: 2rem;--cds-quotation-02-font-weight: 300;--cds-quotation-02-line-height: 1.25;--cds-quotation-02-letter-spacing: 0;--cds-display-01-font-size: 2.625rem;--cds-display-01-font-weight: 300;--cds-display-01-line-height: 1.19;--cds-display-01-letter-spacing: 0;--cds-display-02-font-size: 2.625rem;--cds-display-02-font-weight: 600;--cds-display-02-line-height: 1.19;--cds-display-02-letter-spacing: 0;--cds-display-03-font-size: 2.625rem;--cds-display-03-font-weight: 300;--cds-display-03-line-height: 1.19;--cds-display-03-letter-spacing: 0;--cds-display-04-font-size: 2.625rem;--cds-display-04-font-weight: 600;--cds-display-04-line-height: 1.19;--cds-display-04-letter-spacing: 0;--cds-legal-01-font-size: .75rem;--cds-legal-01-font-weight: 400;--cds-legal-01-line-height: 1.33333;--cds-legal-01-letter-spacing: .32px;--cds-legal-02-font-size: .875rem;--cds-legal-02-font-weight: 400;--cds-legal-02-line-height: 1.28572;--cds-legal-02-letter-spacing: .16px;--cds-body-compact-01-font-size: .875rem;--cds-body-compact-01-font-weight: 400;--cds-body-compact-01-line-height: 1.28572;--cds-body-compact-01-letter-spacing: .16px;--cds-body-compact-02-font-size: 1rem;--cds-body-compact-02-font-weight: 400;--cds-body-compact-02-line-height: 1.375;--cds-body-compact-02-letter-spacing: 0;--cds-body-01-font-size: .875rem;--cds-body-01-font-weight: 400;--cds-body-01-line-height: 1.42857;--cds-body-01-letter-spacing: .16px;--cds-body-02-font-size: 1rem;--cds-body-02-font-weight: 400;--cds-body-02-line-height: 1.5;--cds-body-02-letter-spacing: 0;--cds-heading-compact-01-font-size: .875rem;--cds-heading-compact-01-font-weight: 600;--cds-heading-compact-01-line-height: 1.28572;--cds-heading-compact-01-letter-spacing: .16px;--cds-heading-compact-02-font-size: 1rem;--cds-heading-compact-02-font-weight: 600;--cds-heading-compact-02-line-height: 1.375;--cds-heading-compact-02-letter-spacing: 0;--cds-heading-03-font-size: 1.25rem;--cds-heading-03-font-weight: 400;--cds-heading-03-line-height: 1.4;--cds-heading-03-letter-spacing: 0;--cds-heading-04-font-size: 1.75rem;--cds-heading-04-font-weight: 400;--cds-heading-04-line-height: 1.28572;--cds-heading-04-letter-spacing: 0;--cds-heading-05-font-size: 2rem;--cds-heading-05-font-weight: 400;--cds-heading-05-line-height: 1.25;--cds-heading-05-letter-spacing: 0;--cds-heading-06-font-size: 2.625rem;--cds-heading-06-font-weight: 300;--cds-heading-06-line-height: 1.199;--cds-heading-06-letter-spacing: 0;--cds-heading-07-font-size: 3.375rem;--cds-heading-07-font-weight: 300;--cds-heading-07-line-height: 1.199;--cds-heading-07-letter-spacing: 0;--cds-fluid-heading-03-font-size: 1.25rem;--cds-fluid-heading-03-font-weight: 400;--cds-fluid-heading-03-line-height: 1.4;--cds-fluid-heading-03-letter-spacing: 0;--cds-fluid-heading-04-font-size: 1.75rem;--cds-fluid-heading-04-font-weight: 400;--cds-fluid-heading-04-line-height: 1.28572;--cds-fluid-heading-04-letter-spacing: 0;--cds-fluid-heading-05-font-size: 2rem;--cds-fluid-heading-05-font-weight: 400;--cds-fluid-heading-05-line-height: 1.25;--cds-fluid-heading-05-letter-spacing: 0;--cds-fluid-heading-06-font-size: 2rem;--cds-fluid-heading-06-font-weight: 600;--cds-fluid-heading-06-line-height: 1.25;--cds-fluid-heading-06-letter-spacing: 0;--cds-fluid-paragraph-01-font-size: 1.5rem;--cds-fluid-paragraph-01-font-weight: 300;--cds-fluid-paragraph-01-line-height: 1.334;--cds-fluid-paragraph-01-letter-spacing: 0;--cds-fluid-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-01-font-size: 1.25rem;--cds-fluid-quotation-01-font-weight: 400;--cds-fluid-quotation-01-line-height: 1.3;--cds-fluid-quotation-01-letter-spacing: 0;--cds-fluid-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-02-font-size: 2rem;--cds-fluid-quotation-02-font-weight: 300;--cds-fluid-quotation-02-line-height: 1.25;--cds-fluid-quotation-02-letter-spacing: 0;--cds-fluid-display-01-font-size: 2.625rem;--cds-fluid-display-01-font-weight: 300;--cds-fluid-display-01-line-height: 1.19;--cds-fluid-display-01-letter-spacing: 0;--cds-fluid-display-02-font-size: 2.625rem;--cds-fluid-display-02-font-weight: 600;--cds-fluid-display-02-line-height: 1.19;--cds-fluid-display-02-letter-spacing: 0;--cds-fluid-display-03-font-size: 2.625rem;--cds-fluid-display-03-font-weight: 300;--cds-fluid-display-03-line-height: 1.19;--cds-fluid-display-03-letter-spacing: 0;--cds-fluid-display-04-font-size: 2.625rem;--cds-fluid-display-04-font-weight: 600;--cds-fluid-display-04-line-height: 1.19;--cds-fluid-display-04-letter-spacing: 0;--cds-spacing-01: .125rem;--cds-spacing-02: .25rem;--cds-spacing-03: .5rem;--cds-spacing-04: .75rem;--cds-spacing-05: 1rem;--cds-spacing-06: 1.5rem;--cds-spacing-07: 2rem;--cds-spacing-08: 2.5rem;--cds-spacing-09: 3rem;--cds-spacing-10: 4rem;--cds-spacing-11: 5rem;--cds-spacing-12: 6rem;--cds-spacing-13: 10rem;--cds-fluid-spacing-01: 0;--cds-fluid-spacing-02: 2vw;--cds-fluid-spacing-03: 5vw;--cds-fluid-spacing-04: 10vw;--cds-layout-01: 1rem;--cds-layout-02: 1.5rem;--cds-layout-03: 2rem;--cds-layout-04: 3rem;--cds-layout-05: 4rem;--cds-layout-06: 6rem;--cds-layout-07: 10rem;--cds-container-01: 1.5rem;--cds-container-02: 2rem;--cds-container-03: 2.5rem;--cds-container-04: 3rem;--cds-container-05: 4rem;--cds-size-xsmall: 1.5rem;--cds-size-small: 2rem;--cds-size-medium: 2.5rem;--cds-size-large: 3rem;--cds-size-xlarge: 4rem;--cds-size-2XLarge: 5rem;--cds-icon-size-01: 1rem;--cds-icon-size-02: 1.25rem;--cds-tag-background-red: #ffd7d9;--cds-tag-color-red: #750e13;--cds-tag-hover-red: #ffb3b8;--cds-tag-background-magenta: #ffd6e8;--cds-tag-color-magenta: #740937;--cds-tag-hover-magenta: #ffafd2;--cds-tag-background-purple: #e8daff;--cds-tag-color-purple: #491d8b;--cds-tag-hover-purple: #d4bbff;--cds-tag-background-blue: #d0e2ff;--cds-tag-color-blue: #002d9c;--cds-tag-hover-blue: #a6c8ff;--cds-tag-background-cyan: #bae6ff;--cds-tag-color-cyan: #003a6d;--cds-tag-hover-cyan: #82cfff;--cds-tag-background-teal: #9ef0f0;--cds-tag-color-teal: #004144;--cds-tag-hover-teal: #3ddbd9;--cds-tag-background-green: #a7f0ba;--cds-tag-color-green: #044317;--cds-tag-hover-green: #6fdc8c;--cds-tag-background-gray: #e0e0e0;--cds-tag-color-gray: #393939;--cds-tag-hover-gray: #c6c6c6;--cds-tag-background-cool-gray: #dde1e6;--cds-tag-color-cool-gray: #343a3f;--cds-tag-hover-cool-gray: #c1c7cd;--cds-tag-background-warm-gray: #e5e0df;--cds-tag-color-warm-gray: #3c3838;--cds-tag-hover-warm-gray: #cac5c4;--cds-notification-background-error: #fff1f1;--cds-notification-background-success: #defbe6;--cds-notification-background-info: #edf5ff;--cds-notification-background-warning: #fdf6dd;--cds-notification-action-hover: #ffffff}:root[theme=g80]{--cds-interactive-01: #0f62fe;--cds-interactive-02: #6f6f6f;--cds-interactive-03: #ffffff;--cds-interactive-04: #78a9ff;--cds-ui-background: #393939;--cds-ui-01: #525252;--cds-ui-02: #525252;--cds-ui-03: #6f6f6f;--cds-ui-04: #a8a8a8;--cds-ui-05: #f4f4f4;--cds-text-01: #f4f4f4;--cds-text-02: #c6c6c6;--cds-text-03: #6f6f6f;--cds-text-04: #ffffff;--cds-text-05: #a8a8a8;--cds-text-error: #ffb3b8;--cds-icon-01: #f4f4f4;--cds-icon-02: #c6c6c6;--cds-icon-03: #ffffff;--cds-link-01: #78a9ff;--cds-link-02: #a6c8ff;--cds-inverse-link: #0f62fe;--cds-field-01: #525252;--cds-field-02: #6f6f6f;--cds-inverse-01: #161616;--cds-inverse-02: #f4f4f4;--cds-support-01: #ff8389;--cds-support-02: #42be65;--cds-support-03: #f1c21b;--cds-support-04: #4589ff;--cds-inverse-support-01: #da1e28;--cds-inverse-support-02: #24a148;--cds-inverse-support-03: #f1c21b;--cds-inverse-support-04: #0f62fe;--cds-overlay-01: rgba(0, 0, 0, .65);--cds-danger-01: #da1e28;--cds-danger-02: #ff8389;--cds-focus: #ffffff;--cds-inverse-focus-ui: #0f62fe;--cds-hover-primary: #0151e4;--cds-active-primary: #002d9c;--cds-hover-primary-text: #a6c8ff;--cds-hover-secondary: #5e5e5e;--cds-active-secondary: #525252;--cds-hover-tertiary: #ffffff;--cds-active-tertiary: #c6c6c6;--cds-hover-ui: #474747;--cds-hover-light-ui: #5e5e5e;--cds-hover-selected-ui: #616161;--cds-active-ui: #525252;--cds-active-light-ui: #8d8d8d;--cds-selected-ui: #525252;--cds-selected-light-ui: #8d8d8d;--cds-inverse-hover-ui: #e8e8e8;--cds-hover-danger: #b81921;--cds-active-danger: #750e13;--cds-hover-row: #636363;--cds-visited-link: #be95ff;--cds-disabled-01: #525252;--cds-disabled-02: #8d8d8d;--cds-disabled-03: #c6c6c6;--cds-highlight: #0043ce;--cds-decorative-01: #6f6f6f;--cds-button-separator: #161616;--cds-skeleton-01: #474747;--cds-skeleton-02: #6f6f6f;--cds-background: #393939;--cds-layer: #525252;--cds-layer-accent: #6f6f6f;--cds-layer-accent-hover: #5e5e5e;--cds-layer-accent-active: #525252;--cds-field: #525252;--cds-background-inverse: #f4f4f4;--cds-background-brand: #0f62fe;--cds-interactive: #78a9ff;--cds-border-subtle: #6f6f6f;--cds-border-strong: #a8a8a8;--cds-border-inverse: #f4f4f4;--cds-border-interactive: #4589ff;--cds-text-primary: #f4f4f4;--cds-text-secondary: #c6c6c6;--cds-text-placeholder: #6f6f6f;--cds-text-helper: #a8a8a8;--cds-text-on-color: #ffffff;--cds-text-inverse: #161616;--cds-link-primary: #78a9ff;--cds-link-secondary: #a6c8ff;--cds-link-visited: #be95ff;--cds-link-inverse: #0f62fe;--cds-icon-primary: #f4f4f4;--cds-icon-secondary: #c6c6c6;--cds-icon-on-color: #ffffff;--cds-icon-inverse: #161616;--cds-support-error: #ff8389;--cds-support-success: #42be65;--cds-support-warning: #f1c21b;--cds-support-info: #4589ff;--cds-support-error-inverse: #da1e28;--cds-support-success-inverse: #24a148;--cds-support-warning-inverse: #f1c21b;--cds-support-info-inverse: #0f62fe;--cds-overlay: rgba(0, 0, 0, .65);--cds-toggle-off: #8d8d8d;--cds-shadow: rgba(0, 0, 0, .8);--cds-button-primary: #0f62fe;--cds-button-secondary: #6f6f6f;--cds-button-tertiary: #ffffff;--cds-button-danger-primary: #da1e28;--cds-button-danger-secondary: #ff8389;--cds-background-active: #525252;--cds-layer-active: #6f6f6f;--cds-button-danger-active: #750e13;--cds-button-primary-active: #002d9c;--cds-button-secondary-active: #525252;--cds-button-tertiary-active: #c6c6c6;--cds-focus-inset: #161616;--cds-focus-inverse: #0f62fe;--cds-background-hover: #474747;--cds-layer-hover: #636363;--cds-field-hover: #636363;--cds-background-inverse-hover: #e8e8e8;--cds-link-primary-hover: #a6c8ff;--cds-button-danger-hover: #b81921;--cds-button-primary-hover: #0151e4;--cds-button-secondary-hover: #5e5e5e;--cds-button-tertiary-hover: #ffffff;--cds-background-selected: #525252;--cds-background-selected-hover: #636363;--cds-layer-selected: #6f6f6f;--cds-layer-selected-hover: #616161;--cds-layer-selected-inverse: #f4f4f4;--cds-border-subtle-selected: #8d8d8d;--cds-border-disabled: #525252;--cds-text-disabled: #8d8d8d;--cds-button-disabled: #8d8d8d;--cds-icon-disabled: #8d8d8d;--cds-text-on-color-disabled: #c6c6c6;--cds-icon-on-color-disabled: #c6c6c6;--cds-layer-selected-disabled: #c6c6c6;--cds-skeleton-background: #474747;--cds-skeleton-element: #6f6f6f;--cds-brand-01: #0f62fe;--cds-brand-02: #6f6f6f;--cds-brand-03: #ffffff;--cds-active-01: #525252;--cds-hover-field: #474747;--cds-danger: #da1e28;--cds-caption-01-font-size: .75rem;--cds-caption-01-font-weight: 400;--cds-caption-01-line-height: 1.33333;--cds-caption-01-letter-spacing: .32px;--cds-caption-02-font-size: .875rem;--cds-caption-02-font-weight: 400;--cds-caption-02-line-height: 1.28572;--cds-caption-02-letter-spacing: .32px;--cds-label-01-font-size: .75rem;--cds-label-01-font-weight: 400;--cds-label-01-line-height: 1.33333;--cds-label-01-letter-spacing: .32px;--cds-label-02-font-size: .875rem;--cds-label-02-font-weight: 400;--cds-label-02-line-height: 1.28572;--cds-label-02-letter-spacing: .16px;--cds-helper-text-01-font-size: .75rem;--cds-helper-text-01-line-height: 1.33333;--cds-helper-text-01-letter-spacing: .32px;--cds-helper-text-02-font-size: .875rem;--cds-helper-text-02-line-height: 1.28572;--cds-helper-text-02-letter-spacing: .16px;--cds-body-short-01-font-size: .875rem;--cds-body-short-01-font-weight: 400;--cds-body-short-01-line-height: 1.28572;--cds-body-short-01-letter-spacing: .16px;--cds-body-long-01-font-size: .875rem;--cds-body-long-01-font-weight: 400;--cds-body-long-01-line-height: 1.42857;--cds-body-long-01-letter-spacing: .16px;--cds-body-short-02-font-size: 1rem;--cds-body-short-02-font-weight: 400;--cds-body-short-02-line-height: 1.375;--cds-body-short-02-letter-spacing: 0;--cds-body-long-02-font-size: 1rem;--cds-body-long-02-font-weight: 400;--cds-body-long-02-line-height: 1.5;--cds-body-long-02-letter-spacing: 0;--cds-code-01-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-01-font-size: .75rem;--cds-code-01-font-weight: 400;--cds-code-01-line-height: 1.33333;--cds-code-01-letter-spacing: .32px;--cds-code-02-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-02-font-size: .875rem;--cds-code-02-font-weight: 400;--cds-code-02-line-height: 1.42857;--cds-code-02-letter-spacing: .32px;--cds-heading-01-font-size: .875rem;--cds-heading-01-font-weight: 600;--cds-heading-01-line-height: 1.42857;--cds-heading-01-letter-spacing: .16px;--cds-productive-heading-01-font-size: .875rem;--cds-productive-heading-01-font-weight: 600;--cds-productive-heading-01-line-height: 1.28572;--cds-productive-heading-01-letter-spacing: .16px;--cds-heading-02-font-size: 1rem;--cds-heading-02-font-weight: 600;--cds-heading-02-line-height: 1.5;--cds-heading-02-letter-spacing: 0;--cds-productive-heading-02-font-size: 1rem;--cds-productive-heading-02-font-weight: 600;--cds-productive-heading-02-line-height: 1.375;--cds-productive-heading-02-letter-spacing: 0;--cds-productive-heading-03-font-size: 1.25rem;--cds-productive-heading-03-font-weight: 400;--cds-productive-heading-03-line-height: 1.4;--cds-productive-heading-03-letter-spacing: 0;--cds-productive-heading-04-font-size: 1.75rem;--cds-productive-heading-04-font-weight: 400;--cds-productive-heading-04-line-height: 1.28572;--cds-productive-heading-04-letter-spacing: 0;--cds-productive-heading-05-font-size: 2rem;--cds-productive-heading-05-font-weight: 400;--cds-productive-heading-05-line-height: 1.25;--cds-productive-heading-05-letter-spacing: 0;--cds-productive-heading-06-font-size: 2.625rem;--cds-productive-heading-06-font-weight: 300;--cds-productive-heading-06-line-height: 1.199;--cds-productive-heading-06-letter-spacing: 0;--cds-productive-heading-07-font-size: 3.375rem;--cds-productive-heading-07-font-weight: 300;--cds-productive-heading-07-line-height: 1.199;--cds-productive-heading-07-letter-spacing: 0;--cds-expressive-heading-01-font-size: .875rem;--cds-expressive-heading-01-font-weight: 600;--cds-expressive-heading-01-line-height: 1.25;--cds-expressive-heading-01-letter-spacing: .16px;--cds-expressive-heading-02-font-size: 1rem;--cds-expressive-heading-02-font-weight: 600;--cds-expressive-heading-02-line-height: 1.5;--cds-expressive-heading-02-letter-spacing: 0;--cds-expressive-heading-03-font-size: 1.25rem;--cds-expressive-heading-03-font-weight: 400;--cds-expressive-heading-03-line-height: 1.4;--cds-expressive-heading-03-letter-spacing: 0;--cds-expressive-heading-04-font-size: 1.75rem;--cds-expressive-heading-04-font-weight: 400;--cds-expressive-heading-04-line-height: 1.28572;--cds-expressive-heading-04-letter-spacing: 0;--cds-expressive-heading-05-font-size: 2rem;--cds-expressive-heading-05-font-weight: 400;--cds-expressive-heading-05-line-height: 1.25;--cds-expressive-heading-05-letter-spacing: 0;--cds-expressive-heading-06-font-size: 2rem;--cds-expressive-heading-06-font-weight: 600;--cds-expressive-heading-06-line-height: 1.25;--cds-expressive-heading-06-letter-spacing: 0;--cds-expressive-paragraph-01-font-size: 1.5rem;--cds-expressive-paragraph-01-font-weight: 300;--cds-expressive-paragraph-01-line-height: 1.334;--cds-expressive-paragraph-01-letter-spacing: 0;--cds-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-01-font-size: 1.25rem;--cds-quotation-01-font-weight: 400;--cds-quotation-01-line-height: 1.3;--cds-quotation-01-letter-spacing: 0;--cds-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-02-font-size: 2rem;--cds-quotation-02-font-weight: 300;--cds-quotation-02-line-height: 1.25;--cds-quotation-02-letter-spacing: 0;--cds-display-01-font-size: 2.625rem;--cds-display-01-font-weight: 300;--cds-display-01-line-height: 1.19;--cds-display-01-letter-spacing: 0;--cds-display-02-font-size: 2.625rem;--cds-display-02-font-weight: 600;--cds-display-02-line-height: 1.19;--cds-display-02-letter-spacing: 0;--cds-display-03-font-size: 2.625rem;--cds-display-03-font-weight: 300;--cds-display-03-line-height: 1.19;--cds-display-03-letter-spacing: 0;--cds-display-04-font-size: 2.625rem;--cds-display-04-font-weight: 600;--cds-display-04-line-height: 1.19;--cds-display-04-letter-spacing: 0;--cds-legal-01-font-size: .75rem;--cds-legal-01-font-weight: 400;--cds-legal-01-line-height: 1.33333;--cds-legal-01-letter-spacing: .32px;--cds-legal-02-font-size: .875rem;--cds-legal-02-font-weight: 400;--cds-legal-02-line-height: 1.28572;--cds-legal-02-letter-spacing: .16px;--cds-body-compact-01-font-size: .875rem;--cds-body-compact-01-font-weight: 400;--cds-body-compact-01-line-height: 1.28572;--cds-body-compact-01-letter-spacing: .16px;--cds-body-compact-02-font-size: 1rem;--cds-body-compact-02-font-weight: 400;--cds-body-compact-02-line-height: 1.375;--cds-body-compact-02-letter-spacing: 0;--cds-body-01-font-size: .875rem;--cds-body-01-font-weight: 400;--cds-body-01-line-height: 1.42857;--cds-body-01-letter-spacing: .16px;--cds-body-02-font-size: 1rem;--cds-body-02-font-weight: 400;--cds-body-02-line-height: 1.5;--cds-body-02-letter-spacing: 0;--cds-heading-compact-01-font-size: .875rem;--cds-heading-compact-01-font-weight: 600;--cds-heading-compact-01-line-height: 1.28572;--cds-heading-compact-01-letter-spacing: .16px;--cds-heading-compact-02-font-size: 1rem;--cds-heading-compact-02-font-weight: 600;--cds-heading-compact-02-line-height: 1.375;--cds-heading-compact-02-letter-spacing: 0;--cds-heading-03-font-size: 1.25rem;--cds-heading-03-font-weight: 400;--cds-heading-03-line-height: 1.4;--cds-heading-03-letter-spacing: 0;--cds-heading-04-font-size: 1.75rem;--cds-heading-04-font-weight: 400;--cds-heading-04-line-height: 1.28572;--cds-heading-04-letter-spacing: 0;--cds-heading-05-font-size: 2rem;--cds-heading-05-font-weight: 400;--cds-heading-05-line-height: 1.25;--cds-heading-05-letter-spacing: 0;--cds-heading-06-font-size: 2.625rem;--cds-heading-06-font-weight: 300;--cds-heading-06-line-height: 1.199;--cds-heading-06-letter-spacing: 0;--cds-heading-07-font-size: 3.375rem;--cds-heading-07-font-weight: 300;--cds-heading-07-line-height: 1.199;--cds-heading-07-letter-spacing: 0;--cds-fluid-heading-03-font-size: 1.25rem;--cds-fluid-heading-03-font-weight: 400;--cds-fluid-heading-03-line-height: 1.4;--cds-fluid-heading-03-letter-spacing: 0;--cds-fluid-heading-04-font-size: 1.75rem;--cds-fluid-heading-04-font-weight: 400;--cds-fluid-heading-04-line-height: 1.28572;--cds-fluid-heading-04-letter-spacing: 0;--cds-fluid-heading-05-font-size: 2rem;--cds-fluid-heading-05-font-weight: 400;--cds-fluid-heading-05-line-height: 1.25;--cds-fluid-heading-05-letter-spacing: 0;--cds-fluid-heading-06-font-size: 2rem;--cds-fluid-heading-06-font-weight: 600;--cds-fluid-heading-06-line-height: 1.25;--cds-fluid-heading-06-letter-spacing: 0;--cds-fluid-paragraph-01-font-size: 1.5rem;--cds-fluid-paragraph-01-font-weight: 300;--cds-fluid-paragraph-01-line-height: 1.334;--cds-fluid-paragraph-01-letter-spacing: 0;--cds-fluid-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-01-font-size: 1.25rem;--cds-fluid-quotation-01-font-weight: 400;--cds-fluid-quotation-01-line-height: 1.3;--cds-fluid-quotation-01-letter-spacing: 0;--cds-fluid-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-02-font-size: 2rem;--cds-fluid-quotation-02-font-weight: 300;--cds-fluid-quotation-02-line-height: 1.25;--cds-fluid-quotation-02-letter-spacing: 0;--cds-fluid-display-01-font-size: 2.625rem;--cds-fluid-display-01-font-weight: 300;--cds-fluid-display-01-line-height: 1.19;--cds-fluid-display-01-letter-spacing: 0;--cds-fluid-display-02-font-size: 2.625rem;--cds-fluid-display-02-font-weight: 600;--cds-fluid-display-02-line-height: 1.19;--cds-fluid-display-02-letter-spacing: 0;--cds-fluid-display-03-font-size: 2.625rem;--cds-fluid-display-03-font-weight: 300;--cds-fluid-display-03-line-height: 1.19;--cds-fluid-display-03-letter-spacing: 0;--cds-fluid-display-04-font-size: 2.625rem;--cds-fluid-display-04-font-weight: 600;--cds-fluid-display-04-line-height: 1.19;--cds-fluid-display-04-letter-spacing: 0;--cds-spacing-01: .125rem;--cds-spacing-02: .25rem;--cds-spacing-03: .5rem;--cds-spacing-04: .75rem;--cds-spacing-05: 1rem;--cds-spacing-06: 1.5rem;--cds-spacing-07: 2rem;--cds-spacing-08: 2.5rem;--cds-spacing-09: 3rem;--cds-spacing-10: 4rem;--cds-spacing-11: 5rem;--cds-spacing-12: 6rem;--cds-spacing-13: 10rem;--cds-fluid-spacing-01: 0;--cds-fluid-spacing-02: 2vw;--cds-fluid-spacing-03: 5vw;--cds-fluid-spacing-04: 10vw;--cds-layout-01: 1rem;--cds-layout-02: 1.5rem;--cds-layout-03: 2rem;--cds-layout-04: 3rem;--cds-layout-05: 4rem;--cds-layout-06: 6rem;--cds-layout-07: 10rem;--cds-container-01: 1.5rem;--cds-container-02: 2rem;--cds-container-03: 2.5rem;--cds-container-04: 3rem;--cds-container-05: 4rem;--cds-size-xsmall: 1.5rem;--cds-size-small: 2rem;--cds-size-medium: 2.5rem;--cds-size-large: 3rem;--cds-size-xlarge: 4rem;--cds-size-2XLarge: 5rem;--cds-icon-size-01: 1rem;--cds-icon-size-02: 1.25rem;--cds-tag-background-red: #ffd7d9;--cds-tag-color-red: #750e13;--cds-tag-hover-red: #ffb3b8;--cds-tag-background-magenta: #ffd6e8;--cds-tag-color-magenta: #740937;--cds-tag-hover-magenta: #ffafd2;--cds-tag-background-purple: #e8daff;--cds-tag-color-purple: #491d8b;--cds-tag-hover-purple: #d4bbff;--cds-tag-background-blue: #d0e2ff;--cds-tag-color-blue: #002d9c;--cds-tag-hover-blue: #a6c8ff;--cds-tag-background-cyan: #bae6ff;--cds-tag-color-cyan: #003a6d;--cds-tag-hover-cyan: #82cfff;--cds-tag-background-teal: #9ef0f0;--cds-tag-color-teal: #004144;--cds-tag-hover-teal: #3ddbd9;--cds-tag-background-green: #a7f0ba;--cds-tag-color-green: #044317;--cds-tag-hover-green: #6fdc8c;--cds-tag-background-gray: #e0e0e0;--cds-tag-color-gray: #393939;--cds-tag-hover-gray: #c6c6c6;--cds-tag-background-cool-gray: #dde1e6;--cds-tag-color-cool-gray: #343a3f;--cds-tag-hover-cool-gray: #c1c7cd;--cds-tag-background-warm-gray: #e5e0df;--cds-tag-color-warm-gray: #3c3838;--cds-tag-hover-warm-gray: #cac5c4;--cds-notification-background-error: var(--cds-layer, #f4f4f4);--cds-notification-background-success: var(--cds-layer, #f4f4f4);--cds-notification-background-info: var(--cds-layer, #f4f4f4);--cds-notification-background-warning: var(--cds-layer, #f4f4f4);--cds-notification-action-hover: var(--cds-layer-hover, #e5e5e5)}:root[theme=g90]{--cds-interactive-01: #0f62fe;--cds-interactive-02: #6f6f6f;--cds-interactive-03: #ffffff;--cds-interactive-04: #4589ff;--cds-ui-background: #262626;--cds-ui-01: #393939;--cds-ui-02: #525252;--cds-ui-03: #525252;--cds-ui-04: #8d8d8d;--cds-ui-05: #f4f4f4;--cds-text-01: #f4f4f4;--cds-text-02: #c6c6c6;--cds-text-03: #6f6f6f;--cds-text-04: #ffffff;--cds-text-05: #8d8d8d;--cds-text-error: #ffb3b8;--cds-icon-01: #f4f4f4;--cds-icon-02: #c6c6c6;--cds-icon-03: #ffffff;--cds-link-01: #78a9ff;--cds-link-02: #a6c8ff;--cds-inverse-link: #0f62fe;--cds-field-01: #393939;--cds-field-02: #525252;--cds-inverse-01: #161616;--cds-inverse-02: #f4f4f4;--cds-support-01: #ff8389;--cds-support-02: #42be65;--cds-support-03: #f1c21b;--cds-support-04: #4589ff;--cds-inverse-support-01: #da1e28;--cds-inverse-support-02: #24a148;--cds-inverse-support-03: #f1c21b;--cds-inverse-support-04: #0f62fe;--cds-overlay-01: rgba(0, 0, 0, .65);--cds-danger-01: #da1e28;--cds-danger-02: #ff8389;--cds-focus: #ffffff;--cds-inverse-focus-ui: #0f62fe;--cds-hover-primary: #0353e9;--cds-active-primary: #002d9c;--cds-hover-primary-text: #a6c8ff;--cds-hover-secondary: #606060;--cds-active-secondary: #393939;--cds-hover-tertiary: #f4f4f4;--cds-active-tertiary: #c6c6c6;--cds-hover-ui: #4c4c4c;--cds-hover-light-ui: #656565;--cds-hover-selected-ui: #656565;--cds-active-ui: #6f6f6f;--cds-active-light-ui: #8d8d8d;--cds-selected-ui: #525252;--cds-selected-light-ui: #6f6f6f;--cds-inverse-hover-ui: #e5e5e5;--cds-hover-danger: #b81921;--cds-active-danger: #750e13;--cds-hover-row: #4c4c4c;--cds-visited-link: #be95ff;--cds-disabled-01: #393939;--cds-disabled-02: #6f6f6f;--cds-disabled-03: #a8a8a8;--cds-highlight: #0043ce;--cds-decorative-01: #6f6f6f;--cds-button-separator: #161616;--cds-skeleton-01: #353535;--cds-skeleton-02: #525252;--cds-background: #262626;--cds-layer: #393939;--cds-layer-accent: #525252;--cds-layer-accent-hover: #636363;--cds-layer-accent-active: #8d8d8d;--cds-field: #393939;--cds-background-inverse: #f4f4f4;--cds-background-brand: #0f62fe;--cds-interactive: #4589ff;--cds-border-subtle: #525252;--cds-border-strong: #8d8d8d;--cds-border-inverse: #f4f4f4;--cds-border-interactive: #4589ff;--cds-text-primary: #f4f4f4;--cds-text-secondary: #c6c6c6;--cds-text-placeholder: #6f6f6f;--cds-text-helper: #8d8d8d;--cds-text-on-color: #ffffff;--cds-text-inverse: #161616;--cds-link-primary: #78a9ff;--cds-link-secondary: #a6c8ff;--cds-link-visited: #be95ff;--cds-link-inverse: #0f62fe;--cds-icon-primary: #f4f4f4;--cds-icon-secondary: #c6c6c6;--cds-icon-on-color: #ffffff;--cds-icon-inverse: #161616;--cds-support-error: #ff8389;--cds-support-success: #42be65;--cds-support-warning: #f1c21b;--cds-support-info: #4589ff;--cds-support-error-inverse: #da1e28;--cds-support-success-inverse: #24a148;--cds-support-warning-inverse: #f1c21b;--cds-support-info-inverse: #0f62fe;--cds-overlay: rgba(0, 0, 0, .65);--cds-toggle-off: #8d8d8d;--cds-shadow: rgba(0, 0, 0, .8);--cds-button-primary: #0f62fe;--cds-button-secondary: #6f6f6f;--cds-button-tertiary: #ffffff;--cds-button-danger-primary: #da1e28;--cds-button-danger-secondary: #ff8389;--cds-background-active: #6f6f6f;--cds-layer-active: #6f6f6f;--cds-button-danger-active: #750e13;--cds-button-primary-active: #002d9c;--cds-button-secondary-active: #393939;--cds-button-tertiary-active: #c6c6c6;--cds-focus-inset: #161616;--cds-focus-inverse: #0f62fe;--cds-background-hover: #4c4c4c;--cds-layer-hover: #4c4c4c;--cds-field-hover: #4c4c4c;--cds-background-inverse-hover: #e5e5e5;--cds-link-primary-hover: #a6c8ff;--cds-button-danger-hover: #b81921;--cds-button-primary-hover: #0353e9;--cds-button-secondary-hover: #606060;--cds-button-tertiary-hover: #f4f4f4;--cds-background-selected: #525252;--cds-background-selected-hover: #656565;--cds-layer-selected: #525252;--cds-layer-selected-hover: #656565;--cds-layer-selected-inverse: #f4f4f4;--cds-border-subtle-selected: #6f6f6f;--cds-border-disabled: #393939;--cds-text-disabled: #6f6f6f;--cds-button-disabled: #6f6f6f;--cds-icon-disabled: #6f6f6f;--cds-text-on-color-disabled: #a8a8a8;--cds-icon-on-color-disabled: #a8a8a8;--cds-layer-selected-disabled: #a8a8a8;--cds-skeleton-background: #353535;--cds-skeleton-element: #525252;--cds-brand-01: #0f62fe;--cds-brand-02: #6f6f6f;--cds-brand-03: #ffffff;--cds-active-01: #6f6f6f;--cds-hover-field: #4c4c4c;--cds-danger: #da1e28;--cds-caption-01-font-size: .75rem;--cds-caption-01-font-weight: 400;--cds-caption-01-line-height: 1.33333;--cds-caption-01-letter-spacing: .32px;--cds-caption-02-font-size: .875rem;--cds-caption-02-font-weight: 400;--cds-caption-02-line-height: 1.28572;--cds-caption-02-letter-spacing: .32px;--cds-label-01-font-size: .75rem;--cds-label-01-font-weight: 400;--cds-label-01-line-height: 1.33333;--cds-label-01-letter-spacing: .32px;--cds-label-02-font-size: .875rem;--cds-label-02-font-weight: 400;--cds-label-02-line-height: 1.28572;--cds-label-02-letter-spacing: .16px;--cds-helper-text-01-font-size: .75rem;--cds-helper-text-01-line-height: 1.33333;--cds-helper-text-01-letter-spacing: .32px;--cds-helper-text-02-font-size: .875rem;--cds-helper-text-02-line-height: 1.28572;--cds-helper-text-02-letter-spacing: .16px;--cds-body-short-01-font-size: .875rem;--cds-body-short-01-font-weight: 400;--cds-body-short-01-line-height: 1.28572;--cds-body-short-01-letter-spacing: .16px;--cds-body-long-01-font-size: .875rem;--cds-body-long-01-font-weight: 400;--cds-body-long-01-line-height: 1.42857;--cds-body-long-01-letter-spacing: .16px;--cds-body-short-02-font-size: 1rem;--cds-body-short-02-font-weight: 400;--cds-body-short-02-line-height: 1.375;--cds-body-short-02-letter-spacing: 0;--cds-body-long-02-font-size: 1rem;--cds-body-long-02-font-weight: 400;--cds-body-long-02-line-height: 1.5;--cds-body-long-02-letter-spacing: 0;--cds-code-01-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-01-font-size: .75rem;--cds-code-01-font-weight: 400;--cds-code-01-line-height: 1.33333;--cds-code-01-letter-spacing: .32px;--cds-code-02-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-02-font-size: .875rem;--cds-code-02-font-weight: 400;--cds-code-02-line-height: 1.42857;--cds-code-02-letter-spacing: .32px;--cds-heading-01-font-size: .875rem;--cds-heading-01-font-weight: 600;--cds-heading-01-line-height: 1.42857;--cds-heading-01-letter-spacing: .16px;--cds-productive-heading-01-font-size: .875rem;--cds-productive-heading-01-font-weight: 600;--cds-productive-heading-01-line-height: 1.28572;--cds-productive-heading-01-letter-spacing: .16px;--cds-heading-02-font-size: 1rem;--cds-heading-02-font-weight: 600;--cds-heading-02-line-height: 1.5;--cds-heading-02-letter-spacing: 0;--cds-productive-heading-02-font-size: 1rem;--cds-productive-heading-02-font-weight: 600;--cds-productive-heading-02-line-height: 1.375;--cds-productive-heading-02-letter-spacing: 0;--cds-productive-heading-03-font-size: 1.25rem;--cds-productive-heading-03-font-weight: 400;--cds-productive-heading-03-line-height: 1.4;--cds-productive-heading-03-letter-spacing: 0;--cds-productive-heading-04-font-size: 1.75rem;--cds-productive-heading-04-font-weight: 400;--cds-productive-heading-04-line-height: 1.28572;--cds-productive-heading-04-letter-spacing: 0;--cds-productive-heading-05-font-size: 2rem;--cds-productive-heading-05-font-weight: 400;--cds-productive-heading-05-line-height: 1.25;--cds-productive-heading-05-letter-spacing: 0;--cds-productive-heading-06-font-size: 2.625rem;--cds-productive-heading-06-font-weight: 300;--cds-productive-heading-06-line-height: 1.199;--cds-productive-heading-06-letter-spacing: 0;--cds-productive-heading-07-font-size: 3.375rem;--cds-productive-heading-07-font-weight: 300;--cds-productive-heading-07-line-height: 1.199;--cds-productive-heading-07-letter-spacing: 0;--cds-expressive-heading-01-font-size: .875rem;--cds-expressive-heading-01-font-weight: 600;--cds-expressive-heading-01-line-height: 1.25;--cds-expressive-heading-01-letter-spacing: .16px;--cds-expressive-heading-02-font-size: 1rem;--cds-expressive-heading-02-font-weight: 600;--cds-expressive-heading-02-line-height: 1.5;--cds-expressive-heading-02-letter-spacing: 0;--cds-expressive-heading-03-font-size: 1.25rem;--cds-expressive-heading-03-font-weight: 400;--cds-expressive-heading-03-line-height: 1.4;--cds-expressive-heading-03-letter-spacing: 0;--cds-expressive-heading-04-font-size: 1.75rem;--cds-expressive-heading-04-font-weight: 400;--cds-expressive-heading-04-line-height: 1.28572;--cds-expressive-heading-04-letter-spacing: 0;--cds-expressive-heading-05-font-size: 2rem;--cds-expressive-heading-05-font-weight: 400;--cds-expressive-heading-05-line-height: 1.25;--cds-expressive-heading-05-letter-spacing: 0;--cds-expressive-heading-06-font-size: 2rem;--cds-expressive-heading-06-font-weight: 600;--cds-expressive-heading-06-line-height: 1.25;--cds-expressive-heading-06-letter-spacing: 0;--cds-expressive-paragraph-01-font-size: 1.5rem;--cds-expressive-paragraph-01-font-weight: 300;--cds-expressive-paragraph-01-line-height: 1.334;--cds-expressive-paragraph-01-letter-spacing: 0;--cds-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-01-font-size: 1.25rem;--cds-quotation-01-font-weight: 400;--cds-quotation-01-line-height: 1.3;--cds-quotation-01-letter-spacing: 0;--cds-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-02-font-size: 2rem;--cds-quotation-02-font-weight: 300;--cds-quotation-02-line-height: 1.25;--cds-quotation-02-letter-spacing: 0;--cds-display-01-font-size: 2.625rem;--cds-display-01-font-weight: 300;--cds-display-01-line-height: 1.19;--cds-display-01-letter-spacing: 0;--cds-display-02-font-size: 2.625rem;--cds-display-02-font-weight: 600;--cds-display-02-line-height: 1.19;--cds-display-02-letter-spacing: 0;--cds-display-03-font-size: 2.625rem;--cds-display-03-font-weight: 300;--cds-display-03-line-height: 1.19;--cds-display-03-letter-spacing: 0;--cds-display-04-font-size: 2.625rem;--cds-display-04-font-weight: 600;--cds-display-04-line-height: 1.19;--cds-display-04-letter-spacing: 0;--cds-legal-01-font-size: .75rem;--cds-legal-01-font-weight: 400;--cds-legal-01-line-height: 1.33333;--cds-legal-01-letter-spacing: .32px;--cds-legal-02-font-size: .875rem;--cds-legal-02-font-weight: 400;--cds-legal-02-line-height: 1.28572;--cds-legal-02-letter-spacing: .16px;--cds-body-compact-01-font-size: .875rem;--cds-body-compact-01-font-weight: 400;--cds-body-compact-01-line-height: 1.28572;--cds-body-compact-01-letter-spacing: .16px;--cds-body-compact-02-font-size: 1rem;--cds-body-compact-02-font-weight: 400;--cds-body-compact-02-line-height: 1.375;--cds-body-compact-02-letter-spacing: 0;--cds-body-01-font-size: .875rem;--cds-body-01-font-weight: 400;--cds-body-01-line-height: 1.42857;--cds-body-01-letter-spacing: .16px;--cds-body-02-font-size: 1rem;--cds-body-02-font-weight: 400;--cds-body-02-line-height: 1.5;--cds-body-02-letter-spacing: 0;--cds-heading-compact-01-font-size: .875rem;--cds-heading-compact-01-font-weight: 600;--cds-heading-compact-01-line-height: 1.28572;--cds-heading-compact-01-letter-spacing: .16px;--cds-heading-compact-02-font-size: 1rem;--cds-heading-compact-02-font-weight: 600;--cds-heading-compact-02-line-height: 1.375;--cds-heading-compact-02-letter-spacing: 0;--cds-heading-03-font-size: 1.25rem;--cds-heading-03-font-weight: 400;--cds-heading-03-line-height: 1.4;--cds-heading-03-letter-spacing: 0;--cds-heading-04-font-size: 1.75rem;--cds-heading-04-font-weight: 400;--cds-heading-04-line-height: 1.28572;--cds-heading-04-letter-spacing: 0;--cds-heading-05-font-size: 2rem;--cds-heading-05-font-weight: 400;--cds-heading-05-line-height: 1.25;--cds-heading-05-letter-spacing: 0;--cds-heading-06-font-size: 2.625rem;--cds-heading-06-font-weight: 300;--cds-heading-06-line-height: 1.199;--cds-heading-06-letter-spacing: 0;--cds-heading-07-font-size: 3.375rem;--cds-heading-07-font-weight: 300;--cds-heading-07-line-height: 1.199;--cds-heading-07-letter-spacing: 0;--cds-fluid-heading-03-font-size: 1.25rem;--cds-fluid-heading-03-font-weight: 400;--cds-fluid-heading-03-line-height: 1.4;--cds-fluid-heading-03-letter-spacing: 0;--cds-fluid-heading-04-font-size: 1.75rem;--cds-fluid-heading-04-font-weight: 400;--cds-fluid-heading-04-line-height: 1.28572;--cds-fluid-heading-04-letter-spacing: 0;--cds-fluid-heading-05-font-size: 2rem;--cds-fluid-heading-05-font-weight: 400;--cds-fluid-heading-05-line-height: 1.25;--cds-fluid-heading-05-letter-spacing: 0;--cds-fluid-heading-06-font-size: 2rem;--cds-fluid-heading-06-font-weight: 600;--cds-fluid-heading-06-line-height: 1.25;--cds-fluid-heading-06-letter-spacing: 0;--cds-fluid-paragraph-01-font-size: 1.5rem;--cds-fluid-paragraph-01-font-weight: 300;--cds-fluid-paragraph-01-line-height: 1.334;--cds-fluid-paragraph-01-letter-spacing: 0;--cds-fluid-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-01-font-size: 1.25rem;--cds-fluid-quotation-01-font-weight: 400;--cds-fluid-quotation-01-line-height: 1.3;--cds-fluid-quotation-01-letter-spacing: 0;--cds-fluid-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-02-font-size: 2rem;--cds-fluid-quotation-02-font-weight: 300;--cds-fluid-quotation-02-line-height: 1.25;--cds-fluid-quotation-02-letter-spacing: 0;--cds-fluid-display-01-font-size: 2.625rem;--cds-fluid-display-01-font-weight: 300;--cds-fluid-display-01-line-height: 1.19;--cds-fluid-display-01-letter-spacing: 0;--cds-fluid-display-02-font-size: 2.625rem;--cds-fluid-display-02-font-weight: 600;--cds-fluid-display-02-line-height: 1.19;--cds-fluid-display-02-letter-spacing: 0;--cds-fluid-display-03-font-size: 2.625rem;--cds-fluid-display-03-font-weight: 300;--cds-fluid-display-03-line-height: 1.19;--cds-fluid-display-03-letter-spacing: 0;--cds-fluid-display-04-font-size: 2.625rem;--cds-fluid-display-04-font-weight: 600;--cds-fluid-display-04-line-height: 1.19;--cds-fluid-display-04-letter-spacing: 0;--cds-spacing-01: .125rem;--cds-spacing-02: .25rem;--cds-spacing-03: .5rem;--cds-spacing-04: .75rem;--cds-spacing-05: 1rem;--cds-spacing-06: 1.5rem;--cds-spacing-07: 2rem;--cds-spacing-08: 2.5rem;--cds-spacing-09: 3rem;--cds-spacing-10: 4rem;--cds-spacing-11: 5rem;--cds-spacing-12: 6rem;--cds-spacing-13: 10rem;--cds-fluid-spacing-01: 0;--cds-fluid-spacing-02: 2vw;--cds-fluid-spacing-03: 5vw;--cds-fluid-spacing-04: 10vw;--cds-layout-01: 1rem;--cds-layout-02: 1.5rem;--cds-layout-03: 2rem;--cds-layout-04: 3rem;--cds-layout-05: 4rem;--cds-layout-06: 6rem;--cds-layout-07: 10rem;--cds-container-01: 1.5rem;--cds-container-02: 2rem;--cds-container-03: 2.5rem;--cds-container-04: 3rem;--cds-container-05: 4rem;--cds-size-xsmall: 1.5rem;--cds-size-small: 2rem;--cds-size-medium: 2.5rem;--cds-size-large: 3rem;--cds-size-xlarge: 4rem;--cds-size-2XLarge: 5rem;--cds-icon-size-01: 1rem;--cds-icon-size-02: 1.25rem;--cds-tag-background-red: #a2191f;--cds-tag-color-red: #ffd7d9;--cds-tag-hover-red: #c21e25;--cds-tag-background-magenta: #9f1853;--cds-tag-color-magenta: #ffd6e8;--cds-tag-hover-magenta: #bf1d63;--cds-tag-background-purple: #6929c4;--cds-tag-color-purple: #e8daff;--cds-tag-hover-purple: #7c3dd6;--cds-tag-background-blue: #0043ce;--cds-tag-color-blue: #d0e2ff;--cds-tag-hover-blue: #0053ff;--cds-tag-background-cyan: #00539a;--cds-tag-color-cyan: #bae6ff;--cds-tag-hover-cyan: #0066bd;--cds-tag-background-teal: #005d5d;--cds-tag-color-teal: #9ef0f0;--cds-tag-hover-teal: #007070;--cds-tag-background-green: #0e6027;--cds-tag-color-green: #a7f0ba;--cds-tag-hover-green: #11742f;--cds-tag-background-gray: #525252;--cds-tag-color-gray: #e0e0e0;--cds-tag-hover-gray: #636363;--cds-tag-background-cool-gray: #4d5358;--cds-tag-color-cool-gray: #dde1e6;--cds-tag-hover-cool-gray: #5d646a;--cds-tag-background-warm-gray: #565151;--cds-tag-color-warm-gray: #e5e0df;--cds-tag-hover-warm-gray: #696363;--cds-notification-background-error: var(--cds-ui-01, #f4f4f4);--cds-notification-background-success: var(--cds-ui-01, #f4f4f4);--cds-notification-background-info: var(--cds-ui-01, #f4f4f4);--cds-notification-background-warning: var(--cds-ui-01, #f4f4f4);--cds-notification-action-hover: var(--cds-hover-ui, #e5e5e5)}:root[theme=g100]{--cds-interactive-01: #0f62fe;--cds-interactive-02: #6f6f6f;--cds-interactive-03: #ffffff;--cds-interactive-04: #4589ff;--cds-ui-background: #161616;--cds-ui-01: #262626;--cds-ui-02: #393939;--cds-ui-03: #393939;--cds-ui-04: #6f6f6f;--cds-ui-05: #f4f4f4;--cds-text-01: #f4f4f4;--cds-text-02: #c6c6c6;--cds-text-03: #6f6f6f;--cds-text-04: #ffffff;--cds-text-05: #8d8d8d;--cds-text-error: #ff8389;--cds-icon-01: #f4f4f4;--cds-icon-02: #c6c6c6;--cds-icon-03: #ffffff;--cds-link-01: #78a9ff;--cds-link-02: #a6c8ff;--cds-inverse-link: #0f62fe;--cds-field-01: #262626;--cds-field-02: #393939;--cds-inverse-01: #161616;--cds-inverse-02: #f4f4f4;--cds-support-01: #fa4d56;--cds-support-02: #42be65;--cds-support-03: #f1c21b;--cds-support-04: #4589ff;--cds-inverse-support-01: #da1e28;--cds-inverse-support-02: #24a148;--cds-inverse-support-03: #f1c21b;--cds-inverse-support-04: #0f62fe;--cds-overlay-01: rgba(0, 0, 0, .65);--cds-danger-01: #da1e28;--cds-danger-02: #fa4d56;--cds-focus: #ffffff;--cds-inverse-focus-ui: #0f62fe;--cds-hover-primary: #0353e9;--cds-active-primary: #002d9c;--cds-hover-primary-text: #a6c8ff;--cds-hover-secondary: #606060;--cds-active-secondary: #393939;--cds-hover-tertiary: #f4f4f4;--cds-active-tertiary: #c6c6c6;--cds-hover-ui: #353535;--cds-hover-light-ui: #4c4c4c;--cds-hover-selected-ui: #4c4c4c;--cds-active-ui: #525252;--cds-active-light-ui: #6f6f6f;--cds-selected-ui: #393939;--cds-selected-light-ui: #525252;--cds-inverse-hover-ui: #e5e5e5;--cds-hover-danger: #b81921;--cds-active-danger: #750e13;--cds-hover-row: #353535;--cds-visited-link: #be95ff;--cds-disabled-01: #262626;--cds-disabled-02: #525252;--cds-disabled-03: #8d8d8d;--cds-highlight: #002d9c;--cds-decorative-01: #525252;--cds-button-separator: #161616;--cds-skeleton-01: #353535;--cds-skeleton-02: #525252;--cds-background: #161616;--cds-layer: #262626;--cds-layer-accent: #393939;--cds-layer-accent-hover: #474747;--cds-layer-accent-active: #6f6f6f;--cds-field: #262626;--cds-background-inverse: #f4f4f4;--cds-background-brand: #0f62fe;--cds-interactive: #4589ff;--cds-border-subtle: #393939;--cds-border-strong: #6f6f6f;--cds-border-inverse: #f4f4f4;--cds-border-interactive: #4589ff;--cds-text-primary: #f4f4f4;--cds-text-secondary: #c6c6c6;--cds-text-placeholder: #6f6f6f;--cds-text-helper: #8d8d8d;--cds-text-on-color: #ffffff;--cds-text-inverse: #161616;--cds-link-primary: #78a9ff;--cds-link-secondary: #a6c8ff;--cds-link-visited: #be95ff;--cds-link-inverse: #0f62fe;--cds-icon-primary: #f4f4f4;--cds-icon-secondary: #c6c6c6;--cds-icon-on-color: #ffffff;--cds-icon-inverse: #161616;--cds-support-error: #fa4d56;--cds-support-success: #42be65;--cds-support-warning: #f1c21b;--cds-support-info: #4589ff;--cds-support-error-inverse: #da1e28;--cds-support-success-inverse: #24a148;--cds-support-warning-inverse: #f1c21b;--cds-support-info-inverse: #0f62fe;--cds-overlay: rgba(0, 0, 0, .65);--cds-toggle-off: #6f6f6f;--cds-shadow: rgba(0, 0, 0, .8);--cds-button-primary: #0f62fe;--cds-button-secondary: #6f6f6f;--cds-button-tertiary: #ffffff;--cds-button-danger-primary: #da1e28;--cds-button-danger-secondary: #fa4d56;--cds-background-active: #525252;--cds-layer-active: #525252;--cds-button-danger-active: #750e13;--cds-button-primary-active: #002d9c;--cds-button-secondary-active: #393939;--cds-button-tertiary-active: #c6c6c6;--cds-focus-inset: #161616;--cds-focus-inverse: #0f62fe;--cds-background-hover: #353535;--cds-layer-hover: #353535;--cds-field-hover: #353535;--cds-background-inverse-hover: #e5e5e5;--cds-link-primary-hover: #a6c8ff;--cds-button-danger-hover: #b81921;--cds-button-primary-hover: #0353e9;--cds-button-secondary-hover: #606060;--cds-button-tertiary-hover: #f4f4f4;--cds-background-selected: #393939;--cds-background-selected-hover: #4c4c4c;--cds-layer-selected: #393939;--cds-layer-selected-hover: #4c4c4c;--cds-layer-selected-inverse: #f4f4f4;--cds-border-subtle-selected: #525252;--cds-border-disabled: #262626;--cds-text-disabled: #525252;--cds-button-disabled: #525252;--cds-icon-disabled: #525252;--cds-text-on-color-disabled: #8d8d8d;--cds-icon-on-color-disabled: #8d8d8d;--cds-layer-selected-disabled: #8d8d8d;--cds-skeleton-background: #353535;--cds-skeleton-element: #525252;--cds-brand-01: #0f62fe;--cds-brand-02: #6f6f6f;--cds-brand-03: #ffffff;--cds-active-01: #525252;--cds-hover-field: #353535;--cds-danger: #da1e28;--cds-caption-01-font-size: .75rem;--cds-caption-01-font-weight: 400;--cds-caption-01-line-height: 1.33333;--cds-caption-01-letter-spacing: .32px;--cds-caption-02-font-size: .875rem;--cds-caption-02-font-weight: 400;--cds-caption-02-line-height: 1.28572;--cds-caption-02-letter-spacing: .32px;--cds-label-01-font-size: .75rem;--cds-label-01-font-weight: 400;--cds-label-01-line-height: 1.33333;--cds-label-01-letter-spacing: .32px;--cds-label-02-font-size: .875rem;--cds-label-02-font-weight: 400;--cds-label-02-line-height: 1.28572;--cds-label-02-letter-spacing: .16px;--cds-helper-text-01-font-size: .75rem;--cds-helper-text-01-line-height: 1.33333;--cds-helper-text-01-letter-spacing: .32px;--cds-helper-text-02-font-size: .875rem;--cds-helper-text-02-line-height: 1.28572;--cds-helper-text-02-letter-spacing: .16px;--cds-body-short-01-font-size: .875rem;--cds-body-short-01-font-weight: 400;--cds-body-short-01-line-height: 1.28572;--cds-body-short-01-letter-spacing: .16px;--cds-body-long-01-font-size: .875rem;--cds-body-long-01-font-weight: 400;--cds-body-long-01-line-height: 1.42857;--cds-body-long-01-letter-spacing: .16px;--cds-body-short-02-font-size: 1rem;--cds-body-short-02-font-weight: 400;--cds-body-short-02-line-height: 1.375;--cds-body-short-02-letter-spacing: 0;--cds-body-long-02-font-size: 1rem;--cds-body-long-02-font-weight: 400;--cds-body-long-02-line-height: 1.5;--cds-body-long-02-letter-spacing: 0;--cds-code-01-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-01-font-size: .75rem;--cds-code-01-font-weight: 400;--cds-code-01-line-height: 1.33333;--cds-code-01-letter-spacing: .32px;--cds-code-02-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-02-font-size: .875rem;--cds-code-02-font-weight: 400;--cds-code-02-line-height: 1.42857;--cds-code-02-letter-spacing: .32px;--cds-heading-01-font-size: .875rem;--cds-heading-01-font-weight: 600;--cds-heading-01-line-height: 1.42857;--cds-heading-01-letter-spacing: .16px;--cds-productive-heading-01-font-size: .875rem;--cds-productive-heading-01-font-weight: 600;--cds-productive-heading-01-line-height: 1.28572;--cds-productive-heading-01-letter-spacing: .16px;--cds-heading-02-font-size: 1rem;--cds-heading-02-font-weight: 600;--cds-heading-02-line-height: 1.5;--cds-heading-02-letter-spacing: 0;--cds-productive-heading-02-font-size: 1rem;--cds-productive-heading-02-font-weight: 600;--cds-productive-heading-02-line-height: 1.375;--cds-productive-heading-02-letter-spacing: 0;--cds-productive-heading-03-font-size: 1.25rem;--cds-productive-heading-03-font-weight: 400;--cds-productive-heading-03-line-height: 1.4;--cds-productive-heading-03-letter-spacing: 0;--cds-productive-heading-04-font-size: 1.75rem;--cds-productive-heading-04-font-weight: 400;--cds-productive-heading-04-line-height: 1.28572;--cds-productive-heading-04-letter-spacing: 0;--cds-productive-heading-05-font-size: 2rem;--cds-productive-heading-05-font-weight: 400;--cds-productive-heading-05-line-height: 1.25;--cds-productive-heading-05-letter-spacing: 0;--cds-productive-heading-06-font-size: 2.625rem;--cds-productive-heading-06-font-weight: 300;--cds-productive-heading-06-line-height: 1.199;--cds-productive-heading-06-letter-spacing: 0;--cds-productive-heading-07-font-size: 3.375rem;--cds-productive-heading-07-font-weight: 300;--cds-productive-heading-07-line-height: 1.199;--cds-productive-heading-07-letter-spacing: 0;--cds-expressive-heading-01-font-size: .875rem;--cds-expressive-heading-01-font-weight: 600;--cds-expressive-heading-01-line-height: 1.25;--cds-expressive-heading-01-letter-spacing: .16px;--cds-expressive-heading-02-font-size: 1rem;--cds-expressive-heading-02-font-weight: 600;--cds-expressive-heading-02-line-height: 1.5;--cds-expressive-heading-02-letter-spacing: 0;--cds-expressive-heading-03-font-size: 1.25rem;--cds-expressive-heading-03-font-weight: 400;--cds-expressive-heading-03-line-height: 1.4;--cds-expressive-heading-03-letter-spacing: 0;--cds-expressive-heading-04-font-size: 1.75rem;--cds-expressive-heading-04-font-weight: 400;--cds-expressive-heading-04-line-height: 1.28572;--cds-expressive-heading-04-letter-spacing: 0;--cds-expressive-heading-05-font-size: 2rem;--cds-expressive-heading-05-font-weight: 400;--cds-expressive-heading-05-line-height: 1.25;--cds-expressive-heading-05-letter-spacing: 0;--cds-expressive-heading-06-font-size: 2rem;--cds-expressive-heading-06-font-weight: 600;--cds-expressive-heading-06-line-height: 1.25;--cds-expressive-heading-06-letter-spacing: 0;--cds-expressive-paragraph-01-font-size: 1.5rem;--cds-expressive-paragraph-01-font-weight: 300;--cds-expressive-paragraph-01-line-height: 1.334;--cds-expressive-paragraph-01-letter-spacing: 0;--cds-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-01-font-size: 1.25rem;--cds-quotation-01-font-weight: 400;--cds-quotation-01-line-height: 1.3;--cds-quotation-01-letter-spacing: 0;--cds-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-02-font-size: 2rem;--cds-quotation-02-font-weight: 300;--cds-quotation-02-line-height: 1.25;--cds-quotation-02-letter-spacing: 0;--cds-display-01-font-size: 2.625rem;--cds-display-01-font-weight: 300;--cds-display-01-line-height: 1.19;--cds-display-01-letter-spacing: 0;--cds-display-02-font-size: 2.625rem;--cds-display-02-font-weight: 600;--cds-display-02-line-height: 1.19;--cds-display-02-letter-spacing: 0;--cds-display-03-font-size: 2.625rem;--cds-display-03-font-weight: 300;--cds-display-03-line-height: 1.19;--cds-display-03-letter-spacing: 0;--cds-display-04-font-size: 2.625rem;--cds-display-04-font-weight: 600;--cds-display-04-line-height: 1.19;--cds-display-04-letter-spacing: 0;--cds-legal-01-font-size: .75rem;--cds-legal-01-font-weight: 400;--cds-legal-01-line-height: 1.33333;--cds-legal-01-letter-spacing: .32px;--cds-legal-02-font-size: .875rem;--cds-legal-02-font-weight: 400;--cds-legal-02-line-height: 1.28572;--cds-legal-02-letter-spacing: .16px;--cds-body-compact-01-font-size: .875rem;--cds-body-compact-01-font-weight: 400;--cds-body-compact-01-line-height: 1.28572;--cds-body-compact-01-letter-spacing: .16px;--cds-body-compact-02-font-size: 1rem;--cds-body-compact-02-font-weight: 400;--cds-body-compact-02-line-height: 1.375;--cds-body-compact-02-letter-spacing: 0;--cds-body-01-font-size: .875rem;--cds-body-01-font-weight: 400;--cds-body-01-line-height: 1.42857;--cds-body-01-letter-spacing: .16px;--cds-body-02-font-size: 1rem;--cds-body-02-font-weight: 400;--cds-body-02-line-height: 1.5;--cds-body-02-letter-spacing: 0;--cds-heading-compact-01-font-size: .875rem;--cds-heading-compact-01-font-weight: 600;--cds-heading-compact-01-line-height: 1.28572;--cds-heading-compact-01-letter-spacing: .16px;--cds-heading-compact-02-font-size: 1rem;--cds-heading-compact-02-font-weight: 600;--cds-heading-compact-02-line-height: 1.375;--cds-heading-compact-02-letter-spacing: 0;--cds-heading-03-font-size: 1.25rem;--cds-heading-03-font-weight: 400;--cds-heading-03-line-height: 1.4;--cds-heading-03-letter-spacing: 0;--cds-heading-04-font-size: 1.75rem;--cds-heading-04-font-weight: 400;--cds-heading-04-line-height: 1.28572;--cds-heading-04-letter-spacing: 0;--cds-heading-05-font-size: 2rem;--cds-heading-05-font-weight: 400;--cds-heading-05-line-height: 1.25;--cds-heading-05-letter-spacing: 0;--cds-heading-06-font-size: 2.625rem;--cds-heading-06-font-weight: 300;--cds-heading-06-line-height: 1.199;--cds-heading-06-letter-spacing: 0;--cds-heading-07-font-size: 3.375rem;--cds-heading-07-font-weight: 300;--cds-heading-07-line-height: 1.199;--cds-heading-07-letter-spacing: 0;--cds-fluid-heading-03-font-size: 1.25rem;--cds-fluid-heading-03-font-weight: 400;--cds-fluid-heading-03-line-height: 1.4;--cds-fluid-heading-03-letter-spacing: 0;--cds-fluid-heading-04-font-size: 1.75rem;--cds-fluid-heading-04-font-weight: 400;--cds-fluid-heading-04-line-height: 1.28572;--cds-fluid-heading-04-letter-spacing: 0;--cds-fluid-heading-05-font-size: 2rem;--cds-fluid-heading-05-font-weight: 400;--cds-fluid-heading-05-line-height: 1.25;--cds-fluid-heading-05-letter-spacing: 0;--cds-fluid-heading-06-font-size: 2rem;--cds-fluid-heading-06-font-weight: 600;--cds-fluid-heading-06-line-height: 1.25;--cds-fluid-heading-06-letter-spacing: 0;--cds-fluid-paragraph-01-font-size: 1.5rem;--cds-fluid-paragraph-01-font-weight: 300;--cds-fluid-paragraph-01-line-height: 1.334;--cds-fluid-paragraph-01-letter-spacing: 0;--cds-fluid-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-01-font-size: 1.25rem;--cds-fluid-quotation-01-font-weight: 400;--cds-fluid-quotation-01-line-height: 1.3;--cds-fluid-quotation-01-letter-spacing: 0;--cds-fluid-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-02-font-size: 2rem;--cds-fluid-quotation-02-font-weight: 300;--cds-fluid-quotation-02-line-height: 1.25;--cds-fluid-quotation-02-letter-spacing: 0;--cds-fluid-display-01-font-size: 2.625rem;--cds-fluid-display-01-font-weight: 300;--cds-fluid-display-01-line-height: 1.19;--cds-fluid-display-01-letter-spacing: 0;--cds-fluid-display-02-font-size: 2.625rem;--cds-fluid-display-02-font-weight: 600;--cds-fluid-display-02-line-height: 1.19;--cds-fluid-display-02-letter-spacing: 0;--cds-fluid-display-03-font-size: 2.625rem;--cds-fluid-display-03-font-weight: 300;--cds-fluid-display-03-line-height: 1.19;--cds-fluid-display-03-letter-spacing: 0;--cds-fluid-display-04-font-size: 2.625rem;--cds-fluid-display-04-font-weight: 600;--cds-fluid-display-04-line-height: 1.19;--cds-fluid-display-04-letter-spacing: 0;--cds-spacing-01: .125rem;--cds-spacing-02: .25rem;--cds-spacing-03: .5rem;--cds-spacing-04: .75rem;--cds-spacing-05: 1rem;--cds-spacing-06: 1.5rem;--cds-spacing-07: 2rem;--cds-spacing-08: 2.5rem;--cds-spacing-09: 3rem;--cds-spacing-10: 4rem;--cds-spacing-11: 5rem;--cds-spacing-12: 6rem;--cds-spacing-13: 10rem;--cds-fluid-spacing-01: 0;--cds-fluid-spacing-02: 2vw;--cds-fluid-spacing-03: 5vw;--cds-fluid-spacing-04: 10vw;--cds-layout-01: 1rem;--cds-layout-02: 1.5rem;--cds-layout-03: 2rem;--cds-layout-04: 3rem;--cds-layout-05: 4rem;--cds-layout-06: 6rem;--cds-layout-07: 10rem;--cds-container-01: 1.5rem;--cds-container-02: 2rem;--cds-container-03: 2.5rem;--cds-container-04: 3rem;--cds-container-05: 4rem;--cds-size-xsmall: 1.5rem;--cds-size-small: 2rem;--cds-size-medium: 2.5rem;--cds-size-large: 3rem;--cds-size-xlarge: 4rem;--cds-size-2XLarge: 5rem;--cds-icon-size-01: 1rem;--cds-icon-size-02: 1.25rem;--cds-tag-background-red: #a2191f;--cds-tag-color-red: #ffd7d9;--cds-tag-hover-red: #c21e25;--cds-tag-background-magenta: #9f1853;--cds-tag-color-magenta: #ffd6e8;--cds-tag-hover-magenta: #bf1d63;--cds-tag-background-purple: #6929c4;--cds-tag-color-purple: #e8daff;--cds-tag-hover-purple: #7c3dd6;--cds-tag-background-blue: #0043ce;--cds-tag-color-blue: #d0e2ff;--cds-tag-hover-blue: #0053ff;--cds-tag-background-cyan: #00539a;--cds-tag-color-cyan: #bae6ff;--cds-tag-hover-cyan: #0066bd;--cds-tag-background-teal: #005d5d;--cds-tag-color-teal: #9ef0f0;--cds-tag-hover-teal: #007070;--cds-tag-background-green: #0e6027;--cds-tag-color-green: #a7f0ba;--cds-tag-hover-green: #11742f;--cds-tag-background-gray: #525252;--cds-tag-color-gray: #e0e0e0;--cds-tag-hover-gray: #636363;--cds-tag-background-cool-gray: #4d5358;--cds-tag-color-cool-gray: #dde1e6;--cds-tag-hover-cool-gray: #5d646a;--cds-tag-background-warm-gray: #565151;--cds-tag-color-warm-gray: #e5e0df;--cds-tag-hover-warm-gray: #696363;--cds-notification-background-error: var(--cds-ui-01, #f4f4f4);--cds-notification-background-success: var(--cds-ui-01, #f4f4f4);--cds-notification-background-info: var(--cds-ui-01, #f4f4f4);--cds-notification-background-warning: var(--cds-ui-01, #f4f4f4);--cds-notification-action-hover: var(--cds-hover-ui, #e5e5e5)}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Bold.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Bold.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Bold-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Bold-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Bold-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Bold-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Bold-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-BoldItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-BoldItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-BoldItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-BoldItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-BoldItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-BoldItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-BoldItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-ExtraLight.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-ExtraLight.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLight-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLight-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLight-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLight-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLight-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-ExtraLightItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-ExtraLightItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLightItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLightItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLightItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLightItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLightItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Italic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Italic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Italic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Italic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Italic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Italic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Italic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Light.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Light.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Light-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Light-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Light-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Light-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Light-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-LightItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-LightItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-LightItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-LightItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-LightItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-LightItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-LightItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Medium.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Medium.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Medium-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Medium-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Medium-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Medium-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Medium-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-MediumItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-MediumItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-MediumItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-MediumItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-MediumItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-MediumItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-MediumItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Regular.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Regular.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Regular-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Regular-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Regular-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Regular-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Regular-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-SemiBold.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-SemiBold.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBold-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBold-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBold-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBold-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBold-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-SemiBoldItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-SemiBoldItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBoldItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBoldItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBoldItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBoldItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBoldItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Text.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Text.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Text-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Text-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Text-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Text-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Text-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-TextItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-TextItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-TextItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-TextItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-TextItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-TextItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-TextItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Thin.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Thin.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Thin-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Thin-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Thin-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Thin-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Thin-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-ThinItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-ThinItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ThinItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ThinItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ThinItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ThinItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ThinItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Bold.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Bold.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-BoldItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-BoldItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-ExtraLight.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-ExtraLight.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-ExtraLightItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-ExtraLightItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Italic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Italic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Light.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Light.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-LightItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-LightItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Medium.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Medium.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-MediumItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-MediumItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Regular.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Regular.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-SemiBold.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-SemiBold.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-SemiBoldItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-SemiBoldItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Text.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Text.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-TextItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-TextItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Thin.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Thin.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-ThinItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-ThinItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}.bx--assistive-text,.bx--visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--body,body{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);background-color:var(--cds-ui-background, #ffffff);color:var(--cds-text-01, #161616);line-height:1}.bx--grid{margin-right:auto;margin-left:auto;max-width:99rem;padding-right:1rem;padding-left:1rem}@media (min-width: 42rem){.bx--grid{padding-right:2rem;padding-left:2rem}}@media (min-width: 99rem){.bx--grid{padding-right:2.5rem;padding-left:2.5rem}.bx--grid--full-width{max-width:100%}}.bx--row{display:flex;flex-wrap:wrap;margin-right:-1rem;margin-left:-1rem}.bx--row-padding [class*=bx--col],.bx--col-padding{padding-top:1rem;padding-bottom:1rem}.bx--grid--condensed [class*=bx--col]{padding-top:.03125rem;padding-bottom:.03125rem}.bx--col{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col,.bx--grid--condensed .bx--col{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col,.bx--grid--narrow .bx--col{padding-right:1rem;padding-left:0}.bx--col-sm-0{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm-0,.bx--grid--condensed .bx--col-sm-0{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm-0,.bx--grid--narrow .bx--col-sm-0{padding-right:1rem;padding-left:0}.bx--col-sm-1{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm-1,.bx--grid--condensed .bx--col-sm-1{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm-1,.bx--grid--narrow .bx--col-sm-1{padding-right:1rem;padding-left:0}.bx--col-sm-2{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm-2,.bx--grid--condensed .bx--col-sm-2{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm-2,.bx--grid--narrow .bx--col-sm-2{padding-right:1rem;padding-left:0}.bx--col-sm-3{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm-3,.bx--grid--condensed .bx--col-sm-3{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm-3,.bx--grid--narrow .bx--col-sm-3{padding-right:1rem;padding-left:0}.bx--col-sm-4{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm-4,.bx--grid--condensed .bx--col-sm-4{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm-4,.bx--grid--narrow .bx--col-sm-4{padding-right:1rem;padding-left:0}.bx--col-sm,.bx--col-sm--auto{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm,.bx--grid--condensed .bx--col-sm,.bx--row--condensed .bx--col-sm--auto,.bx--grid--condensed .bx--col-sm--auto{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm,.bx--grid--narrow .bx--col-sm,.bx--row--narrow .bx--col-sm--auto,.bx--grid--narrow .bx--col-sm--auto{padding-right:1rem;padding-left:0}.bx--col,.bx--col-sm{max-width:100%;flex-basis:0;flex-grow:1}.bx--col--auto,.bx--col-sm--auto{width:auto;max-width:100%;flex:1 0 0%}.bx--col-sm-0{display:none}.bx--col-sm-1{display:block;max-width:25%;flex:0 0 25%}.bx--col-sm-2{display:block;max-width:50%;flex:0 0 50%}.bx--col-sm-3{display:block;max-width:75%;flex:0 0 75%}.bx--col-sm-4{display:block;max-width:100%;flex:0 0 100%}.bx--offset-sm-0{margin-left:0}.bx--offset-sm-1{margin-left:25%}.bx--offset-sm-2{margin-left:50%}.bx--offset-sm-3{margin-left:75%}.bx--col-md-0{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-0,.bx--grid--condensed .bx--col-md-0{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-0,.bx--grid--narrow .bx--col-md-0{padding-right:1rem;padding-left:0}.bx--col-md-1{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-1,.bx--grid--condensed .bx--col-md-1{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-1,.bx--grid--narrow .bx--col-md-1{padding-right:1rem;padding-left:0}.bx--col-md-2{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-2,.bx--grid--condensed .bx--col-md-2{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-2,.bx--grid--narrow .bx--col-md-2{padding-right:1rem;padding-left:0}.bx--col-md-3{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-3,.bx--grid--condensed .bx--col-md-3{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-3,.bx--grid--narrow .bx--col-md-3{padding-right:1rem;padding-left:0}.bx--col-md-4{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-4,.bx--grid--condensed .bx--col-md-4{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-4,.bx--grid--narrow .bx--col-md-4{padding-right:1rem;padding-left:0}.bx--col-md-5{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-5,.bx--grid--condensed .bx--col-md-5{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-5,.bx--grid--narrow .bx--col-md-5{padding-right:1rem;padding-left:0}.bx--col-md-6{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-6,.bx--grid--condensed .bx--col-md-6{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-6,.bx--grid--narrow .bx--col-md-6{padding-right:1rem;padding-left:0}.bx--col-md-7{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-7,.bx--grid--condensed .bx--col-md-7{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-7,.bx--grid--narrow .bx--col-md-7{padding-right:1rem;padding-left:0}.bx--col-md-8{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-8,.bx--grid--condensed .bx--col-md-8{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-8,.bx--grid--narrow .bx--col-md-8{padding-right:1rem;padding-left:0}.bx--col-md,.bx--col-md--auto{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md,.bx--grid--condensed .bx--col-md,.bx--row--condensed .bx--col-md--auto,.bx--grid--condensed .bx--col-md--auto{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md,.bx--grid--narrow .bx--col-md,.bx--row--narrow .bx--col-md--auto,.bx--grid--narrow .bx--col-md--auto{padding-right:1rem;padding-left:0}@media (min-width: 42rem){.bx--col,.bx--col-md{max-width:100%;flex-basis:0;flex-grow:1}.bx--col--auto,.bx--col-md--auto{width:auto;max-width:100%;flex:1 0 0%}.bx--col-md-0{display:none}.bx--col-md-1{display:block;max-width:12.5%;flex:0 0 12.5%}.bx--col-md-2{display:block;max-width:25%;flex:0 0 25%}.bx--col-md-3{display:block;max-width:37.5%;flex:0 0 37.5%}.bx--col-md-4{display:block;max-width:50%;flex:0 0 50%}.bx--col-md-5{display:block;max-width:62.5%;flex:0 0 62.5%}.bx--col-md-6{display:block;max-width:75%;flex:0 0 75%}.bx--col-md-7{display:block;max-width:87.5%;flex:0 0 87.5%}.bx--col-md-8{display:block;max-width:100%;flex:0 0 100%}.bx--offset-md-0{margin-left:0}.bx--offset-md-1{margin-left:12.5%}.bx--offset-md-2{margin-left:25%}.bx--offset-md-3{margin-left:37.5%}.bx--offset-md-4{margin-left:50%}.bx--offset-md-5{margin-left:62.5%}.bx--offset-md-6{margin-left:75%}.bx--offset-md-7{margin-left:87.5%}}.bx--col-lg-0{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-0,.bx--grid--condensed .bx--col-lg-0{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-0,.bx--grid--narrow .bx--col-lg-0{padding-right:1rem;padding-left:0}.bx--col-lg-1{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-1,.bx--grid--condensed .bx--col-lg-1{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-1,.bx--grid--narrow .bx--col-lg-1{padding-right:1rem;padding-left:0}.bx--col-lg-2{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-2,.bx--grid--condensed .bx--col-lg-2{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-2,.bx--grid--narrow .bx--col-lg-2{padding-right:1rem;padding-left:0}.bx--col-lg-3{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-3,.bx--grid--condensed .bx--col-lg-3{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-3,.bx--grid--narrow .bx--col-lg-3{padding-right:1rem;padding-left:0}.bx--col-lg-4{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-4,.bx--grid--condensed .bx--col-lg-4{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-4,.bx--grid--narrow .bx--col-lg-4{padding-right:1rem;padding-left:0}.bx--col-lg-5{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-5,.bx--grid--condensed .bx--col-lg-5{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-5,.bx--grid--narrow .bx--col-lg-5{padding-right:1rem;padding-left:0}.bx--col-lg-6{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-6,.bx--grid--condensed .bx--col-lg-6{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-6,.bx--grid--narrow .bx--col-lg-6{padding-right:1rem;padding-left:0}.bx--col-lg-7{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-7,.bx--grid--condensed .bx--col-lg-7{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-7,.bx--grid--narrow .bx--col-lg-7{padding-right:1rem;padding-left:0}.bx--col-lg-8{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-8,.bx--grid--condensed .bx--col-lg-8{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-8,.bx--grid--narrow .bx--col-lg-8{padding-right:1rem;padding-left:0}.bx--col-lg-9{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-9,.bx--grid--condensed .bx--col-lg-9{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-9,.bx--grid--narrow .bx--col-lg-9{padding-right:1rem;padding-left:0}.bx--col-lg-10{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-10,.bx--grid--condensed .bx--col-lg-10{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-10,.bx--grid--narrow .bx--col-lg-10{padding-right:1rem;padding-left:0}.bx--col-lg-11{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-11,.bx--grid--condensed .bx--col-lg-11{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-11,.bx--grid--narrow .bx--col-lg-11{padding-right:1rem;padding-left:0}.bx--col-lg-12{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-12,.bx--grid--condensed .bx--col-lg-12{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-12,.bx--grid--narrow .bx--col-lg-12{padding-right:1rem;padding-left:0}.bx--col-lg-13{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-13,.bx--grid--condensed .bx--col-lg-13{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-13,.bx--grid--narrow .bx--col-lg-13{padding-right:1rem;padding-left:0}.bx--col-lg-14{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-14,.bx--grid--condensed .bx--col-lg-14{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-14,.bx--grid--narrow .bx--col-lg-14{padding-right:1rem;padding-left:0}.bx--col-lg-15{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-15,.bx--grid--condensed .bx--col-lg-15{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-15,.bx--grid--narrow .bx--col-lg-15{padding-right:1rem;padding-left:0}.bx--col-lg-16{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-16,.bx--grid--condensed .bx--col-lg-16{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-16,.bx--grid--narrow .bx--col-lg-16{padding-right:1rem;padding-left:0}.bx--col-lg,.bx--col-lg--auto{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg,.bx--grid--condensed .bx--col-lg,.bx--row--condensed .bx--col-lg--auto,.bx--grid--condensed .bx--col-lg--auto{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg,.bx--grid--narrow .bx--col-lg,.bx--row--narrow .bx--col-lg--auto,.bx--grid--narrow .bx--col-lg--auto{padding-right:1rem;padding-left:0}@media (min-width: 66rem){.bx--col,.bx--col-lg{max-width:100%;flex-basis:0;flex-grow:1}.bx--col--auto,.bx--col-lg--auto{width:auto;max-width:100%;flex:1 0 0%}.bx--col-lg-0{display:none}.bx--col-lg-1{display:block;max-width:6.25%;flex:0 0 6.25%}.bx--col-lg-2{display:block;max-width:12.5%;flex:0 0 12.5%}.bx--col-lg-3{display:block;max-width:18.75%;flex:0 0 18.75%}.bx--col-lg-4{display:block;max-width:25%;flex:0 0 25%}.bx--col-lg-5{display:block;max-width:31.25%;flex:0 0 31.25%}.bx--col-lg-6{display:block;max-width:37.5%;flex:0 0 37.5%}.bx--col-lg-7{display:block;max-width:43.75%;flex:0 0 43.75%}.bx--col-lg-8{display:block;max-width:50%;flex:0 0 50%}.bx--col-lg-9{display:block;max-width:56.25%;flex:0 0 56.25%}.bx--col-lg-10{display:block;max-width:62.5%;flex:0 0 62.5%}.bx--col-lg-11{display:block;max-width:68.75%;flex:0 0 68.75%}.bx--col-lg-12{display:block;max-width:75%;flex:0 0 75%}.bx--col-lg-13{display:block;max-width:81.25%;flex:0 0 81.25%}.bx--col-lg-14{display:block;max-width:87.5%;flex:0 0 87.5%}.bx--col-lg-15{display:block;max-width:93.75%;flex:0 0 93.75%}.bx--col-lg-16{display:block;max-width:100%;flex:0 0 100%}.bx--offset-lg-0{margin-left:0}.bx--offset-lg-1{margin-left:6.25%}.bx--offset-lg-2{margin-left:12.5%}.bx--offset-lg-3{margin-left:18.75%}.bx--offset-lg-4{margin-left:25%}.bx--offset-lg-5{margin-left:31.25%}.bx--offset-lg-6{margin-left:37.5%}.bx--offset-lg-7{margin-left:43.75%}.bx--offset-lg-8{margin-left:50%}.bx--offset-lg-9{margin-left:56.25%}.bx--offset-lg-10{margin-left:62.5%}.bx--offset-lg-11{margin-left:68.75%}.bx--offset-lg-12{margin-left:75%}.bx--offset-lg-13{margin-left:81.25%}.bx--offset-lg-14{margin-left:87.5%}.bx--offset-lg-15{margin-left:93.75%}}.bx--col-xlg-0{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-0,.bx--grid--condensed .bx--col-xlg-0{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-0,.bx--grid--narrow .bx--col-xlg-0{padding-right:1rem;padding-left:0}.bx--col-xlg-1{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-1,.bx--grid--condensed .bx--col-xlg-1{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-1,.bx--grid--narrow .bx--col-xlg-1{padding-right:1rem;padding-left:0}.bx--col-xlg-2{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-2,.bx--grid--condensed .bx--col-xlg-2{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-2,.bx--grid--narrow .bx--col-xlg-2{padding-right:1rem;padding-left:0}.bx--col-xlg-3{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-3,.bx--grid--condensed .bx--col-xlg-3{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-3,.bx--grid--narrow .bx--col-xlg-3{padding-right:1rem;padding-left:0}.bx--col-xlg-4{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-4,.bx--grid--condensed .bx--col-xlg-4{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-4,.bx--grid--narrow .bx--col-xlg-4{padding-right:1rem;padding-left:0}.bx--col-xlg-5{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-5,.bx--grid--condensed .bx--col-xlg-5{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-5,.bx--grid--narrow .bx--col-xlg-5{padding-right:1rem;padding-left:0}.bx--col-xlg-6{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-6,.bx--grid--condensed .bx--col-xlg-6{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-6,.bx--grid--narrow .bx--col-xlg-6{padding-right:1rem;padding-left:0}.bx--col-xlg-7{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-7,.bx--grid--condensed .bx--col-xlg-7{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-7,.bx--grid--narrow .bx--col-xlg-7{padding-right:1rem;padding-left:0}.bx--col-xlg-8{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-8,.bx--grid--condensed .bx--col-xlg-8{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-8,.bx--grid--narrow .bx--col-xlg-8{padding-right:1rem;padding-left:0}.bx--col-xlg-9{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-9,.bx--grid--condensed .bx--col-xlg-9{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-9,.bx--grid--narrow .bx--col-xlg-9{padding-right:1rem;padding-left:0}.bx--col-xlg-10{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-10,.bx--grid--condensed .bx--col-xlg-10{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-10,.bx--grid--narrow .bx--col-xlg-10{padding-right:1rem;padding-left:0}.bx--col-xlg-11{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-11,.bx--grid--condensed .bx--col-xlg-11{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-11,.bx--grid--narrow .bx--col-xlg-11{padding-right:1rem;padding-left:0}.bx--col-xlg-12{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-12,.bx--grid--condensed .bx--col-xlg-12{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-12,.bx--grid--narrow .bx--col-xlg-12{padding-right:1rem;padding-left:0}.bx--col-xlg-13{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-13,.bx--grid--condensed .bx--col-xlg-13{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-13,.bx--grid--narrow .bx--col-xlg-13{padding-right:1rem;padding-left:0}.bx--col-xlg-14{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-14,.bx--grid--condensed .bx--col-xlg-14{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-14,.bx--grid--narrow .bx--col-xlg-14{padding-right:1rem;padding-left:0}.bx--col-xlg-15{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-15,.bx--grid--condensed .bx--col-xlg-15{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-15,.bx--grid--narrow .bx--col-xlg-15{padding-right:1rem;padding-left:0}.bx--col-xlg-16{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-16,.bx--grid--condensed .bx--col-xlg-16{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-16,.bx--grid--narrow .bx--col-xlg-16{padding-right:1rem;padding-left:0}.bx--col-xlg,.bx--col-xlg--auto{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg,.bx--grid--condensed .bx--col-xlg,.bx--row--condensed .bx--col-xlg--auto,.bx--grid--condensed .bx--col-xlg--auto{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg,.bx--grid--narrow .bx--col-xlg,.bx--row--narrow .bx--col-xlg--auto,.bx--grid--narrow .bx--col-xlg--auto{padding-right:1rem;padding-left:0}@media (min-width: 82rem){.bx--col,.bx--col-xlg{max-width:100%;flex-basis:0;flex-grow:1}.bx--col--auto,.bx--col-xlg--auto{width:auto;max-width:100%;flex:1 0 0%}.bx--col-xlg-0{display:none}.bx--col-xlg-1{display:block;max-width:6.25%;flex:0 0 6.25%}.bx--col-xlg-2{display:block;max-width:12.5%;flex:0 0 12.5%}.bx--col-xlg-3{display:block;max-width:18.75%;flex:0 0 18.75%}.bx--col-xlg-4{display:block;max-width:25%;flex:0 0 25%}.bx--col-xlg-5{display:block;max-width:31.25%;flex:0 0 31.25%}.bx--col-xlg-6{display:block;max-width:37.5%;flex:0 0 37.5%}.bx--col-xlg-7{display:block;max-width:43.75%;flex:0 0 43.75%}.bx--col-xlg-8{display:block;max-width:50%;flex:0 0 50%}.bx--col-xlg-9{display:block;max-width:56.25%;flex:0 0 56.25%}.bx--col-xlg-10{display:block;max-width:62.5%;flex:0 0 62.5%}.bx--col-xlg-11{display:block;max-width:68.75%;flex:0 0 68.75%}.bx--col-xlg-12{display:block;max-width:75%;flex:0 0 75%}.bx--col-xlg-13{display:block;max-width:81.25%;flex:0 0 81.25%}.bx--col-xlg-14{display:block;max-width:87.5%;flex:0 0 87.5%}.bx--col-xlg-15{display:block;max-width:93.75%;flex:0 0 93.75%}.bx--col-xlg-16{display:block;max-width:100%;flex:0 0 100%}.bx--offset-xlg-0{margin-left:0}.bx--offset-xlg-1{margin-left:6.25%}.bx--offset-xlg-2{margin-left:12.5%}.bx--offset-xlg-3{margin-left:18.75%}.bx--offset-xlg-4{margin-left:25%}.bx--offset-xlg-5{margin-left:31.25%}.bx--offset-xlg-6{margin-left:37.5%}.bx--offset-xlg-7{margin-left:43.75%}.bx--offset-xlg-8{margin-left:50%}.bx--offset-xlg-9{margin-left:56.25%}.bx--offset-xlg-10{margin-left:62.5%}.bx--offset-xlg-11{margin-left:68.75%}.bx--offset-xlg-12{margin-left:75%}.bx--offset-xlg-13{margin-left:81.25%}.bx--offset-xlg-14{margin-left:87.5%}.bx--offset-xlg-15{margin-left:93.75%}}.bx--col-max-0{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-0,.bx--grid--condensed .bx--col-max-0{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-0,.bx--grid--narrow .bx--col-max-0{padding-right:1rem;padding-left:0}.bx--col-max-1{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-1,.bx--grid--condensed .bx--col-max-1{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-1,.bx--grid--narrow .bx--col-max-1{padding-right:1rem;padding-left:0}.bx--col-max-2{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-2,.bx--grid--condensed .bx--col-max-2{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-2,.bx--grid--narrow .bx--col-max-2{padding-right:1rem;padding-left:0}.bx--col-max-3{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-3,.bx--grid--condensed .bx--col-max-3{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-3,.bx--grid--narrow .bx--col-max-3{padding-right:1rem;padding-left:0}.bx--col-max-4{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-4,.bx--grid--condensed .bx--col-max-4{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-4,.bx--grid--narrow .bx--col-max-4{padding-right:1rem;padding-left:0}.bx--col-max-5{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-5,.bx--grid--condensed .bx--col-max-5{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-5,.bx--grid--narrow .bx--col-max-5{padding-right:1rem;padding-left:0}.bx--col-max-6{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-6,.bx--grid--condensed .bx--col-max-6{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-6,.bx--grid--narrow .bx--col-max-6{padding-right:1rem;padding-left:0}.bx--col-max-7{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-7,.bx--grid--condensed .bx--col-max-7{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-7,.bx--grid--narrow .bx--col-max-7{padding-right:1rem;padding-left:0}.bx--col-max-8{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-8,.bx--grid--condensed .bx--col-max-8{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-8,.bx--grid--narrow .bx--col-max-8{padding-right:1rem;padding-left:0}.bx--col-max-9{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-9,.bx--grid--condensed .bx--col-max-9{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-9,.bx--grid--narrow .bx--col-max-9{padding-right:1rem;padding-left:0}.bx--col-max-10{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-10,.bx--grid--condensed .bx--col-max-10{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-10,.bx--grid--narrow .bx--col-max-10{padding-right:1rem;padding-left:0}.bx--col-max-11{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-11,.bx--grid--condensed .bx--col-max-11{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-11,.bx--grid--narrow .bx--col-max-11{padding-right:1rem;padding-left:0}.bx--col-max-12{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-12,.bx--grid--condensed .bx--col-max-12{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-12,.bx--grid--narrow .bx--col-max-12{padding-right:1rem;padding-left:0}.bx--col-max-13{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-13,.bx--grid--condensed .bx--col-max-13{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-13,.bx--grid--narrow .bx--col-max-13{padding-right:1rem;padding-left:0}.bx--col-max-14{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-14,.bx--grid--condensed .bx--col-max-14{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-14,.bx--grid--narrow .bx--col-max-14{padding-right:1rem;padding-left:0}.bx--col-max-15{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-15,.bx--grid--condensed .bx--col-max-15{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-15,.bx--grid--narrow .bx--col-max-15{padding-right:1rem;padding-left:0}.bx--col-max-16{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-16,.bx--grid--condensed .bx--col-max-16{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-16,.bx--grid--narrow .bx--col-max-16{padding-right:1rem;padding-left:0}.bx--col-max,.bx--col-max--auto{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max,.bx--grid--condensed .bx--col-max,.bx--row--condensed .bx--col-max--auto,.bx--grid--condensed .bx--col-max--auto{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max,.bx--grid--narrow .bx--col-max,.bx--row--narrow .bx--col-max--auto,.bx--grid--narrow .bx--col-max--auto{padding-right:1rem;padding-left:0}@media (min-width: 99rem){.bx--col,.bx--col-max{max-width:100%;flex-basis:0;flex-grow:1}.bx--col--auto,.bx--col-max--auto{width:auto;max-width:100%;flex:1 0 0%}.bx--col-max-0{display:none}.bx--col-max-1{display:block;max-width:6.25%;flex:0 0 6.25%}.bx--col-max-2{display:block;max-width:12.5%;flex:0 0 12.5%}.bx--col-max-3{display:block;max-width:18.75%;flex:0 0 18.75%}.bx--col-max-4{display:block;max-width:25%;flex:0 0 25%}.bx--col-max-5{display:block;max-width:31.25%;flex:0 0 31.25%}.bx--col-max-6{display:block;max-width:37.5%;flex:0 0 37.5%}.bx--col-max-7{display:block;max-width:43.75%;flex:0 0 43.75%}.bx--col-max-8{display:block;max-width:50%;flex:0 0 50%}.bx--col-max-9{display:block;max-width:56.25%;flex:0 0 56.25%}.bx--col-max-10{display:block;max-width:62.5%;flex:0 0 62.5%}.bx--col-max-11{display:block;max-width:68.75%;flex:0 0 68.75%}.bx--col-max-12{display:block;max-width:75%;flex:0 0 75%}.bx--col-max-13{display:block;max-width:81.25%;flex:0 0 81.25%}.bx--col-max-14{display:block;max-width:87.5%;flex:0 0 87.5%}.bx--col-max-15{display:block;max-width:93.75%;flex:0 0 93.75%}.bx--col-max-16{display:block;max-width:100%;flex:0 0 100%}.bx--offset-max-0{margin-left:0}.bx--offset-max-1{margin-left:6.25%}.bx--offset-max-2{margin-left:12.5%}.bx--offset-max-3{margin-left:18.75%}.bx--offset-max-4{margin-left:25%}.bx--offset-max-5{margin-left:31.25%}.bx--offset-max-6{margin-left:37.5%}.bx--offset-max-7{margin-left:43.75%}.bx--offset-max-8{margin-left:50%}.bx--offset-max-9{margin-left:56.25%}.bx--offset-max-10{margin-left:62.5%}.bx--offset-max-11{margin-left:68.75%}.bx--offset-max-12{margin-left:75%}.bx--offset-max-13{margin-left:81.25%}.bx--offset-max-14{margin-left:87.5%}.bx--offset-max-15{margin-left:93.75%}}.bx--no-gutter,.bx--row.bx--no-gutter [class*=bx--col]{padding-right:0;padding-left:0}.bx--no-gutter--start,.bx--row.bx--no-gutter--start [class*=bx--col]{padding-left:0}.bx--no-gutter--end,.bx--row.bx--no-gutter--end [class*=bx--col]{padding-right:0}.bx--no-gutter--left,.bx--row.bx--no-gutter--left [class*=bx--col]{padding-left:0}.bx--no-gutter--right,.bx--row.bx--no-gutter--right [class*=bx--col]{padding-right:0}.bx--hang--start{padding-left:1rem}.bx--hang--end{padding-right:1rem}.bx--hang--left{padding-left:1rem}.bx--hang--right{padding-right:1rem}.bx--aspect-ratio{position:relative}.bx--aspect-ratio:before{width:1px;height:0;margin-left:-1px;content:"";float:left}.bx--aspect-ratio:after{display:table;clear:both;content:""}.bx--aspect-ratio--16x9:before{padding-top:56.25%}.bx--aspect-ratio--9x16:before{padding-top:177.7777777778%}.bx--aspect-ratio--2x1:before{padding-top:50%}.bx--aspect-ratio--1x2:before{padding-top:200%}.bx--aspect-ratio--4x3:before{padding-top:75%}.bx--aspect-ratio--3x4:before{padding-top:133.3333333333%}.bx--aspect-ratio--3x2:before{padding-top:66.6666666667%}.bx--aspect-ratio--2x3:before{padding-top:150%}.bx--aspect-ratio--1x1:before{padding-top:100%}.bx--aspect-ratio--object{position:absolute;top:0;left:0;width:100%;height:100%}@keyframes collapse-accordion{0%{height:100%;opacity:1;visibility:inherit}to{height:0;opacity:0;visibility:hidden}}@keyframes expand-accordion{0%{height:0;opacity:0;visibility:hidden}to{height:100%;opacity:1;visibility:inherit}}.bx--accordion{width:100%;list-style:none}.bx--accordion__item{overflow:visible;border-top:1px solid var(--cds-ui-03, #e0e0e0);transition:all .11s cubic-bezier(.2,0,.38,.9)}.bx--accordion__item:last-child{border-bottom:1px solid var(--cds-ui-03, #e0e0e0)}.bx--accordion__heading{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;position:relative;display:flex;width:100%;min-height:2.5rem;flex-direction:row-reverse;align-items:flex-start;justify-content:flex-start;padding:.625rem 0;margin:0;color:var(--cds-text-01, #161616);cursor:pointer;transition:background-color cubic-bezier(.2,0,.38,.9) .11s}.bx--accordion__heading::-moz-focus-inner{border:0}.bx--accordion__heading:hover:before,.bx--accordion__heading:focus:before{position:absolute;top:-1px;left:0;width:100%;height:calc(100% + 2px);content:""}.bx--accordion__heading:hover:before{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--accordion__heading:focus{outline:none}.bx--accordion__heading:focus:before{box-sizing:border-box;border:2px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--accordion__heading:focus:before{border-style:dotted}}.bx--accordion--xl .bx--accordion__heading,.bx--accordion--lg .bx--accordion__heading{min-height:3rem}.bx--accordion--sm .bx--accordion__heading{min-height:2rem;padding:.3125rem 0}.bx--accordion__heading[disabled]{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--accordion__heading[disabled] .bx--accordion__arrow{fill:var(--cds-disabled-02, #c6c6c6)}.bx--accordion__heading[disabled]:hover:before{background-color:#0000}.bx--accordion__item--disabled,.bx--accordion__item--disabled+.bx--accordion__item{border-top:1px solid var(--cds-disabled-01, #f4f4f4)}li.bx--accordion__item--disabled:last-of-type{border-bottom:1px solid var(--cds-disabled-01, #f4f4f4)}.bx--accordion__arrow{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;width:1rem;height:1rem;flex:0 0 1rem;margin:2px 1rem 0 0;fill:var(--cds-ui-05, #161616);transform:rotate(-270deg);transition:all .11s cubic-bezier(.2,0,.38,.9)}.bx--accordion__title{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);z-index:1;width:100%;margin:0 0 0 1rem;text-align:left}.bx--accordion__content{display:none;padding-right:1rem;padding-left:1rem;transition:padding cubic-bezier(.2,0,.38,.9) .11s}@media (min-width: 480px){.bx--accordion__content{padding-right:3rem}}@media (min-width: 640px){.bx--accordion__content{padding-right:25%}}.bx--accordion__content>p{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px)}.bx--accordion--start .bx--accordion__heading{flex-direction:row}.bx--accordion--start .bx--accordion__arrow{margin:2px 0 0 1rem}.bx--accordion--start .bx--accordion__title{margin-right:1rem}.bx--accordion--start .bx--accordion__content{margin-left:2rem}.bx--accordion__item--collapsing .bx--accordion__content,.bx--accordion__item--expanding .bx--accordion__content{display:block}.bx--accordion__item--collapsing .bx--accordion__content{animation:.11s cubic-bezier(.2,0,.38,.9) collapse-accordion}.bx--accordion__item--expanding .bx--accordion__content{animation:.11s cubic-bezier(.2,0,.38,.9) expand-accordion}.bx--accordion__item--active{overflow:visible}.bx--accordion__item--active .bx--accordion__content{display:block;padding-top:var(--cds-spacing-03, .5rem);padding-bottom:1.5rem;transition:padding-top cubic-bezier(0,0,.38,.9) .11s,padding-bottom cubic-bezier(0,0,.38,.9) .11s}.bx--accordion__item--active .bx--accordion__arrow{fill:var(--cds-ui-05, #161616);transform:rotate(-90deg)}.bx--accordion.bx--skeleton .bx--accordion__heading,.bx--accordion.bx--skeleton .bx--accordion__button{cursor:default}.bx--accordion.bx--skeleton .bx--accordion__arrow{cursor:default;fill:var(--cds-ui-05, #161616);pointer-events:none}.bx--accordion.bx--skeleton .bx--accordion__arrow:hover,.bx--accordion.bx--skeleton .bx--accordion__arrow:focus,.bx--accordion.bx--skeleton .bx--accordion__arrow:active{border:none;cursor:default;outline:none}.bx--accordion.bx--skeleton .bx--accordion__heading:hover:before{background-color:#0000}.bx--accordion--end.bx--skeleton .bx--accordion__arrow{margin-left:var(--cds-spacing-05, 1rem)}.bx--skeleton .bx--accordion__heading:focus .bx--accordion__arrow{border:none;cursor:default;outline:none}.bx--accordion__title.bx--skeleton__text{margin-bottom:0}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--accordion__arrow,.bx--accordion__item--active .bx--accordion__arrow{fill:ButtonText}}.bx--link{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:inline-flex;color:var(--cds-link-01, #0f62fe);outline:none;text-decoration:none;transition:color 70ms cubic-bezier(.2,0,.38,.9)}.bx--link:hover{color:var(--cds-hover-primary-text, #0043ce);text-decoration:underline}.bx--link:active,.bx--link:active:visited,.bx--link:active:visited:hover{color:var(--cds-text-01, #161616);text-decoration:underline}.bx--link:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--link:focus{outline-style:dotted}}.bx--link:visited{color:var(--cds-link-01, #0f62fe)}.bx--link:visited:hover{color:var(--cds-hover-primary-text, #0043ce)}.bx--link--disabled,.bx--link--disabled:hover{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed;font-weight:400;text-decoration:none}.bx--link.bx--link--visited:visited{color:var(--cds-visited-link, #8a3ffc)}.bx--link.bx--link--visited:visited:hover{color:var(--cds-hover-primary-text, #0043ce)}.bx--link.bx--link--inline{text-decoration:underline}.bx--link.bx--link--inline:focus,.bx--link.bx--link--inline:visited{text-decoration:none}.bx--link--disabled.bx--link--inline{text-decoration:underline}.bx--link--sm{font-size:var(--cds-helper-text-01-font-size, .75rem);line-height:var(--cds-helper-text-01-line-height, 1.33333);letter-spacing:var(--cds-helper-text-01-letter-spacing, .32px)}.bx--link--lg{font-size:var(--cds-body-short-02-font-size, 1rem);font-weight:var(--cds-body-short-02-font-weight, 400);line-height:var(--cds-body-short-02-line-height, 1.375);letter-spacing:var(--cds-body-short-02-letter-spacing, 0)}.bx--link__icon{display:inline-flex;align-self:center;margin-left:var(--cds-spacing-03, .5rem)}.bx--breadcrumb{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:inline}@media (min-width: 42rem){.bx--breadcrumb{display:flex;flex-wrap:wrap}}.bx--breadcrumb-item{position:relative;display:flex;align-items:center;margin-right:.5rem}.bx--breadcrumb-item .bx--link:visited{color:var(--cds-link-01, #0f62fe)}.bx--breadcrumb-item .bx--link:visited:hover{color:var(--cds-hover-primary-text, #0043ce)}.bx--breadcrumb-item:after{margin-left:.5rem;color:var(--cds-text-01, #161616);content:"/"}.bx--breadcrumb--no-trailing-slash .bx--breadcrumb-item:last-child:after{content:""}.bx--breadcrumb-item:last-child,.bx--breadcrumb-item:last-child:after{margin-right:0}.bx--breadcrumb .bx--link{white-space:nowrap}.bx--breadcrumb-item [aria-current=page],.bx--breadcrumb-item.bx--breadcrumb-item--current .bx--link{color:var(--cds-text-01, #161616);cursor:auto}.bx--breadcrumb-item [aria-current=page]:hover,.bx--breadcrumb-item.bx--breadcrumb-item--current .bx--link:hover{text-decoration:none}.bx--breadcrumb-item .bx--overflow-menu{position:relative;width:1.25rem;height:1.125rem}.bx--breadcrumb-item .bx--overflow-menu:focus{outline:1px solid var(--cds-focus, #0f62fe)}.bx--breadcrumb-item .bx--overflow-menu:hover{background:rgba(0,0,0,0)}.bx--breadcrumb-item .bx--overflow-menu:after{position:absolute;bottom:2px;width:.75rem;height:1px;background:var(--cds-hover-primary-text, #0043ce);content:"";opacity:0;transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--breadcrumb-item .bx--overflow-menu:after{transition:none}}.bx--breadcrumb-item .bx--overflow-menu:hover:after{opacity:1}.bx--breadcrumb-item .bx--overflow-menu.bx--overflow-menu--open{background:rgba(0,0,0,0);box-shadow:none}.bx--breadcrumb-item .bx--overflow-menu__icon{position:relative;fill:var(--cds-link-01, #0f62fe);transform:translateY(4px)}.bx--breadcrumb-item .bx--overflow-menu:hover .bx--overflow-menu__icon{fill:var(--cds-hover-primary-text, #0043ce)}.bx--breadcrumb-menu-options:focus{outline:none}.bx--breadcrumb-menu-options.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after{top:-.4375rem;left:.875rem;width:0;height:0;border-right:.4375rem solid rgba(0,0,0,0);border-bottom:.4375rem solid var(--cds-field-01, #f4f4f4);border-left:.4375rem solid rgba(0,0,0,0);margin:0 auto;background:rgba(0,0,0,0)}.bx--breadcrumb.bx--skeleton .bx--link{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:6.25rem;height:1rem}.bx--breadcrumb.bx--skeleton .bx--link:hover,.bx--breadcrumb.bx--skeleton .bx--link:focus,.bx--breadcrumb.bx--skeleton .bx--link:active{border:none;cursor:default;outline:none}.bx--breadcrumb.bx--skeleton .bx--link:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--breadcrumb.bx--skeleton .bx--link:before{animation:none}}.bx--btn{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:relative;display:inline-flex;max-width:20rem;min-height:3rem;flex-shrink:0;align-items:center;justify-content:space-between;padding:calc(.875rem - 3px) 63px calc(.875rem - 3px) 15px;margin:0;border-radius:0;cursor:pointer;outline:none;text-align:left;text-decoration:none;transition:background 70ms cubic-bezier(0,0,.38,.9),box-shadow 70ms cubic-bezier(0,0,.38,.9),border-color 70ms cubic-bezier(0,0,.38,.9),outline 70ms cubic-bezier(0,0,.38,.9);vertical-align:top}.bx--btn:disabled,.bx--btn:hover:disabled,.bx--btn:focus:disabled,.bx--btn.bx--btn--disabled,.bx--btn.bx--btn--disabled:hover,.bx--btn.bx--btn--disabled:focus{border-color:var(--cds-disabled-02, #c6c6c6);background:var(--cds-disabled-02, #c6c6c6);box-shadow:none;color:var(--cds-disabled-03, #8d8d8d);cursor:not-allowed}.bx--btn .bx--btn__icon{position:absolute;right:1rem;width:1rem;height:1rem;flex-shrink:0}.bx--btn::-moz-focus-inner{padding:0;border:0}.bx--btn--primary{border-width:1px;border-style:solid;border-color:#0000;background-color:var(--cds-interactive-01, #0f62fe);color:var(--cds-text-04, #ffffff)}.bx--btn--primary:hover{background-color:var(--cds-hover-primary, #0353e9)}.bx--btn--primary:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--primary:active{background-color:var(--cds-active-primary, #002d9c)}.bx--btn--primary .bx--btn__icon,.bx--btn--primary .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--primary:hover{color:var(--cds-text-04, #ffffff)}.bx--btn--secondary{border-width:1px;border-style:solid;border-color:#0000;background-color:var(--cds-interactive-02, #393939);color:var(--cds-text-04, #ffffff)}.bx--btn--secondary:hover{background-color:var(--cds-hover-secondary, #4c4c4c)}.bx--btn--secondary:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--secondary:active{background-color:var(--cds-active-secondary, #6f6f6f)}.bx--btn--secondary .bx--btn__icon,.bx--btn--secondary .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--secondary:hover,.bx--btn--secondary:focus{color:var(--cds-text-04, #ffffff)}.bx--btn--tertiary{border-width:1px;border-style:solid;border-color:var(--cds-interactive-03, #0f62fe);background-color:#0000;color:var(--cds-interactive-03, #0f62fe)}.bx--btn--tertiary:hover{background-color:var(--cds-hover-tertiary, #0353e9)}.bx--btn--tertiary:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--tertiary:active{background-color:var(--cds-active-tertiary, #002d9c)}.bx--btn--tertiary .bx--btn__icon,.bx--btn--tertiary .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--tertiary:hover{color:var(--cds-inverse-01, #ffffff)}.bx--btn--tertiary:focus{background-color:var(--cds-interactive-03, #0f62fe);color:var(--cds-inverse-01, #ffffff)}.bx--btn--tertiary:active{border-color:#0000;background-color:var(--cds-active-tertiary, #002d9c);color:var(--cds-inverse-01, #ffffff)}.bx--btn--tertiary:disabled,.bx--btn--tertiary:hover:disabled,.bx--btn--tertiary:focus:disabled,.bx--btn--tertiary.bx--btn--disabled,.bx--btn--tertiary.bx--btn--disabled:hover,.bx--btn--tertiary.bx--btn--disabled:focus{background:rgba(0,0,0,0);color:var(--cds-disabled-03, #8d8d8d);outline:none}.bx--btn--ghost{border-width:1px;border-style:solid;border-color:#0000;background-color:#0000;color:var(--cds-link-01, #0f62fe);padding:calc(.875rem - 3px) 16px}.bx--btn--ghost:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--btn--ghost:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--ghost .bx--btn__icon,.bx--btn--ghost .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--ghost .bx--btn__icon{position:static;margin-left:.5rem}.bx--btn--ghost:hover,.bx--btn--ghost:active{color:var(--cds-hover-primary-text, #0043ce)}.bx--btn--ghost:active{background-color:var(--cds-active-ui, #c6c6c6)}.bx--btn--ghost:disabled,.bx--btn--ghost:hover:disabled,.bx--btn--ghost:focus:disabled,.bx--btn--ghost.bx--btn--disabled,.bx--btn--ghost.bx--btn--disabled:hover,.bx--btn--ghost.bx--btn--disabled:focus{border-color:#0000;background:rgba(0,0,0,0);color:var(--cds-disabled-03, #8d8d8d);outline:none}.bx--btn--ghost.bx--btn--sm{padding:calc(.375rem - 3px) 16px}.bx--btn--ghost.bx--btn--field,.bx--btn--ghost.bx--btn--md{padding:calc(.675rem - 3px) 16px}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus{outline-style:dotted}}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus{outline:1px solid rgba(0,0,0,0)}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus svg{outline-style:dotted}}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{display:inline-block}}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after{transition:none}}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--a11y:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--a11y:after{transition:none}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:before{width:0;height:0;border-style:solid;content:""}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after{content:attr(aria-label)}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--a11y:after{content:none}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus:after{opacity:1}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible+.bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover+.bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible+.bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover+.bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover.bx--tooltip--a11y:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus+.bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--hidden .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger svg,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover svg,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus svg{fill:currentColor}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--btn--disabled.bx--tooltip--a11y:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--btn--disabled.bx--tooltip--a11y:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--btn--disabled .bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0);opacity:0}.bx--btn.bx--btn--icon-only:not(.bx--tooltip--hidden) .bx--assistive-text{pointer-events:all}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus{border-color:var(--cds-focus, #0f62fe)}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:active:not([disabled]){border-color:#0000}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus svg{outline-color:#0000}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger[disabled]:hover,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger[disabled]:focus,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger[disabled]:active{cursor:not-allowed;fill:var(--cds-disabled-03, #8d8d8d)}.bx--tooltip__trigger.bx--btn--icon-only--top{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--btn--icon-only--top:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--top:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--top:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--top:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--top:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--top:before,.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--top:before,.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--btn--icon-only--top:before,.bx--tooltip__trigger.bx--btn--icon-only--top:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--btn--icon-only--top:before,.bx--tooltip__trigger.bx--btn--icon-only--top:after{transition:none}}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--btn--icon-only--top:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--btn--icon-only--top:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--btn--icon-only--top:hover:before,.bx--tooltip__trigger.bx--btn--icon-only--top:hover:after,.bx--tooltip__trigger.bx--btn--icon-only--top:focus:before,.bx--tooltip__trigger.bx--btn--icon-only--top:focus:after{opacity:1}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--top:before,.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--top:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{top:-.8125rem;left:50%;transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start+.bx--assistive-text{top:-.8125rem;left:0;transform:translateY(-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center+.bx--assistive-text{top:-.8125rem;left:50%;transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end+.bx--assistive-text{top:-.8125rem;right:0;left:auto;transform:translateY(-100%)}.bx--tooltip__trigger.bx--btn--icon-only--right{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--btn--icon-only--right:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--right:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--right:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--right:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--right:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--right:before,.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--right:before,.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--btn--icon-only--right:before,.bx--tooltip__trigger.bx--btn--icon-only--right:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--btn--icon-only--right:before,.bx--tooltip__trigger.bx--btn--icon-only--right:after{transition:none}}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--btn--icon-only--right:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--btn--icon-only--right:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--btn--icon-only--right:hover:before,.bx--tooltip__trigger.bx--btn--icon-only--right:hover:after,.bx--tooltip__trigger.bx--btn--icon-only--right:focus:before,.bx--tooltip__trigger.bx--btn--icon-only--right:focus:after{opacity:1}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--right:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--right:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--right:before,.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--btn--icon-only--right:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--bottom:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--bottom:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--btn--icon-only--bottom:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--btn--icon-only--bottom:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:after{transition:none}}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--btn--icon-only--bottom:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--btn--icon-only--bottom:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus:after{opacity:1}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--bottom:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--bottom:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:-.8125rem;left:0;transform:translateY(100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:-.8125rem;right:0;left:auto;transform:translateY(100%)}.bx--tooltip__trigger.bx--btn--icon-only--left{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--btn--icon-only--left:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--left:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--left:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--left:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--left:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--left:before,.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--left:before,.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--btn--icon-only--left:before,.bx--tooltip__trigger.bx--btn--icon-only--left:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--btn--icon-only--left:before,.bx--tooltip__trigger.bx--btn--icon-only--left:after{transition:none}}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--btn--icon-only--left:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--btn--icon-only--left:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--btn--icon-only--left:hover:before,.bx--tooltip__trigger.bx--btn--icon-only--left:hover:after,.bx--tooltip__trigger.bx--btn--icon-only--left:focus:before,.bx--tooltip__trigger.bx--btn--icon-only--left:focus:after{opacity:1}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--left:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--left:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--left:before,.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--btn--icon-only--left:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--btn--icon-only{padding-right:.9375rem;padding-left:.9375rem}.bx--btn--icon-only .bx--btn__icon{position:static}.bx--btn--icon-only.bx--btn--ghost .bx--btn__icon,.bx--btn--icon-only.bx--btn--danger--ghost .bx--btn__icon{margin:0}.bx--btn--icon-only.bx--btn--selected{background:var(--cds-selected-ui, #e0e0e0)}.bx--btn path[data-icon-path=inner-path]{fill:none}.bx--btn--ghost.bx--btn--icon-only .bx--btn__icon path:not([data-icon-path]):not([fill=none]),.bx--btn--ghost.bx--btn--icon-only .bx--btn__icon{fill:var(--cds-icon-01, #161616)}.bx--btn--ghost.bx--btn--icon-only[disabled] .bx--btn__icon path:not([data-icon-path]):not([fill=none]),.bx--btn--ghost.bx--btn--icon-only[disabled] .bx--btn__icon,.bx--btn.bx--btn--icon-only.bx--btn--ghost[disabled]:hover .bx--btn__icon{fill:var(--cds-disabled-03, #8d8d8d)}.bx--btn--ghost.bx--btn--icon-only[disabled]{cursor:not-allowed}.bx--btn--field.bx--btn--icon-only,.bx--btn--md.bx--btn--icon-only{padding-right:.6875rem;padding-left:.6875rem}.bx--btn--sm.bx--btn--icon-only{padding-right:.4375rem;padding-left:.4375rem}.bx--btn--danger{border-width:1px;border-style:solid;border-color:#0000;background-color:var(--cds-danger-01, #da1e28);color:var(--cds-text-04, #ffffff)}.bx--btn--danger:hover{background-color:var(--cds-hover-danger, #b81921)}.bx--btn--danger:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--danger:active{background-color:var(--cds-active-danger, #750e13)}.bx--btn--danger .bx--btn__icon,.bx--btn--danger .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--danger:hover{color:var(--cds-text-04, #ffffff)}.bx--btn--danger-tertiary,.bx--btn--danger--tertiary{border-width:1px;border-style:solid;border-color:var(--cds-danger-02, #da1e28);background-color:#0000;color:var(--cds-danger-02, #da1e28)}.bx--btn--danger-tertiary:hover,.bx--btn--danger--tertiary:hover{background-color:var(--cds-hover-danger, #b81921)}.bx--btn--danger-tertiary:focus,.bx--btn--danger--tertiary:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--danger-tertiary:active,.bx--btn--danger--tertiary:active{background-color:var(--cds-active-danger, #750e13)}.bx--btn--danger-tertiary .bx--btn__icon,.bx--btn--danger-tertiary .bx--btn__icon path:not([data-icon-path]):not([fill=none]),.bx--btn--danger--tertiary .bx--btn__icon,.bx--btn--danger--tertiary .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--danger-tertiary:hover,.bx--btn--danger--tertiary:hover{border-color:var(--cds-hover-danger, #b81921);color:var(--cds-text-04, #ffffff)}.bx--btn--danger-tertiary:focus,.bx--btn--danger--tertiary:focus{background-color:var(--cds-danger-01, #da1e28);color:var(--cds-text-04, #ffffff)}.bx--btn--danger-tertiary:active,.bx--btn--danger--tertiary:active{border-color:var(--cds-active-danger, #750e13);color:var(--cds-text-04, #ffffff)}.bx--btn--danger-tertiary:disabled,.bx--btn--danger-tertiary:hover:disabled,.bx--btn--danger-tertiary:focus:disabled,.bx--btn--danger-tertiary.bx--btn--disabled,.bx--btn--danger-tertiary.bx--btn--disabled:hover,.bx--btn--danger-tertiary.bx--btn--disabled:focus,.bx--btn--danger--tertiary:disabled,.bx--btn--danger--tertiary:hover:disabled,.bx--btn--danger--tertiary:focus:disabled,.bx--btn--danger--tertiary.bx--btn--disabled,.bx--btn--danger--tertiary.bx--btn--disabled:hover,.bx--btn--danger--tertiary.bx--btn--disabled:focus{background:rgba(0,0,0,0);color:var(--cds-disabled-03, #8d8d8d);outline:none}.bx--btn--danger-ghost,.bx--btn--danger--ghost{border-width:1px;border-style:solid;border-color:#0000;background-color:#0000;color:var(--cds-danger-02, #da1e28);padding:calc(.875rem - 3px) 16px}.bx--btn--danger-ghost:hover,.bx--btn--danger--ghost:hover{background-color:var(--cds-hover-danger, #b81921)}.bx--btn--danger-ghost:focus,.bx--btn--danger--ghost:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--danger-ghost:active,.bx--btn--danger--ghost:active{background-color:var(--cds-active-danger, #750e13)}.bx--btn--danger-ghost .bx--btn__icon,.bx--btn--danger-ghost .bx--btn__icon path:not([data-icon-path]):not([fill=none]),.bx--btn--danger--ghost .bx--btn__icon,.bx--btn--danger--ghost .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--danger-ghost .bx--btn__icon,.bx--btn--danger--ghost .bx--btn__icon{position:static;margin-left:.5rem}.bx--btn--danger-ghost:hover,.bx--btn--danger-ghost:active,.bx--btn--danger--ghost:hover,.bx--btn--danger--ghost:active{color:var(--cds-text-04, #ffffff)}.bx--btn--danger-ghost:disabled,.bx--btn--danger-ghost:hover:disabled,.bx--btn--danger-ghost:focus:disabled,.bx--btn--danger-ghost.bx--btn--disabled,.bx--btn--danger-ghost.bx--btn--disabled:hover,.bx--btn--danger-ghost.bx--btn--disabled:focus,.bx--btn--danger--ghost:disabled,.bx--btn--danger--ghost:hover:disabled,.bx--btn--danger--ghost:focus:disabled,.bx--btn--danger--ghost.bx--btn--disabled,.bx--btn--danger--ghost.bx--btn--disabled:hover,.bx--btn--danger--ghost.bx--btn--disabled:focus{border-color:#0000;background:rgba(0,0,0,0);color:var(--cds-disabled-02, #c6c6c6);outline:none}.bx--btn--danger-ghost.bx--btn--sm,.bx--btn--danger--ghost.bx--btn--sm{padding:calc(.375rem - 3px) 16px}.bx--btn--danger-ghost.bx--btn--field,.bx--btn--danger-ghost.bx--btn--md,.bx--btn--danger--ghost.bx--btn--field,.bx--btn--danger--ghost.bx--btn--md{padding:calc(.675rem - 3px) 16px}.bx--btn--sm{min-height:2rem;padding:calc(.375rem - 3px) 60px calc(.375rem - 3px) 12px}.bx--btn--xl:not(.bx--btn--icon-only){align-items:baseline;padding-top:var(--cds-spacing-05, 1rem);padding-right:var(--cds-spacing-10, 4rem);padding-left:var(--cds-spacing-05, 1rem);min-height:5rem}.bx--btn--lg:not(.bx--btn--icon-only){align-items:baseline;padding-top:var(--cds-spacing-05, 1rem);padding-right:var(--cds-spacing-10, 4rem);padding-left:var(--cds-spacing-05, 1rem);min-height:4rem}.bx--btn--field,.bx--btn--md{min-height:2.5rem;padding:calc(.675rem - 3px) 60px calc(.675rem - 3px) 12px}.bx--btn--expressive{font-size:var(--cds-body-short-02-font-size, 1rem);font-weight:var(--cds-body-short-02-font-weight, 400);line-height:var(--cds-body-short-02-line-height, 1.375);letter-spacing:var(--cds-body-short-02-letter-spacing, 0);min-height:3rem}.bx--btn--icon-only.bx--btn--expressive{padding:12px 13px}.bx--btn.bx--btn--expressive .bx--btn__icon{width:1.25rem;height:1.25rem}.bx--btn-set .bx--btn.bx--btn--expressive{max-width:20rem}.bx--btn.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:9.375rem}.bx--btn.bx--skeleton:hover,.bx--btn.bx--skeleton:focus,.bx--btn.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--btn.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--btn.bx--skeleton:before{animation:none}}.bx--btn-set{display:flex}.bx--btn-set--stacked{flex-direction:column}.bx--btn-set .bx--btn{width:100%;max-width:12.25rem}.bx--btn-set .bx--btn:not(:focus){box-shadow:-.0625rem 0 0 0 var(--cds-button-separator, #e0e0e0)}.bx--btn-set .bx--btn:first-of-type:not(:focus){box-shadow:inherit}.bx--btn-set .bx--btn:focus+.bx--btn{box-shadow:inherit}.bx--btn-set--stacked .bx--btn:not(:focus){box-shadow:0 -.0625rem 0 0 var(--cds-button-separator, #e0e0e0)}.bx--btn-set--stacked .bx--btn:first-of-type:not(:focus){box-shadow:inherit}.bx--btn-set .bx--btn.bx--btn--disabled{box-shadow:-.0625rem 0 0 0 var(--cds-disabled-03, #8d8d8d)}.bx--btn-set .bx--btn.bx--btn--disabled:first-of-type{box-shadow:none}.bx--btn-set--stacked .bx--btn.bx--btn--disabled{box-shadow:0 -.0625rem 0 0 var(--cds-disabled-03, #8d8d8d)}.bx--btn-set--stacked .bx--btn.bx--btn--disabled:first-of-type{box-shadow:none}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--btn:focus{color:Highlight;outline:1px solid Highlight}.bx--btn--ghost.bx--btn--icon-only .bx--btn__icon path:not([data-icon-path]):not([fill=none]),.bx--btn--ghost.bx--btn--icon-only .bx--btn__icon{fill:ButtonText}}.bx--fieldset{margin-bottom:2rem}.bx--fieldset--no-margin{margin-bottom:0}.bx--form-item{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;flex:1 1 auto;flex-direction:column;align-items:flex-start}.bx--label{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);display:inline-block;margin-bottom:.5rem;color:var(--cds-text-02, #525252);font-weight:400;line-height:1rem;vertical-align:baseline}.bx--label .bx--tooltip__trigger{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px)}.bx--label.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:4.6875rem;height:.875rem}.bx--label.bx--skeleton:hover,.bx--label.bx--skeleton:focus,.bx--label.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--label.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--label.bx--skeleton:before{animation:none}}input[type=number]{font-family:IBM Plex Mono,Menlo,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier,monospace}input[data-invalid]:not(:focus),.bx--number[data-invalid] input[type=number]:not(:focus),.bx--text-input__field-wrapper[data-invalid]>.bx--text-input--invalid:not(:focus),.bx--text-area__wrapper[data-invalid]>.bx--text-area--invalid:not(:focus),.bx--select-input__wrapper[data-invalid] .bx--select-input:not(:focus),.bx--list-box[data-invalid]:not(:focus),.bx--combo-box[data-invalid] .bx--text-input:not(:focus){outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px}@media screen and (prefers-contrast){input[data-invalid]:not(:focus),.bx--number[data-invalid] input[type=number]:not(:focus),.bx--text-input__field-wrapper[data-invalid]>.bx--text-input--invalid:not(:focus),.bx--text-area__wrapper[data-invalid]>.bx--text-area--invalid:not(:focus),.bx--select-input__wrapper[data-invalid] .bx--select-input:not(:focus),.bx--list-box[data-invalid]:not(:focus),.bx--combo-box[data-invalid] .bx--text-input:not(:focus){outline-style:dotted}}input[data-invalid]~.bx--form-requirement,.bx--number[data-invalid] .bx--number__input-wrapper~.bx--form-requirement,.bx--number__input-wrapper--warning~.bx--form-requirement,.bx--date-picker-input__wrapper~.bx--form-requirement,.bx--date-picker-input__wrapper--warn~.bx--form-requirement,.bx--date-picker-input__wrapper--invalid~.bx--form-requirement,.bx--time-picker--invalid~.bx--form-requirement,.bx--text-input__field-wrapper[data-invalid]~.bx--form-requirement,.bx--text-input__field-wrapper--warning~.bx--form-requirement,.bx--text-input__field-wrapper--warning>.bx--text-input~.bx--form-requirement,.bx--text-area__wrapper[data-invalid]~.bx--form-requirement,.bx--select-input__wrapper[data-invalid]~.bx--form-requirement,.bx--select--warning .bx--select-input__wrapper~.bx--form-requirement,.bx--time-picker[data-invalid]~.bx--form-requirement,.bx--list-box[data-invalid]~.bx--form-requirement,.bx--list-box--warning~.bx--form-requirement{display:block;overflow:visible;max-height:12.5rem;font-weight:400}input[data-invalid]~.bx--form-requirement,.bx--number[data-invalid] .bx--number__input-wrapper~.bx--form-requirement,.bx--date-picker-input__wrapper~.bx--form-requirement,.bx--date-picker-input__wrapper--invalid~.bx--form-requirement,.bx--time-picker--invalid~.bx--form-requirement,.bx--text-input__field-wrapper[data-invalid]~.bx--form-requirement,.bx--text-area__wrapper[data-invalid]~.bx--form-requirement,.bx--select-input__wrapper[data-invalid]~.bx--form-requirement,.bx--time-picker[data-invalid]~.bx--form-requirement,.bx--list-box[data-invalid]~.bx--form-requirement{color:var(--cds-text-error, #da1e28)}.bx--form--fluid .bx--text-input__field-wrapper[data-invalid],.bx--form--fluid .bx--text-input__field-wrapper--warning{display:block}.bx--form--fluid .bx--fieldset{margin:0}.bx--form--fluid input[data-invalid]{outline:none}.bx--form--fluid .bx--form-requirement{padding:.5rem 2.5rem .5rem 1rem;margin:0}input:not(output):not([data-invalid]):-moz-ui-invalid{box-shadow:none}.bx--form-requirement{font-size:var(--cds-caption-01-font-size, .75rem);font-weight:var(--cds-caption-01-font-weight, 400);line-height:var(--cds-caption-01-line-height, 1.33333);letter-spacing:var(--cds-caption-01-letter-spacing, .32px);display:none;overflow:hidden;max-height:0;margin:.25rem 0 0}.bx--select--inline .bx--form__helper-text{margin-top:0}.bx--form__helper-text{font-size:var(--cds-helper-text-01-font-size, .75rem);line-height:var(--cds-helper-text-01-line-height, 1.33333);letter-spacing:var(--cds-helper-text-01-letter-spacing, .32px);z-index:0;width:100%;margin-top:.25rem;color:var(--cds-text-02, #525252);opacity:1}.bx--label--disabled,.bx--form__helper-text--disabled,fieldset[disabled] .bx--label,fieldset[disabled] .bx--form__helper-text{color:var(--cds-disabled-02, #c6c6c6)}.bx--form-item.bx--checkbox-wrapper{position:relative;margin-bottom:.25rem}.bx--form-item.bx--checkbox-wrapper:first-of-type{margin-top:.1875rem}.bx--label+.bx--form-item.bx--checkbox-wrapper{margin-top:-.125rem}.bx--form-item.bx--checkbox-wrapper:last-of-type{margin-bottom:.1875rem}.bx--checkbox{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap;top:1.25rem;left:.7rem}.bx--checkbox-label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:relative;display:flex;min-height:1.5rem;padding-top:.1875rem;padding-left:1.25rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--checkbox-label-text{padding-left:.375rem}.bx--checkbox-label:before,.bx--checkbox-label:after{box-sizing:border-box}.bx--checkbox-label:before{position:absolute;top:.125rem;left:0;width:1rem;height:1rem;border:1px solid var(--cds-icon-01, #161616);margin:.125rem .125rem .125rem .1875rem;background-color:#0000;border-radius:1px;content:""}.bx--checkbox-label:after{position:absolute;top:.5rem;left:.4375rem;width:.5625rem;height:.3125rem;border-bottom:2px solid var(--cds-inverse-01, #ffffff);border-left:2px solid var(--cds-inverse-01, #ffffff);margin-top:-.1875rem;background:none;content:"";transform:scale(0) rotate(-45deg);transform-origin:bottom right}.bx--checkbox:checked+.bx--checkbox-label:before,.bx--checkbox:indeterminate+.bx--checkbox-label:before,.bx--checkbox-label[data-contained-checkbox-state=true]:before,.bx--checkbox-label[data-contained-checkbox-state=mixed]:before{border-width:1px;border-color:var(--cds-icon-01, #161616);background-color:var(--cds-icon-01, #161616)}.bx--checkbox:checked+.bx--checkbox-label:after,.bx--checkbox-label[data-contained-checkbox-state=true]:after{transform:scale(1) rotate(-45deg)}.bx--checkbox:indeterminate+.bx--checkbox-label:after,.bx--checkbox-label[data-contained-checkbox-state=mixed]:after{top:.6875rem;width:.5rem;border-bottom:2px solid var(--cds-inverse-01, #ffffff);border-left:0 solid var(--cds-inverse-01, #ffffff);transform:scale(1) rotate(0)}.bx--checkbox:focus+.bx--checkbox-label:before,.bx--checkbox-label__focus:before,.bx--checkbox:checked:focus+.bx--checkbox-label:before,.bx--checkbox-label[data-contained-checkbox-state=true].bx--checkbox-label__focus:before,.bx--checkbox:indeterminate:focus+.bx--checkbox-label:before,.bx--checkbox-label[data-contained-checkbox-state=mixed].bx--checkbox-label__focus:before{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:1px}.bx--checkbox:disabled+.bx--checkbox-label,.bx--checkbox-label[data-contained-checkbox-disabled=true]{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--checkbox:disabled+.bx--checkbox-label:before,.bx--checkbox-label[data-contained-checkbox-disabled=true]:before{border-color:var(--cds-disabled-02, #c6c6c6)}.bx--checkbox:checked:disabled+.bx--checkbox-label:before,.bx--checkbox:indeterminate:disabled+.bx--checkbox-label:before,.bx--checkbox-label[data-contained-checkbox-state=true][data-contained-checkbox-disabled=true]:before,.bx--checkbox-label[data-contained-checkbox-state=mixed][data-contained-checkbox-disabled=true]:before{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--checkbox-label-text.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:6.25rem;height:var(--cds-spacing-05, 1rem);margin:.0625rem 0 0 .375rem}.bx--checkbox-label-text.bx--skeleton:hover,.bx--checkbox-label-text.bx--skeleton:focus,.bx--checkbox-label-text.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--checkbox-label-text.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--checkbox-label-text.bx--skeleton:before{animation:none}}.bx--checkbox--inline{position:relative}.bx--snippet--disabled,.bx--snippet--disabled .bx--btn.bx--snippet-btn--expand{background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6)}.bx--snippet--disabled .bx--snippet-btn--expand:hover,.bx--snippet--disabled .bx--copy-btn:hover{background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--snippet--disabled .bx--snippet__icon,.bx--snippet--disabled .bx--snippet-btn--expand .bx--icon-chevron--down{fill:var(--cds-disabled-02, #c6c6c6)}.bx--snippet code{font-family:var(--cds-code-01-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-01-font-size, .75rem);font-weight:var(--cds-code-01-font-weight, 400);line-height:var(--cds-code-01-line-height, 1.33333);letter-spacing:var(--cds-code-01-letter-spacing, .32px)}.bx--snippet--inline{position:relative;display:inline;padding:0;border:2px solid rgba(0,0,0,0);background-color:var(--cds-field-01, #f4f4f4);border-radius:4px;color:var(--cds-text-01, #161616);cursor:pointer}.bx--snippet--inline:hover{background-color:var(--cds-ui-03, #e0e0e0)}.bx--snippet--inline:active{background-color:var(--cds-active-ui, #c6c6c6)}.bx--snippet--inline:focus{border:2px solid var(--cds-focus, #0f62fe);outline:none}.bx--snippet--inline:before{position:absolute;z-index:6000;width:0;height:0;border-style:solid;content:"";display:none}.bx--snippet--inline .bx--copy-btn__feedback{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:none;overflow:visible;box-sizing:content-box;margin:auto;clip:auto}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--snippet--inline .bx--copy-btn__feedback{width:auto}}@supports (-ms-accelerator: true){.bx--snippet--inline .bx--copy-btn__feedback{width:auto}}@supports (-ms-ime-align: auto){.bx--snippet--inline .bx--copy-btn__feedback{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--snippet--inline .bx--copy-btn__feedback{border:1px solid rgba(0,0,0,0)}}.bx--snippet--inline .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--snippet--inline:before,.bx--snippet--inline:after,.bx--snippet--inline .bx--assistive-text,.bx--snippet--inline+.bx--assistive-text{bottom:0;left:50%}.bx--snippet--inline:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--snippet--inline:after,.bx--snippet--inline .bx--assistive-text,.bx--snippet--inline+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--snippet--inline.bx--copy-btn--animating:before,.bx--snippet--inline.bx--copy-btn--animating .bx--copy-btn__feedback{display:block}.bx--snippet--inline.bx--copy-btn--animating.bx--copy-btn--fade-out:before,.bx--snippet--inline.bx--copy-btn--animating.bx--copy-btn--fade-out .bx--copy-btn__feedback{animation:.11s cubic-bezier(.2,0,.38,.9) hide-feedback}.bx--snippet--inline.bx--copy-btn--animating.bx--copy-btn--fade-in:before,.bx--snippet--inline.bx--copy-btn--animating.bx--copy-btn--fade-in .bx--copy-btn__feedback{animation:.11s cubic-bezier(.2,0,.38,.9) show-feedback}.bx--snippet--inline code{padding:0 var(--cds-spacing-03, .5rem)}.bx--snippet--inline.bx--snippet--no-copy{display:inline-block}.bx--snippet--inline.bx--snippet--no-copy:hover{background-color:var(--cds-field-01, #f4f4f4);cursor:auto}.bx--snippet--light.bx--snippet--inline.bx--snippet--no-copy:hover{background-color:var(--cds-field-02, #ffffff);cursor:auto}.bx--snippet--single{font-family:var(--cds-code-01-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-01-font-size, .75rem);font-weight:var(--cds-code-01-font-weight, 400);line-height:var(--cds-code-01-line-height, 1.33333);letter-spacing:var(--cds-code-01-letter-spacing, .32px);position:relative;width:100%;max-width:48rem;background-color:var(--cds-field-01, #f4f4f4);display:flex;height:2.5rem;align-items:center;padding-right:2.5rem}.bx--snippet--single.bx--snippet--no-copy{padding:0}.bx--snippet--single.bx--snippet--no-copy:after{right:1rem}.bx--snippet--single .bx--snippet-container{position:relative;display:flex;height:100%;align-items:center;padding-left:1rem;overflow-x:auto}.bx--snippet--single .bx--snippet-container:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--snippet--single .bx--snippet-container:focus{outline-style:dotted}}.bx--snippet--single pre{font-family:var(--cds-code-01-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-01-font-size, .75rem);font-weight:var(--cds-code-01-font-weight, 400);line-height:var(--cds-code-01-line-height, 1.33333);letter-spacing:var(--cds-code-01-letter-spacing, .32px);padding-right:var(--cds-spacing-03, .5rem)}.bx--snippet--single pre,.bx--snippet--inline code{white-space:pre}.bx--snippet--multi{font-family:var(--cds-code-01-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-01-font-size, .75rem);font-weight:var(--cds-code-01-font-weight, 400);line-height:var(--cds-code-01-line-height, 1.33333);letter-spacing:var(--cds-code-01-letter-spacing, .32px);position:relative;width:100%;max-width:48rem;background-color:var(--cds-field-01, #f4f4f4);display:flex;padding:1rem}.bx--snippet--multi .bx--snippet-container{position:relative;min-height:100%;max-height:100%;order:1;overflow-y:auto;transition:max-height .15s cubic-bezier(.2,0,.38,.9)}.bx--snippet--multi.bx--snippet--expand .bx--snippet-container{padding-bottom:var(--cds-spacing-05, 1rem);transition:max-height .15s cubic-bezier(.2,0,.38,.9)}.bx--snippet--multi.bx--snippet--wraptext pre{white-space:pre-wrap;word-wrap:break-word}.bx--snippet--multi .bx--snippet-container pre{padding-right:2.5rem;padding-bottom:1.5rem;overflow-x:auto}.bx--snippet--multi.bx--snippet--no-copy .bx--snippet-container pre{padding-right:0}.bx--snippet--multi.bx--snippet--expand .bx--snippet-container pre{overflow-x:auto}.bx--snippet--multi .bx--snippet-container pre:after{position:absolute;top:0;right:0;width:1rem;height:100%;background-image:linear-gradient(to right,rgba(var(--cds-field-01, #f4f4f4),0),var(--cds-field-01, #f4f4f4));content:""}.bx--snippet--multi .bx--snippet-container pre code{overflow:hidden}.bx--snippet__icon{width:1rem;height:1rem;fill:var(--cds-icon-01, #161616);transition:all 70ms cubic-bezier(.2,0,.38,.9)}.bx--snippet-button{position:absolute;top:0;right:0;display:flex;overflow:visible;width:2.5rem;height:2.5rem;align-items:center;justify-content:center;padding:0;border:none;background-color:var(--cds-field-01, #f4f4f4);cursor:pointer;outline:none}.bx--snippet-button:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;outline-color:var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--snippet-button:focus{outline-style:dotted}}.bx--snippet--multi .bx--snippet-button{top:var(--cds-spacing-03, .5rem);right:var(--cds-spacing-03, .5rem);width:2rem;height:2rem}.bx--snippet-button:hover{background:var(--cds-hover-ui, #e5e5e5)}.bx--snippet-button:active{background-color:var(--cds-active-ui, #c6c6c6)}.bx--btn--copy__feedback{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);font-family:IBM Plex Sans,Helvetica Neue,Arial,sans-serif;z-index:6000;top:.75rem;right:1.25rem;left:inherit;font-weight:400}.bx--btn--copy__feedback:before,.bx--btn--copy__feedback:after{background:var(--cds-inverse-02, #393939)}.bx--btn--copy__feedback:after{border:none}.bx--snippet .bx--copy-btn{position:absolute;top:0;right:0;font-family:IBM Plex Sans,Helvetica Neue,Arial,sans-serif}.bx--snippet-btn--expand{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);font-family:IBM Plex Sans,Helvetica Neue,Arial,sans-serif;position:absolute;z-index:10;right:0;bottom:0;display:inline-flex;align-items:center;padding:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);border:0;background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616)}.bx--snippet-btn--expand .bx--snippet-btn--text{position:relative;top:-.0625rem}.bx--snippet-btn--expand--hide.bx--snippet-btn--expand{display:none}.bx--snippet-btn--expand .bx--icon-chevron--down{margin-left:var(--cds-spacing-03, .5rem);fill:var(--cds-icon-primary, #161616);transform:rotate(0);transition:.15s cubic-bezier(.2,0,.38,.9)}.bx--snippet-btn--expand:hover{background:var(--cds-hover-ui, #e5e5e5);color:var(--cds-text-01, #161616)}.bx--snippet-btn--expand:active{background-color:var(--cds-active-ui, #c6c6c6)}.bx--snippet-btn--expand:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;border-color:#0000}@media screen and (prefers-contrast){.bx--snippet-btn--expand:focus{outline-style:dotted}}.bx--snippet--expand .bx--snippet-btn--expand .bx--icon-chevron--down{transform:rotate(180deg);transition:transform .24s}.bx--snippet--light,.bx--snippet--light .bx--snippet-button,.bx--snippet--light .bx--btn.bx--snippet-btn--expand,.bx--snippet--light .bx--copy-btn{background-color:var(--cds-field-02, #ffffff)}.bx--snippet--light.bx--snippet--inline:hover,.bx--snippet--light .bx--snippet-button:hover,.bx--snippet--light .bx--btn.bx--snippet-btn--expand:hover,.bx--snippet--light .bx--copy-btn:hover{background-color:var(--cds-hover-light-ui, #e5e5e5)}.bx--snippet--light.bx--snippet--inline:active,.bx--snippet--light .bx--snippet-button:active,.bx--snippet--light .bx--btn.bx--snippet-btn--expand:active,.bx--snippet--light .bx--copy-btn:active{background-color:var(--cds-active-light-ui, #c6c6c6)}.bx--snippet--light.bx--snippet--single:after,.bx--snippet--light.bx--snippet--multi .bx--snippet-container pre:after{background-image:linear-gradient(to right,rgba(var(--cds-field-02, #ffffff),0),var(--cds-field-02, #ffffff))}.bx--snippet.bx--skeleton .bx--snippet-container{width:100%;height:100%}.bx--snippet-button .bx--btn--copy__feedback{top:3.175rem;right:auto;left:50%}.bx--snippet-button .bx--btn--copy__feedback:before{top:0}.bx--snippet-button .bx--btn--copy__feedback:after{top:-.25rem}.bx--snippet--multi .bx--copy-btn{z-index:10;top:.5rem;right:.5rem;width:2rem;height:2rem}.bx--snippet--multi .bx--snippet-button .bx--btn--copy__feedback{top:2.675rem}.bx--snippet--inline .bx--btn--copy__feedback{top:calc(100% - .25rem);right:auto;left:50%}.bx--snippet__overflow-indicator--left,.bx--snippet__overflow-indicator--right{z-index:1;width:1rem;flex:1 0 auto}.bx--snippet__overflow-indicator--left{order:0;margin-right:-1rem;background-image:linear-gradient(to left,transparent,var(--cds-field-01, #f4f4f4))}.bx--snippet__overflow-indicator--right{order:2;margin-left:-1rem;background-image:linear-gradient(to right,transparent,var(--cds-field-01, #f4f4f4))}.bx--snippet--single .bx--snippet__overflow-indicator--right,.bx--snippet--single .bx--snippet__overflow-indicator--left{position:absolute;width:2rem;height:calc(100% - .25rem)}.bx--snippet--single .bx--snippet__overflow-indicator--right{right:2.5rem}.bx--snippet--single.bx--snippet--no-copy .bx--snippet__overflow-indicator--right{right:0}.bx--snippet--single .bx--snippet-container:focus~.bx--snippet__overflow-indicator--right{right:2.625rem}.bx--snippet--single .bx--snippet-container:focus+.bx--snippet__overflow-indicator--left{left:.125rem}.bx--snippet--light .bx--snippet__overflow-indicator--left{background-image:linear-gradient(to left,transparent,var(--cds-field-02, #ffffff))}.bx--snippet--light .bx--snippet__overflow-indicator--right{background-image:linear-gradient(to right,transparent,var(--cds-field-02, #ffffff))}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){.bx--snippet__overflow-indicator--left{background-image:linear-gradient(to left,rgba(var(--cds-field-01, #f4f4f4),0),var(--cds-field-01, #f4f4f4))}.bx--snippet__overflow-indicator--right{background-image:linear-gradient(to right,rgba(var(--cds-field-01, #f4f4f4),0),var(--cds-field-01, #f4f4f4))}}}.bx--snippet--multi.bx--skeleton{height:6.125rem}.bx--snippet--single.bx--skeleton{height:3.5rem}.bx--snippet.bx--skeleton span{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;display:block;width:100%;height:1rem;margin-top:.5rem}.bx--snippet.bx--skeleton span:hover,.bx--snippet.bx--skeleton span:focus,.bx--snippet.bx--skeleton span:active{border:none;cursor:default;outline:none}.bx--snippet.bx--skeleton span:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--snippet.bx--skeleton span:before{animation:none}}.bx--snippet.bx--skeleton span:first-child{margin:0}.bx--snippet.bx--skeleton span:nth-child(2){width:85%}.bx--snippet.bx--skeleton span:nth-child(3){width:95%}.bx--snippet--single.bx--skeleton .bx--snippet-container{padding-bottom:0}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--snippet__icon{fill:ButtonText}.bx--snippet--inline:focus{color:Highlight;outline:1px solid Highlight}.bx--snippet--single,.bx--snippet--multi{outline:1px solid rgba(0,0,0,0)}}.bx--list-box__wrapper--inline{display:inline-grid;align-items:center;grid-gap:.25rem;grid-template:auto auto/auto auto}.bx--list-box__wrapper--inline .bx--label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}.bx--list-box__wrapper--inline .bx--label,.bx--list-box__wrapper--inline .bx--form__helper-text,.bx--list-box__wrapper--inline .bx--form-requirement{margin:0}.bx--list-box__wrapper--inline .bx--form__helper-text{max-width:none}.bx--list-box__wrapper--inline .bx--form-requirement{grid-column:2}.bx--list-box{position:relative;width:100%;height:2.5rem;max-height:2.5rem;border:none;border-bottom:1px solid var(--cds-ui-04, #8d8d8d);background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616);cursor:pointer;transition:all 70ms cubic-bezier(.2,0,.38,.9)}.bx--list-box:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--list-box--xl,.bx--list-box--lg{height:3rem;max-height:3rem}.bx--list-box--sm{height:2rem;max-height:2rem}.bx--list-box--expanded{border-bottom-color:var(--cds-ui-03, #e0e0e0)}.bx--list-box--expanded:hover{background-color:var(--cds-field-01, #f4f4f4)}.bx--list-box--expanded:hover.bx--list-box--light:hover{background-color:var(--cds-field-02, #ffffff)}.bx--list-box .bx--text-input{min-width:0;height:100%}.bx--list-box__invalid-icon{position:absolute;top:50%;right:2.5rem;fill:var(--cds-support-01, #da1e28);transform:translateY(-50%)}.bx--list-box__invalid-icon--warning{fill:var(--cds-support-03, #f1c21b)}.bx--list-box__invalid-icon--warning path[fill]{fill:#000;opacity:1}.bx--list-box[data-invalid] .bx--list-box__field,.bx--list-box.bx--list-box--warning .bx--list-box__field{padding-right:4rem;border-bottom:0}.bx--list-box[data-invalid].bx--list-box--inline .bx--list-box__field{padding-right:3.5rem}.bx--list-box--light{background-color:var(--cds-field-02, #ffffff)}.bx--list-box--light:hover{background-color:var(--cds-hover-light-ui, #e5e5e5)}.bx--list-box--light .bx--list-box__menu{background:var(--cds-field-02, #ffffff)}.bx--list-box--light .bx--list-box__menu-item__option{border-top-color:var(--cds-decorative-01, #e0e0e0)}.bx--list-box--light.bx--list-box--expanded{border-bottom-color:#0000}.bx--list-box--disabled:hover{background-color:var(--cds-field-01, #f4f4f4)}.bx--list-box--light.bx--list-box--disabled{background-color:var(--cds-field-02, #ffffff)}.bx--list-box--disabled,.bx--list-box--disabled .bx--list-box__field,.bx--list-box--disabled .bx--list-box__field:focus{border-bottom-color:#0000;outline:none}.bx--list-box--disabled .bx--list-box__label,.bx--list-box--disabled.bx--list-box--inline .bx--list-box__label{color:var(--cds-disabled-02, #c6c6c6)}.bx--list-box--disabled .bx--list-box__menu-icon>svg,.bx--list-box--disabled .bx--list-box__selection>svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--list-box--disabled,.bx--list-box--disabled .bx--list-box__field,.bx--list-box--disabled .bx--list-box__menu-icon{cursor:not-allowed}.bx--list-box--disabled .bx--list-box__menu-item,.bx--list-box--disabled .bx--list-box__menu-item:hover,.bx--list-box--disabled .bx--list-box__menu-item--highlighted{color:var(--cds-disabled-02, #c6c6c6);text-decoration:none}.bx--list-box--disabled .bx--list-box__selection:hover{cursor:not-allowed}.bx--list-box--disabled.bx--list-box[data-invalid] .bx--list-box__field{padding-right:3rem}.bx--list-box--disabled.bx--list-box[data-invalid].bx--list-box--inline .bx--list-box__field{padding-right:2rem}.bx--list-box.bx--list-box--inline{border-width:0;background-color:#0000}.bx--list-box.bx--list-box--inline:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--list-box.bx--list-box--inline.bx--list-box--expanded{border-bottom-width:0}.bx--list-box.bx--list-box--inline.bx--list-box--expanded .bx--list-box__field[aria-expanded=true]{border-width:0}.bx--list-box.bx--list-box--inline.bx--list-box--disabled:hover{background-color:#0000}.bx--list-box.bx--list-box--inline.bx--list-box--expanded:hover{background-color:var(--cds-field-02, #ffffff)}.bx--list-box.bx--list-box--inline .bx--list-box__field{padding:0 2rem 0 .5rem}.bx--list-box.bx--list-box--inline .bx--list-box__menu-icon{right:.5rem}.bx--list-box.bx--list-box--inline .bx--list-box__invalid-icon{right:2rem}.bx--list-box--inline .bx--list-box__label{color:var(--cds-text-01, #161616)}.bx--list-box--inline .bx--list-box__field{height:100%}.bx--dropdown--inline .bx--list-box__field{max-width:30rem}.bx--dropdown--inline .bx--list-box__menu{min-width:18rem;max-width:30rem}.bx--list-box__field{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;width:100%;position:relative;display:inline-flex;overflow:hidden;height:calc(100% + 1px);align-items:center;padding:0 3rem 0 1rem;cursor:pointer;outline:none;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.bx--list-box__field::-moz-focus-inner{border:0}.bx--list-box__field:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--list-box__field:focus{outline-style:dotted}}.bx--list-box__field[disabled]{color:var(--cds-disabled-02, #c6c6c6);outline:none}.bx--list-box__field .bx--text-input{padding-right:4.5rem}.bx--list-box[data-invalid] .bx--list-box__field .bx--text-input,.bx--list-box--warning .bx--list-box__field .bx--text-input{padding-right:6.125rem}.bx--list-box[data-invalid] .bx--list-box__field .bx--text-input+.bx--list-box__invalid-icon,.bx--list-box--warning .bx--list-box__field .bx--text-input+.bx--list-box__invalid-icon{right:4.125rem}.bx--list-box__field .bx--text-input--empty{padding-right:3rem}.bx--list-box[data-invalid] .bx--list-box__field .bx--text-input--empty,.bx--list-box--warning .bx--list-box__field .bx--text-input--empty{padding-right:4.5rem}.bx--list-box[data-invalid] .bx--list-box__field .bx--text-input--empty+.bx--list-box__invalid-icon,.bx--list-box--warning .bx--list-box__field .bx--text-input--empty+.bx--list-box__invalid-icon{right:2.5rem}.bx--list-box__label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);overflow:hidden;color:var(--cds-text-01, #161616);text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.bx--list-box__menu-icon{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;position:absolute;right:1rem;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;cursor:pointer;outline:none;transition:transform 70ms cubic-bezier(.2,0,.38,.9)}.bx--list-box__menu-icon::-moz-focus-inner{border:0}.bx--list-box__menu-icon>svg{fill:var(--cds-icon-01, #161616)}.bx--list-box__menu-icon--open{width:1.5rem;justify-content:center;transform:rotate(180deg)}.bx--list-box__selection{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;position:absolute;top:50%;right:2.5rem;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;cursor:pointer;transform:translateY(-50%);transition:background-color 70ms cubic-bezier(.2,0,.38,.9);-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--list-box__selection::-moz-focus-inner{border:0}.bx--list-box__selection:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--list-box__selection:focus{outline-style:dotted}}.bx--list-box__selection:focus:hover{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--list-box__selection:focus:hover{outline-style:dotted}}.bx--list-box__selection>svg{fill:var(--cds-icon-01, #161616)}.bx--list-box--disabled .bx--list-box__selection:focus{outline:none}.bx--list-box__selection--multi{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);position:static;top:auto;display:flex;width:auto;height:1.5rem;align-items:center;justify-content:space-between;padding:.5rem .125rem .5rem .5rem;margin-right:.625rem;background-color:var(--cds-inverse-02, #393939);border-radius:.75rem;color:var(--cds-inverse-01, #ffffff);line-height:0;transform:none}.bx--list-box__selection--multi>svg{width:1.25rem;height:1.25rem;padding:.125rem;margin-left:.25rem;fill:var(--cds-inverse-01, #ffffff)}.bx--list-box__selection--multi>svg:hover{background-color:var(--cds-hover-secondary, #4c4c4c);border-radius:50%}.bx--list-box--disabled .bx--list-box__selection--multi{background-color:var(--cds-disabled-02, #c6c6c6);color:var(--cds-disabled-01, #f4f4f4)}.bx--list-box--disabled .bx--list-box__selection--multi.bx--tag--interactive:hover,.bx--list-box--disabled .bx--list-box__selection--multi .bx--tag__close-icon:hover{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--list-box--disabled .bx--list-box__selection--multi>svg{fill:var(--cds-disabled-01, #f4f4f4)}.bx--list-box--disabled .bx--list-box__selection--multi>svg:hover{background-color:initial}.bx--list-box__selection--multi:hover{outline:none}.bx--list-box__menu{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:absolute;z-index:9100;right:0;left:0;width:100%;background-color:var(--cds-ui-01, #f4f4f4);overflow-y:auto;transition:max-height .11s cubic-bezier(.2,0,.38,.9)}.bx--list-box__menu:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--list-box__menu:focus{outline-style:dotted}}.bx--list-box .bx--list-box__field[aria-expanded=false]+.bx--list-box__menu{max-height:0}.bx--list-box--expanded .bx--list-box__menu{max-height:13.75rem}.bx--list-box--expanded.bx--list-box--xl .bx--list-box__menu,.bx--list-box--expanded.bx--list-box--lg .bx--list-box__menu{max-height:16.5rem}.bx--list-box--expanded.bx--list-box--sm .bx--list-box__menu{max-height:11rem}.bx--list-box__menu-item{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:relative;height:2.5rem;color:var(--cds-text-02, #525252);cursor:pointer;transition:background 70ms cubic-bezier(.2,0,.38,.9);-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--list-box__menu-item:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--list-box__menu-item:active{background-color:var(--cds-selected-ui, #e0e0e0)}.bx--list-box--light .bx--list-box__menu-item:hover{background-color:var(--cds-hover-light-ui, #e5e5e5)}.bx--list-box--sm .bx--list-box__menu-item{height:2rem}.bx--list-box--xl .bx--list-box__menu-item,.bx--list-box--lg .bx--list-box__menu-item{height:3rem}.bx--list-box--disabled .bx--list-box__menu-item:hover{background-color:#0000}.bx--list-box--light .bx--list-box__menu-item:active{background-color:var(--cds-selected-light-ui, #e0e0e0)}.bx--list-box--disabled .bx--list-box__menu-item__option:hover{border-top-color:var(--cds-ui-03, #e0e0e0)}.bx--list-box__menu-item:first-of-type .bx--list-box__menu-item__option{border-top-color:#0000}.bx--list-box__menu-item:hover .bx--list-box__menu-item__option{color:var(--cds-text-01, #161616)}.bx--list-box__menu-item:hover+.bx--list-box__menu-item .bx--list-box__menu-item__option{border-top-color:#0000}.bx--list-box--disabled .bx--list-box__menu-item:hover+.bx--list-box__menu-item .bx--list-box__menu-item__option{border-top-color:var(--cds-ui-03, #e0e0e0)}.bx--list-box__menu-item__option{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:block;overflow:hidden;height:2.5rem;padding:.6875rem 1.5rem .6875rem 0;border-top:1px solid rgba(0,0,0,0);border-top-color:var(--cds-ui-03, #e0e0e0);border-bottom:1px solid rgba(0,0,0,0);margin:0 1rem;color:var(--cds-text-02, #525252);font-weight:400;line-height:1rem;text-decoration:none;text-overflow:ellipsis;transition:border-color 70ms cubic-bezier(.2,0,.38,.9),color 70ms cubic-bezier(.2,0,.38,.9);white-space:nowrap}.bx--list-box__menu-item__option:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;padding:.6875rem 1rem;border-color:#0000;margin:0}@media screen and (prefers-contrast){.bx--list-box__menu-item__option:focus{outline-style:dotted}}.bx--list-box__menu-item__option:hover{border-color:#0000;color:var(--cds-text-01, #161616)}.bx--list-box--sm .bx--list-box__menu-item__option{height:2rem;padding-top:.4375rem;padding-bottom:.4375rem}.bx--list-box--xl .bx--list-box__menu-item__option,.bx--list-box--lg .bx--list-box__menu-item__option{height:3rem;padding-top:.9375rem;padding-bottom:.9375rem}.bx--list-box--disabled .bx--list-box__menu-item:hover .bx--list-box__menu-item__option,.bx--list-box--disabled .bx--list-box__menu-item__option{color:var(--cds-disabled-02, #c6c6c6)}.bx--list-box__menu-item[disabled],.bx--list-box__menu-item[disabled] *,.bx--list-box__menu-item[disabled] .bx--list-box__menu-item__option,.bx--list-box__menu-item[disabled]:hover{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed;outline:none}.bx--list-box__menu-item[disabled]:hover{background-color:revert}.bx--list-box__menu-item[disabled] .bx--checkbox-label:before{border-color:var(--cds-disabled-02, #c6c6c6)}.bx--list-box__menu-item[disabled] .bx--list-box__menu-item__option{border-top-color:var(--cds-ui-03, #e0e0e0)}.bx--list-box__menu-item[disabled]:hover+.bx--list-box__menu-item .bx--list-box__menu-item__option{border-top-color:var(--cds-ui-03, #e0e0e0)}.bx--list-box.bx--list-box--inline .bx--list-box__menu-item__option{margin:0 .5rem}.bx--list-box.bx--list-box--inline .bx--list-box__menu-item__option:focus{padding-right:.5rem;padding-left:.5rem;margin:0}.bx--list-box__menu-item--highlighted{border-color:#0000;background-color:var(--cds-hover-ui, #e5e5e5);color:var(--cds-text-01, #161616)}.bx--list-box__menu-item--highlighted .bx--list-box__menu-item__option,.bx--list-box__menu-item--highlighted+.bx--list-box__menu-item .bx--list-box__menu-item__option{border-top-color:#0000}.bx--list-box__menu-item--highlighted .bx--list-box__menu-item__option{color:var(--cds-text-01, #161616)}.bx--list-box__menu-item--active{border-bottom-color:var(--cds-selected-ui, #e0e0e0);background-color:var(--cds-selected-ui, #e0e0e0);color:var(--cds-text-01, #161616)}.bx--list-box--light .bx--list-box__menu-item--active{border-bottom-color:var(--cds-selected-light-ui, #e0e0e0);background-color:var(--cds-selected-light-ui, #e0e0e0)}.bx--list-box__menu-item--active:hover,.bx--list-box__menu-item--active.bx--list-box__menu-item--highlighted{border-bottom-color:var(--cds-hover-selected-ui, #cacaca);background-color:var(--cds-hover-selected-ui, #cacaca)}.bx--list-box__menu-item--active .bx--list-box__menu-item__option{color:var(--cds-text-01, #161616)}.bx--list-box__menu-item--active+.bx--list-box__menu-item>.bx--list-box__menu-item__option{border-top-color:#0000}.bx--list-box__menu-item__selected-icon{position:absolute;top:50%;right:1rem;display:none;fill:var(--cds-icon-01, #161616);transform:translateY(-50%)}.bx--list-box--inline .bx--list-box__menu-item__selected-icon{right:.5rem}.bx--list-box__menu-item--active .bx--list-box__menu-item__selected-icon{display:block}.bx--list-box__menu-item .bx--checkbox-label{width:100%}.bx--list-box__menu-item .bx--checkbox-label-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bx--list-box--up .bx--list-box__menu{bottom:2.5rem}.bx--list-box--up.bx--dropdown--sm .bx--list-box__menu,.bx--list-box--up.bx--list-box--sm .bx--list-box__menu,.bx--list-box--up .bx--list-box--sm .bx--list-box__menu{bottom:2rem}.bx--list-box--up.bx--dropdown--xl .bx--list-box__menu,.bx--list-box--up.bx--list-box--xl .bx--list-box__menu,.bx--list-box--up.bx--dropdown--lg .bx--list-box__menu,.bx--list-box--up.bx--list-box--lg .bx--list-box__menu,.bx--list-box--up .bx--list-box--lg .bx--list-box__menu{bottom:3rem}.bx--list-box input[role=combobox],.bx--list-box input[type=text]{min-width:0;background-color:inherit}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--list-box__field,.bx--list-box__menu,.bx--multi-select .bx--tag--filter{outline:1px solid rgba(0,0,0,0)}.bx--list-box__field:focus,.bx--multi-select .bx--tag__close-icon:focus,.bx--list-box__menu-item--highlighted .bx--list-box__menu-item__option{color:Highlight;outline:1px solid Highlight}.bx--list-box__menu-icon>svg,.bx--list-box__selection>svg,.bx--list-box__selection--multi>svg{fill:ButtonText}}.bx--combo-box:hover{background-color:var(--cds-field-01, #f4f4f4)}.bx--combo-box.bx--list-box--light:hover{background-color:var(--cds-field-02, #ffffff)}.bx--combo-box .bx--text-input::-ms-clear{display:none}.bx--combo-box.bx--list-box--expanded .bx--text-input{border-bottom-color:var(--cds-ui-03, #e0e0e0)}.bx--combo-box .bx--list-box__field,.bx--combo-box.bx--list-box[data-invalid] .bx--list-box__field,.bx--combo-box.bx--list-box--warning .bx--list-box__field,.bx--combo-box.bx--list-box--disabled.bx--list-box[data-invalid] .bx--list-box__field,.bx--combo-box.bx--list-box--disabled.bx--list-box--warning .bx--list-box__field{padding:0}.bx--content-switcher{display:flex;width:100%;height:2.5rem;justify-content:space-evenly}.bx--content-switcher--sm{height:2rem}.bx--content-switcher--xl,.bx--content-switcher--lg{height:3rem}.bx--content-switcher-btn{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:relative;display:inline-flex;overflow:hidden;width:100%;align-items:center;padding:.5rem 1rem;border:none;border-top:.0625rem solid var(--cds-border-inverse, #161616);border-bottom:.0625rem solid var(--cds-border-inverse, #161616);margin:0;background-color:#0000;color:var(--cds-text-secondary, #525252);text-align:left;text-decoration:none;transition:all .15s cubic-bezier(.2,0,.38,.9);white-space:nowrap}.bx--content-switcher-btn:after{position:absolute;top:0;left:0;display:block;width:100%;height:100%;background-color:var(--cds-layer-selected-inverse, #161616);content:"";transform:scaleY(0);transform-origin:bottom;transition:all .15s cubic-bezier(.2,0,.38,.9)}@media (prefers-reduced-motion: reduce){.bx--content-switcher-btn:after{transition:none}}.bx--content-switcher-btn:disabled:after{display:none}.bx--content-switcher-btn:focus{z-index:3;border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 2px var(--cds-focus, #0f62fe),inset 0 0 0 3px var(--cds-focus-inset, #ffffff)}.bx--content-switcher-btn:focus:after{-webkit-clip-path:inset(3px 3px 3px 3px);clip-path:inset(3px 3px 3px 3px)}.bx--content-switcher-btn:hover{color:var(--cds-text-primary, #161616);cursor:pointer}.bx--content-switcher-btn:hover,.bx--content-switcher-btn:active{z-index:3;background-color:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}.bx--content-switcher-btn:disabled{border-color:var(--cds-border-disabled, #f4f4f4);background-color:#0000;color:var(--cds-text-disabled, #c6c6c6)}.bx--content-switcher-btn:disabled:hover{cursor:not-allowed}.bx--content-switcher-btn:disabled:first-child,.bx--content-switcher-btn:disabled:last-child{border-color:var(--cds-border-disabled, #f4f4f4)}.bx--content-switcher-btn:first-child{border-left:.0625rem solid var(--cds-border-inverse, #161616);border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.bx--content-switcher-btn:last-child{border-right:.0625rem solid var(--cds-border-inverse, #161616);border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.bx--content-switcher--selected,.bx--content-switcher--selected:first-child,.bx--content-switcher--selected:last-child{border:0}.bx--content-switcher-btn:before{position:absolute;z-index:2;left:0;display:block;width:.0625rem;height:1rem;background-color:var(--cds-border-subtle, #e0e0e0);content:""}.bx--content-switcher-btn:first-of-type:before{display:none}.bx--content-switcher-btn:focus:before,.bx--content-switcher-btn:focus+.bx--content-switcher-btn:before,.bx--content-switcher-btn:hover:before,.bx--content-switcher-btn:hover+.bx--content-switcher-btn:before,.bx--content-switcher--selected:before,.bx--content-switcher--selected+.bx--content-switcher-btn:before{background-color:#0000}.bx--content-switcher-btn:disabled:before,.bx--content-switcher-btn:disabled:hover+.bx--content-switcher-btn:disabled:before{background-color:var(--cds-border-disabled, #f4f4f4)}.bx--content-switcher-btn.bx--content-switcher--selected:disabled+.bx--content-switcher-btn:before,.bx--content-switcher-btn.bx--content-switcher--selected:disabled:hover+.bx--content-switcher-btn:before{background-color:#0000}.bx--content-switcher__icon{fill:var(--cds-icon-secondary, #525252);transition:fill 70ms cubic-bezier(.2,0,.38,.9)}.bx--content-switcher__icon+span{margin-left:.5rem}.bx--content-switcher__label{z-index:1;overflow:hidden;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.bx--content-switcher-btn:hover .bx--content-switcher__icon,.bx--content-switcher-btn:focus .bx--content-switcher__icon{fill:var(--cds-icon-primary, #161616)}.bx--content-switcher-btn.bx--content-switcher--selected{z-index:3;background-color:var(--cds-layer-selected-inverse, #161616);color:var(--cds-text-inverse, #ffffff)}.bx--content-switcher-btn.bx--content-switcher--selected:after{transform:scaleY(1)}.bx--content-switcher-btn.bx--content-switcher--selected:disabled{background-color:var(--cds-layer-selected-disabled, #8d8d8d);color:var(--cds-text-disabled, #c6c6c6)}.bx--content-switcher-btn.bx--content-switcher--selected .bx--content-switcher__icon{fill:var(--cds-icon-inverse, #ffffff)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--content-switcher-btn:focus{color:Highlight;outline:1px solid Highlight}}@keyframes hide-feedback{0%{opacity:1;visibility:inherit}to{opacity:0;visibility:hidden}}@keyframes show-feedback{0%{opacity:0;visibility:hidden}to{opacity:1;visibility:inherit}}.bx--btn--copy{position:relative;overflow:visible}.bx--btn--copy .bx--btn__icon{margin-left:.3125rem}.bx--btn--copy__feedback{position:absolute;top:1.2rem;left:50%;display:none}.bx--btn--copy__feedback:before{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);z-index:2;top:1.1rem;padding:var(--cds-spacing-02, .25rem);border-radius:4px;color:var(--cds-text-inverse, #ffffff);content:attr(data-feedback);font-weight:400;pointer-events:none;transform:translate(-50%);white-space:nowrap}.bx--btn--copy__feedback:after{z-index:1;top:.85rem;left:-.3rem;width:.6rem;height:.6rem;border-right:1px solid var(--cds-background-inverse, #393939);border-bottom:1px solid var(--cds-background-inverse, #393939);content:"";transform:rotate(-135deg)}.bx--btn--copy__feedback:before,.bx--btn--copy__feedback:after{position:absolute;display:block;background:var(--cds-background-inverse, #393939)}.bx--btn--copy__feedback--displayed{display:inline-flex}.bx--copy-btn{position:relative;display:flex;width:2.5rem;height:2.5rem;align-items:center;justify-content:center;padding:0;border:none;background-color:var(--cds-layer, #f4f4f4);cursor:pointer}.bx--copy-btn:hover{background-color:var(--cds-layer-hover, #e5e5e5)}.bx--copy-btn:active{background-color:var(--cds-layer-active, #c6c6c6)}.bx--copy-btn:before{position:absolute;z-index:6000;width:0;height:0;border-style:solid;content:"";display:none}.bx--copy-btn .bx--copy-btn__feedback{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:none;overflow:visible;box-sizing:content-box;margin:auto;clip:auto}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--copy-btn .bx--copy-btn__feedback{width:auto}}@supports (-ms-accelerator: true){.bx--copy-btn .bx--copy-btn__feedback{width:auto}}@supports (-ms-ime-align: auto){.bx--copy-btn .bx--copy-btn__feedback{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--copy-btn .bx--copy-btn__feedback{border:1px solid rgba(0,0,0,0)}}.bx--copy-btn .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--copy-btn:before,.bx--copy-btn:after,.bx--copy-btn .bx--assistive-text,.bx--copy-btn+.bx--assistive-text{bottom:0;left:50%}.bx--copy-btn:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--copy-btn:after,.bx--copy-btn .bx--assistive-text,.bx--copy-btn+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--copy-btn:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;outline-color:var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--copy-btn:focus{outline-style:dotted}}.bx--copy-btn.bx--copy-btn--animating:before,.bx--copy-btn.bx--copy-btn--animating .bx--copy-btn__feedback{display:block}.bx--copy-btn.bx--copy-btn--animating.bx--copy-btn--fade-out:before,.bx--copy-btn.bx--copy-btn--animating.bx--copy-btn--fade-out .bx--copy-btn__feedback{animation:.11s cubic-bezier(.2,0,.38,.9) hide-feedback}.bx--copy-btn.bx--copy-btn--animating.bx--copy-btn--fade-in:before,.bx--copy-btn.bx--copy-btn--animating.bx--copy-btn--fade-in .bx--copy-btn__feedback{animation:.11s cubic-bezier(.2,0,.38,.9) show-feedback}.bx--copy{font-size:0}.bx--table-toolbar{position:relative;display:flex;width:100%;min-height:var(--cds-spacing-09, 3rem);background-color:var(--cds-layer, #f4f4f4)}.bx--toolbar-content{display:flex;width:100%;height:var(--cds-spacing-09, 3rem);justify-content:flex-end;transform:translateZ(0);transition:transform .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9)}.bx--batch-actions~.bx--toolbar-content{-webkit-clip-path:polygon(0 0,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}.bx--toolbar-content .bx--search .bx--search-input{background-color:#0000}.bx--batch-actions~.bx--toolbar-search-container{display:flex;align-items:center;opacity:1;transition:opacity .11s}.bx--toolbar-content .bx--toolbar-search-container-expandable{position:relative;width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem);box-shadow:none;cursor:pointer;transition:width .24s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(0,0,.38,.9)}.bx--toolbar-content .bx--toolbar-search-container-expandable:hover{background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-expandable .bx--search-input{height:100%;cursor:pointer;opacity:0}.bx--toolbar-search-container-expandable:not(.bx--toolbar-search-container-active) .bx--search-input{padding:0}.bx--toolbar-search-container-expandable .bx--search-magnifier-icon{left:0;width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem);padding:var(--cds-spacing-05, 1rem);fill:var(--cds-icon-primary, #161616)}.bx--toolbar-search-container-expandable.bx--search--disabled .bx--search-magnifier-icon{background-color:var(--cds-layer, #f4f4f4);cursor:not-allowed;transition:background-color none}.bx--toolbar-search-container-disabled .bx--search-input{cursor:not-allowed}.bx--toolbar-search-container-expandable.bx--search .bx--label{visibility:hidden}.bx--toolbar-search-container-expandable.bx--search .bx--search-close{width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem)}.bx--toolbar-search-container-expandable.bx--search .bx--search-close:before{top:.125rem;height:calc(100% - .25rem);background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-expandable.bx--search .bx--search-close:focus:before{background-color:var(--cds-focus, #0f62fe)}.bx--toolbar-search-container-active.bx--search{width:100%}.bx--toolbar-search-container-active .bx--search-input{opacity:1}.bx--toolbar-search-container-active .bx--label,.bx--toolbar-search-container-active .bx--search-input{padding:0 var(--cds-spacing-09, 3rem);cursor:text}.bx--toolbar-search-container-active .bx--search-input:focus+.bx--search-close{border:none;box-shadow:none;outline:none}.bx--toolbar-search-container-active .bx--search-input:not(:-moz-placeholder-shown){border:none;background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-active .bx--search-input:not(:placeholder-shown){border:none;background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-active .bx--search-magnifier-icon:focus,.bx--toolbar-search-container-active .bx--search-magnifier-icon:active,.bx--toolbar-search-container-active .bx--search-magnifier-icon:hover{border:none;background-color:#0000;outline:none}.bx--toolbar-search-container-persistent .bx--search-close,.bx--toolbar-search-container-persistent .bx--search-close:hover,.bx--toolbar-search-container-active .bx--search-close,.bx--toolbar-search-container-active .bx--search-close:hover{border:none;background-color:#0000}.bx--toolbar-search-container-persistent .bx--search-close:before{display:none}.bx--overflow-menu.bx--toolbar-action{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;width:100%;display:flex;width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem);padding:var(--cds-spacing-05, 1rem);cursor:pointer;transition:background .11s cubic-bezier(0,0,.38,.9)}.bx--overflow-menu.bx--toolbar-action::-moz-focus-inner{border:0}.bx--toolbar-action{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;width:100%;display:flex;width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem);cursor:pointer;transition:background .11s cubic-bezier(0,0,.38,.9)}.bx--toolbar-action::-moz-focus-inner{border:0}.bx--toolbar-action:hover:not([disabled]){background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-action:hover[aria-expanded=true]{background-color:var(--cds-layer, #f4f4f4)}.bx--toolbar-action[disabled]{cursor:not-allowed}.bx--toolbar-action[disabled] .bx--toolbar-action__icon{cursor:not-allowed;fill:var(--cds-icon-disabled, #c6c6c6)}.bx--toolbar-action:focus:not([disabled]),.bx--toolbar-action:active:not([disabled]){outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--toolbar-action:focus:not([disabled]),.bx--toolbar-action:active:not([disabled]){outline-style:dotted}}.bx--toolbar-action:focus:not([disabled]).bx--toolbar-search-container-expandable,.bx--toolbar-action:active:not([disabled]).bx--toolbar-search-container-expandable{outline:none}.bx--toolbar-action~.bx--btn{max-width:none;margin:0;white-space:nowrap}.bx--overflow-menu--data-table{height:var(--cds-spacing-09, 3rem)}.bx--toolbar-action__icon{width:auto;max-width:var(--cds-spacing-05, 1rem);height:var(--cds-spacing-05, 1rem);fill:var(--cds-icon-primary, #161616)}.bx--toolbar-search-container-persistent{position:relative;width:100%;height:var(--cds-spacing-09, 3rem);opacity:1}.bx--toolbar-search-container-persistent+.bx--toolbar-content{position:relative;width:auto}.bx--toolbar-search-container-persistent .bx--search{position:initial}.bx--toolbar-search-container-persistent .bx--search-magnifier-icon{left:var(--cds-spacing-05, 1rem)}.bx--toolbar-search-container-persistent .bx--search-input{height:var(--cds-spacing-09, 3rem);padding:0 var(--cds-spacing-09, 3rem);border:none}.bx--toolbar-search-container-persistent .bx--search-input:focus:not([disabled]){outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--toolbar-search-container-persistent .bx--search-input:focus:not([disabled]){outline-style:dotted}}.bx--toolbar-search-container-persistent .bx--search-input:hover:not([disabled]){background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-persistent .bx--search-input:not(:-moz-placeholder-shown){background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-persistent .bx--search-input:active:not([disabled]),.bx--toolbar-search-container-persistent .bx--search-input:not(:placeholder-shown){background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-persistent .bx--search-close{width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem)}.bx--batch-actions--active~.bx--toolbar-search-container,.bx--batch-actions--active~.bx--toolbar-content{-webkit-clip-path:polygon(0 0,100% 0,100% 0,0 0);clip-path:polygon(0 0,100% 0,100% 0,0 0);transform:translate3d(0,48px,0);transition:transform .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9)}.bx--batch-actions{position:absolute;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:space-between;background-color:var(--cds-background-brand, #0f62fe);-webkit-clip-path:polygon(0 0,100% 0,100% 0,0 0);clip-path:polygon(0 0,100% 0,100% 0,0 0);pointer-events:none;transform:translate3d(0,48px,0);transition:transform .11s cubic-bezier(.2,0,.38,.9),opacity .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9),opacity .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9),opacity .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9);will-change:transform}.bx--batch-actions:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--batch-actions:focus{outline-style:dotted}}.bx--batch-actions--active{overflow:auto hidden;-webkit-clip-path:polygon(0 0,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,100% 0,100% 100%,0 100%);pointer-events:all;transform:translateZ(0)}.bx--action-list{display:flex;align-items:center}.bx--action-list .bx--btn{padding:calc(.875rem - 3px) 16px;color:var(--cds-text-on-color, #ffffff);white-space:nowrap}.bx--action-list .bx--btn:disabled{color:var(--cds-text-on-color-disabled, #8d8d8d)}.bx--action-list .bx--btn .bx--btn__icon{position:static;margin-left:var(--cds-spacing-03, .5rem);fill:var(--cds-icon-on-color, #ffffff)}.bx--action-list .bx--btn .bx--btn__icon .st0{fill:none}.bx--batch-download{padding:.0625rem}.bx--action-list .bx--btn--primary:focus:before,.bx--action-list .bx--btn--primary:before,.bx--action-list .bx--btn--primary:focus:after,.bx--action-list .bx--btn--primary:after{display:none}.bx--action-list .bx--btn--primary:focus{outline:2px solid var(--cds-layer, #f4f4f4);outline-offset:-.125rem}.bx--action-list .bx--btn--primary:nth-child(3):hover+.bx--btn--primary.bx--batch-summary__cancel:before,.bx--action-list .bx--btn--primary:nth-child(3):focus+.bx--btn--primary.bx--batch-summary__cancel:before{opacity:0}.bx--btn--primary.bx--batch-summary__cancel:before{position:absolute;top:.9375rem;left:0;display:block;width:.0625rem;height:var(--cds-spacing-05, 1rem);border:none;background-color:var(--cds-text-on-color, #ffffff);content:"";opacity:1;transition:opacity .11s cubic-bezier(.2,0,.38,.9)}.bx--btn--primary.bx--batch-summary__cancel:hover:before{opacity:0;transition:opacity .11s cubic-bezier(.2,0,.38,.9)}.bx--batch-summary{position:sticky;z-index:100000;left:0;display:flex;min-height:3rem;align-items:center;padding:0 var(--cds-spacing-05, 1rem);background-color:var(--cds-background-brand, #0f62fe);color:var(--cds-text-on-color, #ffffff)}.bx--batch-summary__scroll{box-shadow:.5px 0 .2px var(--cds-hover-primary-text, #0043ce)}.bx--batch-summary__para{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}.bx--table-toolbar--small,.bx--table-toolbar--sm{height:2rem;min-height:2rem}.bx--table-toolbar--small .bx--toolbar-search-container-expandable,.bx--table-toolbar--small .bx--toolbar-search-container-persistent,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable,.bx--table-toolbar--sm .bx--toolbar-search-container-persistent,.bx--table-toolbar--small .bx--toolbar-search-container-expandable .bx--search-input,.bx--table-toolbar--small .bx--toolbar-search-container-persistent .bx--search-input,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable .bx--search-input,.bx--table-toolbar--sm .bx--toolbar-search-container-persistent .bx--search-input{height:2rem}.bx--table-toolbar--small .bx--toolbar-search-container-expandable .bx--search-close,.bx--table-toolbar--small .bx--toolbar-search-container-persistent .bx--search-close,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable .bx--search-close,.bx--table-toolbar--sm .bx--toolbar-search-container-persistent .bx--search-close{width:2rem;height:2rem}.bx--table-toolbar--small .bx--toolbar-search-container-expandable .bx--search-magnifier-icon,.bx--table-toolbar--small .bx--toolbar-search-container-persistent .bx--search-magnifier-icon,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable .bx--search-magnifier-icon,.bx--table-toolbar--sm .bx--toolbar-search-container-persistent .bx--search-magnifier-icon{width:2rem;height:2rem;padding:var(--cds-spacing-03, .5rem)}.bx--table-toolbar--small .bx--toolbar-action.bx--toolbar-search-container-persistent,.bx--table-toolbar--sm .bx--toolbar-action.bx--toolbar-search-container-persistent{width:100%}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-magnifier-icon,.bx--table-toolbar--small .bx--toolbar-search-container-persistent .bx--search-magnifier-icon,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-magnifier-icon,.bx--table-toolbar--sm .bx--toolbar-search-container-persistent .bx--search-magnifier-icon{left:var(--cds-spacing-03, .5rem)}.bx--table-toolbar--small .bx--toolbar-search-container-expandable,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable{width:2rem}.bx--table-toolbar--small .bx--toolbar-search-container-expandable .bx--search .bx--search-input,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable .bx--search .bx--search-input{padding:0 var(--cds-spacing-09, 3rem)}.bx--table-toolbar--small .bx--toolbar-search-container-active,.bx--table-toolbar--sm .bx--toolbar-search-container-active{flex:auto;transition:flex 175ms cubic-bezier(.2,0,.38,.9)}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input{visibility:inherit}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input:focus,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;background-color:var(--cds-field-hover, #e5e5e5)}@media screen and (prefers-contrast){.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input:focus,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input:focus{outline-style:dotted}}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input:not(:-moz-placeholder-shown),.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input:not(:-moz-placeholder-shown){background-color:var(--cds-field-hover, #e5e5e5)}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input:active,.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input:not(:placeholder-shown),.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input:active,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input:not(:placeholder-shown){background-color:var(--cds-field-hover, #e5e5e5)}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-magnifier-icon:focus,.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-magnifier-icon:active,.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-magnifier-icon:hover,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-magnifier-icon:focus,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-magnifier-icon:active,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-magnifier-icon:hover{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;background-color:#0000}.bx--table-toolbar--small .bx--overflow-menu.bx--toolbar-action,.bx--table-toolbar--sm .bx--overflow-menu.bx--toolbar-action{width:2rem;min-width:2rem;height:2rem}.bx--table-toolbar--small .bx--toolbar-content,.bx--table-toolbar--sm .bx--toolbar-content{height:2rem}.bx--search--disabled .bx--search-magnifier-icon:hover{background-color:#0000}.bx--table-toolbar--small .bx--batch-actions .bx--action-list,.bx--table-toolbar--sm .bx--batch-actions .bx--action-list{height:2rem}.bx--table-toolbar--small .bx--toolbar-action,.bx--table-toolbar--sm .bx--toolbar-action{width:2rem;height:2rem;padding:var(--cds-spacing-03, .5rem) 0}.bx--table-toolbar--small .bx--btn--primary,.bx--table-toolbar--sm .bx--btn--primary{height:2rem;min-height:auto;padding-top:calc(.375rem - 3px);padding-bottom:calc(.375rem - 3px)}.bx--table-toolbar--small .bx--btn--primary.bx--batch-summary__cancel:before,.bx--table-toolbar--sm .bx--btn--primary.bx--batch-summary__cancel:before{top:.5rem}.bx--table-toolbar--small .bx--toolbar-action~.bx--btn,.bx--table-toolbar--sm .bx--toolbar-action~.bx--btn{overflow:hidden;height:2rem}.bx--table-toolbar--small .bx--batch-summary,.bx--table-toolbar--sm .bx--batch-summary{min-height:2rem}.bx--data-table-container{position:relative;padding-top:var(--cds-spacing-01, .125rem)}.bx--data-table-content{overflow-x:auto}.bx--data-table-header{padding:var(--cds-spacing-05, 1rem) 0 var(--cds-spacing-06, 1.5rem) var(--cds-spacing-05, 1rem);background:var(--cds-layer, #f4f4f4)}.bx--data-table-header__title{font-size:var(--cds-productive-heading-03-font-size, 1.25rem);font-weight:var(--cds-productive-heading-03-font-weight, 400);line-height:var(--cds-productive-heading-03-line-height, 1.4);letter-spacing:var(--cds-productive-heading-03-letter-spacing, 0);color:var(--cds-text-primary, #161616)}.bx--data-table-header__description{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);color:var(--cds-text-secondary, #525252)}.bx--data-table{width:100%;border-collapse:collapse;border-spacing:0}.bx--data-table thead{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);background-color:var(--cds-layer-accent, #e0e0e0)}.bx--data-table tbody{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);width:100%;background-color:var(--cds-layer, #f4f4f4)}.bx--data-table tr{width:100%;height:var(--cds-spacing-09, 3rem);border:none}.bx--data-table tbody tr,.bx--data-table tbody tr td,.bx--data-table tbody tr th{transition:background-color 70ms cubic-bezier(0,0,.38,.9)}.bx--data-table tbody tr:hover{background:var(--cds-layer-hover, #e5e5e5)}.bx--data-table tbody tr:hover td,.bx--data-table tbody tr:hover th{border-top:1px solid var(--cds-layer-hover, #e5e5e5);border-bottom:1px solid var(--cds-layer-hover, #e5e5e5);background:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}.bx--data-table tr:hover .bx--link{color:var(--cds-link-secondary, #0043ce)}.bx--data-table tr:hover .bx--link--disabled{color:var(--cds-disabled-02, #c6c6c6)}.bx--data-table th,.bx--data-table td{text-align:left;vertical-align:middle}.bx--data-table th[align=right],.bx--data-table td[align=right]{text-align:right}.bx--data-table th[align=center],.bx--data-table td[align=center]{text-align:center}.bx--data-table th{padding-right:var(--cds-spacing-05, 1rem);padding-left:var(--cds-spacing-05, 1rem);background-color:var(--cds-layer-accent, #e0e0e0);color:var(--cds-text-primary, #161616)}.bx--data-table th:last-of-type{position:static;width:auto}.bx--data-table td,.bx--data-table tbody th{padding-right:var(--cds-spacing-05, 1rem);padding-left:var(--cds-spacing-05, 1rem);border-top:1px solid var(--cds-layer, #f4f4f4);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background:var(--cds-layer, #f4f4f4);color:var(--cds-text-secondary, #525252)}.bx--data-table td+td:first-of-type,.bx--data-table tbody th+td:first-of-type{padding-left:var(--cds-spacing-04, .75rem)}@supports (-moz-appearance: none){.bx--data-table td{background-clip:padding-box}}.bx--data-table .bx--list-box input[role=combobox],.bx--data-table .bx--list-box input[type=text],.bx--data-table .bx--dropdown,.bx--data-table .bx--list-box,.bx--data-table .bx--number input[type=number],.bx--data-table .bx--number__control-btn:before,.bx--data-table .bx--number__control-btn:after,.bx--data-table .bx--text-input,.bx--data-table .bx--select-input{background-color:var(--cds-field-02, #ffffff)}.bx--data-table td.bx--table-column-menu .bx--overflow-menu[aria-expanded=false]:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--data-table td.bx--table-column-menu .bx--overflow-menu[aria-expanded=false]:focus{outline-style:dotted}}.bx--data-table td.bx--table-column-menu .bx--overflow-menu[aria-expanded=true]:focus{outline:none}@media screen and (hover: hover),(-ms-high-contrast: active),(-ms-high-contrast: none){.bx--data-table td.bx--table-column-menu .bx--overflow-menu .bx--overflow-menu__icon{opacity:0}}.bx--data-table td.bx--table-column-menu .bx--overflow-menu.bx--overflow-menu--open .bx--overflow-menu__icon{opacity:1}.bx--data-table.bx--data-table--visible-overflow-menu td.bx--table-column-menu .bx--overflow-menu .bx--overflow-menu__icon,.bx--data-table td.bx--table-column-menu .bx--overflow-menu:hover .bx--overflow-menu__icon,.bx--data-table td.bx--table-column-menu .bx--overflow-menu:focus .bx--overflow-menu__icon,.bx--data-table tr:hover td.bx--table-column-menu .bx--overflow-menu .bx--overflow-menu__icon{opacity:1}.bx--table-row--menu-option .bx--overflow-menu-options__btn .bx--overflow-menu-options__option-content svg{position:relative;top:.1875rem;margin-right:var(--cds-spacing-03, .5rem)}.bx--data-table .bx--overflow-menu:hover,.bx--data-table .bx--overflow-menu__trigger:hover{background-color:var(--cds-layer-selected-hover, #cacaca)}.bx--data-table--selected .bx--overflow-menu:hover,.bx--data-table--selected .bx--overflow-menu__trigger:hover{background-color:var(--cds-layer-hover, #e5e5e5)}.bx--data-table--selected .bx--link:not(.bx--link--disabled){color:var(--cds-link-secondary, #0043ce)}.bx--data-table--compact td.bx--table-column-menu,.bx--data-table--xs td.bx--table-column-menu,.bx--data-table--short td.bx--table-column-menu,.bx--data-table--sm td.bx--table-column-menu{height:1.5rem;padding-top:0;padding-bottom:0}.bx--data-table--short td.bx--table-column-menu,.bx--data-table--sm td.bx--table-column-menu{height:2rem}.bx--data-table--md td.bx--table-column-menu{height:2.5rem}.bx--data-table--tall .bx--table-column-menu,.bx--data-table--xl .bx--table-column-menu{padding-top:var(--cds-spacing-03, .5rem)}.bx--data-table--zebra tbody tr:not(.bx--parent-row):nth-child(odd) td{border-bottom:1px solid var(--cds-layer, #f4f4f4)}.bx--data-table--zebra tbody tr:not(.bx--parent-row):nth-child(even) td{border-top:1px solid var(--cds-ui-02, #ffffff);border-bottom:1px solid var(--cds-ui-02, #ffffff);background-color:var(--cds-ui-02, #ffffff)}.bx--data-table--zebra tbody tr:not(.bx--parent-row):hover td{border-top:1px solid var(--cds-layer-hover, #e5e5e5);border-bottom:1px solid var(--cds-layer-hover, #e5e5e5);background-color:var(--cds-layer-hover, #e5e5e5)}.bx--table-column-checkbox .bx--checkbox-label{padding-left:0}.bx--data-table th.bx--table-column-checkbox{position:static;width:2rem;background:var(--cds-layer-accent, #e0e0e0);transition:background-color 70ms cubic-bezier(0,0,.38,.9)}.bx--data-table .bx--table-column-checkbox .bx--checkbox:focus+.bx--checkbox-label:before{outline-offset:.375rem}.bx--data-table--compact .bx--table-column-checkbox .bx--checkbox:focus+.bx--checkbox-label:before,.bx--data-table--xs .bx--table-column-checkbox .bx--checkbox:focus+.bx--checkbox-label:before{outline-offset:.125rem}.bx--data-table thead th.bx--table-column-checkbox,.bx--data-table tbody td.bx--table-column-checkbox,.bx--data-table thead th.bx--table-expand,.bx--data-table tbody td.bx--table-expand{min-width:0}.bx--data-table thead th.bx--table-column-checkbox,.bx--data-table tbody td.bx--table-column-checkbox{width:2.5rem;padding-right:.25rem;padding-left:1rem}.bx--data-table thead th.bx--table-expand,.bx--data-table tbody td.bx--table-expand{width:2rem;height:2rem}.bx--data-table--compact thead th.bx--table-expand,.bx--data-table--compact tbody td.bx--table-expand,.bx--data-table--xs thead th.bx--table-expand,.bx--data-table--xs tbody td.bx--table-expand{width:1.5rem;height:1.5rem;padding:0 0 0 .5rem}.bx--data-table--short thead th.bx--table-expand,.bx--data-table--short tbody td.bx--table-expand,.bx--data-table--sm thead th.bx--table-expand,.bx--data-table--sm tbody td.bx--table-expand{width:2rem;height:2rem;padding:0;padding-left:.5rem}.bx--data-table--md thead th.bx--table-expand,.bx--data-table--md tbody td.bx--table-expand{width:2.5rem;height:2.5rem;padding:.25rem 0 .25rem .5rem}.bx--data-table--tall thead th.bx--table-expand,.bx--data-table--tall tbody td.bx--table-expand,.bx--data-table--xl thead th.bx--table-expand,.bx--data-table--xl tbody td.bx--table-expand{height:4rem;padding-top:.625rem;padding-bottom:1.375rem}.bx--data-table--tall .bx--table-column-checkbox,.bx--data-table--xl .bx--table-column-checkbox{padding-top:.8125rem}.bx--data-table--tall .bx--table-column-radio,.bx--data-table--xl .bx--table-column-radio{padding-top:var(--cds-spacing-05, 1rem)}tr.bx--data-table--selected:hover .bx--radio-button[disabled]+.bx--radio-button__label,tr.bx--data-table--selected:hover .bx--checkbox[disabled]+.bx--checkbox-label,tr.bx--data-table--selected:hover .bx--link--disabled{color:var(--cds-disabled-03, #8d8d8d)}tr.bx--data-table--selected:hover .bx--radio-button[disabled]+.bx--radio-button__label .bx--radio-button__appearance,tr.bx--data-table--selected:hover .bx--checkbox[disabled]+.bx--checkbox-label:before{border-color:var(--cds-disabled-03, #8d8d8d)}.bx--table-column-radio{width:48px}.bx--table-column-radio .bx--radio-button__appearance{margin-right:-.125rem}.bx--data-table--zebra tbody tr:nth-child(odd).bx--data-table--selected td,tr.bx--data-table--selected td{border-top:1px solid var(--cds-layer-selected, #e0e0e0);border-bottom:1px solid var(--cds-layer-active, #c6c6c6);background-color:var(--cds-layer-selected, #e0e0e0);color:var(--cds-text-primary, #161616)}.bx--data-table--zebra tbody tr:first-of-type:nth-child(odd).bx--data-table--selected td,tr.bx--data-table--selected:first-of-type td{border-top:1px solid var(--cds-layer-active, #c6c6c6)}.bx--data-table--zebra tbody tr:last-of-type:nth-child(odd).bx--data-table--selected td,.bx--data-table--zebra tbody tr:last-of-type:nth-child(even).bx--data-table--selected td,tr.bx--data-table--selected:last-of-type td{border-top:1px solid var(--cds-layer-selected, #e0e0e0);border-bottom:1px solid var(--cds-layer-selected, #e0e0e0)}.bx--data-table--zebra tbody tr:nth-child(even).bx--data-table--selected td{border-bottom:1px solid var(--cds-layer-active, #c6c6c6)}.bx--data-table--zebra tbody tr:nth-child(even).bx--data-table--selected:hover td{border-bottom:1px solid var(--cds-hover-selected-ui, #cacaca)}.bx--data-table--zebra tbody tr:nth-child(odd).bx--data-table--selected:hover td,.bx--data-table tbody .bx--data-table--selected:hover td{border-top:1px solid var(--cds-hover-selected-ui, #cacaca);border-bottom:1px solid var(--cds-hover-selected-ui, #cacaca);background:var(--cds-hover-selected-ui, #cacaca);color:var(--cds-text-primary, #161616)}.bx--data-table--selected .bx--overflow-menu .bx--overflow-menu__icon{opacity:1}.bx--data-table--compact thead tr,.bx--data-table--compact tbody tr,.bx--data-table--compact tbody tr th{height:1.5rem}.bx--data-table--compact .bx--table-header-label,.bx--data-table--compact td,.bx--data-table--compact tbody tr th{padding-top:.125rem;padding-bottom:.125rem}.bx--data-table--compact .bx--overflow-menu{width:2rem;height:100%}.bx--data-table.bx--data-table--compact .bx--table-column-checkbox{padding-top:0;padding-bottom:0}.bx--data-table.bx--data-table--compact .bx--table-column-checkbox .bx--checkbox-label{height:1.4375rem;min-height:1.4375rem}.bx--data-table--xs thead tr,.bx--data-table--xs tbody tr,.bx--data-table--xs tbody tr th{height:1.5rem}.bx--data-table--xs .bx--table-header-label,.bx--data-table--xs td,.bx--data-table--xs tbody tr th{padding-top:.125rem;padding-bottom:.125rem}.bx--data-table--xs .bx--overflow-menu{width:2rem;height:calc(100% + 1px)}.bx--data-table.bx--data-table--xs .bx--table-column-checkbox{padding-top:0;padding-bottom:0}.bx--data-table.bx--data-table--xs .bx--table-column-checkbox .bx--checkbox-label{height:1.4375rem;min-height:1.4375rem}.bx--data-table--short thead tr,.bx--data-table--short tbody tr,.bx--data-table--short tbody tr th{height:2rem}.bx--data-table--short .bx--table-header-label{padding-top:.4375rem;padding-bottom:.4375rem}.bx--data-table--short td,.bx--data-table--short tbody tr th{padding-top:.4375rem;padding-bottom:.375rem}.bx--data-table.bx--data-table--short .bx--table-column-checkbox{padding-top:.1875rem;padding-bottom:.1875rem}.bx--data-table--short .bx--overflow-menu{height:100%}.bx--data-table--sm thead tr,.bx--data-table--sm tbody tr,.bx--data-table--sm tbody tr th{height:2rem}.bx--data-table--sm .bx--table-header-label{padding-top:.4375rem;padding-bottom:.4375rem}.bx--data-table--sm td,.bx--data-table--sm tbody tr th{padding-top:.4375rem;padding-bottom:.375rem}.bx--data-table.bx--data-table--sm .bx--table-column-checkbox{padding-top:.1875rem;padding-bottom:.1875rem}.bx--data-table--sm .bx--overflow-menu{height:calc(100% + 1px)}.bx--data-table--md thead tr,.bx--data-table--md tbody tr,.bx--data-table--md tbody tr th{height:2.5rem}.bx--data-table--md .bx--table-header-label{padding-top:.4375rem;padding-bottom:.4375rem}.bx--data-table--md td,.bx--data-table--md tbody tr th{padding-top:.4375rem;padding-bottom:.375rem}.bx--data-table.bx--data-table--md .bx--table-column-checkbox,.bx--data-table--md .bx--table-column-menu{padding-top:.1875rem;padding-bottom:.1875rem}.bx--data-table--tall thead tr,.bx--data-table--tall tbody tr,.bx--data-table--tall tbody tr th{height:4rem}.bx--data-table--tall .bx--table-header-label{padding-top:var(--cds-spacing-05, 1rem);padding-bottom:var(--cds-spacing-05, 1rem)}.bx--data-table--tall td,.bx--data-table--tall tbody tr th{padding-top:1rem}.bx--data-table--tall th,.bx--data-table--tall td{vertical-align:top}.bx--data-table--tall .bx--data-table--cell-secondary-text{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px)}.bx--data-table--xl thead tr,.bx--data-table--xl tbody tr,.bx--data-table--xl tbody tr th{height:4rem}.bx--data-table--xl .bx--table-header-label{padding-top:var(--cds-spacing-05, 1rem);padding-bottom:var(--cds-spacing-05, 1rem)}.bx--data-table--xl td,.bx--data-table--xl tbody tr th{padding-top:1rem}.bx--data-table--xl th,.bx--data-table--xl td{vertical-align:top}.bx--data-table--xl .bx--data-table--cell-secondary-text{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px)}.bx--data-table--static{width:auto}.bx--data-table-container--static{width:-moz-fit-content;width:fit-content}.bx--data-table_inner-container{background-color:var(--cds-layer-accent, #e0e0e0);transform:translateZ(0)}.bx--data-table--sticky-header{display:block;overflow-y:scroll}.bx--data-table--sticky-header thead,.bx--data-table--sticky-header tbody,.bx--data-table--sticky-header tr,.bx--data-table--sticky-header th,.bx--data-table--sticky-header td{display:flex}.bx--data-table--sticky-header thead{position:sticky;z-index:1;top:0;overflow:scroll;width:100%;-ms-overflow-style:none;will-change:transform}.bx--data-table--sticky-header thead tr th{border-bottom:1px solid var(--cds-layer-active, #c6c6c6)}.bx--data-table--sticky-header tbody{flex-direction:column;-ms-overflow-style:none;overflow-x:scroll;will-change:transform}.bx--data-table--sticky-header tr.bx--parent-row.bx--expandable-row{height:auto;min-height:3rem}.bx--data-table--sticky-header tr.bx--expandable-row:not(.bx--parent-row){height:auto}.bx--data-table--sticky-header .bx--table-expand{max-width:3rem}.bx--data-table--sticky-header thead .bx--table-expand{align-items:center}.bx--data-table--sticky-header .bx--parent-row{min-height:3rem}.bx--data-table--sticky-header:not(.bx--data-table--compact):not(.bx--data-table--xs):not(.bx--data-table--tall):not(.bx--data-table--xl):not(.bx--data-table--short):not(.bx--data-table--sm) td:not(.bx--table-column-menu):not(.bx--table-column-checkbox){padding-top:.875rem}.bx--data-table--sticky-header tr.bx--parent-row.bx--expandable-row:hover+tr[data-child-row] td{border-top:1px solid var(--cds-layer-hover, #e5e5e5)}.bx--data-table--sticky-header tr.bx--expandable-row:last-of-type{overflow:hidden}.bx--data-table--sticky-header tr.bx--data-table--selected:first-of-type td{border-top:none}.bx--data-table--sticky-header thead th.bx--table-column-checkbox,.bx--data-table--sticky-header tbody tr td.bx--table-column-checkbox{width:2.25rem;min-width:2.25rem;align-items:center}.bx--data-table--sticky-header.bx--data-table--tall thead th.bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--xl thead th.bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--tall td.bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--xl td.bx--table-column-checkbox{align-items:flex-start}.bx--data-table--sticky-header th.bx--table-column-checkbox~th:last-of-type:empty{max-width:4rem}.bx--data-table--sticky-header th:empty:not(.bx--table-expand){max-width:2.25rem}.bx--data-table--sticky-header td.bx--table-column-menu{height:auto;align-items:center;padding-top:0}.bx--data-table--sticky-header thead::-webkit-scrollbar,.bx--data-table--sticky-header tbody::-webkit-scrollbar{display:none}@-moz-document url-prefix(){.bx--data-table--sticky-header thead,.bx--data-table--sticky-header tbody{scrollbar-width:none}}.bx--data-table--sticky-header tbody tr:last-of-type{border-bottom:0}.bx--data-table--sticky-header th:not(.bx--table-column-checkbox):not(.bx--table-column-menu):not(.bx--table-expand-v2):not(.bx--table-column-icon),.bx--data-table--sticky-header td:not(.bx--table-column-checkbox):not(.bx--table-column-menu):not(.bx--table-expand-v2):not(.bx--table-column-icon){width:100%;min-width:0}.bx--data-table--sticky-header.bx--data-table--compact tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--xs tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--short tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--sm tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--tall tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--xl tr:not(.bx--expandable-row){height:auto}.bx--data-table--sticky-header.bx--data-table--compact tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--xs tr:not(.bx--expandable-row){min-height:1.5rem}.bx--data-table--sticky-header.bx--data-table--short tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--sm tr:not(.bx--expandable-row){min-height:2rem}.bx--data-table--sticky-header.bx--data-table--tall tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--xl tr:not(.bx--expandable-row){min-height:4rem}.bx--data-table--sticky-header.bx--data-table--compact tr td.bx--table-expand,.bx--data-table--sticky-header.bx--data-table--xs tr td.bx--table-expand{padding-top:.25rem}.bx--data-table--sticky-header.bx--data-table--short tr td.bx--table-expand,.bx--data-table--sticky-header.bx--data-table--sm tr td.bx--table-expand{padding-top:.5rem}.bx--data-table--sticky-header .bx--table-header-label{display:block;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:calc(100% - 10px);padding-top:.9375rem;padding-bottom:1rem;overflow-y:hidden}.bx--data-table--sticky-header.bx--data-table--compact th .bx--table-header-label,.bx--data-table--sticky-header.bx--data-table--xs th .bx--table-header-label{padding-top:.1875rem;padding-bottom:0}.bx--data-table--sticky-header.bx--data-table--short th .bx--table-header-label,.bx--data-table--sticky-header.bx--data-table--sm th .bx--table-header-label{padding-top:.5rem;padding-bottom:0}.bx--data-table--sticky-header.bx--data-table--tall th .bx--table-header-label,.bx--data-table--sticky-header.bx--data-table--xl th .bx--table-header-label{padding-top:1rem}.bx--data-table--sticky-header.bx--data-table--tall th.bx--table-expand,.bx--data-table--sticky-header.bx--data-table--xl th.bx--table-expand{display:flex;align-items:flex-start}.bx--data-table--sticky-header.bx--data-table--compact tr.bx--parent-row .bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--short tr.bx--parent-row .bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--xs tr.bx--parent-row .bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--sm tr.bx--parent-row .bx--table-column-checkbox{align-items:flex-start}.bx--data-table--max-width{max-width:100%}.bx--data-table--sticky-header{max-height:18.75rem}.bx--data-table .bx--form-item.bx--checkbox-wrapper:last-of-type{margin:0}.bx--data-table--short .bx--form-item.bx--checkbox-wrapper:last-of-type,.bx--data-table--compact .bx--form-item.bx--checkbox-wrapper:last-of-type,.bx--data-table--xs .bx--form-item.bx--checkbox-wrapper:last-of-type,.bx--data-table--sm .bx--form-item.bx--checkbox-wrapper:last-of-type{margin:-.1875rem 0}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--data-table-content{outline:1px solid rgba(0,0,0,0)}}.bx--data-table tr.bx--parent-row:first-of-type td{border-top:1px solid var(--cds-border-subtle, #e0e0e0)}.bx--expandable-row--hidden td{width:auto;padding:var(--cds-spacing-05, 1rem);border-top:0}tr.bx--parent-row:not(.bx--expandable-row)+tr[data-child-row]{height:0;transition:height .15s cubic-bezier(.2,0,.38,.9)}tr.bx--parent-row:not(.bx--expandable-row)+tr[data-child-row] td{padding-top:0;padding-bottom:0;border:0;background-color:var(--cds-layer-hover, #e5e5e5);transition:padding .15s cubic-bezier(.2,0,.38,.9),background-color .15s cubic-bezier(.2,0,.38,.9)}tr.bx--parent-row:not(.bx--expandable-row)+tr[data-child-row] td .bx--child-row-inner-container{overflow:hidden;max-height:0}tr.bx--parent-row.bx--expandable-row+tr[data-child-row]{transition:height .15s cubic-bezier(.2,0,.38,.9)}tr.bx--parent-row.bx--expandable-row+tr[data-child-row] td{padding-left:4rem;border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);transition:padding-bottom .11s cubic-bezier(.2,0,.38,.9),transform .11s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9)}tr.bx--parent-row.bx--expandable-row+tr[data-child-row] td .bx--child-row-inner-container{max-height:100%}.bx--parent-row.bx--expandable-row>td,.bx--parent-row.bx--expandable-row+tr[data-child-row]>td{border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);box-shadow:0 1px var(--cds-border-subtle, #e0e0e0)}.bx--parent-row:not(.bx--expandable-row)+tr[data-child-row]>td{box-shadow:none}.bx--parent-row.bx--expandable-row>td:first-of-type{box-shadow:none}tr.bx--parent-row:not(.bx--expandable-row) td,tr.bx--parent-row.bx--expandable-row td,tr.bx--parent-row.bx--expandable-row{transition:height .24s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9)}tr.bx--parent-row:not(.bx--expandable-row):first-of-type:hover td{border-top:1px solid var(--cds-border-subtle, #e0e0e0);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0)}tr.bx--parent-row.bx--expandable-row:hover td{border-top:1px solid var(--cds-border-subtle, #e0e0e0);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background-color:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}tr.bx--parent-row.bx--expandable-row:hover td:first-of-type{border-bottom:1px solid var(--cds-layer-hover, #e5e5e5)}tr.bx--parent-row.bx--expandable-row:hover+tr[data-child-row] td{border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background-color:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}tr.bx--expandable-row--hover+tr[data-child-row] td{border-bottom:1px solid var(--cds-border-subtle, #e0e0e0)}tr.bx--expandable-row--hover{background-color:var(--cds-layer-hover, #e5e5e5)}tr.bx--expandable-row--hover td{border-top:1px solid var(--cds-border-subtle, #e0e0e0);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background-color:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}tr.bx--parent-row.bx--expandable-row.bx--expandable-row--hover td:first-of-type{border-bottom:1px solid rgba(0,0,0,0)}.bx--data-table td.bx--table-expand{border-bottom:1px solid var(--cds-border-subtle, #e0e0e0)}.bx--data-table th.bx--table-expand+.bx--table-column-checkbox,.bx--data-table td.bx--table-expand+.bx--table-column-checkbox{padding-right:.375rem;padding-left:.375rem}.bx--data-table th.bx--table-expand+.bx--table-column-checkbox+th,.bx--data-table td.bx--table-expand+.bx--table-column-checkbox+td{padding-left:.5rem}.bx--data-table td.bx--table-expand,.bx--data-table th.bx--table-expand{padding:.5rem;padding-right:0}.bx--data-table td.bx--table-expand[data-previous-value=collapsed]{border-bottom:1px solid rgba(0,0,0,0)}.bx--table-expand[data-previous-value=collapsed] .bx--table-expand__svg{transform:rotate(270deg);transition:transform .15s cubic-bezier(.2,0,.38,.9)}.bx--table-expand__button{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;display:inline-flex;width:100%;height:calc(100% + 1px);align-items:center;justify-content:center;padding:0 .5rem;vertical-align:inherit}.bx--table-expand__button::-moz-focus-inner{border:0}.bx--table-expand__button:focus{box-shadow:inset 0 0 0 2px var(--cds-focus, #0f62fe);outline:none}.bx--table-expand__svg{fill:var(--cds-ui-05, #161616);transform:rotate(90deg);transition:transform .15s cubic-bezier(.2,0,.38,.9)}.bx--data-table--tall .bx--table-expand__button,.bx--data-table--xl .bx--table-expand__button{width:2rem;padding:0}tr.bx--parent-row.bx--expandable-row td.bx--table-expand+td:after{position:absolute;bottom:-.0625rem;left:0;width:.5rem;height:.0625rem;background:var(--cds-layer-accent, #e0e0e0);content:""}tr.bx--parent-row.bx--expandable-row:hover td.bx--table-expand+td:after,tr.bx--parent-row.bx--expandable-row.bx--expandable-row--hover td.bx--table-expand+td:after{background:var(--cds-layer-hover, #e5e5e5)}tr.bx--parent-row.bx--data-table--selected td.bx--table-expand+td:after{display:none}.bx--data-table--zebra tbody tr[data-parent-row]:nth-child(4n+3) td,.bx--data-table--zebra tbody tr[data-child-row]:nth-child(4n+4) td{border-bottom:1px solid var(--cds-layer, #f4f4f4)}.bx--data-table--zebra tbody tr[data-parent-row]:nth-child(4n+1) td,.bx--data-table--zebra tbody tr[data-child-row]:nth-child(4n+2) td{border-top:1px solid var(--cds-ui-02, #ffffff);border-bottom:1px solid var(--cds-ui-02, #ffffff);background-color:var(--cds-ui-02, #ffffff)}.bx--data-table--zebra tr.bx--parent-row td,.bx--data-table--zebra tr.bx--parent-row.bx--expandable-row+tr[data-child-row] td{transition:transform .15s cubic-bezier(.2,0,.38,.9),border-bottom .15s cubic-bezier(.2,0,.38,.9),border-top .15s cubic-bezier(.2,0,.38,.9)}.bx--data-table--zebra tbody tr[data-parent-row]:hover td,.bx--data-table--zebra tbody tr[data-parent-row]:hover+tr[data-child-row] td,.bx--data-table--zebra tbody tr[data-child-row]:hover td{border-top:1px solid var(--cds-layer-hover, #e5e5e5);border-bottom:1px solid var(--cds-layer-hover, #e5e5e5);background-color:var(--cds-layer-hover, #e5e5e5)}.bx--data-table--zebra tr.bx--parent-row.bx--expandable-row.bx--expandable-row--hover td{border-top:1px solid var(--cds-layer-hover, #e5e5e5);border-bottom:1px solid var(--cds-layer-hover, #e5e5e5);background:var(--cds-layer-hover, #e5e5e5)}tr.bx--parent-row.bx--data-table--selected:first-of-type td{border-top:1px solid var(--cds-layer-active, #c6c6c6);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background:var(--cds-layer-selected, #e0e0e0);box-shadow:0 1px var(--cds-layer-active, #c6c6c6)}tr.bx--parent-row.bx--data-table--selected td{border-bottom:1px solid rgba(0,0,0,0);background:var(--cds-layer-selected, #e0e0e0);box-shadow:0 1px var(--cds-layer-active, #c6c6c6);color:var(--cds-text-primary, #161616)}tr.bx--parent-row.bx--data-table--selected:last-of-type td{border-bottom:1px solid rgba(0,0,0,0);background:var(--cds-layer-selected, #e0e0e0);box-shadow:0 1px var(--cds-border-subtle, #e0e0e0)}tr.bx--parent-row.bx--data-table--selected:not(.bx--expandable-row):hover td{border-top:1px solid var(--cds-layer-selected-hover, #cacaca);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background:var(--cds-layer-selected-hover, #cacaca);box-shadow:0 1px var(--cds-layer-selected-hover, #cacaca)}tr.bx--parent-row.bx--data-table--selected.bx--expandable-row td,tr.bx--parent-row.bx--data-table--selected.bx--expandable-row td:first-of-type{border-bottom:1px solid rgba(0,0,0,0);box-shadow:0 1px var(--cds-layer-selected, #e0e0e0)}tr.bx--parent-row.bx--data-table--selected.bx--expandable-row:hover td,tr.bx--parent-row.bx--data-table--selected.bx--expandable-row:hover td:first-of-type,tr.bx--parent-row.bx--data-table--selected.bx--expandable-row--hover td,tr.bx--parent-row.bx--data-table--selected.bx--expandable-row--hover td:first-of-type{border-top:1px solid var(--cds-layer-selected-hover, #cacaca);border-bottom:1px solid rgba(0,0,0,0);background:var(--cds-layer-selected-hover, #cacaca);box-shadow:0 1px var(--cds-layer-selected-hover, #cacaca)}tr.bx--parent-row.bx--data-table--selected.bx--expandable-row+tr[data-child-row] td{border-top:1px solid var(--cds-layer-active, #c6c6c6);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background-color:var(--cds-layer-hover, #e5e5e5);box-shadow:0 1px var(--cds-layer-active, #c6c6c6);color:var(--cds-text-primary, #161616)}tr.bx--parent-row.bx--data-table--selected.bx--expandable-row+tr[data-child-row]:last-of-type td{padding-bottom:1.5rem;box-shadow:inset 0 -1px var(--cds-layer-active, #c6c6c6)}tr.bx--parent-row.bx--data-table--selected.bx--expandable-row:hover+tr[data-child-row] td,tr.bx--parent-row.bx--data-table--selected.bx--expandable-row--hover+tr[data-child-row] td{background:var(--cds-layer-selected, #e0e0e0)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--table-expand__button:focus .bx--table-expand__svg{color:Highlight;outline:1px solid Highlight}.bx--table-expand__svg{fill:ButtonText}}.bx--data-table--sort th,.bx--data-table th[aria-sort]{height:var(--cds-spacing-09, 3rem);padding:0;border-top:none;border-bottom:none}.bx--table-sort{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;display:flex;width:100%;min-height:100%;align-items:center;justify-content:space-between;padding-left:var(--cds-spacing-05, 1rem);background-color:var(--cds-layer-accent, #e0e0e0);color:var(--cds-text-primary, #161616);font:inherit;line-height:1;text-align:left;transition:background-color 70ms cubic-bezier(0,0,.38,.9),outline 70ms cubic-bezier(0,0,.38,.9)}.bx--table-sort::-moz-focus-inner{border:0}.bx--table-sort:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--table-sort:focus{outline-style:dotted}}.bx--table-sort:hover{background:var(--cds-hover-selected-ui, #cacaca)}.bx--table-sort:focus svg,.bx--table-sort:hover svg{opacity:1}.bx--data-table.bx--data-table--sort th>.bx--table-header-label{padding-right:var(--cds-spacing-05, 1rem);padding-left:var(--cds-spacing-05, 1rem)}th .bx--table-sort__flex{display:flex;width:100%;height:100%;min-height:3rem;align-items:center;justify-content:space-between}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.bx--data-table--sort:not(.bx--data-table--compact):not(.bx--data-table--short):not(.bx--data-table--tall):not(.bx--data-table--xs):not(.bx--data-table--sm):not(.bx--data-table--md):not(.bx--data-table--xl) th .bx--table-sort__flex{height:2.99rem}}.bx--data-table--compact.bx--data-table--sort th .bx--table-sort__flex,.bx--data-table--xs.bx--data-table--sort th .bx--table-sort__flex{min-height:1.5rem}.bx--data-table--short.bx--data-table--sort th .bx--table-sort__flex,.bx--data-table--sm.bx--data-table--sort th .bx--table-sort__flex{min-height:2rem}.bx--data-table--md.bx--data-table--sort th .bx--table-sort__flex{min-height:2.5rem}.bx--data-table--tall.bx--data-table--sort th .bx--table-sort__flex,.bx--data-table--xl.bx--data-table--sort th .bx--table-sort__flex{min-height:4rem;align-items:flex-start}.bx--table-sort .bx--table-sort__icon-inactive{display:block}.bx--table-sort .bx--table-sort__icon{display:none}.bx--table-sort__icon-unsorted{width:1.25rem;min-width:var(--cds-spacing-05, 1rem);margin-right:var(--cds-spacing-03, .5rem);margin-left:var(--cds-spacing-03, .5rem);fill:var(--cds-icon-primary, #161616);opacity:0}.bx--table-sort.bx--table-sort--active{background:var(--cds-hover-selected-ui, #cacaca)}.bx--table-sort.bx--table-sort--active .bx--table-sort__icon-unsorted{display:none}.bx--table-sort.bx--table-sort--active .bx--table-sort__icon{display:block;opacity:1}.bx--table-sort--ascending .bx--table-sort__icon{transform:rotate(180deg)}.bx--table-sort__icon{width:1.25rem;min-width:var(--cds-spacing-05, 1rem);margin-right:var(--cds-spacing-03, .5rem);margin-left:var(--cds-spacing-03, .5rem);fill:var(--cds-icon-primary, #161616);opacity:1;transform:rotate(0);transition:transform .11s cubic-bezier(.2,0,.38,.9)}.bx--data-table--compact.bx--data-table--sort th,.bx--data-table--xs.bx--data-table--sort th{height:1.5rem}.bx--data-table--short.bx--data-table--sort th,.bx--data-table--sm.bx--data-table--sort th{height:2rem}.bx--data-table--md.bx--data-table--sort th{height:2.5rem}.bx--data-table--tall.bx--data-table--sort th,.bx--data-table--xl.bx--data-table--sort th{height:4rem}.bx--data-table--tall.bx--data-table--sort th .bx--table-sort,.bx--data-table--xl.bx--data-table--sort th .bx--table-sort{display:inline-block;height:4rem}.bx--data-table--tall .bx--table-sort__icon-unsorted,.bx--data-table--tall .bx--table-sort__icon,.bx--data-table--xl .bx--table-sort__icon-unsorted,.bx--data-table--xl .bx--table-sort__icon{margin-top:.8125rem}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--table-sort__icon,.bx--table-sort__icon-unsorted{fill:ButtonText}}.bx--inline-edit-label{display:flex;align-items:center;justify-content:space-between}.bx--inline-edit-label:hover .bx--inline-edit-label__icon{opacity:1}.bx--inline-edit-label--inactive{display:none}.bx--inline-edit-label__action{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer}.bx--inline-edit-label__action::-moz-focus-inner{border:0}.bx--inline-edit-label__action:hover{cursor:pointer}.bx--inline-edit-label__action:focus{outline:1px solid var(--cds-focus, #0f62fe);padding:var(--cds-spacing-01, .125rem)}@media screen and (prefers-contrast){.bx--inline-edit-label__action:focus{outline-style:dotted}}.bx--inline-edit-label__action:focus .bx--inline-edit-label__icon{width:auto;opacity:1}.bx--inline-edit-label__icon{fill:var(--cds-icon-primary, #161616);opacity:0}.bx--inline-edit-input{display:none}.bx--inline-edit-input--active{display:block;margin-left:-.75rem}.bx--inline-edit-input--active input{padding-left:var(--cds-spacing-04, .75rem)}.bx--data-table.bx--skeleton th{padding-left:1rem;vertical-align:middle}.bx--data-table.bx--skeleton th span,.bx--data-table.bx--skeleton td span{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;display:block;width:4rem;height:1rem}.bx--data-table.bx--skeleton th span:hover,.bx--data-table.bx--skeleton th span:focus,.bx--data-table.bx--skeleton th span:active,.bx--data-table.bx--skeleton td span:hover,.bx--data-table.bx--skeleton td span:focus,.bx--data-table.bx--skeleton td span:active{border:none;cursor:default;outline:none}.bx--data-table.bx--skeleton th span:before,.bx--data-table.bx--skeleton td span:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--data-table.bx--skeleton th span:before,.bx--data-table.bx--skeleton td span:before{animation:none}}.bx--data-table.bx--skeleton tr:hover td{border-color:var(--cds-border-subtle, #e0e0e0);background:rgba(0,0,0,0)}.bx--data-table.bx--skeleton tr:hover td:first-of-type,.bx--data-table.bx--skeleton tr:hover td:last-of-type{border-color:var(--cds-border-subtle, #e0e0e0)}.bx--data-table.bx--skeleton .bx--table-sort-v2{pointer-events:none}.bx--data-table.bx--skeleton th span{background:var(--cds-skeleton-element, #c6c6c6)}.bx--data-table.bx--skeleton th span:before{background:var(--cds-skeleton-background, #e5e5e5)}.bx--data-table-container.bx--skeleton .bx--data-table-header__title{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:7.5rem;height:1.5rem}.bx--data-table-container.bx--skeleton .bx--data-table-header__title:hover,.bx--data-table-container.bx--skeleton .bx--data-table-header__title:focus,.bx--data-table-container.bx--skeleton .bx--data-table-header__title:active{border:none;cursor:default;outline:none}.bx--data-table-container.bx--skeleton .bx--data-table-header__title:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--data-table-container.bx--skeleton .bx--data-table-header__title:before{animation:none}}.bx--data-table-container.bx--skeleton .bx--data-table-header__description{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:10rem;height:1rem;margin-top:var(--cds-spacing-03, .5rem)}.bx--data-table-container.bx--skeleton .bx--data-table-header__description:hover,.bx--data-table-container.bx--skeleton .bx--data-table-header__description:focus,.bx--data-table-container.bx--skeleton .bx--data-table-header__description:active{border:none;cursor:default;outline:none}.bx--data-table-container.bx--skeleton .bx--data-table-header__description:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--data-table-container.bx--skeleton .bx--data-table-header__description:before{animation:none}}@keyframes fpFadeInDown{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes fpSlideLeft{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}}@keyframes fpSlideLeftNew{0%{transform:translate3d(100%,0,0)}to{transform:translateZ(0)}}@keyframes fpSlideRight{0%{transform:translateZ(0)}to{transform:translate3d(100%,0,0)}}@keyframes fpSlideRightNew{0%{transform:translate3d(-100%,0,0)}to{transform:translateZ(0)}}@keyframes fpFadeOut{0%{opacity:1}to{opacity:0}}@keyframes fpFadeIn{0%{opacity:0}to{opacity:1}}.flatpickr-calendar{position:absolute;box-sizing:border-box;width:19.6875rem;max-height:0;padding:0;overflow:hidden;direction:ltr;text-align:center;border:0;border-radius:0;visibility:hidden;opacity:0;animation:none;touch-action:manipulation}.flatpickr-calendar.open,.flatpickr-calendar.inline{max-height:40rem;overflow:visible;visibility:inherit;opacity:1}.flatpickr-calendar.open{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;width:18rem;height:21rem;margin-top:-.125rem;padding:.25rem .25rem .5rem;overflow:hidden;background-color:var(--cds-ui-01, #f4f4f4);border:none}.flatpickr-calendar.open:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.flatpickr-calendar.open:focus{outline-style:dotted}}.flatpickr-calendar.animate.open{animation:fpFadeInDown .11s cubic-bezier(0,0,.38,.9)}.flatpickr-calendar.inline{position:relative;top:.125rem;display:block}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.hasWeeks{width:auto}.dayContainer{display:flex;flex-wrap:wrap;justify-content:space-around;height:15.375rem;padding:0;outline:0}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:2.5rem;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:focus{outline:0}.flatpickr-months{display:flex;justify-content:space-between;width:100%}.flatpickr-month{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);display:flex;align-items:center;height:2.5rem;color:var(--cds-text-01, #161616);line-height:1;text-align:center;background-color:#0000}.flatpickr-prev-month,.flatpickr-next-month{z-index:3;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;padding:0;line-height:16px;text-decoration:none;transform:scale(1);cursor:pointer;transition:background-color 70ms cubic-bezier(.2,0,.38,.9);fill:var(--cds-icon-01, #161616);-webkit-user-select:none;-moz-user-select:none;user-select:none}.flatpickr-prev-month:hover,.flatpickr-next-month:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.flatpickr-next-month.disabled svg,.flatpickr-prev-month.disabled svg{cursor:not-allowed;fill:var(--cds-ui-05, #161616)}.flatpickr-next-month.disabled:hover svg,.flatpickr-prev-month.disabled:hover svg{fill:var(--cds-ui-05, #161616)}.flatpickr-current-month{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);display:flex;align-items:center;justify-content:center;height:1.75rem;text-align:center}.flatpickr-current-month .cur-month{margin-right:.25rem;margin-left:.25rem}.flatpickr-current-month .cur-month:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.numInputWrapper{position:relative;width:3.75rem}.numInputWrapper:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.numInputWrapper .numInput{display:inline-block;width:100%;margin:0;padding:.25rem;color:var(--cds-text-01, #161616);font-weight:600;font-size:inherit;font-family:inherit;background-color:var(--cds-field-01, #f4f4f4);border:none;cursor:default;-moz-appearance:textfield}.numInputWrapper .numInput::-webkit-outer-spin-button,.numInputWrapper .numInput::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper .numInput:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.numInputWrapper .numInput:focus{outline-style:dotted}}.numInputWrapper .numInput[disabled],.numInputWrapper .numInput[disabled]:hover{color:var(--cds-disabled-02, #c6c6c6);background-color:var(--cds-ui-01, #f4f4f4);pointer-events:none}.numInputWrapper .arrowUp{top:.25rem;border-bottom:0}.numInputWrapper .arrowUp:after{border-bottom:.25rem solid var(--cds-icon-01, #161616)}.numInputWrapper .arrowDown{top:.6875rem}.numInputWrapper .arrowDown:after{border-top:.25rem solid var(--cds-icon-01, #161616)}.numInputWrapper .arrowUp,.numInputWrapper .arrowDown{position:absolute;left:2.6rem;width:.75rem;height:50%;padding:0 .25rem 0 .125rem;line-height:50%;border:none;cursor:pointer;opacity:0}.numInputWrapper .arrowUp:after,.numInputWrapper .arrowDown:after{position:absolute;top:33%;display:block;border-right:.25rem solid rgba(0,0,0,0);border-left:.25rem solid rgba(0,0,0,0);content:""}.numInputWrapper .arrowUp:hover:after,.numInputWrapper .arrowDown:hover:after{border-top-color:var(--cds-interactive-01, #0f62fe);border-bottom-color:var(--cds-interactive-01, #0f62fe)}.numInputWrapper .arrowUp:active:after,.numInputWrapper .arrowDown:active:after{border-top-color:var(--cds-interactive-04, #0f62fe);border-bottom-color:var(--cds-interactive-04, #0f62fe)}.numInput[disabled]~.arrowUp:after{border-bottom-color:var(--cds-disabled-02, #c6c6c6)}.numInput[disabled]~.arrowDown:after{border-top-color:var(--cds-disabled-02, #c6c6c6)}.numInputWrapper:hover .arrowUp,.numInputWrapper:hover .arrowDown{opacity:1}.numInputWrapper:hover .numInput[disabled]~.arrowUp,.numInputWrapper:hover .numInput[disabled]~.arrowDown{opacity:0}.flatpickr-weekdays{display:flex;align-items:center;height:2.5rem}.flatpickr-weekdaycontainer{display:flex;width:100%}.flatpickr-weekday{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);flex:1;color:var(--cds-text-01, #161616);cursor:default}.flatpickr-days:focus{outline:0}.flatpickr-calendar.animate .dayContainer.slideLeft{animation:fpFadeOut .4s cubic-bezier(.23,1,.32,1),fpSlideLeft .4s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.animate .dayContainer.slideLeft,.flatpickr-calendar.animate .dayContainer.slideLeftNew{transform:translate3d(-100%,0,0)}.flatpickr-calendar.animate .dayContainer.slideLeftNew{animation:fpFadeIn .4s cubic-bezier(.23,1,.32,1),fpSlideLeft .4s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.animate .dayContainer.slideRight{transform:translate3d(100%,0,0);animation:fpFadeOut .4s cubic-bezier(.23,1,.32,1),fpSlideRight .4s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.animate .dayContainer.slideRightNew{animation:fpFadeIn .4s cubic-bezier(.23,1,.32,1),fpSlideRightNew .4s cubic-bezier(.23,1,.32,1)}.flatpickr-day{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;color:var(--cds-text-01, #161616);cursor:pointer;transition:all 70ms cubic-bezier(.2,0,.38,.9)}.flatpickr-day:hover{background:var(--cds-hover-ui, #e5e5e5)}.flatpickr-day:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;outline-color:var(--cds-interactive-01, #0f62fe)}@media screen and (prefers-contrast){.flatpickr-day:focus{outline-style:dotted}}.nextMonthDay,.prevMonthDay{color:var(--cds-text-05, #6f6f6f)}.flatpickr-day.today{position:relative;color:var(--cds-link-01, #0f62fe);font-weight:600}.flatpickr-day.today:after{position:absolute;bottom:.4375rem;left:50%;display:block;width:.25rem;height:.25rem;background-color:var(--cds-link-01, #0f62fe);transform:translate(-50%);content:""}.flatpickr-day.today.no-border{border:none}.flatpickr-day.today.selected{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.flatpickr-day.today.selected{outline-style:dotted}}.flatpickr-day.today.selected:after{display:none}.flatpickr-day.inRange{color:var(--cds-text-01, #161616);background-color:var(--cds-highlight, #d0e2ff)}.flatpickr-day.selected{color:var(--cds-text-04, #ffffff);background-color:var(--cds-interactive-01, #0f62fe)}.flatpickr-day.selected:focus{outline:.0625rem solid var(--cds-ui-02, #ffffff);outline-offset:-.1875rem}.flatpickr-day.startRange.selected{z-index:2;box-shadow:none}.flatpickr-day.startRange.inRange:not(.selected),.flatpickr-day.endRange.inRange{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;z-index:3;background:var(--cds-ui-01, #f4f4f4)}@media screen and (prefers-contrast){.flatpickr-day.startRange.inRange:not(.selected),.flatpickr-day.endRange.inRange{outline-style:dotted}}.flatpickr-day.endRange:hover{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;color:var(--cds-text-01, #161616);background:var(--cds-ui-01, #f4f4f4)}@media screen and (prefers-contrast){.flatpickr-day.endRange:hover{outline-style:dotted}}.flatpickr-day.endRange.inRange.selected{color:var(--cds-text-04, #ffffff);background:var(--cds-interactive-01, #0f62fe)}.flatpickr-day.flatpickr-disabled{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.flatpickr-day.flatpickr-disabled:hover{background-color:#0000}.flatpickr-input[readonly]{cursor:pointer}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.flatpickr-prev-month,.flatpickr-next-month{fill:ButtonText}.flatpickr-day.selected{color:Highlight;outline:1px solid Highlight;outline-style:dotted}.flatpickr-day.today,.flatpickr-day.inRange{color:Highlight}.flatpickr-calendar{outline:1px solid rgba(0,0,0,0)}}.bx--date-picker{display:flex}.bx--date-picker--light .bx--date-picker__input{background:var(--cds-field-02, #ffffff)}.bx--date-picker~.bx--label{order:1}.bx--date-picker-container{position:relative;display:flex;flex-direction:column;justify-content:space-between}.bx--date-picker-input__wrapper{position:relative;display:flex;align-items:center}.bx--date-picker.bx--date-picker--simple .bx--date-picker__input,.bx--date-picker.bx--date-picker--simple .bx--label{width:7.5rem}.bx--date-picker.bx--date-picker--simple .bx--date-picker-input__wrapper--invalid .bx--date-picker__input,.bx--date-picker.bx--date-picker--simple .bx--date-picker-input__wrapper--invalid~.bx--form-requirement,.bx--date-picker.bx--date-picker--simple .bx--date-picker-input__wrapper--warn .bx--date-picker__input,.bx--date-picker.bx--date-picker--simple .bx--date-picker-input__wrapper--warn~.bx--form-requirement{width:9.5rem}.bx--date-picker.bx--date-picker--simple.bx--date-picker--short .bx--date-picker__input{width:5.7rem}.bx--date-picker.bx--date-picker--single .bx--date-picker__input{width:18rem}.bx--date-picker .bx--date-picker-input__wrapper--warn~.bx--form-requirement{color:var(--cds-text-primary, #161616)}.bx--date-picker__input{font-family:var(--cds-code-02-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-02-font-size, .875rem);font-weight:var(--cds-code-02-font-weight, 400);line-height:var(--cds-code-02-line-height, 1.42857);letter-spacing:var(--cds-code-02-letter-spacing, .32px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:relative;display:block;height:2.5rem;padding:0 1rem;border:none;border-bottom:1px solid var(--cds-border-strong, #8d8d8d);background-color:var(--cds-field, #f4f4f4);color:var(--cds-text-primary, #161616);transition:70ms cubic-bezier(.2,0,.38,.9) all}.bx--date-picker__input:focus,.bx--date-picker__input.bx--focused{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--date-picker__input:focus,.bx--date-picker__input.bx--focused{outline-style:dotted}}.bx--date-picker__input:disabled{border-bottom:1px solid rgba(0,0,0,0);background-color:var(--cds-field, #f4f4f4);color:var(--cds-text-disabled, #c6c6c6);cursor:not-allowed}.bx--date-picker__input:disabled::-moz-placeholder{color:var(--cds-text-disabled, #c6c6c6)}.bx--date-picker__input:disabled::placeholder{color:var(--cds-text-disabled, #c6c6c6)}.bx--date-picker__input:disabled:hover{border-bottom:1px solid rgba(0,0,0,0)}.bx--date-picker__input::-moz-placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--date-picker__input::placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--date-picker__input--xl,.bx--date-picker__input--lg{height:3rem}.bx--date-picker__input--sm{height:2rem}.bx--date-picker__icon{position:absolute;z-index:1;top:50%;right:1rem;fill:var(--cds-icon-primary, #161616);pointer-events:none;transform:translateY(-50%)}.bx--date-picker__icon--invalid,.bx--date-picker__icon--warn{cursor:auto}.bx--date-picker__icon--warn{fill:var(--cds-support-warning, #f1c21b)}.bx--date-picker__icon--warn path:first-of-type{fill:#000;opacity:1}.bx--date-picker__icon--invalid{fill:var(--cds-support-error, #da1e28)}.bx--date-picker__icon~.bx--date-picker__input{padding-right:3rem}.bx--date-picker__input:disabled~.bx--date-picker__icon{cursor:not-allowed;fill:var(--cds-icon-disabled, #c6c6c6)}.bx--date-picker--range>.bx--date-picker-container:first-child{margin-right:.0625rem}.bx--date-picker--range .bx--date-picker-container,.bx--date-picker--range .bx--date-picker__input{width:8.96875rem}.bx--date-picker.bx--skeleton input,.bx--date-picker__input.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:100%}.bx--date-picker.bx--skeleton input:hover,.bx--date-picker.bx--skeleton input:focus,.bx--date-picker.bx--skeleton input:active,.bx--date-picker__input.bx--skeleton:hover,.bx--date-picker__input.bx--skeleton:focus,.bx--date-picker__input.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--date-picker.bx--skeleton input:before,.bx--date-picker__input.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--date-picker.bx--skeleton input:before,.bx--date-picker__input.bx--skeleton:before{animation:none}}.bx--date-picker.bx--skeleton input::-moz-placeholder,.bx--date-picker__input.bx--skeleton::-moz-placeholder{color:#0000}.bx--date-picker.bx--skeleton input::placeholder,.bx--date-picker__input.bx--skeleton::placeholder{color:#0000}.bx--date-picker.bx--skeleton .bx--label{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:4.6875rem;height:.875rem}.bx--date-picker.bx--skeleton .bx--label:hover,.bx--date-picker.bx--skeleton .bx--label:focus,.bx--date-picker.bx--skeleton .bx--label:active{border:none;cursor:default;outline:none}.bx--date-picker.bx--skeleton .bx--label:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--date-picker.bx--skeleton .bx--label:before{animation:none}}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--date-picker__icon{fill:ButtonText}}.bx--dropdown__wrapper--inline{display:inline-grid;align-items:center;grid-gap:0 1.5rem;grid-template:auto auto/auto min-content}.bx--dropdown__wrapper--inline .bx--label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}.bx--dropdown__wrapper--inline .bx--label,.bx--dropdown__wrapper--inline .bx--form__helper-text,.bx--dropdown__wrapper--inline .bx--form-requirement{margin:0}.bx--dropdown__wrapper--inline .bx--form-requirement{grid-column:2}.bx--dropdown{outline-offset:-2px;position:relative;display:block;width:100%;height:2.5rem;border:none;border-bottom:1px solid var(--cds-border-strong, #8d8d8d);background-color:var(--cds-field, #f4f4f4);color:var(--cds-text-primary, #161616);cursor:pointer;list-style:none;outline:2px solid rgba(0,0,0,0);transition:background-color 70ms cubic-bezier(.2,0,.38,.9)}.bx--dropdown:hover{background-color:var(--cds-field-hover, #e5e5e5)}.bx--dropdown .bx--list-box__field{text-align:left}.bx--dropdown--xl,.bx--dropdown--lg{height:3rem;max-height:3rem}.bx--dropdown--xl .bx--dropdown__arrow,.bx--dropdown--lg .bx--dropdown__arrow{top:1rem}.bx--dropdown--sm{height:2rem;max-height:2rem}.bx--dropdown--sm .bx--dropdown__arrow{top:.5rem}.bx--dropdown--open{border-bottom-color:var(--cds-border-subtle, #e0e0e0)}.bx--dropdown--invalid{outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px}@media screen and (prefers-contrast){.bx--dropdown--invalid{outline-style:dotted}}.bx--dropdown--invalid .bx--dropdown-text{padding-right:3.5rem}.bx--dropdown--invalid+.bx--form-requirement{display:inline-block;max-height:12.5rem;color:var(--cds-text-error, #da1e28)}.bx--dropdown__invalid-icon{position:absolute;top:50%;right:var(--cds-spacing-08, 2.5rem);fill:var(--cds-support-error, #da1e28);transform:translateY(-50%)}.bx--dropdown--open:hover{background-color:var(--cds-field, #f4f4f4)}.bx--dropdown--open:focus{outline:1px solid rgba(0,0,0,0)}.bx--dropdown--open .bx--dropdown-list{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));max-height:13.75rem;transition:max-height .11s cubic-bezier(0,0,.38,.9)}.bx--dropdown--light{background-color:var(--cds-field-02, #ffffff)}.bx--dropdown--light:hover{background-color:var(--cds-hover-light-ui, #e5e5e5)}.bx--dropdown--up .bx--dropdown-list{bottom:2rem}.bx--dropdown__arrow{position:absolute;top:.8125rem;right:1rem;fill:var(--cds-icon-primary, #161616);pointer-events:none;transform-origin:50% 45%;transition:transform .11s cubic-bezier(.2,0,.38,.9)}button.bx--dropdown-text{width:100%;border:none;background:none;color:var(--cds-text-primary, #161616);text-align:left}button.bx--dropdown-text:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){button.bx--dropdown-text:focus{outline-style:dotted}}.bx--dropdown-text{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:block;overflow:hidden;height:calc(100% + 1px);padding-right:2.625rem;padding-left:1rem;text-overflow:ellipsis;white-space:nowrap}.bx--dropdown-list{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:absolute;z-index:9100;display:flex;width:100%;max-height:0;flex-direction:column;background-color:var(--cds-layer, #f4f4f4);list-style:none;overflow-x:hidden;overflow-y:auto;transition:max-height .11s cubic-bezier(.2,0,.38,.9)}.bx--dropdown--light .bx--dropdown-list{background-color:var(--cds-field-02, #ffffff)}.bx--dropdown:not(.bx--dropdown--open) .bx--dropdown-item{visibility:hidden}.bx--dropdown-item{position:relative;opacity:0;transition:visibility 70ms cubic-bezier(.2,0,.38,.9),opacity 70ms cubic-bezier(.2,0,.38,.9),background-color 70ms cubic-bezier(.2,0,.38,.9);visibility:inherit}.bx--dropdown-item:hover{background-color:var(--cds-layer-hover, #e5e5e5)}.bx--dropdown-item:hover+.bx--dropdown-item .bx--dropdown-link{border-color:#0000}.bx--dropdown-item:active{background-color:var(--cds-layer-selected, #e0e0e0)}.bx--dropdown-item:first-of-type .bx--dropdown-link{border-top-color:#0000}.bx--dropdown-item:last-of-type .bx--dropdown-link{border-bottom:none}.bx--dropdown-link{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:block;overflow:hidden;height:2.5rem;padding:.6875rem 0;border:1px solid rgba(0,0,0,0);border-top-color:var(--cds-border-subtle, #e0e0e0);margin:0 1rem;color:var(--cds-text-secondary, #525252);font-weight:400;line-height:1rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.bx--dropdown-link:hover{border-color:#0000;color:var(--cds-text-01, #161616)}.bx--dropdown--light .bx--dropdown-link{border-top-color:var(--cds-decorative-01, #e0e0e0)}.bx--dropdown--sm .bx--dropdown-link{height:2rem;padding-top:.4375rem;padding-bottom:.4375rem}.bx--dropdown--xl .bx--dropdown-link{height:3rem;padding-top:.9375rem;padding-bottom:.9375rem}.bx--dropdown--focused,.bx--dropdown-link:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;padding:.6875rem 1rem;margin:0}@media screen and (prefers-contrast){.bx--dropdown--focused,.bx--dropdown-link:focus{outline-style:dotted}}.bx--dropdown-list[aria-activedescendant] .bx--dropdown-link:focus{padding:.6875rem 0;margin:0 1rem;outline:none}.bx--dropdown-list[aria-activedescendant] .bx--dropdown--focused:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;padding:.6875rem 1rem;margin:0}@media screen and (prefers-contrast){.bx--dropdown-list[aria-activedescendant] .bx--dropdown--focused:focus{outline-style:dotted}}.bx--dropdown-list[aria-activedescendant] .bx--dropdown-item:active{background-color:inherit}.bx--dropdown-item:hover .bx--dropdown-link{border-bottom-color:var(--cds-layer-hover, #e5e5e5)}.bx--dropdown--open .bx--dropdown__arrow{transform:rotate(-180deg)}.bx--dropdown--open.bx--dropdown--xl .bx--dropdown-list{max-height:16.5rem}.bx--dropdown--open.bx--dropdown--sm .bx--dropdown-list{max-height:11rem}.bx--dropdown--open .bx--dropdown-item{opacity:1}.bx--dropdown--disabled{border-bottom-color:#0000}.bx--dropdown--disabled:hover{background-color:var(--cds-field, #f4f4f4)}.bx--dropdown--disabled:focus{outline:none}.bx--dropdown--disabled .bx--dropdown-text,.bx--dropdown--disabled .bx--list-box__label{color:var(--cds-text-disabled, #c6c6c6)}.bx--dropdown--disabled .bx--dropdown__arrow,.bx--dropdown--disabled .bx--list-box__menu-icon svg{fill:var(--cds-icon-disabled, #c6c6c6)}.bx--dropdown--disabled.bx--dropdown--light:hover{background-color:var(--cds-field-02, #ffffff)}.bx--dropdown--disabled .bx--list-box__field,.bx--dropdown--disabled .bx--list-box__menu-icon{cursor:not-allowed}.bx--dropdown--auto-width{width:auto;max-width:25rem}.bx--dropdown--inline{display:inline-block;width:auto;border-bottom-color:#0000;background-color:#0000;justify-self:start;transition:background 70ms cubic-bezier(0,0,.38,.9)}.bx--dropdown--inline:hover{background-color:var(--cds-field-hover, #e5e5e5)}.bx--dropdown--inline.bx--dropdown--disabled{background-color:#0000}.bx--dropdown--inline .bx--dropdown__arrow{top:.5rem;right:.5rem}.bx--dropdown--inline.bx--dropdown--open{background-color:#0000}.bx--dropdown--inline .bx--dropdown-text{display:inline-block;overflow:visible;height:2rem;padding:.4375rem 2rem .4375rem .75rem;color:var(--cds-text-primary, #161616)}.bx--dropdown--inline.bx--dropdown--disabled .bx--dropdown-text{color:var(--cds-text-disabled, #c6c6c6)}.bx--dropdown--inline.bx--dropdown--disabled:focus .bx--dropdown-text{outline:0}.bx--dropdown--inline.bx--dropdown--invalid .bx--dropdown__invalid-icon{right:2rem}.bx--dropdown--inline.bx--dropdown--invalid .bx--dropdown-text{padding-right:3.5rem}.bx--dropdown--inline.bx--dropdown--open:focus .bx--dropdown-list{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3))}.bx--dropdown--inline .bx--dropdown-link{font-weight:400}.bx--dropdown--show-selected .bx--dropdown--selected{display:block;background-color:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}.bx--dropdown--show-selected .bx--dropdown--selected:hover{background-color:var(--cds-layer-selected, #e0e0e0)}.bx--dropdown--show-selected .bx--dropdown--selected .bx--dropdown-link{border-top-color:#0000}.bx--dropdown--show-selected .bx--dropdown--selected+.bx--dropdown-item .bx--dropdown-link{border-top-color:#0000}.bx--dropdown--show-selected .bx--dropdown--selected .bx--list-box__menu-item__selected-icon{display:block}.bx--dropdown-v2.bx--skeleton,.bx--dropdown.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none}.bx--dropdown-v2.bx--skeleton:hover,.bx--dropdown-v2.bx--skeleton:focus,.bx--dropdown-v2.bx--skeleton:active,.bx--dropdown.bx--skeleton:hover,.bx--dropdown.bx--skeleton:focus,.bx--dropdown.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--dropdown-v2.bx--skeleton:before,.bx--dropdown.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--dropdown-v2.bx--skeleton:before,.bx--dropdown.bx--skeleton:before{animation:none}}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--dropdown .bx--list-box__field{outline:1px solid rgba(0,0,0,0)}.bx--list-box__menu-item__option{outline:none}.bx--list-box__menu-item__selected-icon{fill:ButtonText}}.bx--loading{animation-duration:.69s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:rotate;animation-timing-function:linear;width:5.5rem;height:5.5rem}.bx--loading svg circle{animation-duration:10ms;animation-name:init-stroke;animation-timing-function:cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--loading svg circle{animation:none}}.bx--loading__svg{fill:#0000}.bx--loading__svg circle{stroke-dasharray:276.4608 276.4608;stroke-linecap:butt;stroke-width:10}.bx--loading__stroke{stroke:var(--cds-interactive-04, #0f62fe);stroke-dashoffset:52.527552}.bx--loading--small .bx--loading__stroke{stroke-dashoffset:143.759616}.bx--loading--stop{animation:rotate-end-p1 .7s cubic-bezier(.2,0,1,.9) forwards,rotate-end-p2 .7s cubic-bezier(.2,0,1,.9) .7s forwards}.bx--loading--stop svg circle{animation-delay:.7s;animation-duration:.7s;animation-fill-mode:forwards;animation-name:stroke-end;animation-timing-function:cubic-bezier(.2,0,1,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--loading--stop svg circle{animation:none}}.bx--loading--small{width:1rem;height:1rem}.bx--loading--small circle{stroke-width:16}.bx--loading--small .bx--loading__svg{stroke:var(--cds-interactive-04, #0f62fe)}.bx--loading__background{stroke:var(--cds-ui-03, #e0e0e0);stroke-dashoffset:-22}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){circle.bx--loading__background{stroke-dasharray:265;stroke-dashoffset:0}}}.bx--loading-overlay{position:fixed;z-index:6000;top:0;left:0;display:flex;width:100%;height:100%;align-items:center;justify-content:center;background-color:var(--cds-overlay-01, rgba(22, 22, 22, .5));transition:background-color .72s cubic-bezier(.4,.14,.3,1)}.bx--loading-overlay--stop{display:none}.bx--file{width:100%}.bx--file--invalid{margin-right:.5rem;fill:var(--cds-support-01, #da1e28)}.bx--file--label{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);margin-bottom:.5rem;color:var(--cds-text-01, #161616)}.bx--file--label--disabled{color:var(--cds-disabled-02, #c6c6c6)}.bx--file-input{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--file-btn{display:inline-flex;padding-right:4rem;margin:0}.bx--file-browse-btn{display:inline-block;width:100%;max-width:20rem;margin-bottom:.5rem;color:var(--cds-link-01, #0f62fe);cursor:pointer;outline:2px solid rgba(0,0,0,0);outline-offset:-2px;transition:.11s cubic-bezier(.2,0,.38,.9)}.bx--file-browse-btn:focus,.bx--file-browse-btn:hover{outline:2px solid var(--cds-interactive-03, #0f62fe)}.bx--file-browse-btn:hover,.bx--file-browse-btn:focus,.bx--file-browse-btn:active,.bx--file-browse-btn:active:visited{text-decoration:underline}.bx--file-browse-btn:active{color:var(--cds-text-01, #161616)}.bx--file-browse-btn--disabled{color:var(--cds-disabled-02, #c6c6c6);cursor:no-drop;text-decoration:none}.bx--file-browse-btn--disabled:hover,.bx--file-browse-btn--disabled:focus{color:var(--cds-disabled-02, #c6c6c6);outline:none;text-decoration:none}.bx--file-browse-btn--disabled .bx--file__drop-container{border:1px dashed var(--cds-disabled-02, #c6c6c6)}.bx--label-description{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);margin-bottom:1rem;color:var(--cds-text-02, #525252)}.bx--label-description--disabled{color:var(--cds-disabled-02, #c6c6c6)}.bx--file-btn~.bx--file-container{margin-top:1.5rem}.bx--btn~.bx--file-container{margin-top:1rem}.bx--file .bx--file-container,.bx--file~.bx--file-container{margin-top:.5rem}.bx--file__selected-file{display:grid;max-width:20rem;min-height:3rem;align-items:center;margin-bottom:.5rem;background-color:var(--cds-field-01, #f4f4f4);gap:.75rem 1rem;grid-auto-rows:auto;grid-template-columns:1fr auto;word-break:break-word}.bx--file__selected-file:last-child{margin-bottom:0}.bx--file__selected-file .bx--form-requirement{display:block;max-height:none;margin:0;grid-column:1/-1}.bx--file__selected-file .bx--inline-loading__animation .bx--loading{margin-right:0}.bx--file__selected-file .bx--file-filename{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);overflow:hidden;margin-left:1rem;text-overflow:ellipsis;white-space:nowrap}.bx--file__selected-file--field,.bx--file__selected-file--md{min-height:2.5rem;gap:.5rem 1rem}.bx--file__selected-file--sm{min-height:2rem;gap:.25rem 1rem}.bx--file__selected-file--invalid__wrapper{outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px;max-width:20rem;margin-bottom:.5rem;background-color:var(--cds-field-01, #f4f4f4);outline-width:1px}@media screen and (prefers-contrast){.bx--file__selected-file--invalid__wrapper{outline-style:dotted}}.bx--file__selected-file--invalid{outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px;padding:.75rem 0}@media screen and (prefers-contrast){.bx--file__selected-file--invalid{outline-style:dotted}}.bx--file__selected-file--invalid.bx--file__selected-file--sm{padding:.25rem 0}.bx--file__selected-file--invalid.bx--file__selected-file--field,.bx--file__selected-file--invalid.bx--file__selected-file--md{padding:.5rem 0}.bx--file__selected-file--invalid .bx--form-requirement{padding-top:1rem;border-top:1px solid var(--cds-ui-03, #e0e0e0)}.bx--file__selected-file--invalid.bx--file__selected-file--sm .bx--form-requirement{padding-top:.4375rem}.bx--file__selected-file--invalid.bx--file__selected-file--field .bx--form-requirement,.bx--file__selected-file--invalid.bx--file__selected-file--md .bx--form-requirement{padding-top:.6875rem}.bx--file__selected-file--invalid .bx--form-requirement__title,.bx--file__selected-file--invalid .bx--form-requirement__supplement{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);padding:0 1rem}.bx--file__selected-file--invalid .bx--form-requirement__title{color:var(--cds-text-error, #da1e28)}.bx--file__selected-file--invalid .bx--form-requirement__supplement{color:var(--cds-text-01, #161616)}.bx--file__selected-file--invalid+.bx--form-requirement{font-size:var(--cds-caption-01-font-size, .75rem);font-weight:var(--cds-caption-01-font-weight, 400);line-height:var(--cds-caption-01-line-height, 1.33333);letter-spacing:var(--cds-caption-01-letter-spacing, .32px);display:block;overflow:visible;max-height:12.5rem;padding:.5rem 1rem;color:var(--cds-text-error, #da1e28);font-weight:400}.bx--file__selected-file--invalid+.bx--form-requirement .bx--form-requirement__supplement{padding-bottom:.5rem;color:var(--cds-text-01, #161616)}.bx--file__state-container{display:flex;min-width:1.5rem;align-items:center;justify-content:center;padding-right:1rem}.bx--file__state-container .bx--loading__svg{stroke:var(--cds-ui-05, #161616)}.bx--file__state-container .bx--file-complete{cursor:pointer;fill:var(--cds-interactive-04, #0f62fe)}.bx--file__state-container .bx--file-complete:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--file__state-container .bx--file-complete:focus{outline-style:dotted}}.bx--file__state-container .bx--file-complete [data-icon-path=inner-path]{fill:var(--cds-icon-03, #ffffff);opacity:1}.bx--file__state-container .bx--file-invalid{width:1rem;height:1rem;fill:var(--cds-support-01, #da1e28)}.bx--file__state-container .bx--file-close{display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;padding:0;border:none;background-color:#0000;cursor:pointer;fill:var(--cds-icon-01, #161616)}.bx--file__state-container .bx--file-close:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--file__state-container .bx--file-close:focus{outline-style:dotted}}.bx--file__state-container .bx--file-close svg path{fill:var(--cds-icon-01, #161616)}.bx--file__state-container .bx--inline-loading__animation{margin-right:-.5rem}.bx--file__drop-container{display:flex;overflow:hidden;height:6rem;align-items:flex-start;justify-content:space-between;padding:1rem;border:1px dashed var(--cds-ui-04, #8d8d8d)}.bx--file__drop-container--drag-over{background:none;outline:2px solid var(--cds-interactive-03, #0f62fe);outline-offset:-2px}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--file__selected-file{outline:1px solid rgba(0,0,0,0)}.bx--file__state-container .bx--file-close svg path{fill:ButtonText}}@keyframes stroke{to{stroke-dashoffset:0}}.bx--inline-loading{display:flex;width:100%;min-height:2rem;align-items:center}.bx--inline-loading__text{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);color:var(--cds-text-02, #525252)}.bx--inline-loading__animation{position:relative;display:flex;align-items:center;justify-content:center;margin-right:.5rem}.bx--inline-loading__checkmark-container{fill:var(--cds-support-02, #198038)}.bx--inline-loading__checkmark-container.bx--inline-loading__svg{position:absolute;top:.75rem;width:.75rem}.bx--inline-loading__checkmark-container[hidden]{display:none}.bx--inline-loading__checkmark{animation-duration:.25s;animation-fill-mode:forwards;animation-name:stroke;fill:none;stroke:var(--cds-interactive-04, #0f62fe);stroke-dasharray:12;stroke-dashoffset:12;stroke-width:1.8;transform-origin:50% 50%}.bx--inline-loading--error{width:1rem;height:1rem;fill:var(--cds-support-01, #da1e28)}.bx--inline-loading--error[hidden]{display:none}.bx--loading--small .bx--inline-loading__svg{stroke:var(--cds-interactive-04, #0f62fe)}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.bx--inline-loading__checkmark-container{top:1px;right:.5rem}.bx--inline-loading__checkmark{animation:none;stroke-dasharray:0;stroke-dashoffset:0}}.bx--list--nested,.bx--list--unordered,.bx--list--ordered,.bx--list--ordered--native{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);list-style:none}.bx--list--expressive,.bx--list--expressive .bx--list--nested{font-size:var(--cds-body-long-02-font-size, 1rem);font-weight:var(--cds-body-long-02-font-weight, 400);line-height:var(--cds-body-long-02-line-height, 1.5);letter-spacing:var(--cds-body-long-02-letter-spacing, 0)}.bx--list--ordered--native{list-style:decimal}.bx--list__item{color:var(--cds-text-01, #161616)}.bx--list--nested{margin-left:2rem}.bx--list--nested .bx--list__item{padding-left:.25rem}.bx--list--ordered:not(.bx--list--nested){counter-reset:item}.bx--list--ordered:not(.bx--list--nested)>.bx--list__item{position:relative}.bx--list--ordered:not(.bx--list--nested)>.bx--list__item:before{position:absolute;left:-1.5rem;content:counter(item) ".";counter-increment:item}.bx--list--ordered.bx--list--nested,.bx--list--ordered--native.bx--list--nested{list-style-type:lower-latin}.bx--list--unordered>.bx--list__item{position:relative}.bx--list--unordered>.bx--list__item:before{position:absolute;left:-1rem;content:"–"}.bx--list--unordered.bx--list--nested>.bx--list__item:before{left:-.75rem;content:"▪"}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotate-end-p1{to{transform:rotate(360deg)}}@keyframes rotate-end-p2{to{transform:rotate(-360deg)}}@keyframes init-stroke{0%{stroke-dashoffset:276.4608}to{stroke-dashoffset:52.527552}}@keyframes stroke-end{0%{stroke-dashoffset:52.527552}to{stroke-dashoffset:276.4608}}.bx--menu{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:fixed;z-index:9000;min-width:13rem;max-width:18rem;padding:var(--cds-spacing-02, .25rem) 0;background-color:var(--cds-layer, #f4f4f4);visibility:hidden}.bx--menu--open{visibility:visible}.bx--menu--open:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--menu--open:focus{outline-style:dotted}}.bx--menu--invisible{opacity:0;pointer-events:none}.bx--menu-option{position:relative;height:2rem;background-color:var(--cds-layer, #f4f4f4);color:var(--cds-text-primary, #161616);cursor:pointer;transition:background-color 70ms cubic-bezier(.2,0,.38,.9)}.bx--menu-option:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--menu-option:focus{outline-style:dotted}}.bx--menu-option--active,.bx--menu-option:hover{background-color:var(--cds-layer-hover, #e5e5e5)}.bx--menu-option--danger:hover,.bx--menu-option--danger:focus{background-color:var(--cds-button-danger-primary, #da1e28);color:var(--cds-text-on-color, #ffffff)}.bx--menu-option>.bx--menu{margin-top:calc(var(--cds-spacing-02, .25rem) * -1)}.bx--menu-option__content{display:flex;height:100%;align-items:center;justify-content:space-between;padding:0 var(--cds-spacing-05, 1rem)}.bx--menu-option__content--disabled{background-color:var(--cds-layer, #f4f4f4);color:var(--cds-text-disabled, #c6c6c6);cursor:not-allowed}.bx--menu-option__content--disabled .bx--menu-option__label,.bx--menu-option__content--disabled .bx--menu-option__info,.bx--menu-option__content--disabled .bx--menu-option__icon{color:var(--cds-text-disabled, #c6c6c6)}.bx--menu-option__content--indented .bx--menu-option__label{margin-left:var(--cds-spacing-05, 1rem)}.bx--menu-option__label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);overflow:hidden;flex-grow:1;padding:var(--cds-spacing-02, .25rem) 0;text-align:start;text-overflow:ellipsis;white-space:nowrap}.bx--menu-option__info{display:inline-flex;margin-left:var(--cds-spacing-05, 1rem)}.bx--menu-option__icon{display:flex;width:1rem;height:1rem;align-items:center;margin-right:var(--cds-spacing-03, .5rem)}.bx--menu-divider{width:100%;height:1px;margin:var(--cds-spacing-02, .25rem) 0;background-color:var(--cds-border-subtle, #e0e0e0)}.bx--menu--md .bx--menu-option{height:2.5rem}.bx--menu--lg .bx--menu-option{height:3rem}.bx--modal{position:fixed;z-index:9000;top:0;left:0;display:flex;width:100vw;height:100vh;align-items:center;justify-content:center;background-color:var(--cds-overlay-01, rgba(22, 22, 22, .5));content:"";opacity:0;transition:opacity .24s cubic-bezier(.4,.14,1,1),visibility 0ms linear .24s;visibility:hidden}.bx--modal.is-visible{opacity:1;transition:opacity .24s cubic-bezier(0,0,.3,1),visibility 0ms linear;visibility:inherit}@media screen and (prefers-reduced-motion: reduce){.bx--modal.is-visible{transition:none}}.bx--modal .bx--pagination,.bx--modal .bx--pagination__control-buttons,.bx--modal .bx--text-input,.bx--modal .bx--text-area,.bx--modal .bx--search-input,.bx--modal .bx--select-input,.bx--modal .bx--dropdown,.bx--modal .bx--dropdown-list,.bx--modal .bx--number input[type=number],.bx--modal .bx--date-picker__input,.bx--modal .bx--multi-select{background-color:var(--cds-field-02, #ffffff)}.bx--modal.is-visible .bx--modal-container{transform:translateZ(0);transition:transform .24s cubic-bezier(0,0,.3,1)}.bx--modal-container{position:fixed;top:0;display:grid;overflow:hidden;width:100%;height:100%;max-height:100%;background-color:var(--cds-ui-01, #f4f4f4);grid-template-columns:100%;grid-template-rows:auto 1fr auto;outline:3px solid rgba(0,0,0,0);outline-offset:-3px;transform:translate3d(0,-24px,0);transform-origin:top center;transition:transform .24s cubic-bezier(.4,.14,1,1)}@media (min-width: 42rem){.bx--modal-container{position:static;width:84%;height:auto;max-height:90%}}@media (min-width: 66rem){.bx--modal-container{width:60%;max-height:84%}}@media (min-width: 82rem){.bx--modal-container{width:48%}}.bx--modal-content{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);position:relative;padding-top:var(--cds-spacing-03, .5rem);padding-right:var(--cds-spacing-05, 1rem);padding-left:var(--cds-spacing-05, 1rem);margin-bottom:var(--cds-spacing-09, 3rem);color:var(--cds-text-01, #161616);font-weight:400;grid-column:1/-1;grid-row:2/-2;overflow-y:auto}.bx--modal-content:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--modal-content:focus{outline-style:dotted}}.bx--modal-content p,.bx--modal-content__regular-content{padding-right:20%;font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px)}.bx--modal-content--with-form{padding-right:var(--cds-spacing-05, 1rem)}.bx--modal-header{padding-top:var(--cds-spacing-05, 1rem);padding-right:var(--cds-spacing-09, 3rem);padding-left:var(--cds-spacing-05, 1rem);margin-bottom:var(--cds-spacing-03, .5rem);grid-column:1/-1;grid-row:1/1}.bx--modal-header__label{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);margin-bottom:var(--cds-spacing-02, .25rem);color:var(--cds-text-02, #525252)}.bx--modal-header__heading{font-size:var(--cds-productive-heading-03-font-size, 1.25rem);font-weight:var(--cds-productive-heading-03-font-weight, 400);line-height:var(--cds-productive-heading-03-line-height, 1.4);letter-spacing:var(--cds-productive-heading-03-letter-spacing, 0);color:var(--cds-text-01, #161616)}.bx--modal-container--xs .bx--modal-content__regular-content{padding-right:var(--cds-spacing-05, 1rem)}.bx--modal-container--xs .bx--modal-content p{padding-right:0}@media (min-width: 42rem){.bx--modal-container--xs{width:48%}}@media (min-width: 66rem){.bx--modal-container--xs{width:32%;max-height:48%}}@media (min-width: 82rem){.bx--modal-container--xs{width:24%}}.bx--modal-container--sm .bx--modal-content__regular-content{padding-right:var(--cds-spacing-05, 1rem)}.bx--modal-container--sm .bx--modal-content p{padding-right:0}@media (min-width: 42rem){.bx--modal-container--sm{width:60%}}@media (min-width: 66rem){.bx--modal-container--sm{width:42%;max-height:72%}.bx--modal-container--sm .bx--modal-content p,.bx--modal-container--sm .bx--modal-content__regular-content{padding-right:20%}}@media (min-width: 82rem){.bx--modal-container--sm{width:36%}}@media (min-width: 42rem){.bx--modal-container--lg{width:96%}}@media (min-width: 66rem){.bx--modal-container--lg{width:84%;max-height:96%}}@media (min-width: 82rem){.bx--modal-container--lg{width:72%}}.bx--modal-scroll-content>*:last-child{padding-bottom:var(--cds-spacing-07, 2rem)}.bx--modal-content--overflow-indicator{position:absolute;bottom:var(--cds-spacing-09, 3rem);left:0;width:100%;height:2rem;background-image:linear-gradient(to bottom,rgba(var(--cds-ui-01, #f4f4f4),0),var(--cds-ui-01, #f4f4f4));content:"";grid-column:1/-1;grid-row:2/-2;pointer-events:none}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){.bx--modal-content--overflow-indicator{background-image:linear-gradient(to bottom,rgba(var(--cds-layer, #f4f4f4),0),var(--cds-layer, #f4f4f4))}}}.bx--modal-content:focus~.bx--modal-content--overflow-indicator{width:calc(100% - 4px);margin:0 2px 2px}@media screen and (-ms-high-contrast: active){.bx--modal-scroll-content>*:last-child{padding-bottom:0}.bx--modal-content--overflow-indicator{display:none}}.bx--modal-footer{display:flex;height:4rem;justify-content:flex-end;margin-top:auto;grid-column:1/-1;grid-row:-1/-1}.bx--modal-footer .bx--btn{max-width:none;height:4rem;flex:0 1 50%;padding-top:var(--cds-spacing-05, 1rem);padding-bottom:var(--cds-spacing-07, 2rem);margin:0}.bx--modal-footer--three-button .bx--btn{flex:0 1 25%;align-items:flex-start}.bx--modal-close{position:absolute;z-index:2;top:0;right:0;overflow:hidden;width:3rem;height:3rem;padding:.75rem;border:2px solid rgba(0,0,0,0);background-color:#0000;cursor:pointer;transition:background-color .11s cubic-bezier(.2,0,.38,.9)}.bx--modal-close:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--modal-close:focus{border-color:var(--cds-focus, #0f62fe);outline:none}.bx--modal-close::-moz-focus-inner{border:0}.bx--modal-close__icon{width:1.25rem;height:1.25rem;fill:var(--cds-icon-01, #161616)}.bx--body--with-modal-open{overflow:hidden}.bx--body--with-modal-open .bx--tooltip,.bx--body--with-modal-open .bx--overflow-menu-options{z-index:9000}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--modal-close__icon{fill:ButtonText}.bx--modal-close:focus{color:Highlight;outline:1px solid Highlight}}.bx--multi-select .bx--tag{min-width:auto;margin:0 .5rem 0 0}.bx--multi-select--filterable .bx--tag{margin:0 .5rem 0 1rem}.bx--multi-select .bx--list-box__menu{min-width:auto}.bx--multi-select .bx--list-box__menu-item__option .bx--checkbox-wrapper{display:flex;width:100%;height:100%;align-items:center}.bx--multi-select .bx--list-box__menu-item__option .bx--checkbox-label{display:inline-block;overflow:hidden;width:100%;padding-left:1.75rem;text-overflow:ellipsis;white-space:nowrap}.bx--multi-select .bx--list-box__menu-item__option>.bx--form-item{flex-direction:row;margin:0}.bx--multi-select .bx--list-box__menu-item .bx--checkbox:checked~.bx--checkbox-label-text{color:var(--cds-text-01, #161616)}.bx--multi-select--filterable{transition:outline-color 70ms cubic-bezier(.2,0,.38,.9)}.bx--multi-select--filterable.bx--combo-box .bx--text-input{border:.125rem solid rgba(0,0,0,0);background-clip:padding-box;outline:none}.bx--multi-select--filterable--input-focused{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--multi-select--filterable--input-focused{outline-style:dotted}}.bx--multi-select--filterable.bx--multi-select--selected .bx--text-input{padding-left:0}.bx--multi-select--filterable.bx--list-box--disabled:hover .bx--text-input{background-color:var(--cds-field-01, #f4f4f4)}.bx--multi-select--filterable .bx--list-box__selection--multi{margin:0 0 0 var(--cds-spacing-05, 1rem)}.bx--multi-select--filterable.bx--multi-select--inline,.bx--multi-select--filterable.bx--multi-select--inline .bx--text-input{border-bottom:0;background-color:#0000}.bx--number{position:relative;display:flex;width:100%;flex-direction:column}.bx--number input[type=number]{font-family:var(--cds-code-01-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-01-font-size, .75rem);font-weight:var(--cds-code-01-font-weight, 400);line-height:var(--cds-code-01-line-height, 1.33333);letter-spacing:var(--cds-code-01-letter-spacing, .32px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:inline-flex;width:100%;min-width:9.375rem;height:2.5rem;box-sizing:border-box;padding-right:8rem;padding-left:1rem;border:0;border-bottom:.0625rem solid var(--cds-ui-04, #8d8d8d);-moz-appearance:textfield;background-color:var(--cds-field-01, #f4f4f4);border-radius:0;color:var(--cds-text-01, #161616);font-family:IBM Plex Mono,Menlo,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier,monospace;font-weight:300;transition:background-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--number input[type=number]:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--number input[type=number]:focus{outline-style:dotted}}.bx--number input[type=number]:disabled~.bx--number__controls{cursor:not-allowed;pointer-events:none}.bx--number input[type=number]:disabled~.bx--number__controls svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--number input[type=number]::-ms-clear{display:none}.bx--number input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none}.bx--number--xl.bx--number input[type=number],.bx--number--lg.bx--number input[type=number]{padding-right:9rem}.bx--number--sm.bx--number input[type=number]{padding-right:7rem}.bx--number input[type=number]:disabled{border-bottom-color:#0000;background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--number__input-wrapper{position:relative;display:flex;align-items:center}.bx--number__controls{position:absolute;top:50%;right:0;display:flex;width:5rem;height:100%;flex-direction:row;align-items:center;justify-content:center;transform:translateY(-50%)}.bx--number__control-btn{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;position:relative;display:inline-flex;height:100%;align-items:center;justify-content:center;border-bottom:.0625rem solid var(--cds-ui-04, #8d8d8d);color:var(--cds-icon-01, #161616)}.bx--number__control-btn::-moz-focus-inner{border:0}.bx--number__control-btn:before,.bx--number__control-btn:after{position:absolute;top:.125rem;display:block;width:.125rem;height:2.25rem;background-color:var(--cds-field-01, #f4f4f4);content:""}.bx--number__control-btn:before{left:0}.bx--number__control-btn:after{right:0}.bx--number__control-btn svg{fill:currentColor}.bx--number__control-btn:focus{outline:1px solid var(--cds-focus, #0f62fe);color:var(--cds-icon-01, #161616);outline-offset:-2px;outline-width:2px}@media screen and (prefers-contrast){.bx--number__control-btn:focus{outline-style:dotted}}.bx--number__control-btn:hover{background-color:var(--cds-hover-ui, #e5e5e5);color:var(--cds-icon-01, #161616);cursor:pointer}.bx--number__control-btn:hover:before,.bx--number__control-btn:hover:after{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--number__control-btn:focus:before,.bx--number__control-btn:focus:after,.bx--number__control-btn:hover:focus:before,.bx--number__control-btn:hover:focus:after{background-color:#0000}.bx--number__control-btn:disabled{border-bottom-color:#0000;color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--number__control-btn.down-icon{order:1}.bx--number__control-btn.up-icon{order:2}.bx--number input[type=number]:focus~.bx--number__controls .bx--number__control-btn{border-bottom-width:0}.bx--number input[type=number]:focus~.bx--number__controls .bx--number__control-btn:hover{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;border:0}@media screen and (prefers-contrast){.bx--number input[type=number]:focus~.bx--number__controls .bx--number__control-btn:hover{outline-style:dotted}}.bx--number input[type=number][data-invalid]~.bx--number__controls .bx--number__control-btn{border-bottom-width:0}.bx--number input[type=number][data-invalid]:not(:focus)~.bx--number__controls .bx--number__control-btn:hover{outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px}@media screen and (prefers-contrast){.bx--number input[type=number][data-invalid]:not(:focus)~.bx--number__controls .bx--number__control-btn:hover{outline-style:dotted}}.bx--number input[type=number]:focus~.bx--number__controls .bx--number__control-btn.up-icon:after{background-color:#0000}.bx--number input[type=number][data-invalid]~.bx--number__controls .bx--number__control-btn.up-icon:after{background-color:var(--cds-support-01, #da1e28)}.bx--number input[type=number][data-invalid]:focus~.bx--number__controls .bx--number__control-btn.up-icon:after,.bx--number input[type=number][data-invalid]~.bx--number__controls .bx--number__control-btn.up-icon:focus:after{background-color:var(--cds-focus, #0f62fe)}.bx--number__rule-divider{position:absolute;z-index:6000;width:.0625rem;height:1rem;background-color:var(--cds-ui-03, #e0e0e0)}.bx--number__rule-divider:first-of-type{order:0}.bx--number__controls .bx--number__rule-divider:first-of-type{left:0;background-color:#0000}.bx--number__invalid+.bx--number__controls .bx--number__rule-divider:first-of-type{background-color:var(--cds-ui-03, #e0e0e0)}.bx--number--light .bx--number__rule-divider,.bx--number--light .bx--number__invalid+.bx--number__controls .bx--number__rule-divider:first-of-type{background-color:var(--cds-decorative-01, #e0e0e0)}.bx--number input[type=number]:disabled+.bx--number__controls .bx--number__rule-divider:first-of-type{background-color:#0000}.bx--number input[type=number]:disabled+.bx--number__controls .bx--number__rule-divider{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--number__control-btn:focus~.bx--number__rule-divider{background-color:#0000}.bx--number__invalid{position:absolute;right:6rem;fill:var(--cds-support-01, #da1e28)}.bx--number--xl .bx--number__invalid,.bx--number--lg .bx--number__invalid{right:7rem}.bx--number--sm .bx--number__invalid{right:5rem}.bx--number__invalid+.bx--number__rule-divider{position:absolute;right:5rem}.bx--number--xl .bx--number__invalid+.bx--number__rule-divider,.bx--number--lg .bx--number__invalid+.bx--number__rule-divider{right:6rem}.bx--number--sm .bx--number__invalid+.bx--number__rule-divider{right:4rem}.bx--number__control-btn.down-icon:hover~.bx--number__rule-divider,.bx--number__control-btn.up-icon:hover+.bx--number__rule-divider,.bx--number__control-btn.down-icon:focus~.bx--number__rule-divider,.bx--number__control-btn.up-icon:focus+.bx--number__rule-divider{background-color:#0000}.bx--number__invalid--warning{fill:var(--cds-support-03, #f1c21b)}.bx--number__invalid--warning path:first-of-type{fill:#000;opacity:1}.bx--number--light input[type=number]{background-color:var(--cds-field-02, #ffffff)}.bx--number--light input[type=number]:disabled{background-color:var(--cds-field-02, #ffffff)}.bx--number--light .bx--number__control-btn:before,.bx--number--light .bx--number__control-btn:after{background-color:var(--cds-field-02, #ffffff)}.bx--number--light .bx--number__control-btn:focus:before,.bx--number--light .bx--number__control-btn:focus:after{background-color:#0000}.bx--number--light .bx--number__control-btn:hover,.bx--number--light .bx--number__control-btn:not(:focus):hover:before,.bx--number--light .bx--number__control-btn:not(:focus):hover:after{background-color:var(--cds-hover-light-ui, #e5e5e5)}.bx--number--xl input[type=number],.bx--number--lg input[type=number]{height:3rem}.bx--number--xl .bx--number__controls,.bx--number--lg .bx--number__controls{width:6rem}.bx--number--xl .bx--number__control-btn,.bx--number--lg .bx--number__control-btn{width:3rem}.bx--number--xl .bx--number__control-btn:before,.bx--number--xl .bx--number__control-btn:after,.bx--number--lg .bx--number__control-btn:before,.bx--number--lg .bx--number__control-btn:after{height:2.75rem}.bx--number--sm input[type=number]{height:2rem}.bx--number--sm .bx--number__controls{width:4rem}.bx--number--sm .bx--number__control-btn{width:2rem}.bx--number--sm .bx--number__control-btn:before,.bx--number--sm .bx--number__control-btn:after{height:1.75rem}.bx--number--nolabel .bx--label+.bx--form__helper-text{margin-top:0}.bx--number--nosteppers input[type=number]{padding-right:3rem}.bx--number--nosteppers .bx--number__invalid{right:1rem}.bx--number--readonly input[type=number]{background:rgba(0,0,0,0)}.bx--number--readonly .bx--number__controls{display:none}.bx--number__readonly-icon{position:absolute;right:1rem}.bx--number.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:100%;height:2.5rem}.bx--number.bx--skeleton:hover,.bx--number.bx--skeleton:focus,.bx--number.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--number.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--number.bx--skeleton:before{animation:none}}.bx--number.bx--skeleton input[type=number]{display:none}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--number__control-btn:hover,.bx--number__control-btn:focus{color:Highlight;outline:1px solid Highlight}.bx--number__control-btn{outline:1px solid rgba(0,0,0,0)}.bx--number__control-btn svg{fill:ButtonText}}.bx--overflow-menu,.bx--overflow-menu__trigger{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;width:100%;outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:relative;display:flex;width:2.5rem;height:2.5rem;align-items:center;justify-content:center;cursor:pointer;transition:outline .11s cubic-bezier(0,0,.38,.9),background-color .11s cubic-bezier(0,0,.38,.9)}.bx--overflow-menu::-moz-focus-inner,.bx--overflow-menu__trigger::-moz-focus-inner{border:0}.bx--overflow-menu:focus,.bx--overflow-menu__trigger:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--overflow-menu:focus,.bx--overflow-menu__trigger:focus{outline-style:dotted}}.bx--overflow-menu:hover,.bx--overflow-menu__trigger:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--overflow-menu--sm{width:2rem;height:2rem}.bx--overflow-menu--xl,.bx--overflow-menu--lg{width:3rem;height:3rem}.bx--overflow-menu__trigger.bx--tooltip--a11y.bx--tooltip__trigger:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--overflow-menu__trigger.bx--tooltip--a11y.bx--tooltip__trigger:focus{outline-style:dotted}}.bx--overflow-menu__trigger.bx--tooltip--a11y.bx--tooltip__trigger:focus svg{outline:none}.bx--overflow-menu.bx--overflow-menu--open,.bx--overflow-menu.bx--overflow-menu--open .bx--overflow-menu__trigger{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));background-color:var(--cds-field-01, #f4f4f4);transition:none}.bx--overflow-menu--light.bx--overflow-menu--open,.bx--overflow-menu--light.bx--overflow-menu--open .bx--overflow-menu__trigger{background-color:var(--cds-field-02, #ffffff)}.bx--overflow-menu__icon{width:1rem;height:1rem;fill:var(--cds-icon-01, #161616)}.bx--overflow-menu-options{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:absolute;z-index:6000;top:32px;left:0;display:none;width:10rem;flex-direction:column;align-items:flex-start;background-color:var(--cds-field-01, #f4f4f4);list-style:none}.bx--overflow-menu-options:after{position:absolute;display:block;background-color:var(--cds-field-01, #f4f4f4);content:"";transition:background-color .11s cubic-bezier(0,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--overflow-menu-options:after{transition:none}}.bx--overflow-menu.bx--overflow-menu--open:hover{background-color:var(--cds-field-01, #f4f4f4)}.bx--overflow-menu-options--light{background-color:var(--cds-field-02, #ffffff)}.bx--overflow-menu-options--light:after{background-color:var(--cds-field-02, #ffffff)}.bx--overflow-menu.bx--overflow-menu--light.bx--overflow-menu--open:hover{background-color:var(--cds-field-02, #ffffff)}.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after{top:-.1875rem;left:0;width:2.5rem;height:.1875rem}.bx--overflow-menu-options[data-floating-menu-direction=top]:after{bottom:-.5rem;left:0;width:2.5rem;height:.5rem}.bx--overflow-menu-options[data-floating-menu-direction=left]:after{top:0;right:-.375rem;width:.375rem;height:2.5rem}.bx--overflow-menu-options[data-floating-menu-direction=right]:after{top:0;left:-.375rem;width:.375rem;height:2.5rem}.bx--overflow-menu-options--sm.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after,.bx--overflow-menu-options--sm.bx--overflow-menu-options[data-floating-menu-direction=top]:after{width:2rem}.bx--overflow-menu-options--sm.bx--overflow-menu-options[data-floating-menu-direction=left]:after,.bx--overflow-menu-options--sm.bx--overflow-menu-options[data-floating-menu-direction=right]:after{height:2rem}.bx--overflow-menu-options--xl.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after,.bx--overflow-menu-options--xl.bx--overflow-menu-options[data-floating-menu-direction=top]:after,.bx--overflow-menu-options--lg.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after,.bx--overflow-menu-options--lg.bx--overflow-menu-options[data-floating-menu-direction=top]:after{width:3rem}.bx--overflow-menu-options--xl.bx--overflow-menu-options[data-floating-menu-direction=left]:after,.bx--overflow-menu-options--xl.bx--overflow-menu-options[data-floating-menu-direction=right]:after,.bx--overflow-menu-options--lg.bx--overflow-menu-options[data-floating-menu-direction=left]:after,.bx--overflow-menu-options--lg.bx--overflow-menu-options[data-floating-menu-direction=right]:after{height:3rem}.bx--overflow-menu--flip.bx--overflow-menu-options[data-floating-menu-direction=top]:after,.bx--overflow-menu--flip.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after{right:0;left:auto}.bx--overflow-menu--flip.bx--overflow-menu-options[data-floating-menu-direction=left]:after,.bx--overflow-menu--flip.bx--overflow-menu-options[data-floating-menu-direction=right]:after{top:auto;bottom:0}.bx--overflow-menu-options--open{display:flex}.bx--overflow-menu-options__content{width:100%}.bx--overflow-menu-options__option{display:flex;width:100%;height:2.5rem;align-items:center;padding:0;background-color:#0000;transition:background-color .11s cubic-bezier(0,0,.38,.9)}.bx--overflow-menu-options--sm .bx--overflow-menu-options__option{height:2rem}.bx--overflow-menu-options--xl .bx--overflow-menu-options__option,.bx--overflow-menu-options--lg .bx--overflow-menu-options__option{height:3rem}.bx--overflow-menu--divider{border-top:1px solid var(--cds-ui-03, #e0e0e0)}.bx--overflow-menu--light .bx--overflow-menu--divider{border-top:1px solid var(--cds-decorative-01, #e0e0e0)}a.bx--overflow-menu-options__btn:before{display:inline-block;height:100%;content:"";vertical-align:middle}.bx--overflow-menu-options__btn{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:inline-flex;width:100%;max-width:11.25rem;height:100%;align-items:center;padding:0 1rem;border:none;background-color:#0000;color:var(--cds-text-02, #525252);cursor:pointer;font-weight:400;text-align:left;transition:outline .11s cubic-bezier(0,0,.38,.9),background-color .11s cubic-bezier(0,0,.38,.9),color .11s cubic-bezier(0,0,.38,.9)}.bx--overflow-menu-options__btn:hover{color:var(--cds-text-01, #161616)}.bx--overflow-menu-options__btn:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--overflow-menu-options__btn:focus{outline-style:dotted}}.bx--overflow-menu-options__btn::-moz-focus-inner{border:none}.bx--overflow-menu-options__btn svg{fill:var(--cds-icon-02, #525252)}.bx--overflow-menu-options__btn:hover svg{fill:var(--cds-icon-01, #161616)}.bx--overflow-menu-options__option-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bx--overflow-menu-options__option:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--overflow-menu-options__option--danger .bx--overflow-menu-options__btn:hover,.bx--overflow-menu-options__option--danger .bx--overflow-menu-options__btn:focus{background-color:var(--cds-danger-01, #da1e28);color:var(--cds-text-04, #ffffff)}.bx--overflow-menu-options__option--danger .bx--overflow-menu-options__btn:hover svg,.bx--overflow-menu-options__option--danger .bx--overflow-menu-options__btn:focus svg{fill:currentColor}.bx--overflow-menu-options__option--disabled:hover{background-color:var(--cds-ui-01, #f4f4f4);cursor:not-allowed}.bx--overflow-menu-options__option--disabled .bx--overflow-menu-options__btn{color:var(--cds-disabled-02, #c6c6c6);pointer-events:none}.bx--overflow-menu-options__option--disabled .bx--overflow-menu-options__btn:hover,.bx--overflow-menu-options__option--disabled .bx--overflow-menu-options__btn:active,.bx--overflow-menu-options__option--disabled .bx--overflow-menu-options__btn:focus{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;background-color:var(--cds-ui-01, #f4f4f4)}.bx--overflow-menu-options__option--disabled .bx--overflow-menu-options__btn svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--overflow-menu--flip{left:-140px}.bx--overflow-menu--flip:before{left:145px}.bx--overflow-menu__container{display:inline-block}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--overflow-menu:focus,.bx--overflow-menu-options__btn:focus{color:Highlight;outline:1px solid Highlight}.bx--overflow-menu svg{fill:ButtonText}}.bx--pagination-nav{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);line-height:0}.bx--pagination-nav__list{display:flex;align-items:center;list-style:none}.bx--pagination-nav__list-item{padding:0}.bx--pagination-nav__list-item:first-child{padding-left:0}.bx--pagination-nav__list-item:last-child{padding-right:0}.bx--pagination-nav__page{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;position:relative;display:block;min-width:3rem;padding:1.0625rem .25rem;border-radius:0;color:var(--cds-text-02, #525252);font-weight:400;line-height:1;outline:0;text-align:center;text-decoration:none;transition:background-color .11s cubic-bezier(.2,0,.38,.9),color .11s cubic-bezier(.2,0,.38,.9);-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--pagination-nav__page::-moz-focus-inner{border:0}.bx--pagination-nav__page:hover{background-color:var(--cds-hover-ui, #e5e5e5);color:var(--cds-text-02, #525252)}.bx--pagination-nav__page:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--pagination-nav__page:focus{outline-style:dotted}}.bx--pagination-nav__page:disabled,.bx--pagination-nav__page.bx--pagination-nav__page--disabled{background:none;color:rgba(var(--cds-text-02, #525252),.5);outline:none;pointer-events:none}.bx--pagination-nav__page:not(.bx--pagination-nav__page--direction):after{position:absolute;bottom:0;left:50%;display:block;width:0;height:.25rem;background-color:var(--cds-interactive-01, #0f62fe);content:"";opacity:0;transition:width .11s cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--pagination-nav__page:not(.bx--pagination-nav__page--direction):after{transition:none}}.bx--pagination-nav__page--active+.bx--pagination-nav__page:after,.bx--pagination-nav__page.bx--pagination-nav__page--active:after{left:calc(50% - .5rem);width:1rem;opacity:1}.bx--pagination-nav__page.bx--pagination-nav__page--active{background-color:initial;color:var(--cds-text-02, #525252);font-weight:600}.bx--pagination-nav__page .bx--pagination-nav__icon{fill:currentColor;pointer-events:none}.bx--pagination-nav__page--direction{display:flex;width:3rem;height:3rem;align-items:center;justify-content:center;line-height:0}.bx--pagination-nav__select{position:relative}.bx--pagination-nav__page--select{max-height:3rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-indent:calc(50% - 4.5px)}@-moz-document url-prefix(){.bx--pagination-nav__page--select{text-indent:0}}.bx--pagination-nav__select-icon-wrapper{position:absolute;top:0;width:100%;height:100%;pointer-events:none}.bx--pagination-nav__select-icon-wrapper:not(.bx--pagination-nav__page--direction):after{position:absolute;bottom:0;left:50%;display:block;width:0;height:.25rem;background-color:var(--cds-interactive-01, #0f62fe);content:"";opacity:0;transition:width .11s cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--pagination-nav__select-icon-wrapper:not(.bx--pagination-nav__page--direction):after{transition:none}}.bx--pagination-nav__page--active+.bx--pagination-nav__select-icon-wrapper:after,.bx--pagination-nav__select-icon-wrapper.bx--pagination-nav__page--active:after{left:calc(50% - .5rem);width:1rem;opacity:1}.bx--pagination-nav__page--active+.bx--pagination-nav__select-icon-wrapper .bx--pagination-nav__select-icon{display:none}.bx--pagination-nav__select-icon{position:absolute;top:calc(50% - .5rem);left:calc(50% - .5rem);pointer-events:none}.bx--pagination-nav__accessibility-label{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--select{position:relative;display:flex;width:100%;flex-direction:column;align-items:flex-start}.bx--select-input__wrapper{position:relative;display:flex;width:100%;align-items:center}.bx--select-input{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:block;width:100%;height:2.5rem;padding:0 var(--cds-spacing-09, 3rem) 0 var(--cds-spacing-05, 1rem);border:none;border-bottom:1px solid var(--cds-ui-04, #8d8d8d);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--cds-field-01, #f4f4f4);border-radius:0;color:var(--cds-text-01, #161616);cursor:pointer;font-family:inherit;opacity:1;transition:outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--select-input:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--select-input::-ms-expand{display:none}@-moz-document url-prefix(){.bx--select-input:-moz-focusring,.bx--select-input::-moz-focus-inner{background-image:none;color:#0000;text-shadow:0 0 0 #000}}.bx--select-input:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;color:var(--cds-text-01, #161616)}@media screen and (prefers-contrast){.bx--select-input:focus{outline-style:dotted}}.bx--select-input:disabled,.bx--select-input:hover:disabled{border-bottom-color:var(--cds-disabled-01, #f4f4f4);background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--select-input--sm{height:2rem;max-height:2rem}.bx--select-input--xl,.bx--select-input--lg{height:3rem;max-height:3rem}.bx--select--disabled .bx--label,.bx--select--disabled .bx--form__helper-text{color:var(--cds-disabled-02, #c6c6c6)}.bx--select-input__wrapper[data-invalid] .bx--select-input,.bx--select--warning .bx--select-input{padding-right:4.5rem}.bx--select-input:disabled~.bx--select__arrow{fill:var(--cds-disabled-02, #c6c6c6)}.bx--select--light .bx--select-input{background-color:var(--cds-field-02, #ffffff)}.bx--select--light .bx--select-input:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--select--light .bx--select-input:disabled,.bx--select--light .bx--select-input:hover:disabled{background-color:var(--cds-field-02, #ffffff);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--select__arrow{position:absolute;top:0;right:var(--cds-spacing-05, 1rem);height:100%;fill:var(--cds-ui-05, #161616);pointer-events:none}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--select__arrow path{fill:ButtonText}}.bx--select__invalid-icon{position:absolute;right:var(--cds-spacing-08, 2.5rem)}.bx--select-input__wrapper[data-invalid] .bx--select-input~.bx--select__invalid-icon{fill:var(--cds-support-01, #da1e28)}.bx--select__invalid-icon--warning{fill:var(--cds-support-03, #f1c21b)}.bx--select__invalid-icon--warning path[fill]{fill:#000;opacity:1}optgroup.bx--select-optgroup,.bx--select-option{background-color:var(--cds-background-hover, #e5e5e5);color:var(--cds-text-01, #161616)}optgroup.bx--select-optgroup:disabled,.bx--select-option:disabled{color:var(--cds-text-disabled, #c6c6c6)}.bx--select--inline{display:flex;flex-direction:row;align-items:center}.bx--select--inline.bx--select--invalid .bx--label,.bx--select--inline.bx--select--invalid .bx--form__helper-text{align-self:flex-start;margin-top:.8125rem}.bx--select--inline .bx--form__helper-text{margin-bottom:0;margin-left:var(--cds-spacing-03, .5rem)}.bx--select--inline .bx--label{margin:0 .5rem 0 0;white-space:nowrap}.bx--select--inline .bx--select-input{width:auto;padding-right:var(--cds-spacing-07, 2rem);padding-left:.5rem;border-bottom:none;background-color:#0000;color:var(--cds-text-01, #161616)}.bx--select--inline .bx--select-input:focus,.bx--select--inline .bx--select-input:focus option,.bx--select--inline .bx--select-input:focus optgroup{background-color:var(--cds-background, #ffffff)}.bx--select--inline .bx--select-input[disabled],.bx--select--inline .bx--select-input[disabled]:hover{background-color:var(--cds-disabled-01, #f4f4f4)}.bx--select--inline .bx--select__arrow{right:.5rem}.bx--select--inline.bx--select--invalid .bx--select-input{padding-right:3.5rem}.bx--select--inline.bx--select--invalid .bx--select-input~.bx--select__invalid-icon{right:var(--cds-spacing-07, 2rem)}.bx--select--inline .bx--select-input:disabled{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--select--inline .bx--select-input:disabled~*{cursor:not-allowed}.bx--select.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:100%;height:2.5rem}.bx--select.bx--skeleton:hover,.bx--select.bx--skeleton:focus,.bx--select.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--select.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--select.bx--skeleton:before{animation:none}}.bx--select.bx--skeleton .bx--select-input{display:none}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--select__arrow{fill:ButtonText}}.bx--text-input{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;width:100%;height:2.5rem;padding:0 1rem;border:none;border-bottom:1px solid var(--cds-ui-04, #8d8d8d);background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616);transition:background-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--text-input:focus,.bx--text-input:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--text-input:focus,.bx--text-input:active{outline-style:dotted}}.bx--text-input-wrapper svg[hidden]{display:none}.bx--text-input--xl,.bx--text-input--lg{height:3rem}.bx--text-input--sm{height:2rem}.bx--password-input{padding-right:2.5rem}.bx--text-input--sm.bx--password-input{padding-right:2rem}.bx--text-input--lg.bx--password-input{padding-right:3rem}.bx--text-input::-moz-placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--text-input::placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--text-input--light{background-color:var(--cds-field-02, #ffffff)}.bx--text-input__field-wrapper{position:relative;display:flex;width:100%}.bx--text-input__invalid-icon,.bx--text-input__readonly-icon{position:absolute;top:50%;right:1rem;transform:translateY(-50%)}.bx--text-input__invalid-icon{fill:var(--cds-support-01, #da1e28)}.bx--text-input__invalid-icon--warning{fill:var(--cds-support-03, #f1c21b)}.bx--text-input__invalid-icon--warning path:first-of-type{fill:#000;opacity:1}.bx--text-input--password__visibility{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--text-input--password__visibility:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--text-input--password__visibility:focus{outline-style:dotted}}.bx--text-input--password__visibility:focus{outline:1px solid rgba(0,0,0,0)}.bx--text-input--password__visibility:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--text-input--password__visibility:focus svg{outline-style:dotted}}.bx--text-input--password__visibility:before,.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--text-input--password__visibility:before,.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{display:inline-block}}.bx--text-input--password__visibility:before,.bx--text-input--password__visibility:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--text-input--password__visibility:before,.bx--text-input--password__visibility:after{transition:none}}.bx--text-input--password__visibility.bx--tooltip--a11y:before,.bx--text-input--password__visibility.bx--tooltip--a11y:after{transition:none}.bx--text-input--password__visibility:before{width:0;height:0;border-style:solid;content:""}.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--text-input--password__visibility:after{content:attr(aria-label)}.bx--text-input--password__visibility.bx--tooltip--a11y:after{content:none}.bx--text-input--password__visibility.bx--tooltip--visible:before,.bx--text-input--password__visibility.bx--tooltip--visible:after,.bx--text-input--password__visibility:hover:before,.bx--text-input--password__visibility:hover:after,.bx--text-input--password__visibility:focus:before,.bx--text-input--password__visibility:focus:after{opacity:1}.bx--text-input--password__visibility.bx--tooltip--visible .bx--assistive-text,.bx--text-input--password__visibility.bx--tooltip--visible+.bx--assistive-text,.bx--text-input--password__visibility:hover .bx--assistive-text,.bx--text-input--password__visibility:hover+.bx--assistive-text,.bx--text-input--password__visibility:focus .bx--assistive-text,.bx--text-input--password__visibility:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--text-input--password__visibility.bx--tooltip--visible .bx--assistive-text,.bx--text-input--password__visibility.bx--tooltip--visible+.bx--assistive-text,.bx--text-input--password__visibility.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--text-input--password__visibility:hover .bx--assistive-text,.bx--text-input--password__visibility:hover+.bx--assistive-text,.bx--text-input--password__visibility:hover.bx--tooltip--a11y:before,.bx--text-input--password__visibility:focus .bx--assistive-text,.bx--text-input--password__visibility:focus+.bx--assistive-text,.bx--text-input--password__visibility:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--text-input--password__visibility.bx--tooltip--hidden .bx--assistive-text,.bx--text-input--password__visibility.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--text-input--password__visibility.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--text-input--password__visibility .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--text-input--password__visibility:before,.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{bottom:0;left:50%}.bx--text-input--password__visibility:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--text-input--password__visibility,.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:absolute;right:0;display:flex;width:2.5rem;height:100%;min-height:auto;align-items:center;justify-content:center;padding:0;border:0;background:none;cursor:pointer;transition:outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--text-input--sm+.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger{width:2rem}.bx--text-input--lg+.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger{width:3rem}.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger svg{fill:var(--cds-icon-secondary, #525252);transition:fill 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger svg{fill:ButtonText}}.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger:focus{outline-style:dotted}}.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger:hover svg,.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger:focus svg{fill:var(--cds-icon-primary, #161616)}.bx--text-input--invalid,.bx--text-input--warning,.bx--text-input-wrapper--readonly .bx--text-input{padding-right:2.5rem}.bx--text-input--invalid.bx--password-input{padding-right:4rem}.bx--text-input--invalid+.bx--text-input--password__visibility,.bx--text-input--invalid+.bx--text-input--password__visibility__toggle{right:1rem}.bx--password-input-wrapper .bx--text-input__invalid-icon{right:2.5rem}.bx--text-input:disabled+.bx--text-input--password__visibility svg,.bx--text-input:disabled+.bx--text-input--password__visibility__toggle.bx--tooltip__trigger svg{cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--text-input:disabled+.bx--text-input--password__visibility svg:hover,.bx--text-input:disabled+.bx--text-input--password__visibility__toggle.bx--tooltip__trigger svg:hover{fill:var(--cds-disabled-02, #c6c6c6)}.bx--text-input:disabled{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;border-bottom:1px solid rgba(0,0,0,0);background-color:var(--cds-field, #f4f4f4);color:var(--cds-text-disabled, #c6c6c6);cursor:not-allowed;-webkit-text-fill-color:var(--cds-disabled-02, #c6c6c6)}.bx--text-input--light:disabled{background-color:var(--cds-field-02, #ffffff)}.bx--text-input:disabled::-moz-placeholder{color:var(--cds-disabled-02, #c6c6c6);opacity:1}.bx--text-input:disabled::placeholder{color:var(--cds-disabled-02, #c6c6c6);opacity:1}.bx--text-input--invalid{outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px;box-shadow:none}@media screen and (prefers-contrast){.bx--text-input--invalid{outline-style:dotted}}.bx--text-input--invalid .bx--text-input--password__visibility,.bx--text-input--invalid .bx--text-input--password__visibility__toggle{right:2.5rem}.bx--skeleton.bx--text-input{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none}.bx--skeleton.bx--text-input:hover,.bx--skeleton.bx--text-input:focus,.bx--skeleton.bx--text-input:active{border:none;cursor:default;outline:none}.bx--skeleton.bx--text-input:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--skeleton.bx--text-input:before{animation:none}}.bx--form--fluid .bx--text-input-wrapper{position:relative;background:var(--cds-field-01, #f4f4f4);transition:background-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--form--fluid .bx--label{position:absolute;z-index:1;top:.8125rem;left:1rem;margin:0}.bx--form--fluid .bx--form__helper-text{display:none}.bx--form--fluid .bx--text-input{min-height:4rem;padding:2rem 1rem .8125rem}.bx--text-input__divider,.bx--form--fluid .bx--text-input__divider{display:none}.bx--form--fluid .bx--text-input--invalid,.bx--form--fluid .bx--text-input--warn{border-bottom:none}.bx--form--fluid .bx--text-input--invalid+.bx--text-input__divider,.bx--form--fluid .bx--text-input--warn+.bx--text-input__divider{display:block;border-style:solid;border-color:var(--cds-ui-03, #e0e0e0);border-bottom:none;margin:0 1rem}.bx--form--fluid .bx--text-input__invalid-icon{top:5rem}.bx--form--fluid .bx--text-input-wrapper--light{background:var(--cds-field-02, #ffffff)}.bx--form--fluid .bx--text-input__field-wrapper[data-invalid]>.bx--text-input--invalid{outline:2px solid rgba(0,0,0,0);outline-offset:-2px}.bx--form--fluid .bx--text-input__field-wrapper[data-invalid]:not(:focus){outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px}@media screen and (prefers-contrast){.bx--form--fluid .bx--text-input__field-wrapper[data-invalid]:not(:focus){outline-style:dotted}}.bx--form--fluid .bx--text-input__field-wrapper[data-invalid]>.bx--text-input--invalid:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--form--fluid .bx--text-input__field-wrapper[data-invalid]>.bx--text-input--invalid:focus{outline-style:dotted}}.bx--text-input-wrapper.bx--text-input-wrapper--inline{flex-flow:row wrap}.bx--text-input-wrapper .bx--label--inline{flex:1;margin:.8125rem 0 0;overflow-wrap:break-word;word-break:break-word}.bx--text-input-wrapper .bx--label--inline--sm{margin-top:.5625rem}.bx--text-input-wrapper .bx--label--inline--xl,.bx--text-input-wrapper .bx--label--inline--lg{margin-top:1.0625rem}.bx--text-input__label-helper-wrapper{max-width:8rem;flex:2;flex-direction:column;margin-right:1.5rem;overflow-wrap:break-word}.bx--text-input-wrapper .bx--form__helper-text--inline{margin-top:.125rem}.bx--text-input__field-outer-wrapper{display:flex;width:100%;flex:1 1 auto;flex-direction:column;align-items:flex-start}.bx--text-input__field-outer-wrapper--inline{flex:8;flex-direction:column}.bx--form--fluid .bx--text-input-wrapper--readonly,.bx--text-input-wrapper--readonly .bx--text-input{background:rgba(0,0,0,0)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--text-input--password__visibility,.bx--btn.bx--btn--icon-only.bx--text-input--password__visibility__toggle.bx--tooltip__trigger svg,.bx--btn.bx--btn--icon-only.bx--text-input--password__visibility__toggle.bx--tooltip__trigger:hover svg{fill:ButtonText}}.bx--data-table-container+.bx--pagination{border-top:0}.bx--pagination{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;width:calc(100% - 1px);min-height:2.5rem;align-items:center;justify-content:space-between;border-top:1px solid var(--cds-ui-03, #e0e0e0);background-color:var(--cds-ui-01, #f4f4f4);overflow-x:auto}@media (min-width: 42rem){.bx--pagination{overflow:initial}.bx--pagination .bx--pagination__control-buttons{display:flex}}@media (max-width: 41.98rem){.bx--pagination .bx--pagination__left>*,.bx--pagination .bx--pagination__right>*{display:none}.bx--pagination .bx--pagination__items-count{display:initial}.bx--pagination .bx--pagination__control-buttons{display:flex}}.bx--pagination--sm{min-height:2rem}.bx--pagination--lg{min-height:3rem}.bx--pagination .bx--select{height:100%;align-items:center}.bx--pagination .bx--select-input--inline__wrapper{display:flex;height:100%}.bx--pagination .bx--select-input{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);width:auto;min-width:auto;height:100%;padding:0 2.25rem 0 var(--cds-spacing-05, 1rem);background-color:var(--cds-ui-01, #f4f4f4);line-height:2.5rem}.bx--pagination--sm .bx--select-input{line-height:2rem}.bx--pagination--lg .bx--select-input{line-height:3rem}.bx--pagination .bx--select-input:hover{background:var(--cds-hover-ui, #e5e5e5)}.bx--pagination .bx--select--inline .bx--select-input:focus,.bx--pagination .bx--select--inline .bx--select-input:focus option,.bx--pagination .bx--select--inline .bx--select-input:focus optgroup{background-color:var(--cds-layer, #f4f4f4)}.bx--pagination .bx--select__arrow{top:50%;transform:translate(-.5rem,-50%)}.bx--pagination .bx--select__item-count .bx--select-input{border-right:.0625rem solid var(--cds-ui-03, #e0e0e0)}.bx--pagination .bx--select__page-number .bx--select-input{border-left:1px solid var(--cds-ui-03, #e0e0e0)}.bx--pagination__left,.bx--pagination__right{display:flex;height:100%;align-items:center}.bx--pagination__left>.bx--form-item,.bx--pagination__right>.bx--form-item{height:100%}.bx--pagination__left .bx--pagination__text,.bx--pagination__right .bx--pagination__text{white-space:nowrap}.bx--pagination__left .bx--pagination__text{margin-right:.0625rem}.bx--pagination__right .bx--pagination__text{margin-right:1rem;margin-left:.0625rem}.bx--pagination__left{padding:0 1rem 0 0}@media (min-width: 42rem){.bx--pagination__left{padding:0 1rem}.bx--pagination__text{display:inline-block}}span.bx--pagination__text{margin-left:1rem;color:var(--cds-text-02, #525252)}.bx--pagination__button,.bx--btn--ghost.bx--pagination__button{display:flex;width:2.5rem;height:2.5rem;min-height:2rem;align-items:center;justify-content:center;border:none;border-left:1px solid var(--cds-ui-03, #e0e0e0);margin:0;background:none;cursor:pointer;fill:var(--cds-ui-05, #161616);transition:outline .11s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9)}.bx--pagination--sm .bx--pagination__button,.bx--pagination--sm .bx--btn--ghost.bx--pagination__button{width:2rem;height:2rem}.bx--pagination--lg .bx--pagination__button,.bx--pagination--lg .bx--btn--ghost.bx--pagination__button{width:3rem;height:3rem}.bx--pagination__button:focus,.bx--btn--ghost:focus.bx--pagination__button{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;border-left:0}@media screen and (prefers-contrast){.bx--pagination__button:focus,.bx--btn--ghost:focus.bx--pagination__button{outline-style:dotted}}.bx--pagination__button:hover,.bx--btn--ghost:hover.bx--pagination__button{background:var(--cds-hover-ui, #e5e5e5)}.bx--pagination__button--no-index,.bx--btn--ghost.bx--pagination__button--no-index{cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--pagination__button:disabled:hover,.bx--pagination__button--no-index:hover,.bx--btn--ghost:disabled:hover.bx--pagination__button,.bx--btn--ghost:hover.bx--pagination__button--no-index{border-color:var(--cds-ui-03, #e0e0e0);background:var(--cds-ui-01, #f4f4f4);cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--pagination.bx--skeleton .bx--skeleton__text{margin-right:1rem;margin-bottom:0}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--pagination__button,.bx--btn--ghost.bx--pagination__button{outline:1px solid rgba(0,0,0,0)}}.bx--progress-bar__label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;min-width:3rem;justify-content:space-between;margin-bottom:var(--cds-spacing-03, .5rem);color:var(--cds-text-primary, #161616)}.bx--progress-bar__label-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bx--progress-bar__track{position:relative;width:100%;min-width:3rem;height:.5rem;background-color:var(--cds-layer, #f4f4f4)}.bx--progress-bar--big .bx--progress-bar__track{height:.5rem}.bx--progress-bar--small .bx--progress-bar__track{height:.25rem}.bx--progress-bar__bar{display:block;width:100%;height:100%;background-color:currentColor;color:var(--cds-interactive, #0f62fe);transform:scaleX(0);transform-origin:0 center;transition:transform .11s cubic-bezier(.2,0,.38,.9)}.bx--progress-bar--indeterminate .bx--progress-bar__track:after{position:absolute;top:0;right:0;bottom:0;left:0;animation-duration:1.4s;animation-iteration-count:infinite;animation-name:progress-bar-indeterminate;animation-timing-function:linear;background-image:linear-gradient(90deg,var(--cds-interactive, #0f62fe) 12.5%,transparent 12.5%);background-position-x:0%;background-size:200% 100%;content:""}.bx--progress-bar__helper-text{font-size:var(--cds-helper-text-01-font-size, .75rem);line-height:var(--cds-helper-text-01-line-height, 1.33333);letter-spacing:var(--cds-helper-text-01-letter-spacing, .32px);margin-top:var(--cds-spacing-03, .5rem);color:var(--cds-text-secondary, #525252)}.bx--progress-bar__status-icon{flex-shrink:0;margin-left:var(--cds-spacing-05, 1rem)}.bx--progress-bar--finished .bx--progress-bar__bar,.bx--progress-bar--finished .bx--progress-bar__status-icon{color:var(--cds-support-success, #198038)}.bx--progress-bar--error .bx--progress-bar__bar,.bx--progress-bar--error .bx--progress-bar__status-icon,.bx--progress-bar--error .bx--progress-bar__helper-text{color:var(--cds-support-error, #da1e28)}.bx--progress-bar--finished .bx--progress-bar__bar,.bx--progress-bar--error .bx--progress-bar__bar{transform:scaleX(1)}.bx--progress-bar--finished.bx--progress-bar--inline .bx--progress-bar__track,.bx--progress-bar--error.bx--progress-bar--inline .bx--progress-bar__track{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--progress-bar--finished.bx--progress-bar--inline .bx--progress-bar__label,.bx--progress-bar--error.bx--progress-bar--inline .bx--progress-bar__label{flex-shrink:1;justify-content:flex-start;margin-right:0}@keyframes progress-bar-indeterminate{0%{background-position-x:25%}80%,to{background-position-x:-105%}}.bx--progress-bar--inline{display:flex;align-items:center}.bx--progress-bar--inline .bx--progress-bar__label{margin-right:var(--cds-spacing-05, 1rem);margin-bottom:0}.bx--progress-bar--inline .bx--progress-bar__track{flex-basis:0;flex-grow:1}.bx--progress-bar--inline .bx--progress-bar__helper-text{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--progress-bar--indented .bx--progress-bar__label,.bx--progress-bar--indented .bx--progress-bar__helper-text{padding-right:var(--cds-spacing-05, 1rem);padding-left:var(--cds-spacing-05, 1rem)}.bx--tooltip__label{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);display:inline-flex;align-items:center;color:var(--cds-text-02, #525252)}.bx--tooltip__label:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__label:focus{outline-style:dotted}}.bx--tooltip__trigger svg{fill:var(--cds-icon-02, #525252)}.bx--tooltip__trigger:not(.bx--btn--icon-only){display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;display:inline-flex;align-items:center;font-size:1rem}.bx--tooltip__trigger:not(.bx--btn--icon-only)::-moz-focus-inner{border:0}.bx--tooltip__trigger:not(.bx--btn--icon-only):focus{outline:1px solid var(--cds-focus, #0f62fe);fill:var(--cds-hover-primary, #0353e9)}@media screen and (prefers-contrast){.bx--tooltip__trigger:not(.bx--btn--icon-only):focus{outline-style:dotted}}.bx--tooltip__trigger:not(.bx--btn--icon-only)[disabled] svg{fill:var(--cds-icon-disabled, #c6c6c6)}.bx--tooltip__label .bx--tooltip__trigger{margin-left:.5rem}.bx--tooltip__label--bold{font-weight:600}.bx--tooltip{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:absolute;z-index:6000;display:none;min-width:13rem;max-width:18rem;padding:1rem;margin-top:.25rem;background:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);word-wrap:break-word}.bx--tooltip:focus{box-shadow:inset 0 0 0 1px var(--cds-inverse-02, #393939),inset 0 0 0 2px var(--cds-ui-background, #ffffff);outline:0}.bx--tooltip.bx--tooltip--top.bx--tooltip--align-start,.bx--tooltip.bx--tooltip--bottom.bx--tooltip--align-start{transform:translate(calc(50% - 22px))}.bx--tooltip.bx--tooltip--top.bx--tooltip--align-start .bx--tooltip__caret,.bx--tooltip.bx--tooltip--bottom.bx--tooltip--align-start .bx--tooltip__caret{margin-left:15px}.bx--tooltip.bx--tooltip--top.bx--tooltip--align-end,.bx--tooltip.bx--tooltip--bottom.bx--tooltip--align-end{transform:translate(calc(22px - 50%))}.bx--tooltip.bx--tooltip--top.bx--tooltip--align-end .bx--tooltip__caret,.bx--tooltip.bx--tooltip--bottom.bx--tooltip--align-end .bx--tooltip__caret{margin-right:15px}.bx--tooltip.bx--tooltip--left.bx--tooltip--align-start{transform:translateY(calc(-15px + 50%))}.bx--tooltip.bx--tooltip--left.bx--tooltip--align-start .bx--tooltip__caret{top:14px}.bx--tooltip.bx--tooltip--left.bx--tooltip--align-end{transform:translateY(calc(31px - 50%))}.bx--tooltip.bx--tooltip--left.bx--tooltip--align-end .bx--tooltip__caret{top:initial;bottom:25px}.bx--tooltip.bx--tooltip--right.bx--tooltip--align-start{transform:translateY(calc(-26px + 50%))}.bx--tooltip.bx--tooltip--right.bx--tooltip--align-start .bx--tooltip__caret{top:26px}.bx--tooltip.bx--tooltip--right.bx--tooltip--align-end{transform:translateY(calc(20px - 50%))}.bx--tooltip.bx--tooltip--right.bx--tooltip--align-end .bx--tooltip__caret{top:initial;bottom:12px}.bx--tooltip p{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);text-align:left}.bx--tooltip button{padding-right:2rem}.bx--tooltip .bx--btn:focus{border-color:var(--cds-inverse-focus-ui, #ffffff);outline-color:var(--cds-inverse-02, #393939)}.bx--tooltip .bx--link{color:var(--cds-inverse-link, #78a9ff);font-size:.875rem}.bx--tooltip .bx--link:focus{outline:1px solid var(--cds-inverse-focus-ui, #ffffff);outline-offset:2px}.bx--tooltip .bx--link:active,.bx--tooltip .bx--link:active:visited,.bx--tooltip .bx--link:active:visited:hover{color:var(--cds-inverse-01, #ffffff)}.bx--tooltip .bx--link:visited{color:var(--cds-inverse-link, #78a9ff)}.bx--tooltip .bx--tooltip__content[tabindex="-1"]:focus{outline:none}.bx--tooltip .bx--tooltip__caret{position:absolute;top:calc(-.4296875rem + 1px);right:0;left:0;width:0;height:0;border-right:.4296875rem solid rgba(0,0,0,0);border-bottom:.4296875rem solid var(--cds-inverse-02, #393939);border-left:.4296875rem solid rgba(0,0,0,0);margin:0 auto;content:""}.bx--tooltip .bx--tooltip__footer{display:flex;align-items:center;justify-content:space-between;margin-top:1rem}.bx--tooltip[data-floating-menu-direction=left]{margin-left:calc(var(--cds-spacing-03, .5rem) * -1)}.bx--tooltip[data-floating-menu-direction=left] .bx--tooltip__caret{top:50%;right:calc(-.4296875rem + 1px);left:auto;transform:rotate(90deg) translate(50%,-50%)}.bx--tooltip[data-floating-menu-direction=top]{margin-top:calc(var(--cds-spacing-03, .5rem) * -1)}.bx--tooltip[data-floating-menu-direction=top] .bx--tooltip__caret{top:auto;bottom:calc(-.4296875rem + 1px);transform:rotate(180deg)}.bx--tooltip[data-floating-menu-direction=right]{margin-left:var(--cds-spacing-03, .5rem)}.bx--tooltip[data-floating-menu-direction=right] .bx--tooltip__caret{top:50%;right:auto;left:calc(-.4296875rem + 1px);transform:rotate(270deg) translate(50%,-50%)}.bx--tooltip[data-floating-menu-direction=bottom]{margin-top:var(--cds-spacing-03, .5rem)}.bx--tooltip__heading{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);margin-bottom:var(--cds-spacing-03, .5rem)}.bx--tooltip--shown{display:block;margin-top:0}.bx--tooltip--definition{position:relative}.bx--tooltip--definition .bx--tooltip__trigger{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);position:relative;display:inline-flex;border-bottom:1px dotted var(--cds-interactive-01, #0f62fe);color:var(--cds-text-01, #161616)}.bx--tooltip--definition .bx--tooltip__trigger:hover+.bx--tooltip--definition__top,.bx--tooltip--definition .bx--tooltip__trigger:hover+.bx--tooltip--definition__bottom{display:block}.bx--tooltip--definition .bx--tooltip__trigger:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip--definition .bx--tooltip__trigger:focus{outline-style:dotted}}.bx--tooltip--definition .bx--tooltip__trigger:focus+.bx--tooltip--definition__top,.bx--tooltip--definition .bx--tooltip__trigger:focus+.bx--tooltip--definition__bottom{display:block}.bx--tooltip--definition__bottom,.bx--tooltip--definition__top{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:absolute;z-index:1;display:none;width:13rem;padding:.5rem 1rem;margin-top:.75rem;background:var(--cds-inverse-02, #393939);border-radius:.125rem;pointer-events:none}.bx--tooltip--definition__bottom p,.bx--tooltip--definition__top p{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);color:var(--cds-inverse-01, #ffffff)}.bx--tooltip--definition__bottom .bx--tooltip__caret,.bx--tooltip--definition__top .bx--tooltip__caret{position:absolute;right:0;left:0;width:.6rem;height:.6rem;margin-left:1rem;background:var(--cds-inverse-02, #393939)}.bx--tooltip--definition__bottom .bx--tooltip__caret{top:-.2rem;transform:rotate(-135deg)}.bx--tooltip--definition__top{margin-top:-2rem;transform:translateY(-100%)}.bx--tooltip--definition__top .bx--tooltip__caret{bottom:-.2rem;transform:rotate(45deg)}.bx--tooltip--definition__align-end{right:0}.bx--tooltip--definition__align-center{margin-left:50%;transform:translate(-50%)}.bx--tooltip--definition__top.bx--tooltip--definition__align-center{margin-left:50%;transform:translate(-50%,-100%)}.bx--tooltip--definition__align-center .bx--tooltip__caret{left:auto;margin-right:calc(50% - 6px);margin-left:auto}.bx--tooltip--definition__align-end .bx--tooltip__caret{left:auto;margin-right:1rem;margin-left:auto}.bx--tooltip--definition.bx--tooltip--a11y{display:inline-flex}.bx--tooltip--definition button.bx--tooltip--a11y{margin:0}.bx--tooltip__trigger.bx--tooltip__trigger--definition{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);border-bottom:.0625rem dotted var(--cds-text-02, #525252);transition:border-color .11s}.bx--tooltip__trigger.bx--tooltip__trigger--definition:hover,.bx--tooltip__trigger.bx--tooltip__trigger--definition:focus{border-bottom-color:var(--cds-interactive-04, #0f62fe)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:default}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after{transition:none}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.5rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus:after{opacity:1}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before{top:-.25rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{top:-.5625rem;left:0;transform:translateY(-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start:before{top:-.25rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start+.bx--assistive-text{top:-.5625rem;left:0;transform:translateY(-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center:before{top:-.25rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center+.bx--assistive-text{top:-.5625rem;left:50%;transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end:before{top:-.25rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end+.bx--assistive-text{top:-.5625rem;right:0;left:auto;transform:translateY(-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:default}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after{transition:none}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.5rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus:after{opacity:1}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before{bottom:-.25rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{bottom:-.5625rem;left:0;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--a11y+.bx--assistive-text{bottom:-.5rem;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start:before{bottom:-.25rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:-.5625rem;left:0;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start.bx--tooltip--a11y+.bx--assistive-text{bottom:-.5rem;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center:before{bottom:-.25rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:-.5625rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center.bx--tooltip--a11y+.bx--assistive-text{bottom:-.5rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end:before{bottom:-.25rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:-.5625rem;right:0;left:auto;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end.bx--tooltip--a11y+.bx--assistive-text{bottom:-.5rem;transform:translateY(100%)}.bx--tooltip--icon{display:inline-flex;align-items:center}.bx--tooltip--icon__top,.bx--tooltip--icon__bottom{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip--icon__top:before,.bx--tooltip--icon__top:after,.bx--tooltip--icon__bottom:before,.bx--tooltip--icon__bottom:after{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:absolute;display:flex;align-items:center;opacity:0;pointer-events:none;transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip--icon__top:before,.bx--tooltip--icon__top:after,.bx--tooltip--icon__bottom:before,.bx--tooltip--icon__bottom:after{transition:none}}.bx--tooltip--icon__top:before,.bx--tooltip--icon__bottom:before{right:0;left:0;width:0;height:0;border-width:0 .25rem .3125rem .25rem;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);margin:1px auto 0 50%;content:""}.bx--tooltip--icon__top:after,.bx--tooltip--icon__bottom:after{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));min-width:1.5rem;max-width:13rem;height:1.5rem;padding:0 1rem;margin-left:50%;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);content:attr(aria-label);font-weight:400;pointer-events:none;transform:translate(-50%);white-space:nowrap}.bx--tooltip--icon__top:hover:before,.bx--tooltip--icon__top:hover:after,.bx--tooltip--icon__top:focus:before,.bx--tooltip--icon__top:focus:after,.bx--tooltip--icon__bottom:hover:before,.bx--tooltip--icon__bottom:hover:after,.bx--tooltip--icon__bottom:focus:before,.bx--tooltip--icon__bottom:focus:after{opacity:1}.bx--tooltip--icon__top:hover svg,.bx--tooltip--icon__top:focus svg,.bx--tooltip--icon__bottom:hover svg,.bx--tooltip--icon__bottom:focus svg{fill:var(--cds-icon-02, #525252)}.bx--tooltip--icon__top:focus,.bx--tooltip--icon__bottom:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip--icon__top:focus svg,.bx--tooltip--icon__bottom:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip--icon__top:focus svg,.bx--tooltip--icon__bottom:focus svg{outline-style:dotted}}.bx--tooltip--icon__top:before{transform:translate(-50%,calc(-100% - 9px)) rotate(180deg);top:1px}.bx--tooltip--icon__top:after{transform:translate(-50%,calc(-100% - 12px));top:0}.bx--tooltip--icon__bottom:before{transform:translate(-50%,10px) rotate(0);bottom:0}.bx--tooltip--icon__bottom:after{transform:translate(-50%,calc(100% + 10px));bottom:0}.bx--tooltip--icon__top.bx--tooltip--icon__align-start:before{transform:translateY(calc(-100% - 9px)) rotate(180deg);top:1px;margin-left:4px}.bx--tooltip--icon__top.bx--tooltip--icon__align-start:after{transform:translateY(calc(-100% - 12px));top:0;margin-left:0}.bx--tooltip--icon__top.bx--tooltip--icon__align-end:before{transform:translateY(calc(-100% - 9px)) rotate(180deg);top:1px;right:0;left:auto;margin-right:4px}.bx--tooltip--icon__top.bx--tooltip--icon__align-end:after{transform:translateY(calc(-100% - 12px));top:0;margin-left:0;right:0}.bx--tooltip--icon__bottom.bx--tooltip--icon__align-start:before{transform:translateY(10px) rotate(0);bottom:0;margin-left:4px}.bx--tooltip--icon__bottom.bx--tooltip--icon__align-start:after{transform:translateY(calc(100% + 10px));bottom:0;margin-left:0}.bx--tooltip--icon__bottom.bx--tooltip--icon__align-end:before{transform:translateY(10px) rotate(0);bottom:0;right:0;left:auto;margin-right:4px}.bx--tooltip--icon__bottom.bx--tooltip--icon__align-end:after{transform:translateY(calc(100% + 10px));bottom:0;margin-left:0;right:0}.bx--tooltip--icon .bx--tooltip__trigger svg{margin-left:0}.bx--tooltip__trigger:hover svg,.bx--tooltip__trigger:focus svg{fill:var(--cds-icon-02, #525252)}.bx--tooltip__trigger.bx--tooltip--top{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--tooltip--top:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--top:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--top:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--top:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--top:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip--top:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip--top:after{transition:none}}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip--top:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip--top:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip--top:hover:before,.bx--tooltip__trigger.bx--tooltip--top:hover:after,.bx--tooltip__trigger.bx--tooltip--top:focus:before,.bx--tooltip__trigger.bx--tooltip--top:focus:after{opacity:1}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip--top:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{top:-.8125rem;left:50%;transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start+.bx--assistive-text{top:-.8125rem;left:0;transform:translateY(-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center+.bx--assistive-text{top:-.8125rem;left:50%;transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end+.bx--assistive-text{top:-.8125rem;right:0;left:auto;transform:translateY(-100%)}.bx--tooltip__trigger.bx--tooltip--right{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--tooltip--right:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--right:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--right:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--right:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--right:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--right:before,.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--right:before,.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip--right:before,.bx--tooltip__trigger.bx--tooltip--right:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip--right:before,.bx--tooltip__trigger.bx--tooltip--right:after{transition:none}}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip--right:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip--right:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip--right:hover:before,.bx--tooltip__trigger.bx--tooltip--right:hover:after,.bx--tooltip__trigger.bx--tooltip--right:focus:before,.bx--tooltip__trigger.bx--tooltip--right:focus:after{opacity:1}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--right:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--right:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--tooltip--right:before,.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--tooltip--right:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--bottom{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--tooltip--bottom:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--bottom:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--bottom:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--bottom:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--bottom:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip--bottom:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip--bottom:after{transition:none}}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip--bottom:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip--bottom:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip--bottom:hover:before,.bx--tooltip__trigger.bx--tooltip--bottom:hover:after,.bx--tooltip__trigger.bx--tooltip--bottom:focus:before,.bx--tooltip__trigger.bx--tooltip--bottom:focus:after{opacity:1}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip--bottom:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:-.8125rem;left:0;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:-.8125rem;right:0;left:auto;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip--left{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--tooltip--left:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--left:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--left:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--left:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--left:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--left:before,.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--left:before,.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip--left:before,.bx--tooltip__trigger.bx--tooltip--left:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip--left:before,.bx--tooltip__trigger.bx--tooltip--left:after{transition:none}}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip--left:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip--left:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip--left:hover:before,.bx--tooltip__trigger.bx--tooltip--left:hover:after,.bx--tooltip__trigger.bx--tooltip--left:focus:before,.bx--tooltip__trigger.bx--tooltip--left:focus:after{opacity:1}@keyframes tooltip-fade{0%{opacity:0}to{opacity:1}}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--left:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--left:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--tooltip--left:before,.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--tooltip--left:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger:not(.bx--tooltip--hidden) .bx--assistive-text{pointer-events:all}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--tooltip__trigger svg,.bx--tooltip__trigger:hover svg,.bx--tooltip__trigger:focus svg{fill:ButtonText}.bx--tooltip__trigger:focus svg{color:Highlight;outline:1px solid Highlight}.bx--tooltip,.bx--assistive-text{outline:1px solid rgba(0,0,0,0)}}.bx--progress{display:flex;list-style:none}.bx--progress-step{position:relative;display:inline-flex;overflow:visible;width:8rem;min-width:7rem;flex-direction:row}.bx--progress-step .bx--tooltip__label{display:block}.bx--progress--space-equal .bx--progress-step{min-width:8rem;flex-grow:1}.bx--progress-line{position:absolute;left:0;width:8rem;height:1px;border:1px inset rgba(0,0,0,0)}.bx--progress--space-equal .bx--progress-line{width:100%;min-width:8rem}.bx--progress-step svg{position:relative;z-index:1;width:1rem;height:1rem;flex-shrink:0;margin:.625rem .5rem 0 0;border-radius:50%;fill:var(--cds-interactive-04, #0f62fe)}.bx--progress-label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);overflow:hidden;max-width:5.5rem;margin:.5rem 0 0;color:var(--cds-text-01, #161616);line-height:1.45;text-overflow:ellipsis;transition:box-shadow .11s cubic-bezier(.2,0,.38,.9),color .11s cubic-bezier(.2,0,.38,.9);white-space:nowrap}.bx--progress-label:before{display:block;content:""}.bx--progress-label:hover{box-shadow:0 .0625rem var(--cds-link-01, #0f62fe);color:var(--cds-link-01, #0f62fe);cursor:pointer}.bx--progress-label:focus{box-shadow:0 .1875rem 0 0 var(--cds-link-01, #0f62fe);color:var(--cds-link-01, #0f62fe);outline:none}.bx--progress--space-equal .bx--progress-label{max-width:100%;margin-right:.75rem}.bx--progress-step-button:not(.bx--progress-step-button--unclickable) .bx--progress-label:active{box-shadow:0 .1875rem 0 0 var(--cds-interactive, #0f62fe);color:var(--cds-interactive, #0f62fe)}.bx--progress-label-overflow:hover~.bx--tooltip,.bx--progress-label-overflow:focus~.bx--tooltip{visibility:inherit}.bx--progress-step .bx--tooltip .bx--tooltip__caret{margin-left:.625rem}.bx--tooltip__text{padding:0;margin:0;font-weight:400}.bx--progress-step .bx--tooltip{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);display:block;width:7.8125rem;min-width:7.1875rem;min-height:1.5rem;padding:.5rem 1rem;margin-top:2.5rem;margin-left:1.375rem;color:var(--cds-inverse-01, #ffffff);visibility:hidden}.bx--progress-step .bx--tooltip_multi{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);width:9.375rem;height:auto;color:var(--cds-inverse-01, #ffffff)}.bx--progress-optional{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);position:absolute;left:0;margin-top:1.75rem;margin-left:1.5rem;color:var(--cds-text-02, #525252);text-align:start}.bx--progress-step--current .bx--progress-line{background-color:var(--cds-interactive-04, #0f62fe)}.bx--progress-step--incomplete svg{fill:var(--cds-ui-05, #161616)}.bx--progress-step--incomplete .bx--progress-line{background-color:var(--cds-ui-03, #e0e0e0)}.bx--progress-step--complete .bx--progress-line{background-color:var(--cds-interactive-04, #0f62fe)}.bx--progress-step-button{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;display:flex;text-align:left}.bx--progress-step-button::-moz-focus-inner{border:0}.bx--progress-step-button--unclickable{cursor:default;outline:none}.bx--progress-step-button--unclickable .bx--progress-label:hover{box-shadow:none;color:var(--cds-text-01, #161616);cursor:default}.bx--progress-step-button--unclickable .bx--tooltip__label:hover{box-shadow:0 .0625rem var(--cds-link-01, #0f62fe);color:var(--cds-link-01, #0f62fe);cursor:pointer}.bx--progress-step--disabled{cursor:not-allowed;pointer-events:none}.bx--progress-step--disabled svg{cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--progress-step--disabled .bx--progress-label,.bx--progress-step--disabled .bx--progress-label:hover{box-shadow:none;color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--progress-step--disabled .bx--progress-label:focus,.bx--progress-step--disabled .bx--progress-label:active{box-shadow:none;outline:none}.bx--progress-step--disabled .bx--progress-line{cursor:not-allowed}.bx--progress-step--disabled .bx--progress-label-overflow:hover~.bx--tooltip--definition .bx--tooltip--definition__bottom{display:none}.bx--progress__warning>*{fill:var(--cds-support-01, #da1e28)}.bx--progress.bx--skeleton .bx--progress-label{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:2.5rem;height:.875rem;margin-top:.625rem}.bx--progress.bx--skeleton .bx--progress-label:hover,.bx--progress.bx--skeleton .bx--progress-label:focus,.bx--progress.bx--skeleton .bx--progress-label:active{border:none;cursor:default;outline:none}.bx--progress.bx--skeleton .bx--progress-label:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--progress.bx--skeleton .bx--progress-label:before{animation:none}}.bx--progress--vertical,.bx--progress-text{display:flex;flex-direction:column}.bx--progress--vertical .bx--progress-step,.bx--progress--vertical .bx--progress-step-button{width:initial;min-width:initial;min-height:3.625rem;align-content:flex-start}.bx--progress--vertical .bx--progress-step svg,.bx--progress--vertical .bx--progress-step-button svg{display:inline-block;margin:.0625rem .5rem 0}.bx--progress--vertical .bx--progress-label{display:inline-block;width:initial;max-width:10rem;margin:0;vertical-align:top;white-space:initial}.bx--progress--vertical .bx--progress-step .bx--tooltip{margin-top:.5rem}.bx--progress--vertical .bx--progress-optional{position:static;width:100%;margin:auto 0}.bx--progress--vertical .bx--progress-line{position:absolute;top:0;left:0;width:1px;height:100%}.bx--radio-button-group{position:relative;display:flex;align-items:center}.bx--label+.bx--form-item .bx--radio-button-group{margin-top:0}.bx--radio-button-group--vertical{flex-direction:column;align-items:flex-start}.bx--radio-button-group--vertical.bx--radio-button-group--label-left{align-items:flex-end}.bx--radio-button-group--vertical .bx--radio-button__label{margin-right:0;line-height:1.25rem}.bx--radio-button-group--vertical .bx--radio-button__label:not(:last-of-type){margin-bottom:.5rem}.bx--radio-button{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);white-space:nowrap;visibility:inherit}.bx--radio-button__label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;align-items:center;margin-right:1rem;cursor:pointer}.bx--radio-button__appearance{width:1.125rem;height:1.125rem;flex-shrink:0;border:1px solid var(--cds-icon-01, #161616);margin:.0625rem .5rem .125rem .125rem;background-color:#0000;border-radius:50%}.bx--radio-button:checked+.bx--radio-button__label .bx--radio-button__appearance{display:flex;align-items:center;justify-content:center;border-color:var(--cds-icon-01, #161616)}.bx--radio-button:checked+.bx--radio-button__label .bx--radio-button__appearance:before{position:relative;display:inline-block;width:100%;height:100%;background-color:var(--cds-icon-01, #161616);border-radius:50%;content:"";transform:scale(.5)}@media screen and (-ms-high-contrast: active){.bx--radio-button:checked+.bx--radio-button__label .bx--radio-button__appearance:before{background-color:WindowText}}@media screen and (prefers-contrast){.bx--radio-button:checked+.bx--radio-button__label .bx--radio-button__appearance:before{border:2px solid WindowText}}.bx--radio-button:disabled+.bx--radio-button__label{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--radio-button:disabled+.bx--radio-button__label .bx--radio-button__appearance,.bx--radio-button:disabled:checked+.bx--radio-button__label .bx--radio-button__appearance{border-color:var(--cds-disabled-02, #c6c6c6)}.bx--radio-button:disabled+.bx--radio-button__label .bx--radio-button__appearance:before,.bx--radio-button:disabled:checked+.bx--radio-button__label .bx--radio-button__appearance:before{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--radio-button:focus+.bx--radio-button__label .bx--radio-button__appearance{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:1.5px}.bx--radio-button__label.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:6.25rem;height:1.125rem}.bx--radio-button__label.bx--skeleton:hover,.bx--radio-button__label.bx--skeleton:focus,.bx--radio-button__label.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--radio-button__label.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--radio-button__label.bx--skeleton:before{animation:none}}.bx--radio-button__label.bx--skeleton .bx--radio-button__appearance{display:none}.bx--radio-button-wrapper .bx--radio-button__label{display:flex;align-items:flex-start;justify-content:center;margin:0}.bx--radio-button-wrapper:not(:last-of-type){margin-right:1rem}.bx--radio-button-group--vertical .bx--radio-button-wrapper:not(:last-of-type){margin-right:0;margin-bottom:.5rem}.bx--radio-button-group--label-right .bx--radio-button__label,.bx--radio-button-wrapper.bx--radio-button-wrapper--label-right .bx--radio-button__label{flex-direction:row}.bx--radio-button-group--label-left .bx--radio-button__label,.bx--radio-button-wrapper.bx--radio-button-wrapper--label-left .bx--radio-button__label{flex-direction:row-reverse}.bx--radio-button-group--label-left .bx--radio-button__appearance,.bx--radio-button-wrapper.bx--radio-button-wrapper--label-left .bx--radio-button__appearance{margin-right:0;margin-left:.5rem}.bx--search{position:relative;display:flex;width:100%;align-items:center}.bx--search .bx--label{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--search-input{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;width:100%;order:1;padding:0 2.5rem;border:none;border-bottom:1px solid var(--cds-ui-04, #8d8d8d);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616);text-overflow:ellipsis;transition:background-color .11s cubic-bezier(.2,0,.38,.9),outline .11s cubic-bezier(.2,0,.38,.9)}.bx--search-input:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--search-input:focus{outline-style:dotted}}.bx--search-input::-moz-placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--search-input::placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--search-input::-ms-clear{display:none}.bx--search-input[disabled]{border-bottom:1px solid rgba(0,0,0,0);background-color:var(--cds-field, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--search-input[disabled]::-moz-placeholder{color:var(--cds-disabled-02, #c6c6c6)}.bx--search-input[disabled]::placeholder{color:var(--cds-disabled-02, #c6c6c6)}.bx--search--light .bx--search-input{background:var(--cds-field-02, #ffffff)}.bx--search--light .bx--search-close:before{background:var(--cds-field-02, #ffffff)}.bx--search--sm .bx--search-input,.bx--search--sm.bx--search--expandable.bx--search--expanded .bx--search-input{height:2rem;padding:0 var(--cds-spacing-07, 2rem)}.bx--search--sm .bx--search-magnifier-icon{left:.5rem}.bx--search--lg .bx--search-input,.bx--search--lg.bx--search--expandable.bx--search--expanded .bx--search-input{height:2.5rem;padding:0 var(--cds-spacing-08, 2.5rem)}.bx--search--lg .bx--search-magnifier-icon{left:.75rem}.bx--search--xl .bx--search-input,.bx--search--xl.bx--search--expandable.bx--search--expanded .bx--search-input{height:3rem;padding:0 var(--cds-spacing-09, 3rem)}.bx--search-magnifier-icon{position:absolute;z-index:2;top:50%;left:var(--cds-spacing-05, 1rem);width:1rem;height:1rem;fill:var(--cds-icon-02, #525252);pointer-events:none;transform:translateY(-50%)}.bx--search-close{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:absolute;top:0;right:0}.bx--search-close::-moz-focus-inner{border:0}.bx--search-close:before{position:absolute;top:.0625rem;left:0;display:block;width:2px;height:calc(100% - 2px);background-color:var(--cds-field-01, #f4f4f4);content:"";transition:background-color .11s cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--search-close:before{transition:none}}.bx--search-close:hover{border-bottom:1px solid var(--cds-ui-04, #8d8d8d)}.bx--search-close:hover:before{background-color:var(--cds-hover-field, #e5e5e5)}.bx--search-button{flex-shrink:0;margin-left:.125rem;background-color:var(--cds-field-01, #f4f4f4)}.bx--search-button svg{fill:currentColor;vertical-align:middle}.bx--search-close svg{fill:inherit}.bx--search-close,.bx--search-button{display:flex;width:2.5rem;height:2.5rem;align-items:center;justify-content:center;border-width:1px 0;border-style:solid;border-color:#0000;cursor:pointer;fill:var(--cds-icon-01, #161616);opacity:1;transition:opacity .11s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9),outline .11s cubic-bezier(.2,0,.38,.9),border .11s cubic-bezier(.2,0,.38,.9);visibility:inherit}.bx--search-close:hover,.bx--search-button:hover{background-color:var(--cds-hover-field, #e5e5e5)}.bx--search-close:focus,.bx--search-button:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--search-close:focus,.bx--search-button:focus{outline-style:dotted}}.bx--search-close:active,.bx--search-button:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;background-color:var(--cds-selected-ui, #e0e0e0)}@media screen and (prefers-contrast){.bx--search-close:active,.bx--search-button:active{outline-style:dotted}}.bx--search--disabled .bx--search-close,.bx--search--disabled.bx--search--expandable .bx--search-magnifier{cursor:not-allowed;outline:none}.bx--search--disabled .bx--search-close:hover,.bx--search--disabled.bx--search--expandable .bx--search-magnifier:hover{border-bottom-color:#0000;background-color:#0000}.bx--search--disabled .bx--search-close:hover:before,.bx--search--disabled.bx--search--expandable .bx--search-magnifier:hover:before{background-color:#0000}.bx--search--disabled svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--search-close:focus:before,.bx--search-close:active:before{background-color:var(--cds-focus, #0f62fe)}.bx--search-input:focus~.bx--search-close:hover{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--search-input:focus~.bx--search-close:hover{outline-style:dotted}}.bx--search--sm .bx--search-close,.bx--search--sm~.bx--search-button,.bx--search--sm.bx--search--expandable,.bx--search--sm.bx--search--expandable .bx--search-magnifier{width:2rem;height:2rem}.bx--search--sm.bx--search--expandable .bx--search-input::-moz-placeholder{padding:0 2rem}.bx--search--sm.bx--search--expandable .bx--search-input::placeholder{padding:0 2rem}.bx--search--lg .bx--search-close,.bx--search--lg~.bx--search-button,.bx--search--lg.bx--search--expandable,.bx--search--lg.bx--search--expandable .bx--search-magnifier{width:2.5rem;height:2.5rem}.bx--search--lg.bx--search--expandable .bx--search-input::-moz-placeholder{padding:0 2.5rem}.bx--search--lg.bx--search--expandable .bx--search-input::placeholder{padding:0 2.5rem}.bx--search--xl .bx--search-close,.bx--search--xl~.bx--search-button,.bx--search--xl.bx--search--expandable,.bx--search--xl.bx--search--expandable .bx--search-magnifier{width:3rem;height:3rem}.bx--search--xl.bx--search--expandable .bx--search-input::-moz-placeholder{padding:0 3rem}.bx--search--xl.bx--search--expandable .bx--search-input::placeholder{padding:0 3rem}.bx--search-close--hidden{opacity:0;visibility:hidden}.bx--search--xl.bx--skeleton .bx--search-input,.bx--search--lg.bx--skeleton .bx--search-input,.bx--search--sm.bx--skeleton .bx--search-input{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:100%}.bx--search--xl.bx--skeleton .bx--search-input:hover,.bx--search--xl.bx--skeleton .bx--search-input:focus,.bx--search--xl.bx--skeleton .bx--search-input:active,.bx--search--lg.bx--skeleton .bx--search-input:hover,.bx--search--lg.bx--skeleton .bx--search-input:focus,.bx--search--lg.bx--skeleton .bx--search-input:active,.bx--search--sm.bx--skeleton .bx--search-input:hover,.bx--search--sm.bx--skeleton .bx--search-input:focus,.bx--search--sm.bx--skeleton .bx--search-input:active{border:none;cursor:default;outline:none}.bx--search--xl.bx--skeleton .bx--search-input:before,.bx--search--lg.bx--skeleton .bx--search-input:before,.bx--search--sm.bx--skeleton .bx--search-input:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--search--xl.bx--skeleton .bx--search-input:before,.bx--search--lg.bx--skeleton .bx--search-input:before,.bx--search--sm.bx--skeleton .bx--search-input:before{animation:none}}.bx--search--xl.bx--skeleton .bx--search-input::-moz-placeholder,.bx--search--lg.bx--skeleton .bx--search-input::-moz-placeholder,.bx--search--sm.bx--skeleton .bx--search-input::-moz-placeholder{color:#0000}.bx--search--xl.bx--skeleton .bx--search-input::placeholder,.bx--search--lg.bx--skeleton .bx--search-input::placeholder,.bx--search--sm.bx--skeleton .bx--search-input::placeholder{color:#0000}.bx--search--expandable{transition:width 70ms cubic-bezier(.2,0,.38,.9)}.bx--search--expandable.bx--search--expanded{width:100%}.bx--search--expandable .bx--search-input{width:0;padding:0;transition:padding 70ms cubic-bezier(.2,0,.38,.9),width 0s linear 70ms}.bx--search--expandable .bx--search-input::-moz-placeholder{position:relative;opacity:0;transition-duration:70ms;-moz-transition-property:padding,opacity;transition-property:padding,opacity;transition-timing-function:cubic-bezier(.2,0,.38,.9)}.bx--search--expandable .bx--search-input::placeholder{position:relative;opacity:0;transition-duration:70ms;transition-property:padding,opacity;transition-timing-function:cubic-bezier(.2,0,.38,.9)}.bx--search--expandable.bx--search--expanded .bx--search-input{width:100%;transition:padding 70ms cubic-bezier(.2,0,.38,.9)}.bx--search--expandable.bx--search--expanded .bx--search-input::-moz-placeholder{position:relative;padding:0;opacity:1}.bx--search--expandable.bx--search--expanded .bx--search-input::placeholder{position:relative;padding:0;opacity:1}.bx--search--expandable .bx--search-magnifier{position:absolute;cursor:pointer}.bx--search--expandable .bx--search-magnifier:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--search--expandable.bx--search--expanded .bx--search-magnifier{pointer-events:none}.bx--search--expandable .bx--search-magnifier-icon{fill:var(--cds-icon-01, #161616)}.bx--search--expandable.bx--search--expanded .bx--search-magnifier-icon{fill:var(--cds-icon-02, #525252)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--search-close svg,.bx--search-magnifier-icon{fill:ButtonText}}.bx--skeleton__text{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:100%;height:1rem;margin-bottom:.5rem}.bx--skeleton__text:hover,.bx--skeleton__text:focus,.bx--skeleton__text:active{border:none;cursor:default;outline:none}.bx--skeleton__text:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--skeleton__text:before{animation:none}}.bx--skeleton__heading{height:1.5rem}.bx--icon--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;display:inline-block;width:1rem;height:1rem}.bx--icon--skeleton:hover,.bx--icon--skeleton:focus,.bx--icon--skeleton:active{border:none;cursor:default;outline:none}.bx--icon--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--icon--skeleton:before{animation:none}}.bx--skeleton__placeholder{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:6.25rem;height:6.25rem}.bx--skeleton__placeholder:hover,.bx--skeleton__placeholder:focus,.bx--skeleton__placeholder:active{border:none;cursor:default;outline:none}.bx--skeleton__placeholder:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--skeleton__placeholder:before{animation:none}}.bx--slider-container{display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--slider{position:relative;width:100%;min-width:12.5rem;max-width:40rem;padding:var(--cds-spacing-05, 1rem) 0;margin:0 1rem;cursor:pointer}.bx--slider__range-label{font-family:var(--cds-code-02-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-02-font-size, .875rem);font-weight:var(--cds-code-02-font-weight, 400);line-height:var(--cds-code-02-line-height, 1.42857);letter-spacing:var(--cds-code-02-letter-spacing, .32px);color:var(--cds-text-01, #161616);white-space:nowrap}.bx--slider__range-label:last-of-type{margin-right:1rem}.bx--slider__track{position:absolute;width:100%;height:.125rem;background:var(--cds-ui-03, #e0e0e0);transform:translateY(-50%)}.bx--slider__track:before{position:absolute;top:-.3125rem;left:50%;display:inline-block;width:.125rem;height:.25rem;background:var(--cds-ui-03, #e0e0e0);content:"";transform:translate(-50%)}.bx--slider__filled-track{position:absolute;width:100%;height:.125rem;background:var(--cds-ui-05, #161616);pointer-events:none;transform:translateY(-50%);transform-origin:left;transition:background .11s cubic-bezier(.2,0,.38,.9)}.bx--slider__thumb{position:absolute;z-index:3;width:.875rem;height:.875rem;background:var(--cds-ui-05, #161616);border-radius:50%;box-shadow:inset 0 0 0 1px #0000,inset 0 0 0 2px #0000;outline:none;transform:translate(-50%,-50%);transition:transform .11s cubic-bezier(.2,0,.38,.9),background .11s cubic-bezier(.2,0,.38,.9),box-shadow .11s cubic-bezier(.2,0,.38,.9)}.bx--slider__thumb:hover{transform:translate(-50%,-50%) scale(1.4286)}.bx--slider__thumb:focus{background-color:var(--cds-interactive-04, #0f62fe);box-shadow:inset 0 0 0 2px var(--cds-interactive-04, #0f62fe),inset 0 0 0 3px var(--cds-ui-01, #f4f4f4);transform:translate(-50%,-50%) scale(1.4286)}.bx--slider__thumb:active{box-shadow:inset 0 0 0 2px var(--cds-interactive-04, #0f62fe);transform:translate(-50%,-50%) scale(1.4286)}.bx--slider__input{display:none}.bx--slider-text-input,.bx-slider-text-input{width:4rem;height:2.5rem;-moz-appearance:textfield;text-align:center}.bx--slider-text-input::-webkit-outer-spin-button,.bx--slider-text-input::-webkit-inner-spin-button,.bx-slider-text-input::-webkit-outer-spin-button,.bx-slider-text-input::-webkit-inner-spin-button{display:none}.bx--slider-text-input.bx--text-input--invalid{padding-right:1rem}.bx--slider__thumb:focus~.bx--slider__filled-track{background-color:var(--cds-interactive-04, #0f62fe)}.bx--label--disabled~.bx--slider-container>.bx--slider__range-label{color:var(--cds-disabled-02, #c6c6c6)}.bx--slider--disabled.bx--slider{cursor:not-allowed}.bx--slider--disabled .bx--slider__thumb{background-color:var(--cds-ui-03, #e0e0e0)}.bx--slider--disabled .bx--slider__thumb:hover{cursor:not-allowed;transform:translate(-50%,-50%)}.bx--slider--disabled .bx--slider__thumb:focus{background-color:var(--cds-ui-03, #e0e0e0);box-shadow:none;outline:none;transform:translate(-50%,-50%)}.bx--slider--disabled .bx--slider__thumb:active{background:var(--cds-ui-03, #e0e0e0);transform:translate(-50%,-50%)}.bx--slider--disabled .bx--slider__track,.bx--slider--disabled .bx--slider__filled-track,.bx--slider--disabled .bx--slider__thumb:focus~.bx--slider__filled-track{background-color:var(--cds-ui-03, #e0e0e0)}.bx--slider--disabled~.bx--form-item .bx--slider-text-input,.bx--slider--disabled~.bx--slider-text-input{border:none;background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed;transition:none}.bx--slider--disabled~.bx--form-item .bx--slider-text-input:active,.bx--slider--disabled~.bx--form-item .bx--slider-text-input:focus,.bx--slider--disabled~.bx--form-item .bx--slider-text-input:hover,.bx--slider--disabled~.bx--slider-text-input:active,.bx--slider--disabled~.bx--slider-text-input:focus,.bx--slider--disabled~.bx--slider-text-input:hover{color:var(--cds-disabled-02, #c6c6c6);outline:none}.bx--slider-container.bx--skeleton .bx--slider__range-label{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:1.25rem;height:.75rem}.bx--slider-container.bx--skeleton .bx--slider__range-label:hover,.bx--slider-container.bx--skeleton .bx--slider__range-label:focus,.bx--slider-container.bx--skeleton .bx--slider__range-label:active{border:none;cursor:default;outline:none}.bx--slider-container.bx--skeleton .bx--slider__range-label:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--slider-container.bx--skeleton .bx--slider__range-label:before{animation:none}}.bx--slider-container.bx--skeleton .bx--slider__track{cursor:default;pointer-events:none}.bx--slider-container.bx--skeleton .bx--slider__thumb{left:50%;cursor:default;pointer-events:none}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--slider__thumb{outline:1px solid rgba(0,0,0,0)}.bx--slider__thumb:focus{color:Highlight;outline:1px solid Highlight}.bx--slider__track{outline:1px solid rgba(0,0,0,0)}}.bx--structured-list--selection .bx--structured-list-td,.bx--structured-list--selection .bx--structured-list-th,.bx--structured-list--selection .bx--structured-list-td:first-child,.bx--structured-list--selection .bx--structured-list-th:first-child{padding-right:1rem;padding-left:1rem}.bx--structured-list-input{display:none}.bx--structured-list{display:table;width:100%;margin-bottom:5rem;background-color:#0000;border-collapse:collapse;border-spacing:0;overflow-x:auto}.bx--structured-list.bx--structured-list--condensed .bx--structured-list-td,.bx--structured-list.bx--structured-list--condensed .bx--structured-list-th{padding:.5rem}.bx--structured-list .bx--structured-list-row .bx--structured-list-td:first-of-type,.bx--structured-list .bx--structured-list-row .bx--structured-list-th:first-of-type{padding-left:1rem}.bx--structured-list.bx--structured-list--flush .bx--structured-list-row .bx--structured-list-td,.bx--structured-list.bx--structured-list--flush .bx--structured-list-row .bx--structured-list-th,.bx--structured-list.bx--structured-list--flush .bx--structured-list-row .bx--structured-list-td:first-of-type,.bx--structured-list.bx--structured-list--flush .bx--structured-list-row .bx--structured-list-th:first-of-type{padding-right:1rem;padding-left:0}.bx--structured-list-row{display:table-row;border-bottom:1px solid var(--cds-ui-03, #e0e0e0);transition:background-color .11s cubic-bezier(.2,0,.38,.9)}.bx--structured-list--selection .bx--structured-list-row:hover:not(.bx--structured-list-row--header-row):not(.bx--structured-list-row--selected){border-bottom:1px solid var(--cds-hover-row, #e5e5e5);background-color:var(--cds-hover-row, #e5e5e5);cursor:pointer}.bx--structured-list-row.bx--structured-list-row--selected{background-color:var(--cds-selected-ui, #e0e0e0)}.bx--structured-list-row.bx--structured-list-row--header-row{border-bottom:1px solid var(--cds-selected-ui, #e0e0e0);cursor:inherit}.bx--structured-list-row:focus:not(.bx--structured-list-row--header-row){outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--structured-list-row:focus:not(.bx--structured-list-row--header-row){outline-style:dotted}}.bx--structured-list--selection .bx--structured-list-row:hover:not(.bx--structured-list-row--header-row)>.bx--structured-list-td,.bx--structured-list-row.bx--structured-list-row--selected>.bx--structured-list-td{color:var(--cds-text-01, #161616)}.bx--structured-list--selection .bx--structured-list-row:hover:not(.bx--structured-list-row--header-row)>.bx--structured-list-td{border-top:1px solid var(--cds-ui-01, #f4f4f4)}.bx--structured-list-thead{display:table-header-group;vertical-align:middle}.bx--structured-list-th{padding:1rem .5rem .5rem;font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);display:table-cell;height:2.5rem;color:var(--cds-text-01, #161616);font-weight:600;text-align:left;text-transform:none;vertical-align:top}.bx--structured-list-tbody{display:table-row-group;vertical-align:middle}.bx--structured-list-td{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);padding:1rem .5rem 1.5rem;position:relative;display:table-cell;max-width:36rem;color:var(--cds-text-02, #525252);transition:color .11s cubic-bezier(.2,0,.38,.9)}.bx--structured-list-content--nowrap{white-space:nowrap}.bx--structured-list-svg{display:inline-block;fill:#0000;transition:all .11s cubic-bezier(.2,0,.38,.9);vertical-align:middle}.bx--structured-list-input:checked+.bx--structured-list-row .bx--structured-list-svg,.bx--structured-list-input:checked+.bx--structured-list-td .bx--structured-list-svg{fill:var(--cds-icon-01, #161616)}.bx--structured-list.bx--skeleton .bx--structured-list-th:first-child{width:8%}.bx--structured-list.bx--skeleton .bx--structured-list-th:nth-child(3n+2){width:30%}.bx--structured-list.bx--skeleton .bx--structured-list-th:nth-child(3n+3){width:15%}.bx--structured-list.bx--skeleton span{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;display:block;width:75%;height:1rem}.bx--structured-list.bx--skeleton span:hover,.bx--structured-list.bx--skeleton span:focus,.bx--structured-list.bx--skeleton span:active{border:none;cursor:default;outline:none}.bx--structured-list.bx--skeleton span:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--structured-list.bx--skeleton span:before{animation:none}}.bx--structured-list.bx--structured-list--selection.bx--skeleton .bx--structured-list-th:first-child{width:5%}.bx--structured-list.bx--structured-list--selection.bx--skeleton .bx--structured-list-th:first-child span{display:none}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--structured-list-input:checked+.bx--structured-list-td .bx--structured-list-svg{fill:ButtonText}}.bx--tabs{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:relative;width:100%;height:auto;color:var(--cds-text-01, #161616)}@media (min-width: 42rem){.bx--tabs{min-height:2.5rem;background:none}.bx--tabs--container{min-height:3rem}}.bx--tabs-trigger{display:flex;height:2.5rem;align-items:center;justify-content:space-between;padding:0 var(--cds-spacing-09, 3rem) 0 var(--cds-spacing-05, 1rem);border-bottom:1px solid var(--cds-ui-04, #8d8d8d);background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616);cursor:pointer;outline:2px solid rgba(0,0,0,0)}@media (min-width: 42rem){.bx--tabs-trigger{display:none}}.bx--tabs-trigger:focus,.bx--tabs-trigger:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tabs-trigger:focus,.bx--tabs-trigger:active{outline-style:dotted}}.bx--tabs-trigger svg{position:absolute;right:var(--cds-spacing-05, 1rem);fill:var(--cds-ui-05, #161616);transition:transform 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs-trigger--open:focus,.bx--tabs-trigger--open:active{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;transition:outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs-trigger--open{background:var(--cds-ui-03, #e0e0e0)}.bx--tabs-trigger--open svg{transform:rotate(-180deg);transform-origin:50% 45%;transition:transform 70ms}.bx--tabs--light.bx--tabs-trigger{background-color:var(--cds-field-02, #ffffff)}.bx--tabs-trigger-text{overflow:hidden;padding-top:2px;color:var(--cds-text-01, #161616);font-weight:400;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.bx--tabs-trigger-text:hover{color:var(--cds-text-01, #161616)}.bx--tabs-trigger-text:focus{outline:none}.bx--tabs__nav{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:absolute;z-index:9100;display:flex;width:100%;max-height:600px;flex-direction:column;padding:0;margin:0;background:var(--cds-ui-01, #f4f4f4);list-style:none;transition:max-height 70ms cubic-bezier(.2,0,.38,.9)}@media (min-width: 42rem){.bx--tabs__nav{z-index:auto;width:auto;flex-direction:row;background:none;box-shadow:none;transition:inherit}}.bx--tabs__nav--hidden{overflow:hidden;max-height:0;transition:max-height 70ms cubic-bezier(.2,0,.38,.9)}@media (min-width: 42rem){.bx--tabs__nav--hidden{display:flex;max-width:100%;max-height:none;overflow-x:auto;transition:inherit}}.bx--tabs__nav-item{display:flex;width:100%;height:2.5rem;padding:0;background-color:var(--cds-ui-01, #f4f4f4);cursor:pointer;transition:background-color 70ms cubic-bezier(.2,0,.38,.9)}@media (min-width: 42rem){.bx--tabs__nav-item{height:auto;background:rgba(0,0,0,0)}.bx--tabs__nav-item+.bx--tabs__nav-item{margin-left:.0625rem}.bx--tabs--container .bx--tabs__nav-item{background-color:var(--cds-ui-03, #e0e0e0)}.bx--tabs--container .bx--tabs__nav-item+.bx--tabs__nav-item{margin-left:0;box-shadow:-1px 0 0 0 var(--cds-ui-04, #8d8d8d)}.bx--tabs--container .bx--tabs__nav-item+.bx--tabs__nav-item.bx--tabs__nav-item--selected,.bx--tabs--container .bx--tabs__nav-item.bx--tabs__nav-item--selected+.bx--tabs__nav-item{box-shadow:none}}.bx--tabs__nav-item .bx--tabs__nav-link{transition:color 70ms cubic-bezier(.2,0,.38,.9),border-bottom-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}@media (min-width: 42rem){.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--selected){background:rgba(0,0,0,0)}}.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--disabled){background-color:var(--cds-hover-ui, #e5e5e5);box-shadow:0 -1px 0 var(--cds-hover-ui, #e5e5e5)}@media (min-width: 42rem){.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--disabled){background-color:#0000}.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--disabled)+.bx--tabs__nav-item{box-shadow:none}.bx--tabs--container .bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--disabled){background-color:var(--cds-hover-selected-ui, #cacaca)}}.bx--tabs__nav-item--disabled,.bx--tabs__nav-item--disabled:hover{cursor:not-allowed;outline:none}@media (min-width: 42rem){.bx--tabs--container .bx--tabs__nav-item.bx--tabs__nav-item--disabled,.bx--tabs--container .bx--tabs__nav-item.bx--tabs__nav-item--disabled:hover{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--tabs--container .bx--tabs__nav-item--disabled .bx--tabs__nav-link{border-bottom:none;color:var(--cds-disabled-03, #8d8d8d)}}.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled){display:none;border:none;transition:color 70ms cubic-bezier(.2,0,.38,.9)}@media (min-width: 42rem){.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled){display:flex}.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link,.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:focus,.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:active{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);border-bottom:2px solid var(--cds-interactive-04, #0f62fe);color:var(--cds-text-01, #161616)}.bx--tabs--container .bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled),.bx--tabs--container .bx--tabs__nav-item--selected:hover:not(.bx--tabs__nav-item--disabled){background-color:var(--cds-ui-01, #f4f4f4)}.bx--tabs--container .bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link,.bx--tabs--container .bx--tabs__nav-item--selected:hover:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link{padding:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);border-bottom:none;box-shadow:inset 0 2px 0 0 var(--cds-interactive-04, #0f62fe);line-height:calc(3rem - (var(--cds-spacing-03, .5rem) * 2))}.bx--tabs--container .bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:focus,.bx--tabs--container .bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:active,.bx--tabs--container .bx--tabs__nav-item--selected:hover:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:focus,.bx--tabs--container .bx--tabs__nav-item--selected:hover:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:active{box-shadow:none}}a.bx--tabs__nav-link{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:inline-block;overflow:hidden;width:calc(100% - 32px);height:2.5rem;padding:var(--cds-spacing-04, .75rem) 0;border-bottom:1px solid var(--cds-ui-03, #e0e0e0);margin:0 var(--cds-spacing-05, 1rem);color:var(--cds-text-02, #525252);font-weight:400;line-height:1rem;text-decoration:none;text-overflow:ellipsis;transition:border 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9);white-space:nowrap}a.bx--tabs__nav-link:focus,a.bx--tabs__nav-link:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;width:100%;padding-left:16px;margin:0}@media screen and (prefers-contrast){a.bx--tabs__nav-link:focus,a.bx--tabs__nav-link:active{outline-style:dotted}}@media (min-width: 42rem){a.bx--tabs__nav-link{width:10rem;padding:var(--cds-spacing-04, .75rem) var(--cds-spacing-05, 1rem) var(--cds-spacing-03, .5rem);border-bottom:2px solid var(--cds-ui-03, #e0e0e0);margin:0;line-height:inherit}a.bx--tabs__nav-link:focus,a.bx--tabs__nav-link:active{width:10rem;border-bottom:2px}.bx--tabs--container a.bx--tabs__nav-link{height:3rem;padding:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);border-bottom:none;line-height:calc(3rem - (var(--cds-spacing-03, .5rem) * 2))}}.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--selected):not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link{color:var(--cds-text-01, #161616)}@media (min-width: 42rem){.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--selected):not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link{border-bottom:2px solid var(--cds-ui-04, #8d8d8d);color:var(--cds-text-01, #161616)}.bx--tabs--container .bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--selected):not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link{border-bottom:none}}.bx--tabs__nav-item--disabled .bx--tabs__nav-link{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);pointer-events:none}.bx--tabs__nav-item--disabled:hover .bx--tabs__nav-link{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);cursor:no-drop}.bx--tabs__nav-item--disabled .bx--tabs__nav-link:focus,.bx--tabs__nav-item--disabled a.bx--tabs__nav-link:active{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);outline:none}.bx--tabs__nav-item:not(.bx--tabs__nav-item--selected):not(.bx--tabs__nav-item--disabled):not(.bx--tabs__nav-item--selected) .bx--tabs__nav-link:focus,.bx--tabs__nav-item:not(.bx--tabs__nav-item--selected):not(.bx--tabs__nav-item--disabled):not(.bx--tabs__nav-item--selected) a.bx--tabs__nav-link:active{color:var(--cds-text-02, #525252)}.bx--tab-content{padding:1rem}.bx--tab-content:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tab-content:focus{outline-style:dotted}}.bx--tabs.bx--skeleton{cursor:default;pointer-events:none}.bx--skeleton.bx--tabs--scrollable:not(.bx--tabs--scrollable--container) .bx--tabs--scrollable__nav-item{border-bottom:2px solid var(--cds-skeleton-02, #c6c6c6)}.bx--tabs.bx--skeleton .bx--tabs__nav-link{display:flex;width:10rem;height:100%;align-items:center;padding:0 1rem}.bx--tabs.bx--skeleton .bx--tabs__nav-link span{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;display:block;width:100%;height:.875rem}.bx--tabs.bx--skeleton .bx--tabs__nav-link span:hover,.bx--tabs.bx--skeleton .bx--tabs__nav-link span:focus,.bx--tabs.bx--skeleton .bx--tabs__nav-link span:active{border:none;cursor:default;outline:none}.bx--tabs.bx--skeleton .bx--tabs__nav-link span:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--tabs.bx--skeleton .bx--tabs__nav-link span:before{animation:none}}.bx--tabs.bx--skeleton .bx--tabs-trigger{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:6.25rem}.bx--tabs.bx--skeleton .bx--tabs-trigger:hover,.bx--tabs.bx--skeleton .bx--tabs-trigger:focus,.bx--tabs.bx--skeleton .bx--tabs-trigger:active{border:none;cursor:default;outline:none}.bx--tabs.bx--skeleton .bx--tabs-trigger:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--tabs.bx--skeleton .bx--tabs-trigger:before{animation:none}}.bx--tabs.bx--skeleton .bx--tabs-trigger svg{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--tabs--scrollable{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;width:100%;height:auto;min-height:2.5rem;color:var(--cds-text-01, #161616)}.bx--tabs--scrollable.bx--tabs--scrollable--container{min-height:3rem}.bx--tabs--scrollable .bx--tabs--scrollable__nav{display:flex;overflow:auto hidden;width:auto;max-width:100%;flex-direction:row;padding:0;margin:0;list-style:none;outline:0;scrollbar-width:none;transition:max-height 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs--scrollable .bx--tabs--scrollable__nav::-webkit-scrollbar{display:none}.bx--tabs--scrollable .bx--tabs__overflow-indicator--left,.bx--tabs--scrollable .bx--tabs__overflow-indicator--right{z-index:1;width:.5rem;flex:1 0 auto}.bx--tabs--scrollable .bx--tabs__overflow-indicator--left{margin-right:-.5rem;background-image:linear-gradient(to left,transparent,var(--cds-ui-background, #ffffff))}.bx--tabs--scrollable .bx--tabs__overflow-indicator--right{margin-left:-.5rem;background-image:linear-gradient(to right,transparent,var(--cds-ui-background, #ffffff))}.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs__overflow-indicator--left{background-image:linear-gradient(to left,transparent,var(--cds-ui-01, #f4f4f4))}.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs__overflow-indicator--right{background-image:linear-gradient(to right,transparent,var(--cds-ui-01, #f4f4f4))}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs__overflow-indicator--left{background-image:linear-gradient(to left,transparent,var(--cds-ui-03, #e0e0e0))}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs__overflow-indicator--right{background-image:linear-gradient(to right,transparent,var(--cds-ui-03, #e0e0e0))}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){.bx--tabs--scrollable .bx--tabs__overflow-indicator--left{background-image:linear-gradient(to left,rgba(var(--cds-ui-background, #ffffff),0),var(--cds-ui-background, #ffffff))}.bx--tabs--scrollable .bx--tabs__overflow-indicator--right{background-image:linear-gradient(to right,rgba(var(--cds-ui-background, #ffffff),0),var(--cds-ui-background, #ffffff))}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs__overflow-indicator--left{background-image:linear-gradient(to left,rgba(var(--cds-ui-03, #e0e0e0),0),var(--cds-ui-03, #e0e0e0))}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs__overflow-indicator--right{background-image:linear-gradient(to right,rgba(var(--cds-ui-03, #e0e0e0),0),var(--cds-ui-03, #e0e0e0))}}}.bx--tabs--scrollable .bx--tab--overflow-nav-button{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;display:flex;width:2.5rem;flex-shrink:0;align-items:center;justify-content:center}.bx--tabs--scrollable .bx--tab--overflow-nav-button::-moz-focus-inner{border:0}.bx--tabs--scrollable .bx--tab--overflow-nav-button:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tabs--scrollable .bx--tab--overflow-nav-button:focus{outline-style:dotted}}.bx--tabs--scrollable .bx--tab--overflow-nav-button--hidden{display:none}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tab--overflow-nav-button{width:3rem;margin:0;background-color:var(--cds-ui-03, #e0e0e0)}.bx--tabs--scrollable .bx--tab--overflow-nav-button svg{fill:var(--cds-icon-01, #161616)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item{display:flex;padding:0;cursor:pointer;transition:background-color 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item+.bx--tabs--scrollable__nav-item{margin-left:.0625rem}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item{background-color:var(--cds-ui-03, #e0e0e0)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item+.bx--tabs--scrollable__nav-item{margin-left:0;box-shadow:-.0625rem 0 0 0 var(--cds-ui-04, #8d8d8d)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item+.bx--tabs--scrollable__nav-item.bx--tabs--scrollable__nav-item--selected,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item.bx--tabs--scrollable__nav-item--selected+.bx--tabs--scrollable__nav-item{box-shadow:none}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item .bx--tabs--scrollable__nav-link{transition:color 70ms cubic-bezier(.2,0,.38,.9),border-bottom-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item:hover{background-color:var(--cds-hover-selected-ui, #cacaca)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled,.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled:hover{background-color:#0000;cursor:not-allowed;outline:none}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item.bx--tabs--scrollable__nav-item--disabled,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item.bx--tabs--scrollable__nav-item--disabled:hover{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--selected{transition:color 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link,.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link:active{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);border-bottom:2px solid var(--cds-interactive-04, #0f62fe);color:var(--cds-text-01, #161616)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected:hover{background-color:var(--cds-ui-01, #f4f4f4)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link:active,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected:hover .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected:hover .bx--tabs--scrollable__nav-link:active{box-shadow:none}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link{box-shadow:inset 0 2px 0 0 var(--cds-interactive-04, #0f62fe);line-height:calc(3rem - (var(--cds-spacing-03, .5rem) * 2))}.bx--tabs--scrollable.bx--tabs--scrollable--light.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected,.bx--tabs--scrollable.bx--tabs--scrollable--light.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected:hover{background-color:var(--cds-ui-background, #ffffff)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-link{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;outline:2px solid rgba(0,0,0,0);outline-offset:-2px;font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);width:10rem;overflow:hidden;padding:var(--cds-spacing-04, .75rem) var(--cds-spacing-05, 1rem) var(--cds-spacing-03, .5rem);border-bottom:2px solid var(--cds-ui-03, #e0e0e0);color:var(--cds-text-02, #525252);text-align:left;text-decoration:none;text-overflow:ellipsis;transition:border 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9);white-space:nowrap}.bx--tabs--scrollable .bx--tabs--scrollable__nav-link::-moz-focus-inner{border:0}.bx--tabs--scrollable .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs--scrollable__nav-link:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tabs--scrollable .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs--scrollable__nav-link:active{outline-style:dotted}}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-link{height:3rem;padding:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);border-bottom:0;line-height:calc(3rem - (var(--cds-spacing-03, .5rem) * 2))}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item:hover .bx--tabs--scrollable__nav-link{border-bottom:2px solid var(--cds-ui-04, #8d8d8d);color:var(--cds-text-01, #161616)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item .bx--tabs--scrollable__nav-link{border-bottom:none}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled:hover .bx--tabs--scrollable__nav-link{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed;pointer-events:none}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link:active{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);outline:none}.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link,.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs--scrollable__nav-item--disabled:hover .bx--tabs--scrollable__nav-link{border-bottom-color:var(--cds-ui-03, #e0e0e0)}.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link:active{border-bottom-color:var(--cds-ui-03, #e0e0e0)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link{border-bottom:none;color:var(--cds-disabled-03, #8d8d8d)}.bx--tabs--scrollable .bx--tab-content{padding:1rem}.bx--tabs--scrollable .bx--tabs.bx--skeleton{cursor:default;pointer-events:none}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:4.6875rem}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link:hover,.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link:active{border:none;cursor:default;outline:none}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link:before{animation:none}}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:4.6875rem;margin-right:.0625rem}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger:hover,.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger:focus,.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger:active{border:none;cursor:default;outline:none}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger:before{animation:none}}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger svg{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--tabs--scrollable__nav-item .bx--tabs__nav-item--selected .bx--tabs--scrollable__nav-item--selected{color:Highlight;outline:1px solid Highlight}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link{color:GrayText;fill:GrayText}}.bx--text-area{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;width:100%;min-width:10rem;height:100%;min-height:2.5rem;padding:.6875rem 1rem;border:none;border-bottom:1px solid var(--cds-ui-04, #8d8d8d);background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616);resize:vertical;transition:background-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--text-area:focus,.bx--text-area:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--text-area:focus,.bx--text-area:active{outline-style:dotted}}.bx--text-area::-moz-placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1;font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px)}.bx--text-area::placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1;font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px)}.bx--text-area--light{background-color:var(--cds-field-02, #ffffff)}.bx--text-area--invalid{padding-right:2.5rem}.bx--text-area__wrapper{position:relative;display:flex;width:100%}.bx--text-area__invalid-icon{position:absolute;top:.75rem;right:1rem;fill:var(--cds-support-01, #da1e28)}.bx--text-area:disabled{border-bottom:1px solid rgba(0,0,0,0);background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed;outline:none}.bx--text-area:disabled::-moz-placeholder{color:var(--cds-disabled-02, #c6c6c6)}.bx--text-area:disabled::placeholder{color:var(--cds-disabled-02, #c6c6c6)}.bx--text-area.bx--text-area--light:disabled{background-color:var(--cds-field-02, #ffffff)}.bx--text-area.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;height:6.25rem}.bx--text-area.bx--skeleton:hover,.bx--text-area.bx--skeleton:focus,.bx--text-area.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--text-area.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--text-area.bx--skeleton:before{animation:none}}.bx--text-area.bx--skeleton::-moz-placeholder{color:#0000}.bx--text-area.bx--skeleton::placeholder{color:#0000}.bx--text-area__label-wrapper{display:flex;width:100%;justify-content:space-between}.bx--tile{display:block;min-width:8rem;min-height:4rem;padding:var(--cds-spacing-05, 1rem);background-color:var(--cds-ui-01, #f4f4f4);outline:2px solid rgba(0,0,0,0);outline-offset:-2px}.bx--tile:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tile:focus{outline-style:dotted}}.bx--tile--light{background-color:var(--cds-ui-02, #ffffff)}.bx--tile--clickable,.bx--tile--selectable,.bx--tile--expandable{cursor:pointer;transition:.15s cubic-bezier(.2,0,.38,.9)}.bx--tile--clickable:hover,.bx--tile--selectable:hover,.bx--tile--expandable:hover{background:var(--cds-hover-ui, #e5e5e5)}.bx--tile--expandable .bx--link{color:var(--cds-link-secondary, #0043ce)}.bx--tile--clickable:focus,.bx--tile--expandable:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tile--clickable:focus,.bx--tile--expandable:focus{outline-style:dotted}}.bx--tile--clickable:hover .bx--tile__checkmark,.bx--tile--clickable:focus .bx--tile__checkmark,.bx--tile--expandable:hover .bx--tile__checkmark,.bx--tile--expandable:focus .bx--tile__checkmark{opacity:1}.bx--tile--expandable::-moz-focus-inner{border:0}.bx--tile--clickable{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);color:var(--cds-text-01, #161616);text-decoration:none}.bx--tile--clickable:hover,.bx--tile--clickable:active,.bx--tile--clickable:visited,.bx--tile--clickable:visited:hover{color:var(--cds-text-01, #161616);text-decoration:none}.bx--tile--clickable.bx--link--disabled{color:var(--cds-disabled-02, #c6c6c6)}.bx--tile--clickable:hover.bx--link--disabled{display:block;background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6)}.bx--tile--selectable{position:relative;padding-right:3rem;border:1px solid rgba(0,0,0,0)}.bx--tile__checkmark,.bx--tile__chevron{position:absolute;border:none;background:rgba(0,0,0,0);transition:.11s cubic-bezier(.2,0,.38,.9)}.bx--tile__checkmark{top:1rem;right:1rem;height:1rem;opacity:0}.bx--tile__checkmark svg{border-radius:50%;fill:var(--cds-icon-02, #525252)}.bx--tile__checkmark:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tile__checkmark:focus{outline-style:dotted}}.bx--tile__checkmark--persistent{opacity:1}.bx--tile__chevron{position:absolute;right:1rem;bottom:1rem;display:flex;height:1rem;align-items:flex-end}.bx--tile__chevron svg{margin-left:.5rem;fill:var(--cds-ui-05, #161616);transform-origin:center;transition:.11s cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tile__chevron svg{transition:none}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tile__chevron svg{fill:ButtonText}}.bx--tile__chevron:hover{cursor:pointer}.bx--tile__chevron:focus{outline:none}.bx--tile--expandable{position:relative;overflow:hidden;width:100%;border:0;color:inherit;font-size:inherit;text-align:left;transition:max-height .15s cubic-bezier(.2,0,.38,.9)}.bx--tile-content__above-the-fold{display:block}.bx--tile-content__below-the-fold{display:block;opacity:0;transition:opacity .11s cubic-bezier(.2,0,.38,.9),visibility .11s cubic-bezier(.2,0,.38,.9);visibility:hidden}.bx--tile--is-expanded{overflow:visible;transition:max-height .11s cubic-bezier(.2,0,.38,.9)}.bx--tile--is-expanded .bx--tile__chevron svg{transform:rotate(180deg)}.bx--tile--is-expanded .bx--tile-content__below-the-fold{opacity:1;transition:opacity .11s cubic-bezier(.2,0,.38,.9),visibility .11s cubic-bezier(.2,0,.38,.9);visibility:inherit}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){.bx--tile--is-expanded .bx--tile-content__below-the-fold{overflow-y:auto}}}.bx--tile--is-selected{border:1px solid var(--cds-ui-05, #161616)}.bx--tile--is-selected .bx--tile__checkmark{opacity:1}.bx--tile--is-selected .bx--tile__checkmark svg{fill:var(--cds-ui-05, #161616)}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tile--is-selected .bx--tile__checkmark svg{fill:ButtonText}}.bx--tile-content{width:100%;height:100%}.bx--tile-input{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--tile-input:focus+.bx--tile{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tile-input:focus+.bx--tile{outline-style:dotted}}.bx--tile--disabled.bx--tile--selectable{background-color:var(--cds-ui-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--tile--disabled.bx--tile--selectable.bx--tile--light{background-color:var(--cds-ui-02, #ffffff)}.bx--tile--disabled.bx--tile--is-selected{outline-color:var(--cds-disabled-02, #c6c6c6)}.bx--tile--disabled.bx--tile--is-selected .bx--tile__checkmark svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--time-picker{display:flex;align-items:flex-end}.bx--time-picker__select{justify-content:center}.bx--time-picker__select:not(:last-of-type){margin:0 .125rem}.bx--time-picker__input{display:flex;flex-direction:column}.bx--time-picker .bx--select-input{width:auto;min-width:auto;padding-right:3rem;margin:0}.bx--time-picker__input-field{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;font-family:var(--cds-code-02-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-02-font-size, .875rem);font-weight:var(--cds-code-02-font-weight, 400);line-height:var(--cds-code-02-line-height, 1.42857);letter-spacing:var(--cds-code-02-letter-spacing, .32px);display:flex;width:4.875rem;height:2.5rem;align-items:center;transition:outline 70ms cubic-bezier(.2,0,.38,.9),background-color 70ms cubic-bezier(.2,0,.38,.9)}.bx--time-picker__input-field::-moz-placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--time-picker__input-field::placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--time-picker--light .bx--select-input{background-color:var(--cds-field-02, #ffffff)}.bx--time-picker--light .bx--select-input:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--time-picker--light .bx--select-input:disabled,.bx--time-picker--light .bx--select-input:hover:disabled{border-bottom:1px solid rgba(0,0,0,0);background-color:#0000;color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--time-picker--sm .bx--select-input,.bx--time-picker--sm .bx--time-picker__input-field{height:2rem;max-height:2rem}.bx--time-picker--xl .bx--select-input,.bx--time-picker--xl .bx--time-picker__input-field,.bx--time-picker--lg .bx--select-input,.bx--time-picker--lg .bx--time-picker__input-field{height:3rem;max-height:3rem}.bx--toggle{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--toggle:focus{outline:none}.bx--toggle__label{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);position:relative;display:flex;align-items:center;margin:.5rem 0;cursor:pointer}.bx--toggle__appearance{position:relative;width:3rem;height:1.5rem}.bx--toggle__appearance:before{position:absolute;top:0;display:block;width:3rem;height:1.5rem;box-sizing:border-box;background-color:var(--cds-ui-04, #8d8d8d);border-radius:.9375rem;box-shadow:0 0 0 1px #0000,0 0 0 3px #0000;content:"";cursor:pointer;transition:box-shadow 70ms cubic-bezier(.2,0,1,.9),background-color 70ms cubic-bezier(.2,0,1,.9);will-change:box-shadow}@media screen and (prefers-reduced-motion: reduce){.bx--toggle__appearance:before{transition:none}}.bx--toggle__appearance:after{position:absolute;top:.1875rem;left:.1875rem;display:block;width:1.125rem;height:1.125rem;box-sizing:border-box;background-color:var(--cds-icon-03, #ffffff);border-radius:50%;content:"";cursor:pointer;transition:transform 70ms cubic-bezier(.2,0,1,.9)}.bx--toggle__check{position:absolute;z-index:1;top:.375rem;left:.375rem;width:.375rem;height:.3125rem;fill:var(--cds-icon-03, #ffffff);transform:scale(.2);transition:70ms cubic-bezier(.2,0,1,.9)}.bx--toggle__text--left,.bx--toggle__text--right{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:relative;margin-left:.5rem}.bx--toggle__text--left{position:absolute;left:3rem}.bx--toggle:checked+.bx--toggle__label .bx--toggle__text--left,.bx--toggle:not(:checked)+.bx--toggle__label .bx--toggle__text--right{visibility:hidden}.bx--toggle:checked+.bx--toggle__label .bx--toggle__text--right,.bx--toggle:not(:checked)+.bx--toggle__label .bx--toggle__text--left{display:inline}.bx--toggle:checked+.bx--toggle__label .bx--toggle__appearance:before{background-color:var(--cds-support-02, #198038)}.bx--toggle:checked+.bx--toggle__label .bx--toggle__appearance:after{background-color:var(--cds-icon-03, #ffffff);transform:translate(1.5rem)}.bx--toggle+.bx--toggle__label .bx--toggle__appearance:before{box-shadow:0 0 0 1px #0000,0 0 0 3px #0000}.bx--toggle:focus+.bx--toggle__label,.bx--toggle:active+.bx--toggle__label .bx--toggle__appearance:before{box-shadow:0 0 0 1px var(--cds-ui-03, #e0e0e0),0 0 0 3px var(--cds-focus, #0f62fe)}.bx--toggle:disabled+.bx--toggle__label{cursor:not-allowed}.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:before{background-color:var(--cds-disabled-01, #f4f4f4)}.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:after{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:before,.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:after{cursor:not-allowed;transition:70ms cubic-bezier(.2,0,1,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:before,.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:after{transition:none}}.bx--toggle:disabled+.bx--toggle__label .bx--toggle__text--left,.bx--toggle:disabled+.bx--toggle__label .bx--toggle__text--right{color:var(--cds-disabled-02, #c6c6c6)}.bx--toggle:disabled:active+.bx--toggle__label .bx--toggle__appearance:before{box-shadow:none}.bx--toggle:disabled+.bx--toggle__label .bx--toggle__check{fill:var(--cds-disabled-02, #c6c6c6)}.bx--toggle--small+.bx--toggle__label .bx--toggle__appearance{width:2rem;height:1rem}.bx--toggle--small+.bx--toggle__label .bx--toggle__appearance:before{top:0;width:2rem;height:1rem;box-sizing:border-box;border-radius:.9375rem}.bx--toggle--small+.bx--toggle__label .bx--toggle__appearance:after{top:.1875rem;left:.1875rem;width:.625rem;height:.625rem}.bx--toggle--small:checked+.bx--toggle__label .bx--toggle__check{fill:var(--cds-support-02, #198038);transform:scale(1) translate(1rem)}.bx--toggle--small+.bx--toggle__label .bx--toggle__text--left{left:2rem}.bx--toggle--small:checked+.bx--toggle__label .bx--toggle__appearance:after{margin-left:0;transform:translate(1.0625rem)}.bx--toggle-input{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--toggle-input:focus{outline:none}.bx--toggle-input__label{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);display:flex;flex-direction:column;align-items:flex-start;color:var(--cds-text-02, #525252);cursor:pointer}.bx--toggle__switch{position:relative;display:flex;width:3rem;height:1.5rem;align-items:center;cursor:pointer}.bx--toggle__switch:before{position:absolute;top:0;display:block;width:3rem;height:1.5rem;box-sizing:border-box;background-color:var(--cds-ui-04, #8d8d8d);border-radius:.9375rem;box-shadow:0 0 0 1px #0000,0 0 0 3px #0000;content:"";transition:box-shadow 70ms cubic-bezier(.2,0,1,.9),background-color 70ms cubic-bezier(.2,0,1,.9);will-change:box-shadow}@media screen and (prefers-reduced-motion: reduce){.bx--toggle__switch:before{transition:none}}.bx--toggle__switch:after{position:absolute;top:.1875rem;left:.1875rem;display:block;width:1.125rem;height:1.125rem;box-sizing:border-box;background-color:var(--cds-icon-03, #ffffff);border-radius:50%;content:"";transition:transform 70ms cubic-bezier(.2,0,1,.9)}.bx--toggle-input__label .bx--toggle__switch{margin-top:1rem}.bx--toggle__text--off,.bx--toggle__text--on{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:absolute;top:50%;margin-left:3.5rem;transform:translateY(-50%);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.bx--toggle-input:checked+.bx--toggle-input__label>.bx--toggle__switch>.bx--toggle__text--off,.bx--toggle-input:not(:checked)+.bx--toggle-input__label>.bx--toggle__switch>.bx--toggle__text--on{visibility:hidden}.bx--toggle-input:checked+.bx--toggle-input__label>.bx--toggle__switch:before{background-color:var(--cds-support-02, #198038)}.bx--toggle-input:checked+.bx--toggle-input__label>.bx--toggle__switch:after{background-color:var(--cds-icon-03, #ffffff);transform:translate(1.5rem)}.bx--toggle-input:focus+.bx--toggle-input__label>.bx--toggle__switch:before,.bx--toggle-input:active+.bx--toggle-input__label>.bx--toggle__switch:before{box-shadow:0 0 0 1px var(--cds-ui-02, #ffffff),0 0 0 3px var(--cds-focus, #0f62fe)}.bx--toggle-input:disabled+.bx--toggle-input__label{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch{cursor:not-allowed}.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:before{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:after{background-color:var(--cds-disabled-03, #8d8d8d)}.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:before,.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:after{cursor:not-allowed;transition:70ms cubic-bezier(.2,0,1,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:before,.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:after{transition:none}}.bx--toggle-input:disabled:active+.bx--toggle-input__label>.bx--toggle__switch:before{box-shadow:none}.bx--toggle-input--small+.bx--toggle-input__label>.bx--toggle__switch{width:2rem;height:1rem}.bx--toggle-input--small+.bx--toggle-input__label>.bx--toggle__switch:before{width:2rem;height:1rem;border-radius:.9375rem}.bx--toggle-input--small+.bx--toggle-input__label>.bx--toggle__switch:after{width:.625rem;height:.625rem}.bx--toggle-input--small+.bx--toggle-input__label .bx--toggle__text--off,.bx--toggle-input--small+.bx--toggle-input__label .bx--toggle__text--on{margin-left:2.5rem}.bx--toggle-input--small:checked+.bx--toggle-input__label>.bx--toggle__switch:after{transform:translate(1.0625rem)}.bx--toggle-input--small:checked+.bx--toggle-input__label .bx--toggle__check{fill:var(--cds-support-02, #198038);transform:scale(1) translate(1rem)}.bx--toggle-input--small:disabled:checked+.bx--toggle-input__label .bx--toggle__check{fill:var(--cds-disabled-01, #f4f4f4)}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:3rem;margin-top:.5rem}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:hover,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:focus,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:active{border:none;cursor:default;outline:none}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:before{animation:none}}.bx--toggle.bx--skeleton+.bx--toggle-input__label>div{overflow:hidden;width:1.5rem;height:.5rem;font-size:0%;line-height:0;position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none}.bx--toggle.bx--skeleton+.bx--toggle-input__label>div:hover,.bx--toggle.bx--skeleton+.bx--toggle-input__label>div:focus,.bx--toggle.bx--skeleton+.bx--toggle-input__label>div:active{border:none;cursor:default;outline:none}.bx--toggle.bx--skeleton+.bx--toggle-input__label>div:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--toggle.bx--skeleton+.bx--toggle-input__label>div:before{animation:none}}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:2rem;margin-top:.5rem}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:hover,.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:focus,.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:active{border:none;cursor:default;outline:none}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:before{animation:none}}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div{overflow:hidden;width:1rem;height:.5rem;font-size:0%;line-height:0;position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div:hover,.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div:focus,.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div:active{border:none;cursor:default;outline:none}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div:before{animation:none}}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;position:absolute;width:1rem;height:.5rem}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left:hover,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left:focus,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left:active{border:none;cursor:default;outline:none}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left:before{animation:none}}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left{left:2rem}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:after,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__appearance:after,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__appearance:before{display:none}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:before{border-radius:0}.bx--toolbar{display:flex;flex-flow:row nowrap;align-items:center;margin:1rem 0}.bx--toolbar>div{margin:0 .25rem}.bx--toolbar .bx--search-input{height:2rem;background-color:#0000;outline:none}.bx--toolbar .bx--search-close{display:none}.bx--toolbar .bx--overflow-menu__icon{fill:var(--cds-text-02, #525252);transition:fill 50ms cubic-bezier(.2,0,.38,.9)}.bx--toolbar .bx--search-magnifier{top:.5rem;left:.375rem;cursor:pointer;fill:var(--cds-text-02, #525252);transform:scale(1.15);transition:all 175ms cubic-bezier(.2,0,.38,.9)}.bx--toolbar fieldset{padding:0;border:0}.bx--toolbar .bx--toolbar-search--active{width:15.625rem}.bx--toolbar .bx--toolbar-search--active .bx--search-magnifier{top:.5625rem;transform:scale(1)}.bx--toolbar .bx--toolbar-search--active .bx--search-input{background-color:var(--cds-field-02, #ffffff)}.bx--toolbar .bx--toolbar-search--active .bx--search-close{display:block}.bx--toolbar .bx--checkbox-label{margin-bottom:0}.bx--toolbar .bx--overflow-menu--open>.bx--overflow-menu__icon{fill:var(--cds-brand-01, #0f62fe)}.bx--toolbar-search{width:1.8rem;transition:all 175ms cubic-bezier(.2,0,.38,.9)}.bx--toolbar-search__btn{position:absolute;top:0;left:0;width:2rem;height:2rem;border:0;background:rgba(0,0,0,0)}.bx--toolbar-search__btn:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--toolbar-search__btn:focus{outline-style:dotted}}.bx--toolbar-filter-icon{padding-right:0;padding-left:0}.bx--toolbar-menu__title{font-size:var(--cds-caption-01-font-size, .75rem);font-weight:var(--cds-caption-01-font-weight, 400);line-height:var(--cds-caption-01-line-height, 1.33333);letter-spacing:var(--cds-caption-01-letter-spacing, .32px);padding:.5rem 1.25rem;font-weight:600}.bx--toolbar-menu__option{padding:.5rem 1.25rem}.bx--toolbar-menu__divider{width:100%;border:0;border-top:1px solid var(--cds-ui-03, #e0e0e0)}.bx--radio-button-group{border:none}.bx--toolbar-search:not(.bx--toolbar-search--active) .bx--search-input{border-bottom:none}.bx--unstable-pagination{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;width:100%;height:3rem;align-items:center;justify-content:space-between;border-top:1px solid var(--cds-ui-03, #e0e0e0);border-bottom:1px solid rgba(0,0,0,0);background-color:var(--cds-ui-01, #f4f4f4)}.bx--unstable-pagination__text{margin:0 1rem;color:var(--cds-text-02, #525252)}@media (min-width: 42rem){.bx--unstable-pagination__text{display:inline-block}}.bx--unstable-pagination__left,.bx--unstable-pagination__right{display:flex;height:100%;align-items:center}.bx--unstable-pagination__left{padding:0 1rem 0 0}.bx--unstable-pagination__left>.bx--form-item,.bx--unstable-pagination__right>.bx--form-item{height:100%}.bx--unstable-pagination__left .bx--unstable-pagination__text{margin-right:.0625rem}.bx--unstable-pagination__right .bx--unstable-pagination__text{margin-right:1rem;margin-left:.0625rem}.bx--unstable-pagination__button{display:flex;height:100%;align-items:center;justify-content:center;padding:0 .875rem;border:none;border-left:1px solid var(--cds-ui-03, #e0e0e0);margin:0;background:none;color:var(--cds-ui-05, #161616);cursor:pointer;fill:var(--cds-ui-05, #161616);transition:outline .11s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9)}.bx--unstable-pagination__button .bx--btn__icon{width:initial;height:initial}.bx--unstable-pagination__button.bx--btn--icon-only.bx--tooltip__trigger:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--unstable-pagination__button.bx--btn--icon-only.bx--tooltip__trigger:focus{outline-style:dotted}}.bx--unstable-pagination__button:hover{background:var(--cds-hover-ui, #e5e5e5);color:var(--cds-ui-05, #161616)}.bx--unstable-pagination__button--no-index{cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--unstable-pagination__button.bx--btn:disabled{border-color:var(--cds-ui-03, #e0e0e0);background:rgba(0,0,0,0)}.bx--unstable-pagination__button:disabled:hover,.bx--unstable-pagination__button--no-index:hover{background:rgba(0,0,0,0);cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--unstable-pagination__page-selector,.bx--unstable-pagination__page-sizer{height:100%;align-items:center}.bx--unstable-pagination__page-selector .bx--select-input--inline__wrapper,.bx--unstable-pagination__page-sizer .bx--select-input--inline__wrapper{display:flex;height:100%}.bx--unstable-pagination__page-selector .bx--select-input,.bx--unstable-pagination__page-sizer .bx--select-input{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);width:auto;min-width:auto;height:100%;padding:0 2.5rem 0 1rem;margin-right:-.65rem}@media (min-width: 42rem){.bx--unstable-pagination__page-selector .bx--select-input,.bx--unstable-pagination__page-sizer .bx--select-input{padding-right:2.25rem;margin-right:0}}.bx--unstable-pagination__page-selector .bx--select-input:hover,.bx--unstable-pagination__page-sizer .bx--select-input:hover{background:var(--cds-hover-ui, #e5e5e5)}.bx--unstable-pagination__page-selector .bx--select__arrow,.bx--unstable-pagination__page-sizer .bx--select__arrow{top:50%;transform:translateY(-50%)}@media (min-width: 42rem){.bx--unstable-pagination__page-selector .bx--select__arrow,.bx--unstable-pagination__page-sizer .bx--select__arrow{right:1rem}}.bx--unstable-pagination__page-selector{border-left:1px solid var(--cds-ui-03, #e0e0e0)}.bx--unstable-pagination__page-sizer{border-right:1px solid var(--cds-ui-03, #e0e0e0)}.bx--header{position:fixed;z-index:8000;top:0;right:0;left:0;display:flex;height:3rem;align-items:center;border-bottom:1px solid #393939;background-color:#161616}.bx--header__action{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;width:3rem;height:3rem;border:.0625rem solid rgba(0,0,0,0);transition:background-color .11s,border-color .11s}.bx--header__action::-moz-focus-inner{border:0}.bx--header__action>svg.bx--navigation-menu-panel-collapse-icon,.bx--header__action--active>svg.bx--navigation-menu-panel-expand-icon{display:none}.bx--header__action--active>svg.bx--navigation-menu-panel-collapse-icon{display:inline}.bx--header__action:hover{background-color:#353535}.bx--header__action--active{border-right:1px solid #393939;border-bottom:1px solid #161616;border-left:1px solid #393939}.bx--header__action:focus{border-color:#fff;outline:none}.bx--header__action:active{background-color:#393939}.bx--header__action.bx--btn--icon-only.bx--tooltip__trigger{justify-content:center}.bx--header__action>svg{fill:#fff}.bx--header__menu-trigger>svg{fill:#f4f4f4}.bx--header__menu-trigger:hover{fill:#2c2c2c}.bx--header__menu-toggle{display:flex;align-items:center;justify-content:center}@media (min-width: 66rem){.bx--header__menu-toggle__hidden{display:none}}a.bx--header__name{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;height:100%;align-items:center;padding:0 2rem 0 1rem;border:.125rem solid rgba(0,0,0,0);font-weight:600;letter-spacing:.1px;line-height:1.25rem;outline:none;text-decoration:none;transition:border-color .11s;-webkit-user-select:none;-moz-user-select:none;user-select:none}a.bx--header__name:focus{border-color:#fff}.bx--header__name--prefix{font-weight:400}a.bx--header__name,a.bx--header__name:hover{color:#f4f4f4}.bx--header__menu-toggle:not(.bx--header__menu-toggle__hidden)~.bx--header__name{padding-left:.5rem}.bx--header__nav{position:relative;display:none;height:100%;padding-left:1rem}@media (min-width: 66rem){.bx--header__nav{display:block}}.bx--header__nav:before{position:absolute;top:50%;left:0;display:block;width:.0625rem;height:1.5rem;background-color:#393939;content:"";transform:translateY(-50%)}.bx--header__menu-bar{display:flex;height:100%;padding:0;margin:0;list-style:none}a.bx--header__menu-item{position:relative;display:flex;height:100%;align-items:center;padding:0 1rem;border:2px solid rgba(0,0,0,0);color:#c6c6c6;font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;text-decoration:none;transition:background-color .11s,border-color .11s,color .11s;-webkit-user-select:none;-moz-user-select:none;user-select:none}a.bx--header__menu-item:hover{background-color:#2c2c2c;color:#f4f4f4}.bx--header__action:active,a.bx--header__menu-item:active{background-color:#393939;color:#f4f4f4}a.bx--header__menu-item:focus{border-color:#fff;color:#f4f4f4;outline:none}a.bx--header__menu-item:hover>svg,a.bx--header__menu-item:active>svg,a.bx--header__menu-item:focus>svg{fill:#f4f4f4}a.bx--header__menu-item[aria-current=page]:after,.bx--header__menu-item--current:after{position:absolute;top:0;right:0;bottom:-2px;left:0;width:100%;border-bottom:3px solid var(--cds-inverse-support-04, #4589ff);content:""}a.bx--header__menu-item[aria-current=page]:focus:after,.bx--header__menu-item--current:focus:after{border:0}a.bx--header__menu-item[aria-current=page]:focus,a.bx--header__menu-item.bx--header__menu-item--current:focus{border:2px solid #fff}.bx--header__submenu{position:relative}.bx--header__submenu--current:after{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;border-bottom:3px solid var(--cds-border-interactive, #0f62fe);content:""}.bx--header__submenu--current:focus{border:2px solid var(--cds-focus, #0f62fe)}.bx--header__submenu--current:focus:after{border:0}.bx--header__menu-title[aria-haspopup=true]{position:relative}.bx--header__menu-title[aria-expanded=true]{z-index:8001;background-color:#262626;color:#fff}.bx--header__menu-title[aria-expanded=true]>.bx--header__menu-arrow{transform:rotate(180deg)}.bx--header__menu{display:none;padding:0;margin:0;list-style:none}.bx--header__menu-title[aria-expanded=true]+.bx--header__menu{position:absolute;z-index:8000;bottom:0;left:0;display:flex;width:12.5rem;flex-direction:column;background-color:#262626;box-shadow:0 4px 8px #00000080;transform:translateY(100%)}.bx--header__menu-title[aria-expanded=true]+.bx--header__menu .bx--header__menu-item:hover{background-color:#353535}.bx--header__menu-title[aria-expanded=true]+.bx--header__menu .bx--header__menu-item:active{background-color:#393939}.bx--header__menu .bx--header__menu-item{height:3rem}.bx--header__menu .bx--header__menu-item:hover{background-color:#262626;color:#f4f4f4}.bx--header__menu-arrow{margin-left:.5rem;fill:#c6c6c6;transition:transform .11s,fill .11s}.bx--header__global{display:flex;height:100%;flex:1 1 0%;justify-content:flex-end}.bx--skip-to-content{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--skip-to-content:focus{z-index:9999;top:0;left:0;display:flex;width:auto;height:3rem;align-items:center;padding:0 1rem;border:4px solid #0f62fe;background-color:#161616;clip:auto;color:#f4f4f4;outline:none}.bx--header-panel{transition-timing-function:cubic-bezier(.2,0,1,.9);position:fixed;z-index:8000;top:3rem;right:0;bottom:0;overflow:hidden;width:0;border:none;background-color:#161616;color:#c6c6c6;transition:width .11s;will-change:width}.bx--header-panel--expanded{width:16rem;border-right:1px solid #393939;border-left:1px solid #393939}.bx--panel--overlay{position:fixed;z-index:1000;top:3rem;right:0;bottom:0;width:16rem;height:100%;padding:1rem 0;background-color:#161616;overflow-x:hidden;overflow-y:auto;transform:translate3d(100%,0,0);transition:transform .11s cubic-bezier(.2,0,.38,.9);will-change:transform}.bx--panel--expanded{box-shadow:0 8px 16px #00000040;transform:translateZ(0)}.bx--product-switcher__search{padding:0 1rem;margin-bottom:1.5rem}.bx--search--shell input{background-color:#e0e0e0}.bx--product-switcher__subheader,.bx--product-switcher__all-btn{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);padding:.5rem;color:#c6c6c6}.bx--product-switcher__subheader,.bx--product-switcher__all-btn{padding-left:3.5rem}.bx--product-switcher__all-btn,.bx--product-switcher__back-btn{display:inline-block;width:100%;border:none;background:rgba(0,0,0,0);color:#0f62fe;cursor:pointer;text-align:left}.bx--product-switcher__all-btn:hover,.bx--product-switcher__back-btn:hover{text-decoration:underline}.bx--product-switcher__all-btn:focus,.bx--product-switcher__back-btn:focus{box-shadow:inset 0 0 0 3px #0f62fe;outline:none}.bx--product-switcher__back-btn{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;align-items:center;padding:.5rem 1rem}.bx--product-switcher__back-arrow{margin-right:1rem;fill:#0f62fe}.bx--product-list__item{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.bx--product-list__item:hover{background:#e0e0e0}.bx--product-link{display:flex;width:100%;flex-direction:row;align-items:center;padding:.5rem 1rem;text-decoration:none}.bx--product-link:focus{box-shadow:inset 0 0 0 3px #0f62fe;outline:none}.bx--product-switcher__icon{margin-right:1rem}.bx--product-link__name{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);margin-left:.25rem;color:#c6c6c6;font-weight:400}.bx--product-switcher__product-list .bx--overflow-menu{display:none;width:2.5rem;align-items:center;justify-content:center}.bx--product-switcher__product-list .bx--overflow-menu.bx--overflow-menu--open{display:flex}.bx--product-switcher__product-list .bx--overflow-menu>svg{fill:#c6c6c6}.bx--product-switcher__product-list .bx--overflow-menu:hover{background:#c6c6c6}.bx--product-switcher__product-list .bx--overflow-menu:hover>svg{fill:#c6c6c6}.bx--product-switcher__product-list .bx--overflow-menu:focus{display:flex;box-shadow:inset 0 0 0 3px #0f62fe;outline:none}.bx--product-switcher__product-list .bx--overflow-menu-options__option:hover{background:#fff}.bx--product-list__item:hover .bx--overflow-menu{display:flex}.bx--switcher{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#c6c6c6}.bx--switcher__item{width:100%;height:var(--cds-spacing-07, 2rem)}.bx--switcher__item:nth-child(1){margin-top:var(--cds-spacing-05, 1rem)}.bx--switcher__item--divider{display:block;width:14rem;height:1px;border:none;margin:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);background:#393939}.bx--switcher__item-link{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);display:block;height:var(--cds-spacing-07, 2rem);padding:.375rem var(--cds-spacing-05, 1rem);color:#c6c6c6;text-decoration:none}.bx--switcher__item-link:hover:not(.bx--switcher__item-link--selected){background:#2c2c2c;color:#f4f4f4;cursor:pointer}.bx--switcher__item-link:focus{outline:2px solid #fff;outline-offset:-2px}.bx--switcher__item-link:active{background:#393939;color:#f4f4f4}.bx--switcher__item-link--selected{background:#262626;color:#f4f4f4}.bx--side-nav{position:fixed;z-index:8000;top:0;bottom:0;left:0;overflow:hidden;width:3rem;max-width:16rem;background-color:#fff;color:#525252;transition:width .11s cubic-bezier(.2,0,1,.9);will-change:width}.bx--side-nav--ux{top:var(--cds-spacing-09, 3rem);width:16rem}@media (max-width: 65.98rem){.bx--side-nav--ux{width:0}}.bx--side-nav--rail{width:3rem}.bx--side-nav--hidden{width:0}.bx--side-nav.bx--side-nav--rail:not(.bx--side-nav--fixed):hover,.bx--side-nav--expanded{width:16rem}.bx--side-nav__overlay{position:fixed;top:3rem;left:0;width:0;height:0;background-color:#0000;opacity:0;transition:opacity .24s cubic-bezier(.2,0,.38,.9),background-color .24s cubic-bezier(.2,0,.38,.9)}@media (max-width: 65.98rem){.bx--side-nav__overlay-active{width:100vw;height:100vh;background-color:var(--cds-overlay-01, rgba(22, 22, 22, .5));opacity:1;transition:opacity .24s cubic-bezier(.2,0,.38,.9),background-color .24s cubic-bezier(.2,0,.38,.9)}}.bx--header~.bx--side-nav{top:3rem;height:calc(100% - 48px)}.bx--side-nav--fixed{width:16rem}.bx--side-nav--collapsed{width:16rem;transform:translate(-16rem)}.bx--side-nav__navigation{display:flex;height:100%;flex-direction:column}.bx--side-nav__header{display:flex;width:100%;max-width:100%;height:3rem;border-bottom:1px solid #393939}.bx--side-nav:hover .bx--side-nav__header,.bx--side-nav--fixed .bx--side-nav__header,.bx--side-nav--expanded .bx--side-nav__header,.bx--side-nav--ux .bx--side-nav__header{height:auto}.bx--side-nav__details{display:flex;min-width:0;flex:1;flex-direction:column;padding-right:1rem;opacity:0;visibility:hidden}.bx--side-nav:hover .bx--side-nav__details,.bx--side-nav--fixed .bx--side-nav__details,.bx--side-nav--expanded .bx--side-nav__details{visibility:inherit;opacity:1}.bx--side-nav--ux .bx--side-nav__details{opacity:1;visibility:inherit}.bx--side-nav__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1rem;font-size:.875rem;font-weight:600;letter-spacing:.1px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--side-nav__title,.bx--side-nav__select{padding-left:.5rem}.bx--side-nav__switcher{position:relative;display:flex;align-items:center;justify-content:space-between}.bx--side-nav__switcher-chevron{position:absolute;top:0;right:.5rem;bottom:0;display:flex;align-items:center;fill:#525252}.bx--side-nav__select{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;min-width:0;height:2rem;flex:1 1 0%;padding-right:2rem;border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#161616;border-radius:0;color:#f4f4f4;cursor:pointer;font-size:.75rem;transition:outline .11s}.bx--side-nav__select:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--side-nav__select:focus{outline-style:dotted}}.bx--side-nav__footer{width:100%;flex:0 0 3rem;background-color:#fff}.bx--side-nav__toggle{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;height:100%;padding-left:1rem;text-align:left;transition:outline .11s}.bx--side-nav__toggle::-moz-focus-inner{border:0}.bx--side-nav__toggle:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--side-nav__toggle:focus{outline-style:dotted}}.bx--side-nav__items{overflow:hidden;flex:1 1 0%;padding:1rem 0 0}.bx--side-nav:hover .bx--side-nav__items,.bx--side-nav--fixed .bx--side-nav__items,.bx--side-nav--expanded .bx--side-nav__items,.bx--side-nav--ux .bx--side-nav__items{overflow-y:auto}.bx--side-nav__item{overflow:hidden;width:auto;height:auto}.bx--side-nav--ux .bx--side-nav__item{width:auto;height:auto}.bx--side-nav__item:not(.bx--side-nav__item--active):hover .bx--side-nav__item:not(.bx--side-nav__item--active)>.bx--side-nav__submenu:hover,.bx--side-nav__item:not(.bx--side-nav__item--active)>.bx--side-nav__link:hover,.bx--side-nav__menu a.bx--side-nav__link:not(.bx--side-nav__link--current):not([aria-current=page]):hover,.bx--side-nav a.bx--header__menu-item:hover,.bx--side-nav .bx--header__menu-title[aria-expanded=true]:hover{background-color:#e5e5e5;color:#161616}.bx--side-nav__item:not(.bx--side-nav__item--active)>.bx--side-nav__link:hover>span,.bx--side-nav__item:not(.bx--side-nav__item--active) .bx--side-nav__menu-item>.bx--side-nav__link:hover>span{color:#161616}.bx--side-nav__item--large{height:3rem}.bx--side-nav__divider{height:1px;margin:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);background-color:#e0e0e0}.bx--side-nav__submenu{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:flex;height:2rem;align-items:center;padding:0 1rem;color:#525252;transition:color .11s,background-color .11s,outline .11s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--side-nav__submenu::-moz-focus-inner{border:0}.bx--side-nav__submenu:hover{background-color:#e5e5e5;color:#161616}.bx--side-nav__submenu:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--side-nav__submenu:focus{outline-style:dotted}}.bx--side-nav__submenu-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.bx--side-nav__icon.bx--side-nav__submenu-chevron{display:flex;flex:1;justify-content:flex-end}.bx--side-nav__submenu-chevron>svg{width:1rem;height:1rem;transition:transform .11s}.bx--side-nav__submenu[aria-expanded=true] .bx--side-nav__submenu-chevron>svg{transform:rotate(180deg)}.bx--side-nav__item--large .bx--side-nav__submenu{height:3rem}.bx--side-nav__item--active .bx--side-nav__submenu:hover{background-color:#e5e5e5;color:#161616}.bx--side-nav__item--active .bx--side-nav__submenu[aria-expanded=false]{position:relative;background-color:#e5e5e5;color:#161616}.bx--side-nav__item--active .bx--side-nav__submenu[aria-expanded=false]:before{position:absolute;top:0;bottom:0;left:0;width:4px;background-color:#0f62fe;content:""}.bx--side-nav__item--active .bx--side-nav__submenu-title{color:#161616;font-weight:600}.bx--side-nav__menu{display:block;max-height:0;visibility:hidden}.bx--side-nav__submenu[aria-expanded=true]+.bx--side-nav__menu{max-height:93.75rem;visibility:inherit}.bx--side-nav__menu a.bx--side-nav__link{height:2rem;min-height:2rem;padding-left:2rem;font-weight:400}.bx--side-nav__item.bx--side-nav__item--icon a.bx--side-nav__link{padding-left:4.5rem}.bx--side-nav__menu a.bx--side-nav__link--current,.bx--side-nav__menu a.bx--side-nav__link[aria-current=page],a.bx--side-nav__link--current{background-color:#e0e0e0}.bx--side-nav__menu a.bx--side-nav__link--current>span,.bx--side-nav__menu a.bx--side-nav__link[aria-current=page]>span,a.bx--side-nav__link--current>span{color:#161616;font-weight:600}a.bx--side-nav__link,.bx--side-nav a.bx--header__menu-item,.bx--side-nav .bx--header__menu-title[aria-expanded=true]+.bx--header__menu{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);position:relative;display:flex;min-height:2rem;align-items:center;padding:0 1rem;text-decoration:none;transition:color .11s,background-color .11s,outline .11s}.bx--side-nav__item--large a.bx--side-nav__link{height:3rem}a.bx--side-nav__link>.bx--side-nav__link-text,.bx--side-nav a.bx--header__menu-item .bx--text-truncate-end{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#525252;font-size:.875rem;letter-spacing:.1px;line-height:1.25rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}a.bx--side-nav__link:focus,.bx--side-nav a.bx--header__menu-item:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){a.bx--side-nav__link:focus,.bx--side-nav a.bx--header__menu-item:focus{outline-style:dotted}}a.bx--side-nav__link[aria-current=page],a.bx--side-nav__link--current{background-color:#e5e5e5;font-weight:600}a.bx--side-nav__link[aria-current=page] .bx--side-nav__link-text,a.bx--side-nav__link--current .bx--side-nav__link-text{color:#161616}a.bx--side-nav__link[aria-current=page]:before,a.bx--side-nav__link--current:before{position:absolute;top:0;bottom:0;left:0;width:4px;background-color:#0f62fe;content:""}.bx--side-nav__icon{display:flex;flex:0 0 1rem;align-items:center;justify-content:center}.bx--side-nav__icon:not(.bx--side-nav__submenu-chevron){margin-right:1.5rem}.bx--side-nav__icon>svg{width:1rem;height:1rem;fill:#525252}.bx--side-nav__icon>svg.bx--side-nav-collapse-icon{display:none}.bx--side-nav--expanded .bx--side-nav__icon>svg.bx--side-nav-expand-icon{display:none}.bx--side-nav--expanded .bx--side-nav__icon>svg.bx--side-nav-collapse-icon{display:block}.bx--side-nav--fixed a.bx--side-nav__link,.bx--side-nav--fixed .bx--side-nav__submenu{padding-left:1rem}.bx--side-nav--fixed .bx--side-nav__item:not(.bx--side-nav__item--icon) .bx--side-nav__menu a.bx--side-nav__link{padding-left:2rem}@media (max-width: 65.98rem){.bx--side-nav .bx--header__nav{display:block}}.bx--side-nav__header-navigation{display:none}@media (max-width: 65.98rem){.bx--side-nav__header-navigation{position:relative;display:block;margin-bottom:2rem}}.bx--side-nav__header-divider:after{position:absolute;bottom:-1rem;left:1rem;width:calc(100% - 32px);height:.0625rem;background:#e0e0e0;content:""}.bx--side-nav a.bx--header__menu-item{justify-content:space-between;color:#525252;white-space:nowrap}.bx--side-nav a.bx--header__menu-item[aria-expanded=true]{background-color:#0000}.bx--side-nav .bx--header__menu-title[aria-expanded=true]+.bx--header__menu{bottom:inherit;width:100%;padding:0;background-color:#0000;box-shadow:none;transform:none}.bx--side-nav .bx--header__menu-title[aria-expanded=true]+.bx--header__menu li{width:100%}.bx--side-nav .bx--header__menu-title[aria-expanded=true]+.bx--header__menu a.bx--header__menu-item{padding-left:4.25rem;font-weight:400}.bx--side-nav .bx--header__menu-title[aria-expanded=true]+.bx--header__menu a.bx--header__menu-item:hover{background-color:#e5e5e5;color:#161616}.bx--side-nav .bx--header__menu a.bx--header__menu-item{height:inherit}.bx--side-nav a.bx--header__menu-item:hover .bx--header__menu-arrow,.bx--side-nav a.bx--header__menu-item:focus .bx--header__menu-arrow,.bx--side-nav .bx--header__menu-arrow{fill:#525252}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--side-nav__icon>svg,.bx--side-nav a.bx--header__menu-item:hover .bx--header__menu-arrow,.bx--side-nav a.bx--header__menu-item:focus .bx--header__menu-arrow,.bx--side-nav .bx--header__menu-arrow{fill:ButtonText}}.bx--navigation{position:fixed;z-index:9100;top:3rem;bottom:0;left:0;width:16rem;background-color:#262626;box-shadow:0 .5rem 1rem #00000040;color:#f4f4f4}.bx--navigation--right{right:0;left:auto}.bx--navigation svg{fill:#f4f4f4}.bx--navigation-section:not(:last-child):after{display:block;height:1px;margin:0 1rem;background-color:#393939;content:""}.bx--navigation-item{position:relative;display:flex;align-items:center}.bx--navigation-item--active>a.bx--navigation-link{color:#fff;font-weight:600}.bx--navigation-item--active:after{position:absolute;top:0;bottom:0;left:0;display:block;width:4px;background-color:#0f62fe;content:""}a.bx--navigation-link{display:flex;width:100%;min-height:2.5rem;align-items:center;padding-left:1rem;color:#f4f4f4;font-size:.875rem;font-weight:400;text-decoration:none}a.bx--navigation-link:hover{background-color:#333;color:#fff}a.bx--navigation-link:focus{outline:.1875rem solid #0f62fe;outline-offset:-.1875rem}.bx--navigation-item--icon>a.bx--navigation-link{padding-left:0}.bx--navigation__category{width:100%}.bx--navigation__category-toggle{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;display:flex;align-items:center}.bx--navigation__category-toggle::-moz-focus-inner{border:0}.bx--navigation__category-toggle:hover{background-color:#333}.bx--navigation__category-toggle:focus{outline:.1875rem solid #0f62fe;outline-offset:-.1875rem}.bx--navigation__category-title{display:flex;width:100%;min-height:2.5rem;align-items:center;justify-content:space-between;padding-right:1rem;padding-left:1rem;color:#f4f4f4;font-size:.875rem;font-weight:400}.bx--navigation-item--icon .bx--navigation__category-title{padding-left:0}.bx--navigation__category-items{display:none;visibility:hidden}.bx--navigation__category-item>a.bx--navigation-link{display:flex;min-height:2rem;align-items:center;padding-left:2rem}.bx--navigation__category-item{position:relative}.bx--navigation-item--icon .bx--navigation__category-item>a.bx--navigation-link{padding-left:3.5rem}.bx--navigation__category-item--active:after{position:absolute;top:0;bottom:0;left:0;display:block;width:4px;background-color:#0f62fe;content:""}.bx--navigation__category-item--active>a.bx--navigation-link{color:#fff;font-weight:600}.bx--navigation__category--expanded .bx--navigation__category-title{font-weight:600}.bx--navigation__category--expanded .bx--navigation__category-title>svg{transform:rotate(180deg)}.bx--navigation__category--expanded .bx--navigation__category-items{display:block;visibility:inherit}.bx--navigation-icon{display:flex;width:3rem;min-width:3rem;height:2.5rem;align-items:center;justify-content:center;margin-right:.5rem}.bx--content{padding:2rem;will-change:margin-left}.bx--header~.bx--content{margin-top:3rem}.bx--side-nav~.bx--content{margin-left:3rem}.bx--side-nav.bx--side-nav--expanded~.bx--content{margin-left:16rem}.bx--tree{overflow:hidden}.bx--tree .bx--tree-node{padding-left:var(--cds-spacing-05, 1rem);background-color:var(--cds-ui-01, #f4f4f4);color:var(--cds-text-02, #525252)}.bx--tree .bx--tree-node:focus{outline:none}.bx--tree .bx--tree-node:focus>.bx--tree-node__label{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tree .bx--tree-node:focus>.bx--tree-node__label{outline-style:dotted}}.bx--tree .bx--tree-node--disabled:focus>.bx--tree-node__label{outline:none}.bx--tree .bx--tree-node--disabled,.bx--tree .bx--tree-node--disabled .bx--tree-node__label:hover,.bx--tree .bx--tree-node--disabled .bx--tree-node__label:hover .bx--tree-node__label__details{background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6)}.bx--tree .bx--tree-node--disabled .bx--tree-parent-node__toggle-icon,.bx--tree .bx--tree-node--disabled .bx--tree-node__icon,.bx--tree .bx--tree-node--disabled .bx--tree-node__label:hover .bx--tree-parent-node__toggle-icon,.bx--tree .bx--tree-node--disabled .bx--tree-node__label:hover .bx--tree-node__icon{fill:var(--cds-disabled-02, #c6c6c6)}.bx--tree .bx--tree-node--disabled,.bx--tree .bx--tree-node--disabled .bx--tree-parent-node__toggle-icon:hover{cursor:not-allowed}.bx--tree .bx--tree-node__label{display:flex;min-height:2rem;flex:1;align-items:center}.bx--tree .bx--tree-node__label:hover{background-color:var(--cds-hover-ui, #e5e5e5);color:var(--cds-text-01, #161616)}.bx--tree .bx--tree-node__label:hover .bx--tree-node__label__details{color:var(--cds-text-01, #161616)}.bx--tree .bx--tree-node__label:hover .bx--tree-parent-node__toggle-icon,.bx--tree .bx--tree-node__label:hover .bx--tree-node__icon{fill:var(--cds-icon-01, #161616)}.bx--tree .bx--tree-leaf-node{display:flex;padding-left:var(--cds-spacing-08, 2.5rem)}.bx--tree .bx--tree-leaf-node.bx--tree-node--with-icon{padding-left:var(--cds-spacing-07, 2rem)}.bx--tree .bx--tree-node__label__details{display:flex;align-items:center}.bx--tree .bx--tree-node--with-icon .bx--tree-parent-node__toggle{margin-right:0}.bx--tree .bx--tree-parent-node__toggle{padding:0;border:0;margin-right:var(--cds-spacing-03, .5rem)}.bx--tree .bx--tree-parent-node__toggle:hover{cursor:pointer}.bx--tree .bx--tree-parent-node__toggle:focus{outline:none}.bx--tree .bx--tree-parent-node__toggle-icon{fill:var(--cds-icon-02, #525252);transform:rotate(-90deg);transition:all .11s cubic-bezier(.2,0,.38,.9)}.bx--tree .bx--tree-parent-node__toggle-icon--expanded{transform:rotate(0)}.bx--tree .bx--tree-node__icon{flex-shrink:0;margin-right:var(--cds-spacing-03, .5rem);fill:var(--cds-icon-02, #525252)}.bx--tree .bx--tree-node--selected>.bx--tree-node__label{background-color:var(--cds-selected-ui, #e0e0e0);color:var(--cds-text-01, #161616)}.bx--tree .bx--tree-node--selected>.bx--tree-node__label:hover{background-color:var(--cds-hover-selected-ui, #cacaca)}.bx--tree .bx--tree-node--selected>.bx--tree-node__label .bx--tree-parent-node__toggle-icon,.bx--tree .bx--tree-node--selected>.bx--tree-node__label .bx--tree-node__icon{fill:var(--cds-icon-01, #161616)}.bx--tree .bx--tree-node--active>.bx--tree-node__label{position:relative}.bx--tree .bx--tree-node--active>.bx--tree-node__label:before{position:absolute;top:0;left:0;width:.25rem;height:100%;background-color:var(--cds-interactive-04, #0f62fe);content:""}.bx--tree--compact .bx--tree-node__label{min-height:1.5rem}body{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.bx--select-input,.bx--dropdown,.bx--text-input,.bx--search-input{border-radius:.25rem;border-width:0px;--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity));outline-width:1px;outline-color:#d4d4d4}.bx--select-input:focus,.bx--dropdown:focus,.bx--text-input:focus,.bx--search-input:focus{outline-width:1px;outline-color:#737373}.bx--select-input:hover,.bx--dropdown:hover,.bx--text-input:hover,.bx--search-input:hover{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity));outline-width:1px;outline-color:#a3a3a3}.bx--list-box{border-width:0px}.bx--list-box__menu-item{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity))}.bx--list-box__menu-item--active.bx--list-box__menu-item--highlighted{--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity))}.bx--list-box__menu{border-radius:.25rem}.bx--btn{border-radius:.25rem;padding:.5rem}.bx--btn.bx--btn--primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));background-color:#4550e8}.bx--btn.bx--btn--primary:hover{background-color:#1741c1}.bx--btn.bx--btn--secondary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.bx--btn--tertiary{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.bx--btn--tertiary:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.bx--btn--ghost{border-color:transparent;background-color:transparent;--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.bx--btn--ghost:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bx--btn.bx--btn--primary.bx--btn--disabled{--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity))}.bx--modal-container{border-radius:.25rem}.bx--modal-content.bx--modal-content--with-form{margin-top:0;margin-bottom:0;padding-bottom:1rem;padding-top:0}.bx--modal-footer .bx--btn{border-radius:0;border-style:none}.bx--modal-header{margin:0;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity));padding-top:1rem;padding-bottom:1rem}.bx--tabs__nav-item,.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link,a.bx--tabs__nav-link{border-bottom-width:0px;border-color:transparent}a.bx--tabs__nav-link{border-radius:.25rem;border-bottom-width:0px}a.bx--tabs__nav-link:focus{outline-color:transparent}.bx--btn--icon-only.bx--btn--expressive{padding:.25rem}.bx--tooltip__label{vertical-align:middle}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border-style:solid} diff --git a/web/blueprint/build/_app/immutable/assets/4.77bdd972.css b/web/blueprint/build/_app/immutable/assets/4.77bdd972.css new file mode 100644 index 0000000000000000000000000000000000000000..39e2a2d1ffd5850b7d8667e82e22361f96eca36a --- /dev/null +++ b/web/blueprint/build/_app/immutable/assets/4.77bdd972.css @@ -0,0 +1 @@ +.removable-tag{max-width:8rem}.filter-pill .bx--tooltip__label{margin-right:.25rem;display:inline-block;height:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:5rem}.filter-pill .bx--tooltip__content{display:flex;flex-direction:column;align-items:center}.embedding-badge-nolabel .bx--tooltip__label .bx--tooltip__trigger{margin:0}.embedding-badge-nolabel .bx--tag__custom-icon{margin-right:0}.search-pill .bx--tooltip__label{margin-right:.25rem;display:inline-block;height:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:5rem}.search-pill .bx--tooltip__content{display:flex;flex-direction:column;align-items:center}.filter-group.svelte-e2icyu{min-width:6rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity));padding:.75rem .5rem;--tw-shadow:0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.named-value-name.svelte-1689hje{max-width:15rem}.more-button .bx--btn{height:1.5rem;width:12rem}.highlight-span.svelte-i4bfci{padding-top:1.5px;padding-bottom:1.5px}.signal-badge .bx--tag{padding-left:.5rem;padding-right:.5rem}.signal-badge .bx--tag__custom-icon{margin-right:0}.signal-badge .bx--tooltip__label .bx--tooltip__trigger{margin:0}.bx--tabs__nav{display:flex;width:100%;flex-direction:row}.bx--tabs__nav-item,.bx--tabs__nav-item .bx--tabs__nav-link{width:7rem}.bx--form__helper-text{padding:0 0 0 1rem}.compute-embedding .bx--btn,.sort-container .bx--btn{height:3rem}.compute-embedding-indexing .bx--btn.bx--btn--disabled{color:transparent}.embedding-select .bx--select-input,.field-select .bx--select-input{height:3rem}.new-concept .bx--tag{width:1.5rem;min-width:0px;padding-left:0;padding-right:0}ul.bx--overflow-menu-options{width:11rem}.stats-table.svelte-1tctrjz td.svelte-1tctrjz{width:12rem}.stats-table.svelte-1tctrjz td.svelte-1tctrjz:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-top:.5rem;padding-bottom:.5rem;padding-right:.5rem}.stats-table.svelte-1tctrjz td.svelte-1tctrjz:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-top:.5rem;padding-bottom:.5rem;padding-left:.5rem}.bx--btn--selected{--tw-bg-opacity:1 !important;background-color:rgb(203 213 225 / var(--tw-bg-opacity))!important}.bx--btn--selected .bx--btn__icon{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.signal-tag span{padding-left:.5rem;padding-right:.5rem}.compute-signal-chip .bx--tooltip__label .bx--tooltip__trigger{margin:0}.compute-signal-preview .bx--tag{cursor:pointer}.compute-signal-preview .bx--tag__custom-icon{margin:0}.bx--tab-content{padding:0!important} diff --git a/web/blueprint/build/_app/immutable/assets/5.2a87a76f.css b/web/blueprint/build/_app/immutable/assets/5.2a87a76f.css new file mode 100644 index 0000000000000000000000000000000000000000..815982be0bab92e399e8afdbe59fe86646ad5c20 --- /dev/null +++ b/web/blueprint/build/_app/immutable/assets/5.2a87a76f.css @@ -0,0 +1 @@ +.bx--form-item{margin-bottom:1.5rem}.bx--fieldset{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:1rem}legend.bx--label{padding-left:.5rem;padding-right:.5rem;font-size:1.125rem;line-height:1.75rem} diff --git a/web/blueprint/build/_app/immutable/assets/Commands.bc67c1e9.css b/web/blueprint/build/_app/immutable/assets/Commands.bc67c1e9.css new file mode 100644 index 0000000000000000000000000000000000000000..4d6c0872e6ae674bec2ccd3a5beb2dd758cf8e4f --- /dev/null +++ b/web/blueprint/build/_app/immutable/assets/Commands.bc67c1e9.css @@ -0,0 +1 @@ +button.svelte-d3v0kx{width:100%;padding:.5rem 1rem;text-align:left;--tw-text-opacity:1;color:rgb(31 41 55 / var(--tw-text-opacity))}button.svelte-d3v0kx:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0 / var(--tw-text-opacity))}button[data-active=true].svelte-d3v0kx{--tw-bg-opacity:1;background-color:rgb(209 213 219 / var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0 / var(--tw-text-opacity))}.bx--tag{margin:0} diff --git a/web/blueprint/build/_app/immutable/assets/JSONSchemaForm.6952875e.css b/web/blueprint/build/_app/immutable/assets/JSONSchemaForm.6952875e.css new file mode 100644 index 0000000000000000000000000000000000000000..9717209710778cd1927b04efaa13e6482eb10209 --- /dev/null +++ b/web/blueprint/build/_app/immutable/assets/JSONSchemaForm.6952875e.css @@ -0,0 +1 @@ +.description p{font-size:.875rem;line-height:1.25rem;margin:1em 0} diff --git a/web/blueprint/build/_app/immutable/assets/_layout.641a807c.css b/web/blueprint/build/_app/immutable/assets/_layout.641a807c.css new file mode 100644 index 0000000000000000000000000000000000000000..1439cd4365cfc4b6e781c8511c96f971b9815711 --- /dev/null +++ b/web/blueprint/build/_app/immutable/assets/_layout.641a807c.css @@ -0,0 +1 @@ +.progress-container .bx--progress-bar__label,.progress-container .bx--progress-bar__helper-text{font-size:.75rem;line-height:1rem;font-weight:300}.task-button .bx--popover-contents{width:28rem;max-width:28rem}*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.invisible{visibility:hidden}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.bottom-4{bottom:1rem}.left-0{left:0}.right-4{right:1rem}.top-0{top:0}.z-0{z-index:0}.z-10{z-index:10}.z-50{z-index:50}.m-4{margin:1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-px{margin-top:1px;margin-bottom:1px}.-ml-4{margin-left:-1rem}.mb-10{margin-bottom:2.5rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mr-8{margin-right:2rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.table-row{display:table-row}.contents{display:contents}.hidden{display:none}.h-6{height:1.5rem}.h-8{height:2rem}.h-full{height:100%}.h-screen{height:100vh}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-2\/3{width:66.666667%}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-32{width:8rem}.w-36{width:9rem}.w-48{width:12rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-96{width:24rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-fit{max-width:-moz-fit-content;max-width:fit-content}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-none{flex:none}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.border-spacing-y-2{--tw-border-spacing-y: .5rem;border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-6{--tw-translate-y: 1.5rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-items-start{justify-items:start}.justify-items-center{justify-items:center}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-12{-moz-column-gap:3rem;column-gap:3rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.self-start{align-self:flex-start}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-clip{overflow-x:clip}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-wrap{white-space:pre-wrap}.whitespace-break-spaces{white-space:break-spaces}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-x{border-left-width:1px;border-right-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-blue-400{--tw-border-opacity: 1;border-color:rgb(96 165 250 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-neutral-200{--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity))}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity))}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity))}.bg-blue-200{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity))}.bg-blue-400{--tw-bg-opacity: 1;background-color:rgb(96 165 250 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-emerald-100{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-indigo-200{--tw-bg-opacity: 1;background-color:rgb(199 210 254 / var(--tw-bg-opacity))}.bg-neutral-50{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.bg-slate-600{--tw-bg-opacity: 1;background-color:rgb(71 85 105 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.fill-blue-600{fill:#2563eb}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.\!text-lg{font-size:1.125rem!important;line-height:1.75rem!important}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-neutral-500{--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-50{opacity:.5}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.outline-red-500{outline-color:#ef4444}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.last\:border-b-0:last-child{border-bottom-width:0px}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border-gray-400:hover{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.hover\:border-red-400:hover{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.hover\:bg-blue-100:hover{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.hover\:bg-slate-400:hover{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.hover\:text-red-400:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-60:hover{opacity:.6}@media (prefers-color-scheme: dark){.dark\:text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{padding:0;border:0;margin:0;font:inherit;font-size:100%;vertical-align:baseline}button,select,input,textarea{border-radius:0;font-family:inherit}input[type=text]::-ms-clear{display:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section{display:block}body{line-height:1}sup{vertical-align:super}sub{vertical-align:sub}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:""}table{border-collapse:collapse;border-spacing:0}*{box-sizing:border-box}button{margin:0}html{font-size:100%}body{font-weight:400;font-family:IBM Plex Sans,Helvetica Neue,Arial,sans-serif;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}code{font-family:IBM Plex Mono,Menlo,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier,monospace}strong{font-weight:600}@media screen and (-ms-high-contrast: active){svg{fill:ButtonText}}h1{font-size:var(--cds-productive-heading-06-font-size, 2.625rem);font-weight:var(--cds-productive-heading-06-font-weight, 300);line-height:var(--cds-productive-heading-06-line-height, 1.199);letter-spacing:var(--cds-productive-heading-06-letter-spacing, 0)}h2{font-size:var(--cds-productive-heading-05-font-size, 2rem);font-weight:var(--cds-productive-heading-05-font-weight, 400);line-height:var(--cds-productive-heading-05-line-height, 1.25);letter-spacing:var(--cds-productive-heading-05-letter-spacing, 0)}h3{font-size:var(--cds-productive-heading-04-font-size, 1.75rem);font-weight:var(--cds-productive-heading-04-font-weight, 400);line-height:var(--cds-productive-heading-04-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-04-letter-spacing, 0)}h4{font-size:var(--cds-productive-heading-03-font-size, 1.25rem);font-weight:var(--cds-productive-heading-03-font-weight, 400);line-height:var(--cds-productive-heading-03-line-height, 1.4);letter-spacing:var(--cds-productive-heading-03-letter-spacing, 0)}h5{font-size:var(--cds-productive-heading-02-font-size, 1rem);font-weight:var(--cds-productive-heading-02-font-weight, 600);line-height:var(--cds-productive-heading-02-line-height, 1.375);letter-spacing:var(--cds-productive-heading-02-letter-spacing, 0)}h6{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px)}p{font-size:var(--cds-body-long-02-font-size, 1rem);font-weight:var(--cds-body-long-02-font-weight, 400);line-height:var(--cds-body-long-02-line-height, 1.5);letter-spacing:var(--cds-body-long-02-letter-spacing, 0)}a{color:#0f62fe}em{font-style:italic}@keyframes skeleton{0%{opacity:.3;transform:scaleX(0);transform-origin:left}20%{opacity:1;transform:scaleX(1);transform-origin:left}28%{transform:scaleX(1);transform-origin:right}51%{transform:scaleX(0);transform-origin:right}58%{transform:scaleX(0);transform-origin:right}82%{transform:scaleX(1);transform-origin:right}83%{transform:scaleX(1);transform-origin:left}96%{transform:scaleX(0);transform-origin:left}to{opacity:.3;transform:scaleX(0);transform-origin:left}}.bx--tag{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);background-color:var(--cds-tag-background-gray, #e0e0e0);color:var(--cds-tag-color-gray, #393939);display:inline-flex;min-width:2rem;max-width:100%;min-height:1.5rem;align-items:center;justify-content:center;padding:.25rem .5rem;margin:.25rem;border-radius:.9375rem;cursor:default;vertical-align:middle;word-break:break-word}.bx--tag::-moz-focus-inner{border:0}.bx--tag.bx--tag--interactive:hover,.bx--tag .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-gray, #c6c6c6)}.bx--tag:not(:first-child){margin-left:0}.bx--tag--red{background-color:var(--cds-tag-background-red, #ffd7d9);color:var(--cds-tag-color-red, #750e13)}.bx--tag--red.bx--tag--interactive:hover,.bx--tag--red .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-red, #ffb3b8)}.bx--tag--magenta{background-color:var(--cds-tag-background-magenta, #ffd6e8);color:var(--cds-tag-color-magenta, #740937)}.bx--tag--magenta.bx--tag--interactive:hover,.bx--tag--magenta .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-magenta, #ffafd2)}.bx--tag--purple{background-color:var(--cds-tag-background-purple, #e8daff);color:var(--cds-tag-color-purple, #491d8b)}.bx--tag--purple.bx--tag--interactive:hover,.bx--tag--purple .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-purple, #d4bbff)}.bx--tag--blue{background-color:var(--cds-tag-background-blue, #d0e2ff);color:var(--cds-tag-color-blue, #002d9c)}.bx--tag--blue.bx--tag--interactive:hover,.bx--tag--blue .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-blue, #a6c8ff)}.bx--tag--cyan{background-color:var(--cds-tag-background-cyan, #bae6ff);color:var(--cds-tag-color-cyan, #003a6d)}.bx--tag--cyan.bx--tag--interactive:hover,.bx--tag--cyan .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-cyan, #82cfff)}.bx--tag--teal{background-color:var(--cds-tag-background-teal, #9ef0f0);color:var(--cds-tag-color-teal, #004144)}.bx--tag--teal.bx--tag--interactive:hover,.bx--tag--teal .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-teal, #3ddbd9)}.bx--tag--green{background-color:var(--cds-tag-background-green, #a7f0ba);color:var(--cds-tag-color-green, #044317)}.bx--tag--green.bx--tag--interactive:hover,.bx--tag--green .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-green, #6fdc8c)}.bx--tag--gray{background-color:var(--cds-tag-background-gray, #e0e0e0);color:var(--cds-tag-color-gray, #393939)}.bx--tag--gray.bx--tag--interactive:hover,.bx--tag--gray .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-gray, #c6c6c6)}.bx--tag--cool-gray{background-color:var(--cds-tag-background-cool-gray, #dde1e6);color:var(--cds-tag-color-cool-gray, #343a3f)}.bx--tag--cool-gray.bx--tag--interactive:hover,.bx--tag--cool-gray .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-cool-gray, #c1c7cd)}.bx--tag--warm-gray{background-color:var(--cds-tag-background-warm-gray, #e5e0df);color:var(--cds-tag-color-warm-gray, #3c3838)}.bx--tag--warm-gray.bx--tag--interactive:hover,.bx--tag--warm-gray .bx--tag__close-icon:hover{background-color:var(--cds-tag-hover-warm-gray, #cac5c4)}.bx--tag--high-contrast{background-color:var(--cds-inverse-02, #393939);color:var(--cds-inverse-01, #ffffff)}.bx--tag--high-contrast.bx--tag--interactive:hover,.bx--tag--high-contrast .bx--tag__close-icon:hover{background-color:var(--cds-inverse-hover-ui, #4c4c4c)}.bx--tag--outline{background-color:var(--cds-background, #ffffff);color:var(--cds-text-01, #161616);box-shadow:inset 0 0 0 1px var(--cds-inverse-02, #393939)}.bx--tag--outline.bx--tag--interactive:hover,.bx--tag--outline .bx--tag__close-icon:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--tag--disabled,.bx--tag--filter.bx--tag--disabled,.bx--tag--interactive.bx--tag--disabled{background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6)}.bx--tag--disabled.bx--tag--interactive:hover,.bx--tag--disabled .bx--tag__close-icon:hover,.bx--tag--filter.bx--tag--disabled.bx--tag--interactive:hover,.bx--tag--filter.bx--tag--disabled .bx--tag__close-icon:hover,.bx--tag--interactive.bx--tag--disabled.bx--tag--interactive:hover,.bx--tag--interactive.bx--tag--disabled .bx--tag__close-icon:hover{background-color:var(--cds-disabled-01, #f4f4f4)}.bx--tag--disabled:hover,.bx--tag--filter.bx--tag--disabled:hover,.bx--tag--interactive.bx--tag--disabled:hover{cursor:not-allowed}.bx--tag__label{overflow:hidden;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.bx--tag--interactive:focus{box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe);outline:none}.bx--tag--interactive:hover{cursor:pointer}.bx--tag--filter{padding-top:0;padding-right:0;padding-bottom:0;cursor:pointer}.bx--tag--filter:hover{outline:none}.bx--tag--interactive{transition:background-color 70ms cubic-bezier(0,0,.38,.9)}.bx--tag__close-icon{display:flex;width:1.5rem;height:1.5rem;flex-shrink:0;align-items:center;justify-content:center;padding:0;border:0;margin:0 0 0 .125rem;background-color:#0000;border-radius:50%;color:currentColor;cursor:pointer;transition:background-color 70ms cubic-bezier(.2,0,.38,.9),box-shadow 70ms cubic-bezier(.2,0,.38,.9)}.bx--tag__close-icon svg{fill:currentColor}.bx--tag__custom-icon{width:1rem;height:1rem;flex-shrink:0;padding:0;border:0;margin-right:var(--cds-spacing-02, .25rem);background-color:#0000;color:currentColor;outline:none}.bx--tag__custom-icon svg{fill:currentColor}.bx--tag--disabled .bx--tag__close-icon{cursor:not-allowed}.bx--tag__close-icon:focus{border-radius:50%;box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe);outline:none}.bx--tag--high-contrast .bx--tag__close-icon:focus{box-shadow:inset 0 0 0 1px var(--cds-inverse-focus-ui, #ffffff)}.bx--tag--filter.bx--tag--disabled .bx--tag__close-icon:hover{background-color:#0000}.bx--tag--filter.bx--tag--disabled svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--tag--sm{min-height:1.125rem;padding:0 .5rem}.bx--tag--sm.bx--tag--filter{padding-right:0}.bx--tag--sm .bx--tag__close-icon{width:1.125rem;height:1.125rem;margin-left:.3125rem}.bx--tag.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;background-color:var(--cds-skeleton-01, #e5e5e5);color:var(--cds-text-01, #161616);overflow:hidden;width:3.75rem}.bx--tag.bx--skeleton:hover,.bx--tag.bx--skeleton:focus,.bx--tag.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--tag.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--tag.bx--skeleton:before{animation:none}}.bx--tag.bx--skeleton.bx--tag--interactive:hover,.bx--tag.bx--skeleton .bx--tag__close-icon:hover{background-color:var(--cds-skeleton-01, #e5e5e5)}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){.bx--tag.bx--skeleton{transform:translateZ(0)}}}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--tag{outline:1px solid rgba(0,0,0,0)}.bx--tag__close-icon svg,.bx--tag__custom-icon svg{fill:ButtonText}.bx--tag__close-icon:focus{color:Highlight;outline:1px solid Highlight}}.bx--text-truncate--end{display:inline-block;overflow:hidden;width:100%;text-overflow:ellipsis;white-space:nowrap}.bx--text-truncate--front{display:inline-block;overflow:hidden;width:100%;direction:rtl;text-overflow:ellipsis;white-space:nowrap}.bx--inline-notification{position:relative;display:flex;width:100%;min-width:18rem;max-width:18rem;height:auto;min-height:3rem;flex-wrap:wrap;margin-top:1rem;margin-bottom:1rem;color:var(--cds-inverse-01, #ffffff)}@media (min-width: 42rem){.bx--inline-notification{max-width:38rem;flex-wrap:nowrap}}@media (min-width: 66rem){.bx--inline-notification{max-width:46rem}}@media (min-width: 99rem){.bx--inline-notification{max-width:52rem}}.bx--inline-notification:not(.bx--inline-notification--low-contrast) a{color:var(--cds-inverse-link, #78a9ff)}.bx--inline-notification a{text-decoration:none}.bx--inline-notification a:hover{text-decoration:underline}.bx--inline-notification a:focus{outline:1px solid var(--cds-inverse-link, #78a9ff)}.bx--inline-notification.bx--inline-notification--low-contrast a:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--inline-notification.bx--inline-notification--low-contrast a:focus{outline-style:dotted}}.bx--inline-notification--low-contrast{color:var(--cds-text-01, #161616)}.bx--inline-notification--low-contrast:before{position:absolute;top:0;left:0;width:100%;height:100%;box-sizing:border-box;border-width:1px 1px 1px 0;border-style:solid;content:"";filter:opacity(.4);pointer-events:none}.bx--inline-notification--error{border-left:3px solid var(--cds-inverse-support-01, #fa4d56);background:var(--cds-inverse-02, #393939)}.bx--inline-notification--error .bx--inline-notification__icon,.bx--inline-notification--error .bx--toast-notification__icon,.bx--inline-notification--error .bx--actionable-notification__icon{fill:var(--cds-inverse-support-01, #fa4d56)}.bx--inline-notification--low-contrast.bx--inline-notification--error{border-left:3px solid var(--cds-support-01, #da1e28);background:var(--cds-notification-background-error, #fff1f1)}.bx--inline-notification--low-contrast.bx--inline-notification--error .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--error .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--error .bx--actionable-notification__icon{fill:var(--cds-support-01, #da1e28)}.bx--inline-notification--low-contrast.bx--inline-notification--error:before{border-color:var(--cds-support-01, #da1e28)}.bx--inline-notification--success{border-left:3px solid var(--cds-inverse-support-02, #42be65);background:var(--cds-inverse-02, #393939)}.bx--inline-notification--success .bx--inline-notification__icon,.bx--inline-notification--success .bx--toast-notification__icon,.bx--inline-notification--success .bx--actionable-notification__icon{fill:var(--cds-inverse-support-02, #42be65)}.bx--inline-notification--low-contrast.bx--inline-notification--success{border-left:3px solid var(--cds-support-02, #198038);background:var(--cds-notification-background-success, #defbe6)}.bx--inline-notification--low-contrast.bx--inline-notification--success .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--success .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--success .bx--actionable-notification__icon{fill:var(--cds-support-02, #198038)}.bx--inline-notification--low-contrast.bx--inline-notification--success:before{border-color:var(--cds-support-02, #198038)}.bx--inline-notification--info,.bx--inline-notification--info-square{border-left:3px solid var(--cds-inverse-support-04, #4589ff);background:var(--cds-inverse-02, #393939)}.bx--inline-notification--info .bx--inline-notification__icon,.bx--inline-notification--info .bx--toast-notification__icon,.bx--inline-notification--info .bx--actionable-notification__icon,.bx--inline-notification--info-square .bx--inline-notification__icon,.bx--inline-notification--info-square .bx--toast-notification__icon,.bx--inline-notification--info-square .bx--actionable-notification__icon{fill:var(--cds-inverse-support-04, #4589ff)}.bx--inline-notification--low-contrast.bx--inline-notification--info,.bx--inline-notification--low-contrast.bx--inline-notification--info-square{border-left:3px solid var(--cds-support-04, #0043ce);background:var(--cds-notification-background-info, #edf5ff)}.bx--inline-notification--low-contrast.bx--inline-notification--info .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--info .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--info .bx--actionable-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--info-square .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--info-square .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--info-square .bx--actionable-notification__icon{fill:var(--cds-support-04, #0043ce)}.bx--inline-notification--low-contrast.bx--inline-notification--info:before,.bx--inline-notification--low-contrast.bx--inline-notification--info-square:before{border-color:var(--cds-support-04, #0043ce)}.bx--inline-notification--warning,.bx--inline-notification--warning-alt{border-left:3px solid var(--cds-inverse-support-03, #f1c21b);background:var(--cds-inverse-02, #393939)}.bx--inline-notification--warning .bx--inline-notification__icon,.bx--inline-notification--warning .bx--toast-notification__icon,.bx--inline-notification--warning .bx--actionable-notification__icon,.bx--inline-notification--warning-alt .bx--inline-notification__icon,.bx--inline-notification--warning-alt .bx--toast-notification__icon,.bx--inline-notification--warning-alt .bx--actionable-notification__icon{fill:var(--cds-inverse-support-03, #f1c21b)}.bx--inline-notification--low-contrast.bx--inline-notification--warning,.bx--inline-notification--low-contrast.bx--inline-notification--warning-alt{border-left:3px solid var(--cds-support-03, #f1c21b);background:var(--cds-notification-background-warning, #fdf6dd)}.bx--inline-notification--low-contrast.bx--inline-notification--warning .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--warning .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--warning .bx--actionable-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--warning-alt .bx--inline-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--warning-alt .bx--toast-notification__icon,.bx--inline-notification--low-contrast.bx--inline-notification--warning-alt .bx--actionable-notification__icon{fill:var(--cds-support-03, #f1c21b)}.bx--inline-notification--low-contrast.bx--inline-notification--warning:before,.bx--inline-notification--low-contrast.bx--inline-notification--warning-alt:before{border-color:var(--cds-support-03, #f1c21b)}.bx--inline-notification--warning .bx--inline-notification__icon path[opacity="0"]{fill:#000;opacity:1}.bx--inline-notification__details{display:flex;flex-grow:1;margin:0 3rem 0 1rem}@media (min-width: 42rem){.bx--inline-notification__details{margin:0 1rem}}.bx--inline-notification__icon{flex-shrink:0;margin-top:.875rem;margin-right:1rem}.bx--inline-notification__text-wrapper{display:flex;flex-wrap:wrap;padding:.9375rem 0}.bx--inline-notification__title{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);margin:0 .25rem 0 0}.bx--inline-notification__subtitle{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);word-break:break-word}.bx--inline-notification__action-button.bx--btn--ghost{height:2rem;margin-bottom:.5rem;margin-left:2.5rem}@media (min-width: 42rem){.bx--inline-notification__action-button.bx--btn--ghost{margin:.5rem 0}}.bx--inline-notification:not(.bx--inline-notification--low-contrast) .bx--inline-notification__action-button.bx--btn--ghost{color:var(--cds-inverse-link, #78a9ff)}.bx--inline-notification__action-button.bx--btn--ghost:active,.bx--inline-notification__action-button.bx--btn--ghost:hover{background-color:var(--cds-inverse-hover-ui, #4c4c4c)}.bx--inline-notification--low-contrast .bx--inline-notification__action-button.bx--btn--ghost:active,.bx--inline-notification--low-contrast .bx--inline-notification__action-button.bx--btn--ghost:hover{background-color:var(--cds-notification-action-hover, #ffffff)}.bx--inline-notification__action-button.bx--btn--ghost:focus{border-color:#0000;box-shadow:none;outline:2px solid var(--cds-inverse-focus-ui, #ffffff);outline-offset:-2px}.bx--inline-notification--low-contrast .bx--inline-notification__action-button.bx--btn--ghost:focus{outline-color:var(--cds-focus, #0f62fe)}.bx--inline-notification--hide-close-button .bx--inline-notification__action-button.bx--btn--ghost{margin-right:.5rem}.bx--inline-notification__close-button{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:absolute;top:0;right:0;display:flex;width:3rem;min-width:3rem;max-width:3rem;height:3rem;flex-direction:column;align-items:center;justify-content:center;padding:0;border:none;background:rgba(0,0,0,0);cursor:pointer;transition:outline .11s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9)}.bx--inline-notification__close-button:focus{outline:2px solid var(--cds-inverse-focus-ui, #ffffff);outline-offset:-2px}.bx--inline-notification__close-button .bx--inline-notification__close-icon{fill:var(--cds-inverse-01, #ffffff)}@media (min-width: 42rem){.bx--inline-notification__close-button{position:static}}.bx--inline-notification--low-contrast .bx--inline-notification__close-button:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--inline-notification--low-contrast .bx--inline-notification__close-button:focus{outline-style:dotted}}.bx--inline-notification--low-contrast .bx--inline-notification__close-button .bx--inline-notification__close-icon{fill:var(--cds-icon-01, #161616)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--inline-notification{outline:1px solid rgba(0,0,0,0)}.bx--inline-notification__close-button:focus,.bx--btn.bx--btn--ghost.bx--inline-notification__action-button:focus{color:Highlight;outline:1px solid Highlight}.bx--inline-notification__icon{fill:ButtonText}}.bx--toast-notification{display:flex;width:18rem;height:auto;padding-left:1rem;margin-top:.5rem;margin-right:1rem;margin-bottom:.5rem;box-shadow:0 2px 6px #0003;color:var(--cds-inverse-01, #ffffff)}.bx--toast-notification:first-child{margin-top:1rem}@media (min-width: 99rem){.bx--toast-notification{width:22rem}}.bx--toast-notification:not(.bx--toast-notification--low-contrast) a{color:var(--cds-inverse-link, #78a9ff)}.bx--toast-notification a{text-decoration:none}.bx--toast-notification a:hover{text-decoration:underline}.bx--toast-notification a:focus{outline:1px solid var(--cds-inverse-link, #78a9ff)}.bx--toast-notification.bx--toast-notification--low-contrast a:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--toast-notification.bx--toast-notification--low-contrast a:focus{outline-style:dotted}}.bx--toast-notification--low-contrast{color:var(--cds-text-01, #161616)}.bx--toast-notification--error{border-left:3px solid var(--cds-inverse-support-01, #fa4d56);background:var(--cds-inverse-02, #393939)}.bx--toast-notification--error .bx--inline-notification__icon,.bx--toast-notification--error .bx--toast-notification__icon,.bx--toast-notification--error .bx--actionable-notification__icon{fill:var(--cds-inverse-support-01, #fa4d56)}.bx--toast-notification--low-contrast.bx--toast-notification--error{border-left:3px solid var(--cds-support-01, #da1e28);background:var(--cds-notification-background-error, #fff1f1)}.bx--toast-notification--low-contrast.bx--toast-notification--error .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--error .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--error .bx--actionable-notification__icon{fill:var(--cds-support-01, #da1e28)}.bx--toast-notification--success{border-left:3px solid var(--cds-inverse-support-02, #42be65);background:var(--cds-inverse-02, #393939)}.bx--toast-notification--success .bx--inline-notification__icon,.bx--toast-notification--success .bx--toast-notification__icon,.bx--toast-notification--success .bx--actionable-notification__icon{fill:var(--cds-inverse-support-02, #42be65)}.bx--toast-notification--low-contrast.bx--toast-notification--success{border-left:3px solid var(--cds-support-02, #198038);background:var(--cds-notification-background-success, #defbe6)}.bx--toast-notification--low-contrast.bx--toast-notification--success .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--success .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--success .bx--actionable-notification__icon{fill:var(--cds-support-02, #198038)}.bx--toast-notification--info,.bx--toast-notification--info-square{border-left:3px solid var(--cds-inverse-support-04, #4589ff);background:var(--cds-inverse-02, #393939)}.bx--toast-notification--info .bx--inline-notification__icon,.bx--toast-notification--info .bx--toast-notification__icon,.bx--toast-notification--info .bx--actionable-notification__icon,.bx--toast-notification--info-square .bx--inline-notification__icon,.bx--toast-notification--info-square .bx--toast-notification__icon,.bx--toast-notification--info-square .bx--actionable-notification__icon{fill:var(--cds-inverse-support-04, #4589ff)}.bx--toast-notification--low-contrast.bx--toast-notification--info,.bx--toast-notification--low-contrast.bx--toast-notification--info-square{border-left:3px solid var(--cds-support-04, #0043ce);background:var(--cds-notification-background-info, #edf5ff)}.bx--toast-notification--low-contrast.bx--toast-notification--info .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--info .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--info .bx--actionable-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--info-square .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--info-square .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--info-square .bx--actionable-notification__icon{fill:var(--cds-support-04, #0043ce)}.bx--toast-notification--warning,.bx--toast-notification--warning-alt{border-left:3px solid var(--cds-inverse-support-03, #f1c21b);background:var(--cds-inverse-02, #393939)}.bx--toast-notification--warning .bx--inline-notification__icon,.bx--toast-notification--warning .bx--toast-notification__icon,.bx--toast-notification--warning .bx--actionable-notification__icon,.bx--toast-notification--warning-alt .bx--inline-notification__icon,.bx--toast-notification--warning-alt .bx--toast-notification__icon,.bx--toast-notification--warning-alt .bx--actionable-notification__icon{fill:var(--cds-inverse-support-03, #f1c21b)}.bx--toast-notification--low-contrast.bx--toast-notification--warning,.bx--toast-notification--low-contrast.bx--toast-notification--warning-alt{border-left:3px solid var(--cds-support-03, #f1c21b);background:var(--cds-notification-background-warning, #fdf6dd)}.bx--toast-notification--low-contrast.bx--toast-notification--warning .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--warning .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--warning .bx--actionable-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--warning-alt .bx--inline-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--warning-alt .bx--toast-notification__icon,.bx--toast-notification--low-contrast.bx--toast-notification--warning-alt .bx--actionable-notification__icon{fill:var(--cds-support-03, #f1c21b)}.bx--toast-notification--warning .bx--toast-notification__icon path[opacity="0"]{fill:#000;opacity:1}.bx--toast-notification__icon{flex-shrink:0;margin-top:1rem;margin-right:1rem}.bx--toast-notification__details{margin-right:1rem}.bx--toast-notification__close-button{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:flex;width:3rem;min-width:3rem;height:3rem;min-height:3rem;flex-direction:column;align-items:center;justify-content:center;padding:0;border:none;margin-left:auto;background-color:#0000;cursor:pointer;transition:outline .11s,background-color .11s}.bx--toast-notification__close-button:focus{outline:2px solid var(--cds-inverse-focus-ui, #ffffff);outline-offset:-2px}.bx--toast-notification__close-button .bx--toast-notification__close-icon{fill:var(--cds-inverse-01, #ffffff)}.bx--toast-notification--low-contrast .bx--toast-notification__close-button:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--toast-notification--low-contrast .bx--toast-notification__close-button:focus{outline-style:dotted}}.bx--toast-notification--low-contrast .bx--toast-notification__close-button .bx--toast-notification__close-icon{fill:var(--cds-icon-01, #161616)}.bx--toast-notification__title{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);margin-top:1rem;font-weight:600;word-break:break-word}.bx--toast-notification__subtitle{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);margin-top:0;margin-bottom:1rem;color:var(--cds-inverse-01, #ffffff);word-break:break-word}.bx--toast-notification--low-contrast .bx--toast-notification__subtitle{color:var(--cds-text-primary, #161616)}.bx--toast-notification__caption{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);padding-top:.5rem;margin-bottom:1rem;color:var(--cds-inverse-01, #ffffff)}.bx--toast-notification--low-contrast .bx--toast-notification__caption{color:var(--cds-text-01, #161616)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--toast-notification{outline:1px solid rgba(0,0,0,0)}.bx--toast-notification__close-button:focus{color:Highlight;outline:1px solid Highlight}.bx--toast-notification__icon{fill:ButtonText}}.bx--popover{--cds-popover-offset: 0rem;--cds-popover-caret-offset: 1rem;position:absolute;z-index:6000;display:none}.bx--popover:before{position:absolute;display:block;content:""}.bx--popover--open{display:block}.bx--popover-contents{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:relative;width:-moz-max-content;width:max-content;max-width:23rem;background-color:var(--cds-ui-01, #f4f4f4);border-radius:2px;color:var(--cds-text-01, #161616)}.bx--popover--light .bx--popover-contents{background-color:var(--cds-ui-background, #ffffff)}.bx--popover--high-contrast .bx--popover-contents{background-color:var(--cds-inverse-02, #393939);color:var(--cds-inverse-01, #ffffff)}.bx--popover--caret{--cds-popover-offset: .5rem}.bx--popover--caret .bx--popover-contents:before,.bx--popover--caret .bx--popover-contents:after{position:absolute;display:inline-block;width:.5rem;height:.5rem;background-color:inherit;content:""}.bx--popover--caret .bx--popover-contents:before{z-index:-1;box-shadow:2px 2px 6px #0003}.bx--popover--bottom{bottom:0;left:50%;transform:translate(-50%,calc(100% + var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--bottom .bx--popover-contents:before,.bx--popover--caret.bx--popover--bottom .bx--popover-contents:after{top:0;left:50%;transform:translate(-50%,-50%) rotate(45deg)}.bx--popover--bottom-left{bottom:0;left:0;transform:translateY(calc(100% + var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--bottom-left .bx--popover-contents:before,.bx--popover--caret.bx--popover--bottom-left .bx--popover-contents:after{top:0;left:0;transform:translate(var(--cds-popover-caret-offset),-50%) rotate(45deg)}.bx--popover--bottom-right{right:0;bottom:0;transform:translateY(calc(100% + var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--bottom-right .bx--popover-contents:before,.bx--popover--caret.bx--popover--bottom-right .bx--popover-contents:after{top:0;right:0;transform:translate(calc(-1 * var(--cds-popover-caret-offset)),-50%) rotate(45deg)}.bx--popover--bottom.bx--popover:before,.bx--popover--bottom-left.bx--popover:before,.bx--popover--bottom-right.bx--popover:before{top:0;right:0;left:0;height:var(--cds-popover-offset);transform:translateY(-100%)}.bx--popover--top{bottom:100%;left:50%;transform:translate(-50%,calc(-1 * var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--top .bx--popover-contents:before,.bx--popover--caret.bx--popover--top .bx--popover-contents:after{bottom:0;left:50%;transform:translate(-50%,50%) rotate(45deg)}.bx--popover--top-left{bottom:100%;left:0;transform:translateY(calc(-1 * var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--top-left .bx--popover-contents:before,.bx--popover--caret.bx--popover--top-left .bx--popover-contents:after{bottom:0;left:0;transform:translate(var(--cds-popover-caret-offset),50%) rotate(45deg)}.bx--popover--top-right{right:0;bottom:100%;transform:translateY(calc(-1 * var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--top-right .bx--popover-contents:before,.bx--popover--caret.bx--popover--top-right .bx--popover-contents:after{right:0;bottom:0;transform:translate(calc(-1 * var(--cds-popover-caret-offset)),50%) rotate(45deg)}.bx--popover--top.bx--popover:before,.bx--popover--top-left.bx--popover:before,.bx--popover--top-right.bx--popover:before{right:0;bottom:0;left:0;height:var(--cds-popover-offset);transform:translateY(100%)}.bx--popover--right{top:50%;left:100%;transform:translate(var(--cds-popover-offset),-50%)}.bx--popover--caret.bx--popover--right .bx--popover-contents:before,.bx--popover--caret.bx--popover--right .bx--popover-contents:after{top:50%;left:0;transform:translate(-50%,-50%) rotate(45deg)}.bx--popover--right-top{top:0;left:100%;transform:translate(8px)}.bx--popover--caret.bx--popover--right-top .bx--popover-contents:before,.bx--popover--caret.bx--popover--right-top .bx--popover-contents:after{top:0;left:0;transform:translate(-50%,var(--cds-popover-caret-offset)) rotate(45deg)}.bx--popover--right-bottom{bottom:0;left:100%;transform:translate(var(--cds-popover-offset))}.bx--popover--caret.bx--popover--right-bottom .bx--popover-contents:before,.bx--popover--caret.bx--popover--right-bottom .bx--popover-contents:after{bottom:0;left:0;transform:translate(-50%,calc(-1 * var(--cds-popover-caret-offset))) rotate(45deg)}.bx--popover--right.bx--popover:before,.bx--popover--right-top.bx--popover:before,.bx--popover--right-bottom.bx--popover:before{top:0;bottom:0;left:0;width:var(--cds-popover-offset);transform:translate(-100%)}.bx--popover--left{top:50%;right:100%;transform:translate(calc(-1 * var(--cds-popover-offset)),-50%)}.bx--popover--caret.bx--popover--left .bx--popover-contents:before,.bx--popover--caret.bx--popover--left .bx--popover-contents:after{top:50%;right:0;transform:translate(50%,-50%) rotate(45deg)}.bx--popover--left-top{top:0;right:100%;transform:translate(calc(-1 * var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--left-top .bx--popover-contents:before,.bx--popover--caret.bx--popover--left-top .bx--popover-contents:after{top:0;right:0;transform:translate(50%,var(--cds-popover-caret-offset)) rotate(45deg)}.bx--popover--left-bottom{right:100%;bottom:0;transform:translate(calc(-1 * var(--cds-popover-offset)))}.bx--popover--caret.bx--popover--left-bottom .bx--popover-contents:before,.bx--popover--caret.bx--popover--left-bottom .bx--popover-contents:after{right:0;bottom:0;transform:translate(50%,calc(-1 * var(--cds-popover-caret-offset))) rotate(45deg)}.bx--popover--left.bx--popover:before,.bx--popover--left-top.bx--popover:before,.bx--popover--left-bottom.bx--popover:before{top:0;right:0;bottom:0;width:var(--cds-popover-offset);transform:translate(100%)}:root{--cds-interactive-01: #0f62fe;--cds-interactive-02: #393939;--cds-interactive-03: #0f62fe;--cds-interactive-04: #0f62fe;--cds-ui-background: #ffffff;--cds-ui-01: #f4f4f4;--cds-ui-02: #ffffff;--cds-ui-03: #e0e0e0;--cds-ui-04: #8d8d8d;--cds-ui-05: #161616;--cds-text-01: #161616;--cds-text-02: #525252;--cds-text-03: #a8a8a8;--cds-text-04: #ffffff;--cds-text-05: #6f6f6f;--cds-text-error: #da1e28;--cds-icon-01: #161616;--cds-icon-02: #525252;--cds-icon-03: #ffffff;--cds-link-01: #0f62fe;--cds-link-02: #0043ce;--cds-inverse-link: #78a9ff;--cds-field-01: #f4f4f4;--cds-field-02: #ffffff;--cds-inverse-01: #ffffff;--cds-inverse-02: #393939;--cds-support-01: #da1e28;--cds-support-02: #198038;--cds-support-03: #f1c21b;--cds-support-04: #0043ce;--cds-inverse-support-01: #fa4d56;--cds-inverse-support-02: #42be65;--cds-inverse-support-03: #f1c21b;--cds-inverse-support-04: #4589ff;--cds-overlay-01: rgba(22, 22, 22, .5);--cds-danger-01: #da1e28;--cds-danger-02: #da1e28;--cds-focus: #0f62fe;--cds-inverse-focus-ui: #ffffff;--cds-hover-primary: #0353e9;--cds-active-primary: #002d9c;--cds-hover-primary-text: #0043ce;--cds-hover-secondary: #4c4c4c;--cds-active-secondary: #6f6f6f;--cds-hover-tertiary: #0353e9;--cds-active-tertiary: #002d9c;--cds-hover-ui: #e5e5e5;--cds-hover-light-ui: #e5e5e5;--cds-hover-selected-ui: #cacaca;--cds-active-ui: #c6c6c6;--cds-active-light-ui: #c6c6c6;--cds-selected-ui: #e0e0e0;--cds-selected-light-ui: #e0e0e0;--cds-inverse-hover-ui: #4c4c4c;--cds-hover-danger: #b81921;--cds-active-danger: #750e13;--cds-hover-row: #e5e5e5;--cds-visited-link: #8a3ffc;--cds-disabled-01: #f4f4f4;--cds-disabled-02: #c6c6c6;--cds-disabled-03: #8d8d8d;--cds-highlight: #d0e2ff;--cds-decorative-01: #e0e0e0;--cds-button-separator: #e0e0e0;--cds-skeleton-01: #e5e5e5;--cds-skeleton-02: #c6c6c6;--cds-background: #ffffff;--cds-layer: #f4f4f4;--cds-layer-accent: #e0e0e0;--cds-layer-accent-hover: #d1d1d1;--cds-layer-accent-active: #a8a8a8;--cds-field: #f4f4f4;--cds-background-inverse: #393939;--cds-background-brand: #0f62fe;--cds-interactive: #0f62fe;--cds-border-subtle: #e0e0e0;--cds-border-strong: #8d8d8d;--cds-border-inverse: #161616;--cds-border-interactive: #0f62fe;--cds-text-primary: #161616;--cds-text-secondary: #525252;--cds-text-placeholder: #a8a8a8;--cds-text-helper: #6f6f6f;--cds-text-on-color: #ffffff;--cds-text-inverse: #ffffff;--cds-link-primary: #0f62fe;--cds-link-secondary: #0043ce;--cds-link-visited: #8a3ffc;--cds-link-inverse: #78a9ff;--cds-icon-primary: #161616;--cds-icon-secondary: #525252;--cds-icon-on-color: #ffffff;--cds-icon-inverse: #ffffff;--cds-support-error: #da1e28;--cds-support-success: #198038;--cds-support-warning: #f1c21b;--cds-support-info: #0043ce;--cds-support-error-inverse: #fa4d56;--cds-support-success-inverse: #42be65;--cds-support-warning-inverse: #f1c21b;--cds-support-info-inverse: #4589ff;--cds-overlay: rgba(22, 22, 22, .5);--cds-toggle-off: #8d8d8d;--cds-shadow: rgba(0, 0, 0, .3);--cds-button-primary: #0f62fe;--cds-button-secondary: #393939;--cds-button-tertiary: #0f62fe;--cds-button-danger-primary: #da1e28;--cds-button-danger-secondary: #da1e28;--cds-background-active: #c6c6c6;--cds-layer-active: #c6c6c6;--cds-button-danger-active: #750e13;--cds-button-primary-active: #002d9c;--cds-button-secondary-active: #6f6f6f;--cds-button-tertiary-active: #002d9c;--cds-focus-inset: #ffffff;--cds-focus-inverse: #ffffff;--cds-background-hover: #e5e5e5;--cds-layer-hover: #e5e5e5;--cds-field-hover: #e5e5e5;--cds-background-inverse-hover: #4c4c4c;--cds-link-primary-hover: #0043ce;--cds-button-danger-hover: #b81921;--cds-button-primary-hover: #0353e9;--cds-button-secondary-hover: #4c4c4c;--cds-button-tertiary-hover: #0353e9;--cds-background-selected: #e0e0e0;--cds-background-selected-hover: #cacaca;--cds-layer-selected: #e0e0e0;--cds-layer-selected-hover: #cacaca;--cds-layer-selected-inverse: #161616;--cds-border-subtle-selected: #c6c6c6;--cds-border-disabled: #f4f4f4;--cds-text-disabled: #c6c6c6;--cds-button-disabled: #c6c6c6;--cds-icon-disabled: #c6c6c6;--cds-text-on-color-disabled: #8d8d8d;--cds-icon-on-color-disabled: #8d8d8d;--cds-layer-selected-disabled: #8d8d8d;--cds-skeleton-background: #e5e5e5;--cds-skeleton-element: #c6c6c6;--cds-brand-01: #0f62fe;--cds-brand-02: #393939;--cds-brand-03: #0f62fe;--cds-active-01: #c6c6c6;--cds-hover-field: #e5e5e5;--cds-danger: #da1e28;--cds-caption-01-font-size: .75rem;--cds-caption-01-font-weight: 400;--cds-caption-01-line-height: 1.33333;--cds-caption-01-letter-spacing: .32px;--cds-caption-02-font-size: .875rem;--cds-caption-02-font-weight: 400;--cds-caption-02-line-height: 1.28572;--cds-caption-02-letter-spacing: .32px;--cds-label-01-font-size: .75rem;--cds-label-01-font-weight: 400;--cds-label-01-line-height: 1.33333;--cds-label-01-letter-spacing: .32px;--cds-label-02-font-size: .875rem;--cds-label-02-font-weight: 400;--cds-label-02-line-height: 1.28572;--cds-label-02-letter-spacing: .16px;--cds-helper-text-01-font-size: .75rem;--cds-helper-text-01-line-height: 1.33333;--cds-helper-text-01-letter-spacing: .32px;--cds-helper-text-02-font-size: .875rem;--cds-helper-text-02-line-height: 1.28572;--cds-helper-text-02-letter-spacing: .16px;--cds-body-short-01-font-size: .875rem;--cds-body-short-01-font-weight: 400;--cds-body-short-01-line-height: 1.28572;--cds-body-short-01-letter-spacing: .16px;--cds-body-long-01-font-size: .875rem;--cds-body-long-01-font-weight: 400;--cds-body-long-01-line-height: 1.42857;--cds-body-long-01-letter-spacing: .16px;--cds-body-short-02-font-size: 1rem;--cds-body-short-02-font-weight: 400;--cds-body-short-02-line-height: 1.375;--cds-body-short-02-letter-spacing: 0;--cds-body-long-02-font-size: 1rem;--cds-body-long-02-font-weight: 400;--cds-body-long-02-line-height: 1.5;--cds-body-long-02-letter-spacing: 0;--cds-code-01-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-01-font-size: .75rem;--cds-code-01-font-weight: 400;--cds-code-01-line-height: 1.33333;--cds-code-01-letter-spacing: .32px;--cds-code-02-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-02-font-size: .875rem;--cds-code-02-font-weight: 400;--cds-code-02-line-height: 1.42857;--cds-code-02-letter-spacing: .32px;--cds-heading-01-font-size: .875rem;--cds-heading-01-font-weight: 600;--cds-heading-01-line-height: 1.42857;--cds-heading-01-letter-spacing: .16px;--cds-productive-heading-01-font-size: .875rem;--cds-productive-heading-01-font-weight: 600;--cds-productive-heading-01-line-height: 1.28572;--cds-productive-heading-01-letter-spacing: .16px;--cds-heading-02-font-size: 1rem;--cds-heading-02-font-weight: 600;--cds-heading-02-line-height: 1.5;--cds-heading-02-letter-spacing: 0;--cds-productive-heading-02-font-size: 1rem;--cds-productive-heading-02-font-weight: 600;--cds-productive-heading-02-line-height: 1.375;--cds-productive-heading-02-letter-spacing: 0;--cds-productive-heading-03-font-size: 1.25rem;--cds-productive-heading-03-font-weight: 400;--cds-productive-heading-03-line-height: 1.4;--cds-productive-heading-03-letter-spacing: 0;--cds-productive-heading-04-font-size: 1.75rem;--cds-productive-heading-04-font-weight: 400;--cds-productive-heading-04-line-height: 1.28572;--cds-productive-heading-04-letter-spacing: 0;--cds-productive-heading-05-font-size: 2rem;--cds-productive-heading-05-font-weight: 400;--cds-productive-heading-05-line-height: 1.25;--cds-productive-heading-05-letter-spacing: 0;--cds-productive-heading-06-font-size: 2.625rem;--cds-productive-heading-06-font-weight: 300;--cds-productive-heading-06-line-height: 1.199;--cds-productive-heading-06-letter-spacing: 0;--cds-productive-heading-07-font-size: 3.375rem;--cds-productive-heading-07-font-weight: 300;--cds-productive-heading-07-line-height: 1.199;--cds-productive-heading-07-letter-spacing: 0;--cds-expressive-heading-01-font-size: .875rem;--cds-expressive-heading-01-font-weight: 600;--cds-expressive-heading-01-line-height: 1.25;--cds-expressive-heading-01-letter-spacing: .16px;--cds-expressive-heading-02-font-size: 1rem;--cds-expressive-heading-02-font-weight: 600;--cds-expressive-heading-02-line-height: 1.5;--cds-expressive-heading-02-letter-spacing: 0;--cds-expressive-heading-03-font-size: 1.25rem;--cds-expressive-heading-03-font-weight: 400;--cds-expressive-heading-03-line-height: 1.4;--cds-expressive-heading-03-letter-spacing: 0;--cds-expressive-heading-04-font-size: 1.75rem;--cds-expressive-heading-04-font-weight: 400;--cds-expressive-heading-04-line-height: 1.28572;--cds-expressive-heading-04-letter-spacing: 0;--cds-expressive-heading-05-font-size: 2rem;--cds-expressive-heading-05-font-weight: 400;--cds-expressive-heading-05-line-height: 1.25;--cds-expressive-heading-05-letter-spacing: 0;--cds-expressive-heading-06-font-size: 2rem;--cds-expressive-heading-06-font-weight: 600;--cds-expressive-heading-06-line-height: 1.25;--cds-expressive-heading-06-letter-spacing: 0;--cds-expressive-paragraph-01-font-size: 1.5rem;--cds-expressive-paragraph-01-font-weight: 300;--cds-expressive-paragraph-01-line-height: 1.334;--cds-expressive-paragraph-01-letter-spacing: 0;--cds-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-01-font-size: 1.25rem;--cds-quotation-01-font-weight: 400;--cds-quotation-01-line-height: 1.3;--cds-quotation-01-letter-spacing: 0;--cds-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-02-font-size: 2rem;--cds-quotation-02-font-weight: 300;--cds-quotation-02-line-height: 1.25;--cds-quotation-02-letter-spacing: 0;--cds-display-01-font-size: 2.625rem;--cds-display-01-font-weight: 300;--cds-display-01-line-height: 1.19;--cds-display-01-letter-spacing: 0;--cds-display-02-font-size: 2.625rem;--cds-display-02-font-weight: 600;--cds-display-02-line-height: 1.19;--cds-display-02-letter-spacing: 0;--cds-display-03-font-size: 2.625rem;--cds-display-03-font-weight: 300;--cds-display-03-line-height: 1.19;--cds-display-03-letter-spacing: 0;--cds-display-04-font-size: 2.625rem;--cds-display-04-font-weight: 600;--cds-display-04-line-height: 1.19;--cds-display-04-letter-spacing: 0;--cds-legal-01-font-size: .75rem;--cds-legal-01-font-weight: 400;--cds-legal-01-line-height: 1.33333;--cds-legal-01-letter-spacing: .32px;--cds-legal-02-font-size: .875rem;--cds-legal-02-font-weight: 400;--cds-legal-02-line-height: 1.28572;--cds-legal-02-letter-spacing: .16px;--cds-body-compact-01-font-size: .875rem;--cds-body-compact-01-font-weight: 400;--cds-body-compact-01-line-height: 1.28572;--cds-body-compact-01-letter-spacing: .16px;--cds-body-compact-02-font-size: 1rem;--cds-body-compact-02-font-weight: 400;--cds-body-compact-02-line-height: 1.375;--cds-body-compact-02-letter-spacing: 0;--cds-body-01-font-size: .875rem;--cds-body-01-font-weight: 400;--cds-body-01-line-height: 1.42857;--cds-body-01-letter-spacing: .16px;--cds-body-02-font-size: 1rem;--cds-body-02-font-weight: 400;--cds-body-02-line-height: 1.5;--cds-body-02-letter-spacing: 0;--cds-heading-compact-01-font-size: .875rem;--cds-heading-compact-01-font-weight: 600;--cds-heading-compact-01-line-height: 1.28572;--cds-heading-compact-01-letter-spacing: .16px;--cds-heading-compact-02-font-size: 1rem;--cds-heading-compact-02-font-weight: 600;--cds-heading-compact-02-line-height: 1.375;--cds-heading-compact-02-letter-spacing: 0;--cds-heading-03-font-size: 1.25rem;--cds-heading-03-font-weight: 400;--cds-heading-03-line-height: 1.4;--cds-heading-03-letter-spacing: 0;--cds-heading-04-font-size: 1.75rem;--cds-heading-04-font-weight: 400;--cds-heading-04-line-height: 1.28572;--cds-heading-04-letter-spacing: 0;--cds-heading-05-font-size: 2rem;--cds-heading-05-font-weight: 400;--cds-heading-05-line-height: 1.25;--cds-heading-05-letter-spacing: 0;--cds-heading-06-font-size: 2.625rem;--cds-heading-06-font-weight: 300;--cds-heading-06-line-height: 1.199;--cds-heading-06-letter-spacing: 0;--cds-heading-07-font-size: 3.375rem;--cds-heading-07-font-weight: 300;--cds-heading-07-line-height: 1.199;--cds-heading-07-letter-spacing: 0;--cds-fluid-heading-03-font-size: 1.25rem;--cds-fluid-heading-03-font-weight: 400;--cds-fluid-heading-03-line-height: 1.4;--cds-fluid-heading-03-letter-spacing: 0;--cds-fluid-heading-04-font-size: 1.75rem;--cds-fluid-heading-04-font-weight: 400;--cds-fluid-heading-04-line-height: 1.28572;--cds-fluid-heading-04-letter-spacing: 0;--cds-fluid-heading-05-font-size: 2rem;--cds-fluid-heading-05-font-weight: 400;--cds-fluid-heading-05-line-height: 1.25;--cds-fluid-heading-05-letter-spacing: 0;--cds-fluid-heading-06-font-size: 2rem;--cds-fluid-heading-06-font-weight: 600;--cds-fluid-heading-06-line-height: 1.25;--cds-fluid-heading-06-letter-spacing: 0;--cds-fluid-paragraph-01-font-size: 1.5rem;--cds-fluid-paragraph-01-font-weight: 300;--cds-fluid-paragraph-01-line-height: 1.334;--cds-fluid-paragraph-01-letter-spacing: 0;--cds-fluid-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-01-font-size: 1.25rem;--cds-fluid-quotation-01-font-weight: 400;--cds-fluid-quotation-01-line-height: 1.3;--cds-fluid-quotation-01-letter-spacing: 0;--cds-fluid-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-02-font-size: 2rem;--cds-fluid-quotation-02-font-weight: 300;--cds-fluid-quotation-02-line-height: 1.25;--cds-fluid-quotation-02-letter-spacing: 0;--cds-fluid-display-01-font-size: 2.625rem;--cds-fluid-display-01-font-weight: 300;--cds-fluid-display-01-line-height: 1.19;--cds-fluid-display-01-letter-spacing: 0;--cds-fluid-display-02-font-size: 2.625rem;--cds-fluid-display-02-font-weight: 600;--cds-fluid-display-02-line-height: 1.19;--cds-fluid-display-02-letter-spacing: 0;--cds-fluid-display-03-font-size: 2.625rem;--cds-fluid-display-03-font-weight: 300;--cds-fluid-display-03-line-height: 1.19;--cds-fluid-display-03-letter-spacing: 0;--cds-fluid-display-04-font-size: 2.625rem;--cds-fluid-display-04-font-weight: 600;--cds-fluid-display-04-line-height: 1.19;--cds-fluid-display-04-letter-spacing: 0;--cds-spacing-01: .125rem;--cds-spacing-02: .25rem;--cds-spacing-03: .5rem;--cds-spacing-04: .75rem;--cds-spacing-05: 1rem;--cds-spacing-06: 1.5rem;--cds-spacing-07: 2rem;--cds-spacing-08: 2.5rem;--cds-spacing-09: 3rem;--cds-spacing-10: 4rem;--cds-spacing-11: 5rem;--cds-spacing-12: 6rem;--cds-spacing-13: 10rem;--cds-fluid-spacing-01: 0;--cds-fluid-spacing-02: 2vw;--cds-fluid-spacing-03: 5vw;--cds-fluid-spacing-04: 10vw;--cds-layout-01: 1rem;--cds-layout-02: 1.5rem;--cds-layout-03: 2rem;--cds-layout-04: 3rem;--cds-layout-05: 4rem;--cds-layout-06: 6rem;--cds-layout-07: 10rem;--cds-container-01: 1.5rem;--cds-container-02: 2rem;--cds-container-03: 2.5rem;--cds-container-04: 3rem;--cds-container-05: 4rem;--cds-size-xsmall: 1.5rem;--cds-size-small: 2rem;--cds-size-medium: 2.5rem;--cds-size-large: 3rem;--cds-size-xlarge: 4rem;--cds-size-2XLarge: 5rem;--cds-icon-size-01: 1rem;--cds-icon-size-02: 1.25rem;--cds-tag-background-red: #ffd7d9;--cds-tag-color-red: #750e13;--cds-tag-hover-red: #ffb3b8;--cds-tag-background-magenta: #ffd6e8;--cds-tag-color-magenta: #740937;--cds-tag-hover-magenta: #ffafd2;--cds-tag-background-purple: #e8daff;--cds-tag-color-purple: #491d8b;--cds-tag-hover-purple: #d4bbff;--cds-tag-background-blue: #d0e2ff;--cds-tag-color-blue: #002d9c;--cds-tag-hover-blue: #a6c8ff;--cds-tag-background-cyan: #bae6ff;--cds-tag-color-cyan: #003a6d;--cds-tag-hover-cyan: #82cfff;--cds-tag-background-teal: #9ef0f0;--cds-tag-color-teal: #004144;--cds-tag-hover-teal: #3ddbd9;--cds-tag-background-green: #a7f0ba;--cds-tag-color-green: #044317;--cds-tag-hover-green: #6fdc8c;--cds-tag-background-gray: #e0e0e0;--cds-tag-color-gray: #393939;--cds-tag-hover-gray: #c6c6c6;--cds-tag-background-cool-gray: #dde1e6;--cds-tag-color-cool-gray: #343a3f;--cds-tag-hover-cool-gray: #c1c7cd;--cds-tag-background-warm-gray: #e5e0df;--cds-tag-color-warm-gray: #3c3838;--cds-tag-hover-warm-gray: #cac5c4;--cds-notification-background-error: #fff1f1;--cds-notification-background-success: #defbe6;--cds-notification-background-info: #edf5ff;--cds-notification-background-warning: #fdf6dd;--cds-notification-action-hover: #ffffff}:root[theme=g10]{--cds-interactive-01: #0f62fe;--cds-interactive-02: #393939;--cds-interactive-03: #0f62fe;--cds-interactive-04: #0f62fe;--cds-ui-background: #f4f4f4;--cds-ui-01: #ffffff;--cds-ui-02: #f4f4f4;--cds-ui-03: #e0e0e0;--cds-ui-04: #8d8d8d;--cds-ui-05: #161616;--cds-text-01: #161616;--cds-text-02: #525252;--cds-text-03: #a8a8a8;--cds-text-04: #ffffff;--cds-text-05: #6f6f6f;--cds-text-error: #da1e28;--cds-icon-01: #161616;--cds-icon-02: #525252;--cds-icon-03: #ffffff;--cds-link-01: #0f62fe;--cds-link-02: #0043ce;--cds-inverse-link: #78a9ff;--cds-field-01: #ffffff;--cds-field-02: #f4f4f4;--cds-inverse-01: #ffffff;--cds-inverse-02: #393939;--cds-support-01: #da1e28;--cds-support-02: #198038;--cds-support-03: #f1c21b;--cds-support-04: #0043ce;--cds-inverse-support-01: #fa4d56;--cds-inverse-support-02: #42be65;--cds-inverse-support-03: #f1c21b;--cds-inverse-support-04: #4589ff;--cds-overlay-01: rgba(22, 22, 22, .5);--cds-danger-01: #da1e28;--cds-danger-02: #da1e28;--cds-focus: #0f62fe;--cds-inverse-focus-ui: #ffffff;--cds-hover-primary: #0353e9;--cds-active-primary: #002d9c;--cds-hover-primary-text: #0043ce;--cds-hover-secondary: #4c4c4c;--cds-active-secondary: #6f6f6f;--cds-hover-tertiary: #0353e9;--cds-active-tertiary: #002d9c;--cds-hover-ui: #e5e5e5;--cds-hover-light-ui: #e5e5e5;--cds-hover-selected-ui: #cacaca;--cds-active-ui: #c6c6c6;--cds-active-light-ui: #c6c6c6;--cds-selected-ui: #e0e0e0;--cds-selected-light-ui: #e0e0e0;--cds-inverse-hover-ui: #4c4c4c;--cds-hover-danger: #b81921;--cds-active-danger: #750e13;--cds-hover-row: #e5e5e5;--cds-visited-link: #8a3ffc;--cds-disabled-01: #ffffff;--cds-disabled-02: #c6c6c6;--cds-disabled-03: #8d8d8d;--cds-highlight: #d0e2ff;--cds-decorative-01: #e0e0e0;--cds-button-separator: #e0e0e0;--cds-skeleton-01: #e5e5e5;--cds-skeleton-02: #c6c6c6;--cds-background: #f4f4f4;--cds-layer: #ffffff;--cds-layer-accent: #e0e0e0;--cds-layer-accent-hover: #d1d1d1;--cds-layer-accent-active: #a8a8a8;--cds-field: #ffffff;--cds-background-inverse: #393939;--cds-background-brand: #0f62fe;--cds-interactive: #0f62fe;--cds-border-subtle: #e0e0e0;--cds-border-strong: #8d8d8d;--cds-border-inverse: #161616;--cds-border-interactive: #0f62fe;--cds-text-primary: #161616;--cds-text-secondary: #525252;--cds-text-placeholder: #a8a8a8;--cds-text-helper: #6f6f6f;--cds-text-on-color: #ffffff;--cds-text-inverse: #ffffff;--cds-link-primary: #0f62fe;--cds-link-secondary: #0043ce;--cds-link-visited: #8a3ffc;--cds-link-inverse: #78a9ff;--cds-icon-primary: #161616;--cds-icon-secondary: #525252;--cds-icon-on-color: #ffffff;--cds-icon-inverse: #ffffff;--cds-support-error: #da1e28;--cds-support-success: #198038;--cds-support-warning: #f1c21b;--cds-support-info: #0043ce;--cds-support-error-inverse: #fa4d56;--cds-support-success-inverse: #42be65;--cds-support-warning-inverse: #f1c21b;--cds-support-info-inverse: #4589ff;--cds-overlay: rgba(22, 22, 22, .5);--cds-toggle-off: #8d8d8d;--cds-shadow: rgba(0, 0, 0, .3);--cds-button-primary: #0f62fe;--cds-button-secondary: #393939;--cds-button-tertiary: #0f62fe;--cds-button-danger-primary: #da1e28;--cds-button-danger-secondary: #da1e28;--cds-background-active: #c6c6c6;--cds-layer-active: #c6c6c6;--cds-button-danger-active: #750e13;--cds-button-primary-active: #002d9c;--cds-button-secondary-active: #6f6f6f;--cds-button-tertiary-active: #002d9c;--cds-focus-inset: #ffffff;--cds-focus-inverse: #ffffff;--cds-background-hover: #e5e5e5;--cds-layer-hover: #e5e5e5;--cds-field-hover: #e5e5e5;--cds-background-inverse-hover: #4c4c4c;--cds-link-primary-hover: #0043ce;--cds-button-danger-hover: #b81921;--cds-button-primary-hover: #0353e9;--cds-button-secondary-hover: #4c4c4c;--cds-button-tertiary-hover: #0353e9;--cds-background-selected: #e0e0e0;--cds-background-selected-hover: #cacaca;--cds-layer-selected: #e0e0e0;--cds-layer-selected-hover: #cacaca;--cds-layer-selected-inverse: #161616;--cds-border-subtle-selected: #c6c6c6;--cds-border-disabled: #ffffff;--cds-text-disabled: #c6c6c6;--cds-button-disabled: #c6c6c6;--cds-icon-disabled: #c6c6c6;--cds-text-on-color-disabled: #8d8d8d;--cds-icon-on-color-disabled: #8d8d8d;--cds-layer-selected-disabled: #8d8d8d;--cds-skeleton-background: #e5e5e5;--cds-skeleton-element: #c6c6c6;--cds-brand-01: #0f62fe;--cds-brand-02: #393939;--cds-brand-03: #0f62fe;--cds-active-01: #c6c6c6;--cds-hover-field: #e5e5e5;--cds-danger: #da1e28;--cds-caption-01-font-size: .75rem;--cds-caption-01-font-weight: 400;--cds-caption-01-line-height: 1.33333;--cds-caption-01-letter-spacing: .32px;--cds-caption-02-font-size: .875rem;--cds-caption-02-font-weight: 400;--cds-caption-02-line-height: 1.28572;--cds-caption-02-letter-spacing: .32px;--cds-label-01-font-size: .75rem;--cds-label-01-font-weight: 400;--cds-label-01-line-height: 1.33333;--cds-label-01-letter-spacing: .32px;--cds-label-02-font-size: .875rem;--cds-label-02-font-weight: 400;--cds-label-02-line-height: 1.28572;--cds-label-02-letter-spacing: .16px;--cds-helper-text-01-font-size: .75rem;--cds-helper-text-01-line-height: 1.33333;--cds-helper-text-01-letter-spacing: .32px;--cds-helper-text-02-font-size: .875rem;--cds-helper-text-02-line-height: 1.28572;--cds-helper-text-02-letter-spacing: .16px;--cds-body-short-01-font-size: .875rem;--cds-body-short-01-font-weight: 400;--cds-body-short-01-line-height: 1.28572;--cds-body-short-01-letter-spacing: .16px;--cds-body-long-01-font-size: .875rem;--cds-body-long-01-font-weight: 400;--cds-body-long-01-line-height: 1.42857;--cds-body-long-01-letter-spacing: .16px;--cds-body-short-02-font-size: 1rem;--cds-body-short-02-font-weight: 400;--cds-body-short-02-line-height: 1.375;--cds-body-short-02-letter-spacing: 0;--cds-body-long-02-font-size: 1rem;--cds-body-long-02-font-weight: 400;--cds-body-long-02-line-height: 1.5;--cds-body-long-02-letter-spacing: 0;--cds-code-01-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-01-font-size: .75rem;--cds-code-01-font-weight: 400;--cds-code-01-line-height: 1.33333;--cds-code-01-letter-spacing: .32px;--cds-code-02-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-02-font-size: .875rem;--cds-code-02-font-weight: 400;--cds-code-02-line-height: 1.42857;--cds-code-02-letter-spacing: .32px;--cds-heading-01-font-size: .875rem;--cds-heading-01-font-weight: 600;--cds-heading-01-line-height: 1.42857;--cds-heading-01-letter-spacing: .16px;--cds-productive-heading-01-font-size: .875rem;--cds-productive-heading-01-font-weight: 600;--cds-productive-heading-01-line-height: 1.28572;--cds-productive-heading-01-letter-spacing: .16px;--cds-heading-02-font-size: 1rem;--cds-heading-02-font-weight: 600;--cds-heading-02-line-height: 1.5;--cds-heading-02-letter-spacing: 0;--cds-productive-heading-02-font-size: 1rem;--cds-productive-heading-02-font-weight: 600;--cds-productive-heading-02-line-height: 1.375;--cds-productive-heading-02-letter-spacing: 0;--cds-productive-heading-03-font-size: 1.25rem;--cds-productive-heading-03-font-weight: 400;--cds-productive-heading-03-line-height: 1.4;--cds-productive-heading-03-letter-spacing: 0;--cds-productive-heading-04-font-size: 1.75rem;--cds-productive-heading-04-font-weight: 400;--cds-productive-heading-04-line-height: 1.28572;--cds-productive-heading-04-letter-spacing: 0;--cds-productive-heading-05-font-size: 2rem;--cds-productive-heading-05-font-weight: 400;--cds-productive-heading-05-line-height: 1.25;--cds-productive-heading-05-letter-spacing: 0;--cds-productive-heading-06-font-size: 2.625rem;--cds-productive-heading-06-font-weight: 300;--cds-productive-heading-06-line-height: 1.199;--cds-productive-heading-06-letter-spacing: 0;--cds-productive-heading-07-font-size: 3.375rem;--cds-productive-heading-07-font-weight: 300;--cds-productive-heading-07-line-height: 1.199;--cds-productive-heading-07-letter-spacing: 0;--cds-expressive-heading-01-font-size: .875rem;--cds-expressive-heading-01-font-weight: 600;--cds-expressive-heading-01-line-height: 1.25;--cds-expressive-heading-01-letter-spacing: .16px;--cds-expressive-heading-02-font-size: 1rem;--cds-expressive-heading-02-font-weight: 600;--cds-expressive-heading-02-line-height: 1.5;--cds-expressive-heading-02-letter-spacing: 0;--cds-expressive-heading-03-font-size: 1.25rem;--cds-expressive-heading-03-font-weight: 400;--cds-expressive-heading-03-line-height: 1.4;--cds-expressive-heading-03-letter-spacing: 0;--cds-expressive-heading-04-font-size: 1.75rem;--cds-expressive-heading-04-font-weight: 400;--cds-expressive-heading-04-line-height: 1.28572;--cds-expressive-heading-04-letter-spacing: 0;--cds-expressive-heading-05-font-size: 2rem;--cds-expressive-heading-05-font-weight: 400;--cds-expressive-heading-05-line-height: 1.25;--cds-expressive-heading-05-letter-spacing: 0;--cds-expressive-heading-06-font-size: 2rem;--cds-expressive-heading-06-font-weight: 600;--cds-expressive-heading-06-line-height: 1.25;--cds-expressive-heading-06-letter-spacing: 0;--cds-expressive-paragraph-01-font-size: 1.5rem;--cds-expressive-paragraph-01-font-weight: 300;--cds-expressive-paragraph-01-line-height: 1.334;--cds-expressive-paragraph-01-letter-spacing: 0;--cds-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-01-font-size: 1.25rem;--cds-quotation-01-font-weight: 400;--cds-quotation-01-line-height: 1.3;--cds-quotation-01-letter-spacing: 0;--cds-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-02-font-size: 2rem;--cds-quotation-02-font-weight: 300;--cds-quotation-02-line-height: 1.25;--cds-quotation-02-letter-spacing: 0;--cds-display-01-font-size: 2.625rem;--cds-display-01-font-weight: 300;--cds-display-01-line-height: 1.19;--cds-display-01-letter-spacing: 0;--cds-display-02-font-size: 2.625rem;--cds-display-02-font-weight: 600;--cds-display-02-line-height: 1.19;--cds-display-02-letter-spacing: 0;--cds-display-03-font-size: 2.625rem;--cds-display-03-font-weight: 300;--cds-display-03-line-height: 1.19;--cds-display-03-letter-spacing: 0;--cds-display-04-font-size: 2.625rem;--cds-display-04-font-weight: 600;--cds-display-04-line-height: 1.19;--cds-display-04-letter-spacing: 0;--cds-legal-01-font-size: .75rem;--cds-legal-01-font-weight: 400;--cds-legal-01-line-height: 1.33333;--cds-legal-01-letter-spacing: .32px;--cds-legal-02-font-size: .875rem;--cds-legal-02-font-weight: 400;--cds-legal-02-line-height: 1.28572;--cds-legal-02-letter-spacing: .16px;--cds-body-compact-01-font-size: .875rem;--cds-body-compact-01-font-weight: 400;--cds-body-compact-01-line-height: 1.28572;--cds-body-compact-01-letter-spacing: .16px;--cds-body-compact-02-font-size: 1rem;--cds-body-compact-02-font-weight: 400;--cds-body-compact-02-line-height: 1.375;--cds-body-compact-02-letter-spacing: 0;--cds-body-01-font-size: .875rem;--cds-body-01-font-weight: 400;--cds-body-01-line-height: 1.42857;--cds-body-01-letter-spacing: .16px;--cds-body-02-font-size: 1rem;--cds-body-02-font-weight: 400;--cds-body-02-line-height: 1.5;--cds-body-02-letter-spacing: 0;--cds-heading-compact-01-font-size: .875rem;--cds-heading-compact-01-font-weight: 600;--cds-heading-compact-01-line-height: 1.28572;--cds-heading-compact-01-letter-spacing: .16px;--cds-heading-compact-02-font-size: 1rem;--cds-heading-compact-02-font-weight: 600;--cds-heading-compact-02-line-height: 1.375;--cds-heading-compact-02-letter-spacing: 0;--cds-heading-03-font-size: 1.25rem;--cds-heading-03-font-weight: 400;--cds-heading-03-line-height: 1.4;--cds-heading-03-letter-spacing: 0;--cds-heading-04-font-size: 1.75rem;--cds-heading-04-font-weight: 400;--cds-heading-04-line-height: 1.28572;--cds-heading-04-letter-spacing: 0;--cds-heading-05-font-size: 2rem;--cds-heading-05-font-weight: 400;--cds-heading-05-line-height: 1.25;--cds-heading-05-letter-spacing: 0;--cds-heading-06-font-size: 2.625rem;--cds-heading-06-font-weight: 300;--cds-heading-06-line-height: 1.199;--cds-heading-06-letter-spacing: 0;--cds-heading-07-font-size: 3.375rem;--cds-heading-07-font-weight: 300;--cds-heading-07-line-height: 1.199;--cds-heading-07-letter-spacing: 0;--cds-fluid-heading-03-font-size: 1.25rem;--cds-fluid-heading-03-font-weight: 400;--cds-fluid-heading-03-line-height: 1.4;--cds-fluid-heading-03-letter-spacing: 0;--cds-fluid-heading-04-font-size: 1.75rem;--cds-fluid-heading-04-font-weight: 400;--cds-fluid-heading-04-line-height: 1.28572;--cds-fluid-heading-04-letter-spacing: 0;--cds-fluid-heading-05-font-size: 2rem;--cds-fluid-heading-05-font-weight: 400;--cds-fluid-heading-05-line-height: 1.25;--cds-fluid-heading-05-letter-spacing: 0;--cds-fluid-heading-06-font-size: 2rem;--cds-fluid-heading-06-font-weight: 600;--cds-fluid-heading-06-line-height: 1.25;--cds-fluid-heading-06-letter-spacing: 0;--cds-fluid-paragraph-01-font-size: 1.5rem;--cds-fluid-paragraph-01-font-weight: 300;--cds-fluid-paragraph-01-line-height: 1.334;--cds-fluid-paragraph-01-letter-spacing: 0;--cds-fluid-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-01-font-size: 1.25rem;--cds-fluid-quotation-01-font-weight: 400;--cds-fluid-quotation-01-line-height: 1.3;--cds-fluid-quotation-01-letter-spacing: 0;--cds-fluid-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-02-font-size: 2rem;--cds-fluid-quotation-02-font-weight: 300;--cds-fluid-quotation-02-line-height: 1.25;--cds-fluid-quotation-02-letter-spacing: 0;--cds-fluid-display-01-font-size: 2.625rem;--cds-fluid-display-01-font-weight: 300;--cds-fluid-display-01-line-height: 1.19;--cds-fluid-display-01-letter-spacing: 0;--cds-fluid-display-02-font-size: 2.625rem;--cds-fluid-display-02-font-weight: 600;--cds-fluid-display-02-line-height: 1.19;--cds-fluid-display-02-letter-spacing: 0;--cds-fluid-display-03-font-size: 2.625rem;--cds-fluid-display-03-font-weight: 300;--cds-fluid-display-03-line-height: 1.19;--cds-fluid-display-03-letter-spacing: 0;--cds-fluid-display-04-font-size: 2.625rem;--cds-fluid-display-04-font-weight: 600;--cds-fluid-display-04-line-height: 1.19;--cds-fluid-display-04-letter-spacing: 0;--cds-spacing-01: .125rem;--cds-spacing-02: .25rem;--cds-spacing-03: .5rem;--cds-spacing-04: .75rem;--cds-spacing-05: 1rem;--cds-spacing-06: 1.5rem;--cds-spacing-07: 2rem;--cds-spacing-08: 2.5rem;--cds-spacing-09: 3rem;--cds-spacing-10: 4rem;--cds-spacing-11: 5rem;--cds-spacing-12: 6rem;--cds-spacing-13: 10rem;--cds-fluid-spacing-01: 0;--cds-fluid-spacing-02: 2vw;--cds-fluid-spacing-03: 5vw;--cds-fluid-spacing-04: 10vw;--cds-layout-01: 1rem;--cds-layout-02: 1.5rem;--cds-layout-03: 2rem;--cds-layout-04: 3rem;--cds-layout-05: 4rem;--cds-layout-06: 6rem;--cds-layout-07: 10rem;--cds-container-01: 1.5rem;--cds-container-02: 2rem;--cds-container-03: 2.5rem;--cds-container-04: 3rem;--cds-container-05: 4rem;--cds-size-xsmall: 1.5rem;--cds-size-small: 2rem;--cds-size-medium: 2.5rem;--cds-size-large: 3rem;--cds-size-xlarge: 4rem;--cds-size-2XLarge: 5rem;--cds-icon-size-01: 1rem;--cds-icon-size-02: 1.25rem;--cds-tag-background-red: #ffd7d9;--cds-tag-color-red: #750e13;--cds-tag-hover-red: #ffb3b8;--cds-tag-background-magenta: #ffd6e8;--cds-tag-color-magenta: #740937;--cds-tag-hover-magenta: #ffafd2;--cds-tag-background-purple: #e8daff;--cds-tag-color-purple: #491d8b;--cds-tag-hover-purple: #d4bbff;--cds-tag-background-blue: #d0e2ff;--cds-tag-color-blue: #002d9c;--cds-tag-hover-blue: #a6c8ff;--cds-tag-background-cyan: #bae6ff;--cds-tag-color-cyan: #003a6d;--cds-tag-hover-cyan: #82cfff;--cds-tag-background-teal: #9ef0f0;--cds-tag-color-teal: #004144;--cds-tag-hover-teal: #3ddbd9;--cds-tag-background-green: #a7f0ba;--cds-tag-color-green: #044317;--cds-tag-hover-green: #6fdc8c;--cds-tag-background-gray: #e0e0e0;--cds-tag-color-gray: #393939;--cds-tag-hover-gray: #c6c6c6;--cds-tag-background-cool-gray: #dde1e6;--cds-tag-color-cool-gray: #343a3f;--cds-tag-hover-cool-gray: #c1c7cd;--cds-tag-background-warm-gray: #e5e0df;--cds-tag-color-warm-gray: #3c3838;--cds-tag-hover-warm-gray: #cac5c4;--cds-notification-background-error: #fff1f1;--cds-notification-background-success: #defbe6;--cds-notification-background-info: #edf5ff;--cds-notification-background-warning: #fdf6dd;--cds-notification-action-hover: #ffffff}:root[theme=g80]{--cds-interactive-01: #0f62fe;--cds-interactive-02: #6f6f6f;--cds-interactive-03: #ffffff;--cds-interactive-04: #78a9ff;--cds-ui-background: #393939;--cds-ui-01: #525252;--cds-ui-02: #525252;--cds-ui-03: #6f6f6f;--cds-ui-04: #a8a8a8;--cds-ui-05: #f4f4f4;--cds-text-01: #f4f4f4;--cds-text-02: #c6c6c6;--cds-text-03: #6f6f6f;--cds-text-04: #ffffff;--cds-text-05: #a8a8a8;--cds-text-error: #ffb3b8;--cds-icon-01: #f4f4f4;--cds-icon-02: #c6c6c6;--cds-icon-03: #ffffff;--cds-link-01: #78a9ff;--cds-link-02: #a6c8ff;--cds-inverse-link: #0f62fe;--cds-field-01: #525252;--cds-field-02: #6f6f6f;--cds-inverse-01: #161616;--cds-inverse-02: #f4f4f4;--cds-support-01: #ff8389;--cds-support-02: #42be65;--cds-support-03: #f1c21b;--cds-support-04: #4589ff;--cds-inverse-support-01: #da1e28;--cds-inverse-support-02: #24a148;--cds-inverse-support-03: #f1c21b;--cds-inverse-support-04: #0f62fe;--cds-overlay-01: rgba(0, 0, 0, .65);--cds-danger-01: #da1e28;--cds-danger-02: #ff8389;--cds-focus: #ffffff;--cds-inverse-focus-ui: #0f62fe;--cds-hover-primary: #0151e4;--cds-active-primary: #002d9c;--cds-hover-primary-text: #a6c8ff;--cds-hover-secondary: #5e5e5e;--cds-active-secondary: #525252;--cds-hover-tertiary: #ffffff;--cds-active-tertiary: #c6c6c6;--cds-hover-ui: #474747;--cds-hover-light-ui: #5e5e5e;--cds-hover-selected-ui: #616161;--cds-active-ui: #525252;--cds-active-light-ui: #8d8d8d;--cds-selected-ui: #525252;--cds-selected-light-ui: #8d8d8d;--cds-inverse-hover-ui: #e8e8e8;--cds-hover-danger: #b81921;--cds-active-danger: #750e13;--cds-hover-row: #636363;--cds-visited-link: #be95ff;--cds-disabled-01: #525252;--cds-disabled-02: #8d8d8d;--cds-disabled-03: #c6c6c6;--cds-highlight: #0043ce;--cds-decorative-01: #6f6f6f;--cds-button-separator: #161616;--cds-skeleton-01: #474747;--cds-skeleton-02: #6f6f6f;--cds-background: #393939;--cds-layer: #525252;--cds-layer-accent: #6f6f6f;--cds-layer-accent-hover: #5e5e5e;--cds-layer-accent-active: #525252;--cds-field: #525252;--cds-background-inverse: #f4f4f4;--cds-background-brand: #0f62fe;--cds-interactive: #78a9ff;--cds-border-subtle: #6f6f6f;--cds-border-strong: #a8a8a8;--cds-border-inverse: #f4f4f4;--cds-border-interactive: #4589ff;--cds-text-primary: #f4f4f4;--cds-text-secondary: #c6c6c6;--cds-text-placeholder: #6f6f6f;--cds-text-helper: #a8a8a8;--cds-text-on-color: #ffffff;--cds-text-inverse: #161616;--cds-link-primary: #78a9ff;--cds-link-secondary: #a6c8ff;--cds-link-visited: #be95ff;--cds-link-inverse: #0f62fe;--cds-icon-primary: #f4f4f4;--cds-icon-secondary: #c6c6c6;--cds-icon-on-color: #ffffff;--cds-icon-inverse: #161616;--cds-support-error: #ff8389;--cds-support-success: #42be65;--cds-support-warning: #f1c21b;--cds-support-info: #4589ff;--cds-support-error-inverse: #da1e28;--cds-support-success-inverse: #24a148;--cds-support-warning-inverse: #f1c21b;--cds-support-info-inverse: #0f62fe;--cds-overlay: rgba(0, 0, 0, .65);--cds-toggle-off: #8d8d8d;--cds-shadow: rgba(0, 0, 0, .8);--cds-button-primary: #0f62fe;--cds-button-secondary: #6f6f6f;--cds-button-tertiary: #ffffff;--cds-button-danger-primary: #da1e28;--cds-button-danger-secondary: #ff8389;--cds-background-active: #525252;--cds-layer-active: #6f6f6f;--cds-button-danger-active: #750e13;--cds-button-primary-active: #002d9c;--cds-button-secondary-active: #525252;--cds-button-tertiary-active: #c6c6c6;--cds-focus-inset: #161616;--cds-focus-inverse: #0f62fe;--cds-background-hover: #474747;--cds-layer-hover: #636363;--cds-field-hover: #636363;--cds-background-inverse-hover: #e8e8e8;--cds-link-primary-hover: #a6c8ff;--cds-button-danger-hover: #b81921;--cds-button-primary-hover: #0151e4;--cds-button-secondary-hover: #5e5e5e;--cds-button-tertiary-hover: #ffffff;--cds-background-selected: #525252;--cds-background-selected-hover: #636363;--cds-layer-selected: #6f6f6f;--cds-layer-selected-hover: #616161;--cds-layer-selected-inverse: #f4f4f4;--cds-border-subtle-selected: #8d8d8d;--cds-border-disabled: #525252;--cds-text-disabled: #8d8d8d;--cds-button-disabled: #8d8d8d;--cds-icon-disabled: #8d8d8d;--cds-text-on-color-disabled: #c6c6c6;--cds-icon-on-color-disabled: #c6c6c6;--cds-layer-selected-disabled: #c6c6c6;--cds-skeleton-background: #474747;--cds-skeleton-element: #6f6f6f;--cds-brand-01: #0f62fe;--cds-brand-02: #6f6f6f;--cds-brand-03: #ffffff;--cds-active-01: #525252;--cds-hover-field: #474747;--cds-danger: #da1e28;--cds-caption-01-font-size: .75rem;--cds-caption-01-font-weight: 400;--cds-caption-01-line-height: 1.33333;--cds-caption-01-letter-spacing: .32px;--cds-caption-02-font-size: .875rem;--cds-caption-02-font-weight: 400;--cds-caption-02-line-height: 1.28572;--cds-caption-02-letter-spacing: .32px;--cds-label-01-font-size: .75rem;--cds-label-01-font-weight: 400;--cds-label-01-line-height: 1.33333;--cds-label-01-letter-spacing: .32px;--cds-label-02-font-size: .875rem;--cds-label-02-font-weight: 400;--cds-label-02-line-height: 1.28572;--cds-label-02-letter-spacing: .16px;--cds-helper-text-01-font-size: .75rem;--cds-helper-text-01-line-height: 1.33333;--cds-helper-text-01-letter-spacing: .32px;--cds-helper-text-02-font-size: .875rem;--cds-helper-text-02-line-height: 1.28572;--cds-helper-text-02-letter-spacing: .16px;--cds-body-short-01-font-size: .875rem;--cds-body-short-01-font-weight: 400;--cds-body-short-01-line-height: 1.28572;--cds-body-short-01-letter-spacing: .16px;--cds-body-long-01-font-size: .875rem;--cds-body-long-01-font-weight: 400;--cds-body-long-01-line-height: 1.42857;--cds-body-long-01-letter-spacing: .16px;--cds-body-short-02-font-size: 1rem;--cds-body-short-02-font-weight: 400;--cds-body-short-02-line-height: 1.375;--cds-body-short-02-letter-spacing: 0;--cds-body-long-02-font-size: 1rem;--cds-body-long-02-font-weight: 400;--cds-body-long-02-line-height: 1.5;--cds-body-long-02-letter-spacing: 0;--cds-code-01-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-01-font-size: .75rem;--cds-code-01-font-weight: 400;--cds-code-01-line-height: 1.33333;--cds-code-01-letter-spacing: .32px;--cds-code-02-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-02-font-size: .875rem;--cds-code-02-font-weight: 400;--cds-code-02-line-height: 1.42857;--cds-code-02-letter-spacing: .32px;--cds-heading-01-font-size: .875rem;--cds-heading-01-font-weight: 600;--cds-heading-01-line-height: 1.42857;--cds-heading-01-letter-spacing: .16px;--cds-productive-heading-01-font-size: .875rem;--cds-productive-heading-01-font-weight: 600;--cds-productive-heading-01-line-height: 1.28572;--cds-productive-heading-01-letter-spacing: .16px;--cds-heading-02-font-size: 1rem;--cds-heading-02-font-weight: 600;--cds-heading-02-line-height: 1.5;--cds-heading-02-letter-spacing: 0;--cds-productive-heading-02-font-size: 1rem;--cds-productive-heading-02-font-weight: 600;--cds-productive-heading-02-line-height: 1.375;--cds-productive-heading-02-letter-spacing: 0;--cds-productive-heading-03-font-size: 1.25rem;--cds-productive-heading-03-font-weight: 400;--cds-productive-heading-03-line-height: 1.4;--cds-productive-heading-03-letter-spacing: 0;--cds-productive-heading-04-font-size: 1.75rem;--cds-productive-heading-04-font-weight: 400;--cds-productive-heading-04-line-height: 1.28572;--cds-productive-heading-04-letter-spacing: 0;--cds-productive-heading-05-font-size: 2rem;--cds-productive-heading-05-font-weight: 400;--cds-productive-heading-05-line-height: 1.25;--cds-productive-heading-05-letter-spacing: 0;--cds-productive-heading-06-font-size: 2.625rem;--cds-productive-heading-06-font-weight: 300;--cds-productive-heading-06-line-height: 1.199;--cds-productive-heading-06-letter-spacing: 0;--cds-productive-heading-07-font-size: 3.375rem;--cds-productive-heading-07-font-weight: 300;--cds-productive-heading-07-line-height: 1.199;--cds-productive-heading-07-letter-spacing: 0;--cds-expressive-heading-01-font-size: .875rem;--cds-expressive-heading-01-font-weight: 600;--cds-expressive-heading-01-line-height: 1.25;--cds-expressive-heading-01-letter-spacing: .16px;--cds-expressive-heading-02-font-size: 1rem;--cds-expressive-heading-02-font-weight: 600;--cds-expressive-heading-02-line-height: 1.5;--cds-expressive-heading-02-letter-spacing: 0;--cds-expressive-heading-03-font-size: 1.25rem;--cds-expressive-heading-03-font-weight: 400;--cds-expressive-heading-03-line-height: 1.4;--cds-expressive-heading-03-letter-spacing: 0;--cds-expressive-heading-04-font-size: 1.75rem;--cds-expressive-heading-04-font-weight: 400;--cds-expressive-heading-04-line-height: 1.28572;--cds-expressive-heading-04-letter-spacing: 0;--cds-expressive-heading-05-font-size: 2rem;--cds-expressive-heading-05-font-weight: 400;--cds-expressive-heading-05-line-height: 1.25;--cds-expressive-heading-05-letter-spacing: 0;--cds-expressive-heading-06-font-size: 2rem;--cds-expressive-heading-06-font-weight: 600;--cds-expressive-heading-06-line-height: 1.25;--cds-expressive-heading-06-letter-spacing: 0;--cds-expressive-paragraph-01-font-size: 1.5rem;--cds-expressive-paragraph-01-font-weight: 300;--cds-expressive-paragraph-01-line-height: 1.334;--cds-expressive-paragraph-01-letter-spacing: 0;--cds-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-01-font-size: 1.25rem;--cds-quotation-01-font-weight: 400;--cds-quotation-01-line-height: 1.3;--cds-quotation-01-letter-spacing: 0;--cds-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-02-font-size: 2rem;--cds-quotation-02-font-weight: 300;--cds-quotation-02-line-height: 1.25;--cds-quotation-02-letter-spacing: 0;--cds-display-01-font-size: 2.625rem;--cds-display-01-font-weight: 300;--cds-display-01-line-height: 1.19;--cds-display-01-letter-spacing: 0;--cds-display-02-font-size: 2.625rem;--cds-display-02-font-weight: 600;--cds-display-02-line-height: 1.19;--cds-display-02-letter-spacing: 0;--cds-display-03-font-size: 2.625rem;--cds-display-03-font-weight: 300;--cds-display-03-line-height: 1.19;--cds-display-03-letter-spacing: 0;--cds-display-04-font-size: 2.625rem;--cds-display-04-font-weight: 600;--cds-display-04-line-height: 1.19;--cds-display-04-letter-spacing: 0;--cds-legal-01-font-size: .75rem;--cds-legal-01-font-weight: 400;--cds-legal-01-line-height: 1.33333;--cds-legal-01-letter-spacing: .32px;--cds-legal-02-font-size: .875rem;--cds-legal-02-font-weight: 400;--cds-legal-02-line-height: 1.28572;--cds-legal-02-letter-spacing: .16px;--cds-body-compact-01-font-size: .875rem;--cds-body-compact-01-font-weight: 400;--cds-body-compact-01-line-height: 1.28572;--cds-body-compact-01-letter-spacing: .16px;--cds-body-compact-02-font-size: 1rem;--cds-body-compact-02-font-weight: 400;--cds-body-compact-02-line-height: 1.375;--cds-body-compact-02-letter-spacing: 0;--cds-body-01-font-size: .875rem;--cds-body-01-font-weight: 400;--cds-body-01-line-height: 1.42857;--cds-body-01-letter-spacing: .16px;--cds-body-02-font-size: 1rem;--cds-body-02-font-weight: 400;--cds-body-02-line-height: 1.5;--cds-body-02-letter-spacing: 0;--cds-heading-compact-01-font-size: .875rem;--cds-heading-compact-01-font-weight: 600;--cds-heading-compact-01-line-height: 1.28572;--cds-heading-compact-01-letter-spacing: .16px;--cds-heading-compact-02-font-size: 1rem;--cds-heading-compact-02-font-weight: 600;--cds-heading-compact-02-line-height: 1.375;--cds-heading-compact-02-letter-spacing: 0;--cds-heading-03-font-size: 1.25rem;--cds-heading-03-font-weight: 400;--cds-heading-03-line-height: 1.4;--cds-heading-03-letter-spacing: 0;--cds-heading-04-font-size: 1.75rem;--cds-heading-04-font-weight: 400;--cds-heading-04-line-height: 1.28572;--cds-heading-04-letter-spacing: 0;--cds-heading-05-font-size: 2rem;--cds-heading-05-font-weight: 400;--cds-heading-05-line-height: 1.25;--cds-heading-05-letter-spacing: 0;--cds-heading-06-font-size: 2.625rem;--cds-heading-06-font-weight: 300;--cds-heading-06-line-height: 1.199;--cds-heading-06-letter-spacing: 0;--cds-heading-07-font-size: 3.375rem;--cds-heading-07-font-weight: 300;--cds-heading-07-line-height: 1.199;--cds-heading-07-letter-spacing: 0;--cds-fluid-heading-03-font-size: 1.25rem;--cds-fluid-heading-03-font-weight: 400;--cds-fluid-heading-03-line-height: 1.4;--cds-fluid-heading-03-letter-spacing: 0;--cds-fluid-heading-04-font-size: 1.75rem;--cds-fluid-heading-04-font-weight: 400;--cds-fluid-heading-04-line-height: 1.28572;--cds-fluid-heading-04-letter-spacing: 0;--cds-fluid-heading-05-font-size: 2rem;--cds-fluid-heading-05-font-weight: 400;--cds-fluid-heading-05-line-height: 1.25;--cds-fluid-heading-05-letter-spacing: 0;--cds-fluid-heading-06-font-size: 2rem;--cds-fluid-heading-06-font-weight: 600;--cds-fluid-heading-06-line-height: 1.25;--cds-fluid-heading-06-letter-spacing: 0;--cds-fluid-paragraph-01-font-size: 1.5rem;--cds-fluid-paragraph-01-font-weight: 300;--cds-fluid-paragraph-01-line-height: 1.334;--cds-fluid-paragraph-01-letter-spacing: 0;--cds-fluid-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-01-font-size: 1.25rem;--cds-fluid-quotation-01-font-weight: 400;--cds-fluid-quotation-01-line-height: 1.3;--cds-fluid-quotation-01-letter-spacing: 0;--cds-fluid-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-02-font-size: 2rem;--cds-fluid-quotation-02-font-weight: 300;--cds-fluid-quotation-02-line-height: 1.25;--cds-fluid-quotation-02-letter-spacing: 0;--cds-fluid-display-01-font-size: 2.625rem;--cds-fluid-display-01-font-weight: 300;--cds-fluid-display-01-line-height: 1.19;--cds-fluid-display-01-letter-spacing: 0;--cds-fluid-display-02-font-size: 2.625rem;--cds-fluid-display-02-font-weight: 600;--cds-fluid-display-02-line-height: 1.19;--cds-fluid-display-02-letter-spacing: 0;--cds-fluid-display-03-font-size: 2.625rem;--cds-fluid-display-03-font-weight: 300;--cds-fluid-display-03-line-height: 1.19;--cds-fluid-display-03-letter-spacing: 0;--cds-fluid-display-04-font-size: 2.625rem;--cds-fluid-display-04-font-weight: 600;--cds-fluid-display-04-line-height: 1.19;--cds-fluid-display-04-letter-spacing: 0;--cds-spacing-01: .125rem;--cds-spacing-02: .25rem;--cds-spacing-03: .5rem;--cds-spacing-04: .75rem;--cds-spacing-05: 1rem;--cds-spacing-06: 1.5rem;--cds-spacing-07: 2rem;--cds-spacing-08: 2.5rem;--cds-spacing-09: 3rem;--cds-spacing-10: 4rem;--cds-spacing-11: 5rem;--cds-spacing-12: 6rem;--cds-spacing-13: 10rem;--cds-fluid-spacing-01: 0;--cds-fluid-spacing-02: 2vw;--cds-fluid-spacing-03: 5vw;--cds-fluid-spacing-04: 10vw;--cds-layout-01: 1rem;--cds-layout-02: 1.5rem;--cds-layout-03: 2rem;--cds-layout-04: 3rem;--cds-layout-05: 4rem;--cds-layout-06: 6rem;--cds-layout-07: 10rem;--cds-container-01: 1.5rem;--cds-container-02: 2rem;--cds-container-03: 2.5rem;--cds-container-04: 3rem;--cds-container-05: 4rem;--cds-size-xsmall: 1.5rem;--cds-size-small: 2rem;--cds-size-medium: 2.5rem;--cds-size-large: 3rem;--cds-size-xlarge: 4rem;--cds-size-2XLarge: 5rem;--cds-icon-size-01: 1rem;--cds-icon-size-02: 1.25rem;--cds-tag-background-red: #ffd7d9;--cds-tag-color-red: #750e13;--cds-tag-hover-red: #ffb3b8;--cds-tag-background-magenta: #ffd6e8;--cds-tag-color-magenta: #740937;--cds-tag-hover-magenta: #ffafd2;--cds-tag-background-purple: #e8daff;--cds-tag-color-purple: #491d8b;--cds-tag-hover-purple: #d4bbff;--cds-tag-background-blue: #d0e2ff;--cds-tag-color-blue: #002d9c;--cds-tag-hover-blue: #a6c8ff;--cds-tag-background-cyan: #bae6ff;--cds-tag-color-cyan: #003a6d;--cds-tag-hover-cyan: #82cfff;--cds-tag-background-teal: #9ef0f0;--cds-tag-color-teal: #004144;--cds-tag-hover-teal: #3ddbd9;--cds-tag-background-green: #a7f0ba;--cds-tag-color-green: #044317;--cds-tag-hover-green: #6fdc8c;--cds-tag-background-gray: #e0e0e0;--cds-tag-color-gray: #393939;--cds-tag-hover-gray: #c6c6c6;--cds-tag-background-cool-gray: #dde1e6;--cds-tag-color-cool-gray: #343a3f;--cds-tag-hover-cool-gray: #c1c7cd;--cds-tag-background-warm-gray: #e5e0df;--cds-tag-color-warm-gray: #3c3838;--cds-tag-hover-warm-gray: #cac5c4;--cds-notification-background-error: var(--cds-layer, #f4f4f4);--cds-notification-background-success: var(--cds-layer, #f4f4f4);--cds-notification-background-info: var(--cds-layer, #f4f4f4);--cds-notification-background-warning: var(--cds-layer, #f4f4f4);--cds-notification-action-hover: var(--cds-layer-hover, #e5e5e5)}:root[theme=g90]{--cds-interactive-01: #0f62fe;--cds-interactive-02: #6f6f6f;--cds-interactive-03: #ffffff;--cds-interactive-04: #4589ff;--cds-ui-background: #262626;--cds-ui-01: #393939;--cds-ui-02: #525252;--cds-ui-03: #525252;--cds-ui-04: #8d8d8d;--cds-ui-05: #f4f4f4;--cds-text-01: #f4f4f4;--cds-text-02: #c6c6c6;--cds-text-03: #6f6f6f;--cds-text-04: #ffffff;--cds-text-05: #8d8d8d;--cds-text-error: #ffb3b8;--cds-icon-01: #f4f4f4;--cds-icon-02: #c6c6c6;--cds-icon-03: #ffffff;--cds-link-01: #78a9ff;--cds-link-02: #a6c8ff;--cds-inverse-link: #0f62fe;--cds-field-01: #393939;--cds-field-02: #525252;--cds-inverse-01: #161616;--cds-inverse-02: #f4f4f4;--cds-support-01: #ff8389;--cds-support-02: #42be65;--cds-support-03: #f1c21b;--cds-support-04: #4589ff;--cds-inverse-support-01: #da1e28;--cds-inverse-support-02: #24a148;--cds-inverse-support-03: #f1c21b;--cds-inverse-support-04: #0f62fe;--cds-overlay-01: rgba(0, 0, 0, .65);--cds-danger-01: #da1e28;--cds-danger-02: #ff8389;--cds-focus: #ffffff;--cds-inverse-focus-ui: #0f62fe;--cds-hover-primary: #0353e9;--cds-active-primary: #002d9c;--cds-hover-primary-text: #a6c8ff;--cds-hover-secondary: #606060;--cds-active-secondary: #393939;--cds-hover-tertiary: #f4f4f4;--cds-active-tertiary: #c6c6c6;--cds-hover-ui: #4c4c4c;--cds-hover-light-ui: #656565;--cds-hover-selected-ui: #656565;--cds-active-ui: #6f6f6f;--cds-active-light-ui: #8d8d8d;--cds-selected-ui: #525252;--cds-selected-light-ui: #6f6f6f;--cds-inverse-hover-ui: #e5e5e5;--cds-hover-danger: #b81921;--cds-active-danger: #750e13;--cds-hover-row: #4c4c4c;--cds-visited-link: #be95ff;--cds-disabled-01: #393939;--cds-disabled-02: #6f6f6f;--cds-disabled-03: #a8a8a8;--cds-highlight: #0043ce;--cds-decorative-01: #6f6f6f;--cds-button-separator: #161616;--cds-skeleton-01: #353535;--cds-skeleton-02: #525252;--cds-background: #262626;--cds-layer: #393939;--cds-layer-accent: #525252;--cds-layer-accent-hover: #636363;--cds-layer-accent-active: #8d8d8d;--cds-field: #393939;--cds-background-inverse: #f4f4f4;--cds-background-brand: #0f62fe;--cds-interactive: #4589ff;--cds-border-subtle: #525252;--cds-border-strong: #8d8d8d;--cds-border-inverse: #f4f4f4;--cds-border-interactive: #4589ff;--cds-text-primary: #f4f4f4;--cds-text-secondary: #c6c6c6;--cds-text-placeholder: #6f6f6f;--cds-text-helper: #8d8d8d;--cds-text-on-color: #ffffff;--cds-text-inverse: #161616;--cds-link-primary: #78a9ff;--cds-link-secondary: #a6c8ff;--cds-link-visited: #be95ff;--cds-link-inverse: #0f62fe;--cds-icon-primary: #f4f4f4;--cds-icon-secondary: #c6c6c6;--cds-icon-on-color: #ffffff;--cds-icon-inverse: #161616;--cds-support-error: #ff8389;--cds-support-success: #42be65;--cds-support-warning: #f1c21b;--cds-support-info: #4589ff;--cds-support-error-inverse: #da1e28;--cds-support-success-inverse: #24a148;--cds-support-warning-inverse: #f1c21b;--cds-support-info-inverse: #0f62fe;--cds-overlay: rgba(0, 0, 0, .65);--cds-toggle-off: #8d8d8d;--cds-shadow: rgba(0, 0, 0, .8);--cds-button-primary: #0f62fe;--cds-button-secondary: #6f6f6f;--cds-button-tertiary: #ffffff;--cds-button-danger-primary: #da1e28;--cds-button-danger-secondary: #ff8389;--cds-background-active: #6f6f6f;--cds-layer-active: #6f6f6f;--cds-button-danger-active: #750e13;--cds-button-primary-active: #002d9c;--cds-button-secondary-active: #393939;--cds-button-tertiary-active: #c6c6c6;--cds-focus-inset: #161616;--cds-focus-inverse: #0f62fe;--cds-background-hover: #4c4c4c;--cds-layer-hover: #4c4c4c;--cds-field-hover: #4c4c4c;--cds-background-inverse-hover: #e5e5e5;--cds-link-primary-hover: #a6c8ff;--cds-button-danger-hover: #b81921;--cds-button-primary-hover: #0353e9;--cds-button-secondary-hover: #606060;--cds-button-tertiary-hover: #f4f4f4;--cds-background-selected: #525252;--cds-background-selected-hover: #656565;--cds-layer-selected: #525252;--cds-layer-selected-hover: #656565;--cds-layer-selected-inverse: #f4f4f4;--cds-border-subtle-selected: #6f6f6f;--cds-border-disabled: #393939;--cds-text-disabled: #6f6f6f;--cds-button-disabled: #6f6f6f;--cds-icon-disabled: #6f6f6f;--cds-text-on-color-disabled: #a8a8a8;--cds-icon-on-color-disabled: #a8a8a8;--cds-layer-selected-disabled: #a8a8a8;--cds-skeleton-background: #353535;--cds-skeleton-element: #525252;--cds-brand-01: #0f62fe;--cds-brand-02: #6f6f6f;--cds-brand-03: #ffffff;--cds-active-01: #6f6f6f;--cds-hover-field: #4c4c4c;--cds-danger: #da1e28;--cds-caption-01-font-size: .75rem;--cds-caption-01-font-weight: 400;--cds-caption-01-line-height: 1.33333;--cds-caption-01-letter-spacing: .32px;--cds-caption-02-font-size: .875rem;--cds-caption-02-font-weight: 400;--cds-caption-02-line-height: 1.28572;--cds-caption-02-letter-spacing: .32px;--cds-label-01-font-size: .75rem;--cds-label-01-font-weight: 400;--cds-label-01-line-height: 1.33333;--cds-label-01-letter-spacing: .32px;--cds-label-02-font-size: .875rem;--cds-label-02-font-weight: 400;--cds-label-02-line-height: 1.28572;--cds-label-02-letter-spacing: .16px;--cds-helper-text-01-font-size: .75rem;--cds-helper-text-01-line-height: 1.33333;--cds-helper-text-01-letter-spacing: .32px;--cds-helper-text-02-font-size: .875rem;--cds-helper-text-02-line-height: 1.28572;--cds-helper-text-02-letter-spacing: .16px;--cds-body-short-01-font-size: .875rem;--cds-body-short-01-font-weight: 400;--cds-body-short-01-line-height: 1.28572;--cds-body-short-01-letter-spacing: .16px;--cds-body-long-01-font-size: .875rem;--cds-body-long-01-font-weight: 400;--cds-body-long-01-line-height: 1.42857;--cds-body-long-01-letter-spacing: .16px;--cds-body-short-02-font-size: 1rem;--cds-body-short-02-font-weight: 400;--cds-body-short-02-line-height: 1.375;--cds-body-short-02-letter-spacing: 0;--cds-body-long-02-font-size: 1rem;--cds-body-long-02-font-weight: 400;--cds-body-long-02-line-height: 1.5;--cds-body-long-02-letter-spacing: 0;--cds-code-01-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-01-font-size: .75rem;--cds-code-01-font-weight: 400;--cds-code-01-line-height: 1.33333;--cds-code-01-letter-spacing: .32px;--cds-code-02-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-02-font-size: .875rem;--cds-code-02-font-weight: 400;--cds-code-02-line-height: 1.42857;--cds-code-02-letter-spacing: .32px;--cds-heading-01-font-size: .875rem;--cds-heading-01-font-weight: 600;--cds-heading-01-line-height: 1.42857;--cds-heading-01-letter-spacing: .16px;--cds-productive-heading-01-font-size: .875rem;--cds-productive-heading-01-font-weight: 600;--cds-productive-heading-01-line-height: 1.28572;--cds-productive-heading-01-letter-spacing: .16px;--cds-heading-02-font-size: 1rem;--cds-heading-02-font-weight: 600;--cds-heading-02-line-height: 1.5;--cds-heading-02-letter-spacing: 0;--cds-productive-heading-02-font-size: 1rem;--cds-productive-heading-02-font-weight: 600;--cds-productive-heading-02-line-height: 1.375;--cds-productive-heading-02-letter-spacing: 0;--cds-productive-heading-03-font-size: 1.25rem;--cds-productive-heading-03-font-weight: 400;--cds-productive-heading-03-line-height: 1.4;--cds-productive-heading-03-letter-spacing: 0;--cds-productive-heading-04-font-size: 1.75rem;--cds-productive-heading-04-font-weight: 400;--cds-productive-heading-04-line-height: 1.28572;--cds-productive-heading-04-letter-spacing: 0;--cds-productive-heading-05-font-size: 2rem;--cds-productive-heading-05-font-weight: 400;--cds-productive-heading-05-line-height: 1.25;--cds-productive-heading-05-letter-spacing: 0;--cds-productive-heading-06-font-size: 2.625rem;--cds-productive-heading-06-font-weight: 300;--cds-productive-heading-06-line-height: 1.199;--cds-productive-heading-06-letter-spacing: 0;--cds-productive-heading-07-font-size: 3.375rem;--cds-productive-heading-07-font-weight: 300;--cds-productive-heading-07-line-height: 1.199;--cds-productive-heading-07-letter-spacing: 0;--cds-expressive-heading-01-font-size: .875rem;--cds-expressive-heading-01-font-weight: 600;--cds-expressive-heading-01-line-height: 1.25;--cds-expressive-heading-01-letter-spacing: .16px;--cds-expressive-heading-02-font-size: 1rem;--cds-expressive-heading-02-font-weight: 600;--cds-expressive-heading-02-line-height: 1.5;--cds-expressive-heading-02-letter-spacing: 0;--cds-expressive-heading-03-font-size: 1.25rem;--cds-expressive-heading-03-font-weight: 400;--cds-expressive-heading-03-line-height: 1.4;--cds-expressive-heading-03-letter-spacing: 0;--cds-expressive-heading-04-font-size: 1.75rem;--cds-expressive-heading-04-font-weight: 400;--cds-expressive-heading-04-line-height: 1.28572;--cds-expressive-heading-04-letter-spacing: 0;--cds-expressive-heading-05-font-size: 2rem;--cds-expressive-heading-05-font-weight: 400;--cds-expressive-heading-05-line-height: 1.25;--cds-expressive-heading-05-letter-spacing: 0;--cds-expressive-heading-06-font-size: 2rem;--cds-expressive-heading-06-font-weight: 600;--cds-expressive-heading-06-line-height: 1.25;--cds-expressive-heading-06-letter-spacing: 0;--cds-expressive-paragraph-01-font-size: 1.5rem;--cds-expressive-paragraph-01-font-weight: 300;--cds-expressive-paragraph-01-line-height: 1.334;--cds-expressive-paragraph-01-letter-spacing: 0;--cds-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-01-font-size: 1.25rem;--cds-quotation-01-font-weight: 400;--cds-quotation-01-line-height: 1.3;--cds-quotation-01-letter-spacing: 0;--cds-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-02-font-size: 2rem;--cds-quotation-02-font-weight: 300;--cds-quotation-02-line-height: 1.25;--cds-quotation-02-letter-spacing: 0;--cds-display-01-font-size: 2.625rem;--cds-display-01-font-weight: 300;--cds-display-01-line-height: 1.19;--cds-display-01-letter-spacing: 0;--cds-display-02-font-size: 2.625rem;--cds-display-02-font-weight: 600;--cds-display-02-line-height: 1.19;--cds-display-02-letter-spacing: 0;--cds-display-03-font-size: 2.625rem;--cds-display-03-font-weight: 300;--cds-display-03-line-height: 1.19;--cds-display-03-letter-spacing: 0;--cds-display-04-font-size: 2.625rem;--cds-display-04-font-weight: 600;--cds-display-04-line-height: 1.19;--cds-display-04-letter-spacing: 0;--cds-legal-01-font-size: .75rem;--cds-legal-01-font-weight: 400;--cds-legal-01-line-height: 1.33333;--cds-legal-01-letter-spacing: .32px;--cds-legal-02-font-size: .875rem;--cds-legal-02-font-weight: 400;--cds-legal-02-line-height: 1.28572;--cds-legal-02-letter-spacing: .16px;--cds-body-compact-01-font-size: .875rem;--cds-body-compact-01-font-weight: 400;--cds-body-compact-01-line-height: 1.28572;--cds-body-compact-01-letter-spacing: .16px;--cds-body-compact-02-font-size: 1rem;--cds-body-compact-02-font-weight: 400;--cds-body-compact-02-line-height: 1.375;--cds-body-compact-02-letter-spacing: 0;--cds-body-01-font-size: .875rem;--cds-body-01-font-weight: 400;--cds-body-01-line-height: 1.42857;--cds-body-01-letter-spacing: .16px;--cds-body-02-font-size: 1rem;--cds-body-02-font-weight: 400;--cds-body-02-line-height: 1.5;--cds-body-02-letter-spacing: 0;--cds-heading-compact-01-font-size: .875rem;--cds-heading-compact-01-font-weight: 600;--cds-heading-compact-01-line-height: 1.28572;--cds-heading-compact-01-letter-spacing: .16px;--cds-heading-compact-02-font-size: 1rem;--cds-heading-compact-02-font-weight: 600;--cds-heading-compact-02-line-height: 1.375;--cds-heading-compact-02-letter-spacing: 0;--cds-heading-03-font-size: 1.25rem;--cds-heading-03-font-weight: 400;--cds-heading-03-line-height: 1.4;--cds-heading-03-letter-spacing: 0;--cds-heading-04-font-size: 1.75rem;--cds-heading-04-font-weight: 400;--cds-heading-04-line-height: 1.28572;--cds-heading-04-letter-spacing: 0;--cds-heading-05-font-size: 2rem;--cds-heading-05-font-weight: 400;--cds-heading-05-line-height: 1.25;--cds-heading-05-letter-spacing: 0;--cds-heading-06-font-size: 2.625rem;--cds-heading-06-font-weight: 300;--cds-heading-06-line-height: 1.199;--cds-heading-06-letter-spacing: 0;--cds-heading-07-font-size: 3.375rem;--cds-heading-07-font-weight: 300;--cds-heading-07-line-height: 1.199;--cds-heading-07-letter-spacing: 0;--cds-fluid-heading-03-font-size: 1.25rem;--cds-fluid-heading-03-font-weight: 400;--cds-fluid-heading-03-line-height: 1.4;--cds-fluid-heading-03-letter-spacing: 0;--cds-fluid-heading-04-font-size: 1.75rem;--cds-fluid-heading-04-font-weight: 400;--cds-fluid-heading-04-line-height: 1.28572;--cds-fluid-heading-04-letter-spacing: 0;--cds-fluid-heading-05-font-size: 2rem;--cds-fluid-heading-05-font-weight: 400;--cds-fluid-heading-05-line-height: 1.25;--cds-fluid-heading-05-letter-spacing: 0;--cds-fluid-heading-06-font-size: 2rem;--cds-fluid-heading-06-font-weight: 600;--cds-fluid-heading-06-line-height: 1.25;--cds-fluid-heading-06-letter-spacing: 0;--cds-fluid-paragraph-01-font-size: 1.5rem;--cds-fluid-paragraph-01-font-weight: 300;--cds-fluid-paragraph-01-line-height: 1.334;--cds-fluid-paragraph-01-letter-spacing: 0;--cds-fluid-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-01-font-size: 1.25rem;--cds-fluid-quotation-01-font-weight: 400;--cds-fluid-quotation-01-line-height: 1.3;--cds-fluid-quotation-01-letter-spacing: 0;--cds-fluid-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-02-font-size: 2rem;--cds-fluid-quotation-02-font-weight: 300;--cds-fluid-quotation-02-line-height: 1.25;--cds-fluid-quotation-02-letter-spacing: 0;--cds-fluid-display-01-font-size: 2.625rem;--cds-fluid-display-01-font-weight: 300;--cds-fluid-display-01-line-height: 1.19;--cds-fluid-display-01-letter-spacing: 0;--cds-fluid-display-02-font-size: 2.625rem;--cds-fluid-display-02-font-weight: 600;--cds-fluid-display-02-line-height: 1.19;--cds-fluid-display-02-letter-spacing: 0;--cds-fluid-display-03-font-size: 2.625rem;--cds-fluid-display-03-font-weight: 300;--cds-fluid-display-03-line-height: 1.19;--cds-fluid-display-03-letter-spacing: 0;--cds-fluid-display-04-font-size: 2.625rem;--cds-fluid-display-04-font-weight: 600;--cds-fluid-display-04-line-height: 1.19;--cds-fluid-display-04-letter-spacing: 0;--cds-spacing-01: .125rem;--cds-spacing-02: .25rem;--cds-spacing-03: .5rem;--cds-spacing-04: .75rem;--cds-spacing-05: 1rem;--cds-spacing-06: 1.5rem;--cds-spacing-07: 2rem;--cds-spacing-08: 2.5rem;--cds-spacing-09: 3rem;--cds-spacing-10: 4rem;--cds-spacing-11: 5rem;--cds-spacing-12: 6rem;--cds-spacing-13: 10rem;--cds-fluid-spacing-01: 0;--cds-fluid-spacing-02: 2vw;--cds-fluid-spacing-03: 5vw;--cds-fluid-spacing-04: 10vw;--cds-layout-01: 1rem;--cds-layout-02: 1.5rem;--cds-layout-03: 2rem;--cds-layout-04: 3rem;--cds-layout-05: 4rem;--cds-layout-06: 6rem;--cds-layout-07: 10rem;--cds-container-01: 1.5rem;--cds-container-02: 2rem;--cds-container-03: 2.5rem;--cds-container-04: 3rem;--cds-container-05: 4rem;--cds-size-xsmall: 1.5rem;--cds-size-small: 2rem;--cds-size-medium: 2.5rem;--cds-size-large: 3rem;--cds-size-xlarge: 4rem;--cds-size-2XLarge: 5rem;--cds-icon-size-01: 1rem;--cds-icon-size-02: 1.25rem;--cds-tag-background-red: #a2191f;--cds-tag-color-red: #ffd7d9;--cds-tag-hover-red: #c21e25;--cds-tag-background-magenta: #9f1853;--cds-tag-color-magenta: #ffd6e8;--cds-tag-hover-magenta: #bf1d63;--cds-tag-background-purple: #6929c4;--cds-tag-color-purple: #e8daff;--cds-tag-hover-purple: #7c3dd6;--cds-tag-background-blue: #0043ce;--cds-tag-color-blue: #d0e2ff;--cds-tag-hover-blue: #0053ff;--cds-tag-background-cyan: #00539a;--cds-tag-color-cyan: #bae6ff;--cds-tag-hover-cyan: #0066bd;--cds-tag-background-teal: #005d5d;--cds-tag-color-teal: #9ef0f0;--cds-tag-hover-teal: #007070;--cds-tag-background-green: #0e6027;--cds-tag-color-green: #a7f0ba;--cds-tag-hover-green: #11742f;--cds-tag-background-gray: #525252;--cds-tag-color-gray: #e0e0e0;--cds-tag-hover-gray: #636363;--cds-tag-background-cool-gray: #4d5358;--cds-tag-color-cool-gray: #dde1e6;--cds-tag-hover-cool-gray: #5d646a;--cds-tag-background-warm-gray: #565151;--cds-tag-color-warm-gray: #e5e0df;--cds-tag-hover-warm-gray: #696363;--cds-notification-background-error: var(--cds-ui-01, #f4f4f4);--cds-notification-background-success: var(--cds-ui-01, #f4f4f4);--cds-notification-background-info: var(--cds-ui-01, #f4f4f4);--cds-notification-background-warning: var(--cds-ui-01, #f4f4f4);--cds-notification-action-hover: var(--cds-hover-ui, #e5e5e5)}:root[theme=g100]{--cds-interactive-01: #0f62fe;--cds-interactive-02: #6f6f6f;--cds-interactive-03: #ffffff;--cds-interactive-04: #4589ff;--cds-ui-background: #161616;--cds-ui-01: #262626;--cds-ui-02: #393939;--cds-ui-03: #393939;--cds-ui-04: #6f6f6f;--cds-ui-05: #f4f4f4;--cds-text-01: #f4f4f4;--cds-text-02: #c6c6c6;--cds-text-03: #6f6f6f;--cds-text-04: #ffffff;--cds-text-05: #8d8d8d;--cds-text-error: #ff8389;--cds-icon-01: #f4f4f4;--cds-icon-02: #c6c6c6;--cds-icon-03: #ffffff;--cds-link-01: #78a9ff;--cds-link-02: #a6c8ff;--cds-inverse-link: #0f62fe;--cds-field-01: #262626;--cds-field-02: #393939;--cds-inverse-01: #161616;--cds-inverse-02: #f4f4f4;--cds-support-01: #fa4d56;--cds-support-02: #42be65;--cds-support-03: #f1c21b;--cds-support-04: #4589ff;--cds-inverse-support-01: #da1e28;--cds-inverse-support-02: #24a148;--cds-inverse-support-03: #f1c21b;--cds-inverse-support-04: #0f62fe;--cds-overlay-01: rgba(0, 0, 0, .65);--cds-danger-01: #da1e28;--cds-danger-02: #fa4d56;--cds-focus: #ffffff;--cds-inverse-focus-ui: #0f62fe;--cds-hover-primary: #0353e9;--cds-active-primary: #002d9c;--cds-hover-primary-text: #a6c8ff;--cds-hover-secondary: #606060;--cds-active-secondary: #393939;--cds-hover-tertiary: #f4f4f4;--cds-active-tertiary: #c6c6c6;--cds-hover-ui: #353535;--cds-hover-light-ui: #4c4c4c;--cds-hover-selected-ui: #4c4c4c;--cds-active-ui: #525252;--cds-active-light-ui: #6f6f6f;--cds-selected-ui: #393939;--cds-selected-light-ui: #525252;--cds-inverse-hover-ui: #e5e5e5;--cds-hover-danger: #b81921;--cds-active-danger: #750e13;--cds-hover-row: #353535;--cds-visited-link: #be95ff;--cds-disabled-01: #262626;--cds-disabled-02: #525252;--cds-disabled-03: #8d8d8d;--cds-highlight: #002d9c;--cds-decorative-01: #525252;--cds-button-separator: #161616;--cds-skeleton-01: #353535;--cds-skeleton-02: #525252;--cds-background: #161616;--cds-layer: #262626;--cds-layer-accent: #393939;--cds-layer-accent-hover: #474747;--cds-layer-accent-active: #6f6f6f;--cds-field: #262626;--cds-background-inverse: #f4f4f4;--cds-background-brand: #0f62fe;--cds-interactive: #4589ff;--cds-border-subtle: #393939;--cds-border-strong: #6f6f6f;--cds-border-inverse: #f4f4f4;--cds-border-interactive: #4589ff;--cds-text-primary: #f4f4f4;--cds-text-secondary: #c6c6c6;--cds-text-placeholder: #6f6f6f;--cds-text-helper: #8d8d8d;--cds-text-on-color: #ffffff;--cds-text-inverse: #161616;--cds-link-primary: #78a9ff;--cds-link-secondary: #a6c8ff;--cds-link-visited: #be95ff;--cds-link-inverse: #0f62fe;--cds-icon-primary: #f4f4f4;--cds-icon-secondary: #c6c6c6;--cds-icon-on-color: #ffffff;--cds-icon-inverse: #161616;--cds-support-error: #fa4d56;--cds-support-success: #42be65;--cds-support-warning: #f1c21b;--cds-support-info: #4589ff;--cds-support-error-inverse: #da1e28;--cds-support-success-inverse: #24a148;--cds-support-warning-inverse: #f1c21b;--cds-support-info-inverse: #0f62fe;--cds-overlay: rgba(0, 0, 0, .65);--cds-toggle-off: #6f6f6f;--cds-shadow: rgba(0, 0, 0, .8);--cds-button-primary: #0f62fe;--cds-button-secondary: #6f6f6f;--cds-button-tertiary: #ffffff;--cds-button-danger-primary: #da1e28;--cds-button-danger-secondary: #fa4d56;--cds-background-active: #525252;--cds-layer-active: #525252;--cds-button-danger-active: #750e13;--cds-button-primary-active: #002d9c;--cds-button-secondary-active: #393939;--cds-button-tertiary-active: #c6c6c6;--cds-focus-inset: #161616;--cds-focus-inverse: #0f62fe;--cds-background-hover: #353535;--cds-layer-hover: #353535;--cds-field-hover: #353535;--cds-background-inverse-hover: #e5e5e5;--cds-link-primary-hover: #a6c8ff;--cds-button-danger-hover: #b81921;--cds-button-primary-hover: #0353e9;--cds-button-secondary-hover: #606060;--cds-button-tertiary-hover: #f4f4f4;--cds-background-selected: #393939;--cds-background-selected-hover: #4c4c4c;--cds-layer-selected: #393939;--cds-layer-selected-hover: #4c4c4c;--cds-layer-selected-inverse: #f4f4f4;--cds-border-subtle-selected: #525252;--cds-border-disabled: #262626;--cds-text-disabled: #525252;--cds-button-disabled: #525252;--cds-icon-disabled: #525252;--cds-text-on-color-disabled: #8d8d8d;--cds-icon-on-color-disabled: #8d8d8d;--cds-layer-selected-disabled: #8d8d8d;--cds-skeleton-background: #353535;--cds-skeleton-element: #525252;--cds-brand-01: #0f62fe;--cds-brand-02: #6f6f6f;--cds-brand-03: #ffffff;--cds-active-01: #525252;--cds-hover-field: #353535;--cds-danger: #da1e28;--cds-caption-01-font-size: .75rem;--cds-caption-01-font-weight: 400;--cds-caption-01-line-height: 1.33333;--cds-caption-01-letter-spacing: .32px;--cds-caption-02-font-size: .875rem;--cds-caption-02-font-weight: 400;--cds-caption-02-line-height: 1.28572;--cds-caption-02-letter-spacing: .32px;--cds-label-01-font-size: .75rem;--cds-label-01-font-weight: 400;--cds-label-01-line-height: 1.33333;--cds-label-01-letter-spacing: .32px;--cds-label-02-font-size: .875rem;--cds-label-02-font-weight: 400;--cds-label-02-line-height: 1.28572;--cds-label-02-letter-spacing: .16px;--cds-helper-text-01-font-size: .75rem;--cds-helper-text-01-line-height: 1.33333;--cds-helper-text-01-letter-spacing: .32px;--cds-helper-text-02-font-size: .875rem;--cds-helper-text-02-line-height: 1.28572;--cds-helper-text-02-letter-spacing: .16px;--cds-body-short-01-font-size: .875rem;--cds-body-short-01-font-weight: 400;--cds-body-short-01-line-height: 1.28572;--cds-body-short-01-letter-spacing: .16px;--cds-body-long-01-font-size: .875rem;--cds-body-long-01-font-weight: 400;--cds-body-long-01-line-height: 1.42857;--cds-body-long-01-letter-spacing: .16px;--cds-body-short-02-font-size: 1rem;--cds-body-short-02-font-weight: 400;--cds-body-short-02-line-height: 1.375;--cds-body-short-02-letter-spacing: 0;--cds-body-long-02-font-size: 1rem;--cds-body-long-02-font-weight: 400;--cds-body-long-02-line-height: 1.5;--cds-body-long-02-letter-spacing: 0;--cds-code-01-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-01-font-size: .75rem;--cds-code-01-font-weight: 400;--cds-code-01-line-height: 1.33333;--cds-code-01-letter-spacing: .32px;--cds-code-02-font-family: "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace;--cds-code-02-font-size: .875rem;--cds-code-02-font-weight: 400;--cds-code-02-line-height: 1.42857;--cds-code-02-letter-spacing: .32px;--cds-heading-01-font-size: .875rem;--cds-heading-01-font-weight: 600;--cds-heading-01-line-height: 1.42857;--cds-heading-01-letter-spacing: .16px;--cds-productive-heading-01-font-size: .875rem;--cds-productive-heading-01-font-weight: 600;--cds-productive-heading-01-line-height: 1.28572;--cds-productive-heading-01-letter-spacing: .16px;--cds-heading-02-font-size: 1rem;--cds-heading-02-font-weight: 600;--cds-heading-02-line-height: 1.5;--cds-heading-02-letter-spacing: 0;--cds-productive-heading-02-font-size: 1rem;--cds-productive-heading-02-font-weight: 600;--cds-productive-heading-02-line-height: 1.375;--cds-productive-heading-02-letter-spacing: 0;--cds-productive-heading-03-font-size: 1.25rem;--cds-productive-heading-03-font-weight: 400;--cds-productive-heading-03-line-height: 1.4;--cds-productive-heading-03-letter-spacing: 0;--cds-productive-heading-04-font-size: 1.75rem;--cds-productive-heading-04-font-weight: 400;--cds-productive-heading-04-line-height: 1.28572;--cds-productive-heading-04-letter-spacing: 0;--cds-productive-heading-05-font-size: 2rem;--cds-productive-heading-05-font-weight: 400;--cds-productive-heading-05-line-height: 1.25;--cds-productive-heading-05-letter-spacing: 0;--cds-productive-heading-06-font-size: 2.625rem;--cds-productive-heading-06-font-weight: 300;--cds-productive-heading-06-line-height: 1.199;--cds-productive-heading-06-letter-spacing: 0;--cds-productive-heading-07-font-size: 3.375rem;--cds-productive-heading-07-font-weight: 300;--cds-productive-heading-07-line-height: 1.199;--cds-productive-heading-07-letter-spacing: 0;--cds-expressive-heading-01-font-size: .875rem;--cds-expressive-heading-01-font-weight: 600;--cds-expressive-heading-01-line-height: 1.25;--cds-expressive-heading-01-letter-spacing: .16px;--cds-expressive-heading-02-font-size: 1rem;--cds-expressive-heading-02-font-weight: 600;--cds-expressive-heading-02-line-height: 1.5;--cds-expressive-heading-02-letter-spacing: 0;--cds-expressive-heading-03-font-size: 1.25rem;--cds-expressive-heading-03-font-weight: 400;--cds-expressive-heading-03-line-height: 1.4;--cds-expressive-heading-03-letter-spacing: 0;--cds-expressive-heading-04-font-size: 1.75rem;--cds-expressive-heading-04-font-weight: 400;--cds-expressive-heading-04-line-height: 1.28572;--cds-expressive-heading-04-letter-spacing: 0;--cds-expressive-heading-05-font-size: 2rem;--cds-expressive-heading-05-font-weight: 400;--cds-expressive-heading-05-line-height: 1.25;--cds-expressive-heading-05-letter-spacing: 0;--cds-expressive-heading-06-font-size: 2rem;--cds-expressive-heading-06-font-weight: 600;--cds-expressive-heading-06-line-height: 1.25;--cds-expressive-heading-06-letter-spacing: 0;--cds-expressive-paragraph-01-font-size: 1.5rem;--cds-expressive-paragraph-01-font-weight: 300;--cds-expressive-paragraph-01-line-height: 1.334;--cds-expressive-paragraph-01-letter-spacing: 0;--cds-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-01-font-size: 1.25rem;--cds-quotation-01-font-weight: 400;--cds-quotation-01-line-height: 1.3;--cds-quotation-01-letter-spacing: 0;--cds-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-quotation-02-font-size: 2rem;--cds-quotation-02-font-weight: 300;--cds-quotation-02-line-height: 1.25;--cds-quotation-02-letter-spacing: 0;--cds-display-01-font-size: 2.625rem;--cds-display-01-font-weight: 300;--cds-display-01-line-height: 1.19;--cds-display-01-letter-spacing: 0;--cds-display-02-font-size: 2.625rem;--cds-display-02-font-weight: 600;--cds-display-02-line-height: 1.19;--cds-display-02-letter-spacing: 0;--cds-display-03-font-size: 2.625rem;--cds-display-03-font-weight: 300;--cds-display-03-line-height: 1.19;--cds-display-03-letter-spacing: 0;--cds-display-04-font-size: 2.625rem;--cds-display-04-font-weight: 600;--cds-display-04-line-height: 1.19;--cds-display-04-letter-spacing: 0;--cds-legal-01-font-size: .75rem;--cds-legal-01-font-weight: 400;--cds-legal-01-line-height: 1.33333;--cds-legal-01-letter-spacing: .32px;--cds-legal-02-font-size: .875rem;--cds-legal-02-font-weight: 400;--cds-legal-02-line-height: 1.28572;--cds-legal-02-letter-spacing: .16px;--cds-body-compact-01-font-size: .875rem;--cds-body-compact-01-font-weight: 400;--cds-body-compact-01-line-height: 1.28572;--cds-body-compact-01-letter-spacing: .16px;--cds-body-compact-02-font-size: 1rem;--cds-body-compact-02-font-weight: 400;--cds-body-compact-02-line-height: 1.375;--cds-body-compact-02-letter-spacing: 0;--cds-body-01-font-size: .875rem;--cds-body-01-font-weight: 400;--cds-body-01-line-height: 1.42857;--cds-body-01-letter-spacing: .16px;--cds-body-02-font-size: 1rem;--cds-body-02-font-weight: 400;--cds-body-02-line-height: 1.5;--cds-body-02-letter-spacing: 0;--cds-heading-compact-01-font-size: .875rem;--cds-heading-compact-01-font-weight: 600;--cds-heading-compact-01-line-height: 1.28572;--cds-heading-compact-01-letter-spacing: .16px;--cds-heading-compact-02-font-size: 1rem;--cds-heading-compact-02-font-weight: 600;--cds-heading-compact-02-line-height: 1.375;--cds-heading-compact-02-letter-spacing: 0;--cds-heading-03-font-size: 1.25rem;--cds-heading-03-font-weight: 400;--cds-heading-03-line-height: 1.4;--cds-heading-03-letter-spacing: 0;--cds-heading-04-font-size: 1.75rem;--cds-heading-04-font-weight: 400;--cds-heading-04-line-height: 1.28572;--cds-heading-04-letter-spacing: 0;--cds-heading-05-font-size: 2rem;--cds-heading-05-font-weight: 400;--cds-heading-05-line-height: 1.25;--cds-heading-05-letter-spacing: 0;--cds-heading-06-font-size: 2.625rem;--cds-heading-06-font-weight: 300;--cds-heading-06-line-height: 1.199;--cds-heading-06-letter-spacing: 0;--cds-heading-07-font-size: 3.375rem;--cds-heading-07-font-weight: 300;--cds-heading-07-line-height: 1.199;--cds-heading-07-letter-spacing: 0;--cds-fluid-heading-03-font-size: 1.25rem;--cds-fluid-heading-03-font-weight: 400;--cds-fluid-heading-03-line-height: 1.4;--cds-fluid-heading-03-letter-spacing: 0;--cds-fluid-heading-04-font-size: 1.75rem;--cds-fluid-heading-04-font-weight: 400;--cds-fluid-heading-04-line-height: 1.28572;--cds-fluid-heading-04-letter-spacing: 0;--cds-fluid-heading-05-font-size: 2rem;--cds-fluid-heading-05-font-weight: 400;--cds-fluid-heading-05-line-height: 1.25;--cds-fluid-heading-05-letter-spacing: 0;--cds-fluid-heading-06-font-size: 2rem;--cds-fluid-heading-06-font-weight: 600;--cds-fluid-heading-06-line-height: 1.25;--cds-fluid-heading-06-letter-spacing: 0;--cds-fluid-paragraph-01-font-size: 1.5rem;--cds-fluid-paragraph-01-font-weight: 300;--cds-fluid-paragraph-01-line-height: 1.334;--cds-fluid-paragraph-01-letter-spacing: 0;--cds-fluid-quotation-01-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-01-font-size: 1.25rem;--cds-fluid-quotation-01-font-weight: 400;--cds-fluid-quotation-01-line-height: 1.3;--cds-fluid-quotation-01-letter-spacing: 0;--cds-fluid-quotation-02-font-family: "IBM Plex Serif", "Georgia", Times, serif;--cds-fluid-quotation-02-font-size: 2rem;--cds-fluid-quotation-02-font-weight: 300;--cds-fluid-quotation-02-line-height: 1.25;--cds-fluid-quotation-02-letter-spacing: 0;--cds-fluid-display-01-font-size: 2.625rem;--cds-fluid-display-01-font-weight: 300;--cds-fluid-display-01-line-height: 1.19;--cds-fluid-display-01-letter-spacing: 0;--cds-fluid-display-02-font-size: 2.625rem;--cds-fluid-display-02-font-weight: 600;--cds-fluid-display-02-line-height: 1.19;--cds-fluid-display-02-letter-spacing: 0;--cds-fluid-display-03-font-size: 2.625rem;--cds-fluid-display-03-font-weight: 300;--cds-fluid-display-03-line-height: 1.19;--cds-fluid-display-03-letter-spacing: 0;--cds-fluid-display-04-font-size: 2.625rem;--cds-fluid-display-04-font-weight: 600;--cds-fluid-display-04-line-height: 1.19;--cds-fluid-display-04-letter-spacing: 0;--cds-spacing-01: .125rem;--cds-spacing-02: .25rem;--cds-spacing-03: .5rem;--cds-spacing-04: .75rem;--cds-spacing-05: 1rem;--cds-spacing-06: 1.5rem;--cds-spacing-07: 2rem;--cds-spacing-08: 2.5rem;--cds-spacing-09: 3rem;--cds-spacing-10: 4rem;--cds-spacing-11: 5rem;--cds-spacing-12: 6rem;--cds-spacing-13: 10rem;--cds-fluid-spacing-01: 0;--cds-fluid-spacing-02: 2vw;--cds-fluid-spacing-03: 5vw;--cds-fluid-spacing-04: 10vw;--cds-layout-01: 1rem;--cds-layout-02: 1.5rem;--cds-layout-03: 2rem;--cds-layout-04: 3rem;--cds-layout-05: 4rem;--cds-layout-06: 6rem;--cds-layout-07: 10rem;--cds-container-01: 1.5rem;--cds-container-02: 2rem;--cds-container-03: 2.5rem;--cds-container-04: 3rem;--cds-container-05: 4rem;--cds-size-xsmall: 1.5rem;--cds-size-small: 2rem;--cds-size-medium: 2.5rem;--cds-size-large: 3rem;--cds-size-xlarge: 4rem;--cds-size-2XLarge: 5rem;--cds-icon-size-01: 1rem;--cds-icon-size-02: 1.25rem;--cds-tag-background-red: #a2191f;--cds-tag-color-red: #ffd7d9;--cds-tag-hover-red: #c21e25;--cds-tag-background-magenta: #9f1853;--cds-tag-color-magenta: #ffd6e8;--cds-tag-hover-magenta: #bf1d63;--cds-tag-background-purple: #6929c4;--cds-tag-color-purple: #e8daff;--cds-tag-hover-purple: #7c3dd6;--cds-tag-background-blue: #0043ce;--cds-tag-color-blue: #d0e2ff;--cds-tag-hover-blue: #0053ff;--cds-tag-background-cyan: #00539a;--cds-tag-color-cyan: #bae6ff;--cds-tag-hover-cyan: #0066bd;--cds-tag-background-teal: #005d5d;--cds-tag-color-teal: #9ef0f0;--cds-tag-hover-teal: #007070;--cds-tag-background-green: #0e6027;--cds-tag-color-green: #a7f0ba;--cds-tag-hover-green: #11742f;--cds-tag-background-gray: #525252;--cds-tag-color-gray: #e0e0e0;--cds-tag-hover-gray: #636363;--cds-tag-background-cool-gray: #4d5358;--cds-tag-color-cool-gray: #dde1e6;--cds-tag-hover-cool-gray: #5d646a;--cds-tag-background-warm-gray: #565151;--cds-tag-color-warm-gray: #e5e0df;--cds-tag-hover-warm-gray: #696363;--cds-notification-background-error: var(--cds-ui-01, #f4f4f4);--cds-notification-background-success: var(--cds-ui-01, #f4f4f4);--cds-notification-background-info: var(--cds-ui-01, #f4f4f4);--cds-notification-background-warning: var(--cds-ui-01, #f4f4f4);--cds-notification-action-hover: var(--cds-hover-ui, #e5e5e5)}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Bold.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Bold.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Bold-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Bold-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Bold-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Bold-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:700;src:local("IBM Plex Mono Bold"),local("IBMPlexMono-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Bold-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-BoldItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-BoldItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-BoldItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-BoldItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-BoldItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-BoldItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:700;src:local("IBM Plex Mono Bold Italic"),local("IBMPlexMono-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-BoldItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-ExtraLight.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-ExtraLight.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLight-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLight-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLight-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLight-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:200;src:local("IBM Plex Mono ExtLt"),local("IBMPlexMono-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLight-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-ExtraLightItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-ExtraLightItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLightItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLightItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLightItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLightItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:200;src:local("IBM Plex Mono ExtLt Italic"),local("IBMPlexMono-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ExtraLightItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Italic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Italic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Italic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Italic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Italic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Italic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local("IBM Plex Mono Italic"),local("IBMPlexMono-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Italic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Light.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Light.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Light-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Light-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Light-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Light-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local("IBM Plex Mono Light"),local("IBMPlexMono-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Light-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-LightItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-LightItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-LightItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-LightItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-LightItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-LightItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:300;src:local("IBM Plex Mono Light Italic"),local("IBMPlexMono-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-LightItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Medium.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Medium.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Medium-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Medium-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Medium-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Medium-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local("IBM Plex Mono Medm"),local("IBMPlexMono-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Medium-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-MediumItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-MediumItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-MediumItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-MediumItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-MediumItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-MediumItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:500;src:local("IBM Plex Mono Medm Italic"),local("IBMPlexMono-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-MediumItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Regular.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Regular.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Regular-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Regular-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Regular-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Regular-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local("IBM Plex Mono"),local("IBMPlexMono"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Regular-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-SemiBold.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-SemiBold.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBold-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBold-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBold-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBold-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:600;src:local("IBM Plex Mono SmBld"),local("IBMPlexMono-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBold-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-SemiBoldItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-SemiBoldItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBoldItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBoldItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBoldItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBoldItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:600;src:local("IBM Plex Mono SmBld Italic"),local("IBMPlexMono-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-SemiBoldItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Text.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Text.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Text-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Text-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Text-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Text-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:450;src:local("IBM Plex Mono Text"),local("IBMPlexMono-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Text-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-TextItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-TextItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-TextItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-TextItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-TextItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-TextItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:450;src:local("IBM Plex Mono Text Italic"),local("IBMPlexMono-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-TextItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-Thin.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-Thin.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Thin-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Thin-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Thin-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Thin-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:normal;font-weight:100;src:local("IBM Plex Mono Thin"),local("IBMPlexMono-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-Thin-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff2/IBMPlexMono-ThinItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/complete/woff/IBMPlexMono-ThinItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ThinItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ThinItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ThinItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ThinItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Mono;font-style:italic;font-weight:100;src:local("IBM Plex Mono Thin Italic"),local("IBMPlexMono-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Mono/fonts/split/woff2/IBMPlexMono-ThinItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Bold.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Bold.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:700;src:local("IBM Plex Sans Bold"),local("IBMPlexSans-Bold"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Bold-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-BoldItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-BoldItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:700;src:local("IBM Plex Sans Bold Italic"),local("IBMPlexSans-BoldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-BoldItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-ExtraLight.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-ExtraLight.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:200;src:local("IBM Plex Sans ExtLt"),local("IBMPlexSans-ExtLt"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLight-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-ExtraLightItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-ExtraLightItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:200;src:local("IBM Plex Sans ExtLt Italic"),local("IBMPlexSans-ExtLtItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ExtraLightItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Italic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Italic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:400;src:local("IBM Plex Sans Italic"),local("IBMPlexSans-Italic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Italic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Light.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Light.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:300;src:local("IBM Plex Sans Light"),local("IBMPlexSans-Light"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Light-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-LightItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-LightItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:300;src:local("IBM Plex Sans Light Italic"),local("IBMPlexSans-LightItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-LightItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Medium.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Medium.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:500;src:local("IBM Plex Sans Medm"),local("IBMPlexSans-Medm"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Medium-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-MediumItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-MediumItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:500;src:local("IBM Plex Sans Medm Italic"),local("IBMPlexSans-MedmItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-MediumItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Regular.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Regular.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:400;src:local("IBM Plex Sans"),local("IBMPlexSans"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Regular-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-SemiBold.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-SemiBold.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:600;src:local("IBM Plex Sans SmBld"),local("IBMPlexSans-SmBld"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBold-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-SemiBoldItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-SemiBoldItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:600;src:local("IBM Plex Sans SmBld Italic"),local("IBMPlexSans-SmBldItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-SemiBoldItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Text.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Text.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:450;src:local("IBM Plex Sans Text"),local("IBMPlexSans-Text"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Text-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-TextItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-TextItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:450;src:local("IBM Plex Sans Text Italic"),local("IBMPlexSans-TextItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-TextItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-Thin.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-Thin.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:normal;font-weight:100;src:local("IBM Plex Sans Thin"),local("IBMPlexSans-Thin"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-Thin-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff2/IBMPlexSans-ThinItalic.woff2) format("woff2"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/complete/woff/IBMPlexSans-ThinItalic.woff) format("woff")}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Cyrillic.woff2) format("woff2");unicode-range:U+0400-045F,U+0472-0473,U+0490-049D,U+04A0-04A5,U+04AA-04AB,U+04AE-04B3,U+04B6-04BB,U+04C0-04C2,U+04CF-04D9,U+04DC-04DF,U+04E2-04E9,U+04EE-04F5,U+04F8-04F9}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Pi.woff2) format("woff2");unicode-range:U+0E3F,U+2032-2033,U+2070,U+2075-2079,U+2080-2081,U+2083,U+2085-2089,U+2113,U+2116,U+2126,U+212E,U+2150-2151,U+2153-215E,U+2190-2199,U+21A9-21AA,U+21B0-21B3,U+21B6-21B7,U+21BA-21BB,U+21C4,U+21C6,U+2202,U+2206,U+220F,U+2211,U+221A,U+221E,U+222B,U+2248,U+2260,U+2264-2265,U+25CA,U+2713,U+274C,U+2B0E-2B11,U+EBE1-EBE7,U+ECE0,U+EFCC}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Latin3.woff2) format("woff2");unicode-range:U+0102-0103,U+1EA0-1EF9,U+20AB}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Latin2.woff2) format("woff2");unicode-range:U+0100-024F,U+0259,U+1E00-1EFF,U+20A0-20AB,U+20AD-20CF,U+2C60-2C7F,U+A720-A7FF,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Latin1.woff2) format("woff2");unicode-range:U+0000,U+000D,U+0020-007E,U+00A0-00A3,U+00A4-00FF,U+0131,U+0152-0153,U+02C6,U+02DA,U+02DC,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+2030,U+2039-203A,U+2044,U+2074,U+20AC,U+2122,U+2212,U+FB01-FB02}@font-face{font-display:auto;font-family:IBM Plex Sans;font-style:italic;font-weight:100;src:local("IBM Plex Sans Thin Italic"),local("IBMPlexSans-ThinItalic"),url(https://1.www.s81c.com/common/carbon/plex/fonts/IBM-Plex-Sans/fonts/split/woff2/IBMPlexSans-ThinItalic-Greek.woff2) format("woff2");unicode-range:U+0384-038A,U+038C,U+038E-03A1,U+03A3-03CE}.bx--assistive-text,.bx--visually-hidden{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--body,body{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);background-color:var(--cds-ui-background, #ffffff);color:var(--cds-text-01, #161616);line-height:1}.bx--grid{margin-right:auto;margin-left:auto;max-width:99rem;padding-right:1rem;padding-left:1rem}@media (min-width: 42rem){.bx--grid{padding-right:2rem;padding-left:2rem}}@media (min-width: 99rem){.bx--grid{padding-right:2.5rem;padding-left:2.5rem}.bx--grid--full-width{max-width:100%}}.bx--row{display:flex;flex-wrap:wrap;margin-right:-1rem;margin-left:-1rem}.bx--row-padding [class*=bx--col],.bx--col-padding{padding-top:1rem;padding-bottom:1rem}.bx--grid--condensed [class*=bx--col]{padding-top:.03125rem;padding-bottom:.03125rem}.bx--col{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col,.bx--grid--condensed .bx--col{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col,.bx--grid--narrow .bx--col{padding-right:1rem;padding-left:0}.bx--col-sm-0{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm-0,.bx--grid--condensed .bx--col-sm-0{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm-0,.bx--grid--narrow .bx--col-sm-0{padding-right:1rem;padding-left:0}.bx--col-sm-1{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm-1,.bx--grid--condensed .bx--col-sm-1{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm-1,.bx--grid--narrow .bx--col-sm-1{padding-right:1rem;padding-left:0}.bx--col-sm-2{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm-2,.bx--grid--condensed .bx--col-sm-2{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm-2,.bx--grid--narrow .bx--col-sm-2{padding-right:1rem;padding-left:0}.bx--col-sm-3{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm-3,.bx--grid--condensed .bx--col-sm-3{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm-3,.bx--grid--narrow .bx--col-sm-3{padding-right:1rem;padding-left:0}.bx--col-sm-4{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm-4,.bx--grid--condensed .bx--col-sm-4{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm-4,.bx--grid--narrow .bx--col-sm-4{padding-right:1rem;padding-left:0}.bx--col-sm,.bx--col-sm--auto{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-sm,.bx--grid--condensed .bx--col-sm,.bx--row--condensed .bx--col-sm--auto,.bx--grid--condensed .bx--col-sm--auto{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-sm,.bx--grid--narrow .bx--col-sm,.bx--row--narrow .bx--col-sm--auto,.bx--grid--narrow .bx--col-sm--auto{padding-right:1rem;padding-left:0}.bx--col,.bx--col-sm{max-width:100%;flex-basis:0;flex-grow:1}.bx--col--auto,.bx--col-sm--auto{width:auto;max-width:100%;flex:1 0 0%}.bx--col-sm-0{display:none}.bx--col-sm-1{display:block;max-width:25%;flex:0 0 25%}.bx--col-sm-2{display:block;max-width:50%;flex:0 0 50%}.bx--col-sm-3{display:block;max-width:75%;flex:0 0 75%}.bx--col-sm-4{display:block;max-width:100%;flex:0 0 100%}.bx--offset-sm-0{margin-left:0}.bx--offset-sm-1{margin-left:25%}.bx--offset-sm-2{margin-left:50%}.bx--offset-sm-3{margin-left:75%}.bx--col-md-0{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-0,.bx--grid--condensed .bx--col-md-0{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-0,.bx--grid--narrow .bx--col-md-0{padding-right:1rem;padding-left:0}.bx--col-md-1{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-1,.bx--grid--condensed .bx--col-md-1{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-1,.bx--grid--narrow .bx--col-md-1{padding-right:1rem;padding-left:0}.bx--col-md-2{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-2,.bx--grid--condensed .bx--col-md-2{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-2,.bx--grid--narrow .bx--col-md-2{padding-right:1rem;padding-left:0}.bx--col-md-3{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-3,.bx--grid--condensed .bx--col-md-3{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-3,.bx--grid--narrow .bx--col-md-3{padding-right:1rem;padding-left:0}.bx--col-md-4{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-4,.bx--grid--condensed .bx--col-md-4{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-4,.bx--grid--narrow .bx--col-md-4{padding-right:1rem;padding-left:0}.bx--col-md-5{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-5,.bx--grid--condensed .bx--col-md-5{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-5,.bx--grid--narrow .bx--col-md-5{padding-right:1rem;padding-left:0}.bx--col-md-6{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-6,.bx--grid--condensed .bx--col-md-6{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-6,.bx--grid--narrow .bx--col-md-6{padding-right:1rem;padding-left:0}.bx--col-md-7{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-7,.bx--grid--condensed .bx--col-md-7{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-7,.bx--grid--narrow .bx--col-md-7{padding-right:1rem;padding-left:0}.bx--col-md-8{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md-8,.bx--grid--condensed .bx--col-md-8{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md-8,.bx--grid--narrow .bx--col-md-8{padding-right:1rem;padding-left:0}.bx--col-md,.bx--col-md--auto{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-md,.bx--grid--condensed .bx--col-md,.bx--row--condensed .bx--col-md--auto,.bx--grid--condensed .bx--col-md--auto{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-md,.bx--grid--narrow .bx--col-md,.bx--row--narrow .bx--col-md--auto,.bx--grid--narrow .bx--col-md--auto{padding-right:1rem;padding-left:0}@media (min-width: 42rem){.bx--col,.bx--col-md{max-width:100%;flex-basis:0;flex-grow:1}.bx--col--auto,.bx--col-md--auto{width:auto;max-width:100%;flex:1 0 0%}.bx--col-md-0{display:none}.bx--col-md-1{display:block;max-width:12.5%;flex:0 0 12.5%}.bx--col-md-2{display:block;max-width:25%;flex:0 0 25%}.bx--col-md-3{display:block;max-width:37.5%;flex:0 0 37.5%}.bx--col-md-4{display:block;max-width:50%;flex:0 0 50%}.bx--col-md-5{display:block;max-width:62.5%;flex:0 0 62.5%}.bx--col-md-6{display:block;max-width:75%;flex:0 0 75%}.bx--col-md-7{display:block;max-width:87.5%;flex:0 0 87.5%}.bx--col-md-8{display:block;max-width:100%;flex:0 0 100%}.bx--offset-md-0{margin-left:0}.bx--offset-md-1{margin-left:12.5%}.bx--offset-md-2{margin-left:25%}.bx--offset-md-3{margin-left:37.5%}.bx--offset-md-4{margin-left:50%}.bx--offset-md-5{margin-left:62.5%}.bx--offset-md-6{margin-left:75%}.bx--offset-md-7{margin-left:87.5%}}.bx--col-lg-0{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-0,.bx--grid--condensed .bx--col-lg-0{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-0,.bx--grid--narrow .bx--col-lg-0{padding-right:1rem;padding-left:0}.bx--col-lg-1{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-1,.bx--grid--condensed .bx--col-lg-1{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-1,.bx--grid--narrow .bx--col-lg-1{padding-right:1rem;padding-left:0}.bx--col-lg-2{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-2,.bx--grid--condensed .bx--col-lg-2{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-2,.bx--grid--narrow .bx--col-lg-2{padding-right:1rem;padding-left:0}.bx--col-lg-3{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-3,.bx--grid--condensed .bx--col-lg-3{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-3,.bx--grid--narrow .bx--col-lg-3{padding-right:1rem;padding-left:0}.bx--col-lg-4{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-4,.bx--grid--condensed .bx--col-lg-4{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-4,.bx--grid--narrow .bx--col-lg-4{padding-right:1rem;padding-left:0}.bx--col-lg-5{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-5,.bx--grid--condensed .bx--col-lg-5{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-5,.bx--grid--narrow .bx--col-lg-5{padding-right:1rem;padding-left:0}.bx--col-lg-6{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-6,.bx--grid--condensed .bx--col-lg-6{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-6,.bx--grid--narrow .bx--col-lg-6{padding-right:1rem;padding-left:0}.bx--col-lg-7{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-7,.bx--grid--condensed .bx--col-lg-7{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-7,.bx--grid--narrow .bx--col-lg-7{padding-right:1rem;padding-left:0}.bx--col-lg-8{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-8,.bx--grid--condensed .bx--col-lg-8{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-8,.bx--grid--narrow .bx--col-lg-8{padding-right:1rem;padding-left:0}.bx--col-lg-9{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-9,.bx--grid--condensed .bx--col-lg-9{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-9,.bx--grid--narrow .bx--col-lg-9{padding-right:1rem;padding-left:0}.bx--col-lg-10{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-10,.bx--grid--condensed .bx--col-lg-10{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-10,.bx--grid--narrow .bx--col-lg-10{padding-right:1rem;padding-left:0}.bx--col-lg-11{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-11,.bx--grid--condensed .bx--col-lg-11{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-11,.bx--grid--narrow .bx--col-lg-11{padding-right:1rem;padding-left:0}.bx--col-lg-12{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-12,.bx--grid--condensed .bx--col-lg-12{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-12,.bx--grid--narrow .bx--col-lg-12{padding-right:1rem;padding-left:0}.bx--col-lg-13{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-13,.bx--grid--condensed .bx--col-lg-13{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-13,.bx--grid--narrow .bx--col-lg-13{padding-right:1rem;padding-left:0}.bx--col-lg-14{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-14,.bx--grid--condensed .bx--col-lg-14{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-14,.bx--grid--narrow .bx--col-lg-14{padding-right:1rem;padding-left:0}.bx--col-lg-15{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-15,.bx--grid--condensed .bx--col-lg-15{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-15,.bx--grid--narrow .bx--col-lg-15{padding-right:1rem;padding-left:0}.bx--col-lg-16{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg-16,.bx--grid--condensed .bx--col-lg-16{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg-16,.bx--grid--narrow .bx--col-lg-16{padding-right:1rem;padding-left:0}.bx--col-lg,.bx--col-lg--auto{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-lg,.bx--grid--condensed .bx--col-lg,.bx--row--condensed .bx--col-lg--auto,.bx--grid--condensed .bx--col-lg--auto{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-lg,.bx--grid--narrow .bx--col-lg,.bx--row--narrow .bx--col-lg--auto,.bx--grid--narrow .bx--col-lg--auto{padding-right:1rem;padding-left:0}@media (min-width: 66rem){.bx--col,.bx--col-lg{max-width:100%;flex-basis:0;flex-grow:1}.bx--col--auto,.bx--col-lg--auto{width:auto;max-width:100%;flex:1 0 0%}.bx--col-lg-0{display:none}.bx--col-lg-1{display:block;max-width:6.25%;flex:0 0 6.25%}.bx--col-lg-2{display:block;max-width:12.5%;flex:0 0 12.5%}.bx--col-lg-3{display:block;max-width:18.75%;flex:0 0 18.75%}.bx--col-lg-4{display:block;max-width:25%;flex:0 0 25%}.bx--col-lg-5{display:block;max-width:31.25%;flex:0 0 31.25%}.bx--col-lg-6{display:block;max-width:37.5%;flex:0 0 37.5%}.bx--col-lg-7{display:block;max-width:43.75%;flex:0 0 43.75%}.bx--col-lg-8{display:block;max-width:50%;flex:0 0 50%}.bx--col-lg-9{display:block;max-width:56.25%;flex:0 0 56.25%}.bx--col-lg-10{display:block;max-width:62.5%;flex:0 0 62.5%}.bx--col-lg-11{display:block;max-width:68.75%;flex:0 0 68.75%}.bx--col-lg-12{display:block;max-width:75%;flex:0 0 75%}.bx--col-lg-13{display:block;max-width:81.25%;flex:0 0 81.25%}.bx--col-lg-14{display:block;max-width:87.5%;flex:0 0 87.5%}.bx--col-lg-15{display:block;max-width:93.75%;flex:0 0 93.75%}.bx--col-lg-16{display:block;max-width:100%;flex:0 0 100%}.bx--offset-lg-0{margin-left:0}.bx--offset-lg-1{margin-left:6.25%}.bx--offset-lg-2{margin-left:12.5%}.bx--offset-lg-3{margin-left:18.75%}.bx--offset-lg-4{margin-left:25%}.bx--offset-lg-5{margin-left:31.25%}.bx--offset-lg-6{margin-left:37.5%}.bx--offset-lg-7{margin-left:43.75%}.bx--offset-lg-8{margin-left:50%}.bx--offset-lg-9{margin-left:56.25%}.bx--offset-lg-10{margin-left:62.5%}.bx--offset-lg-11{margin-left:68.75%}.bx--offset-lg-12{margin-left:75%}.bx--offset-lg-13{margin-left:81.25%}.bx--offset-lg-14{margin-left:87.5%}.bx--offset-lg-15{margin-left:93.75%}}.bx--col-xlg-0{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-0,.bx--grid--condensed .bx--col-xlg-0{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-0,.bx--grid--narrow .bx--col-xlg-0{padding-right:1rem;padding-left:0}.bx--col-xlg-1{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-1,.bx--grid--condensed .bx--col-xlg-1{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-1,.bx--grid--narrow .bx--col-xlg-1{padding-right:1rem;padding-left:0}.bx--col-xlg-2{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-2,.bx--grid--condensed .bx--col-xlg-2{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-2,.bx--grid--narrow .bx--col-xlg-2{padding-right:1rem;padding-left:0}.bx--col-xlg-3{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-3,.bx--grid--condensed .bx--col-xlg-3{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-3,.bx--grid--narrow .bx--col-xlg-3{padding-right:1rem;padding-left:0}.bx--col-xlg-4{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-4,.bx--grid--condensed .bx--col-xlg-4{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-4,.bx--grid--narrow .bx--col-xlg-4{padding-right:1rem;padding-left:0}.bx--col-xlg-5{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-5,.bx--grid--condensed .bx--col-xlg-5{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-5,.bx--grid--narrow .bx--col-xlg-5{padding-right:1rem;padding-left:0}.bx--col-xlg-6{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-6,.bx--grid--condensed .bx--col-xlg-6{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-6,.bx--grid--narrow .bx--col-xlg-6{padding-right:1rem;padding-left:0}.bx--col-xlg-7{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-7,.bx--grid--condensed .bx--col-xlg-7{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-7,.bx--grid--narrow .bx--col-xlg-7{padding-right:1rem;padding-left:0}.bx--col-xlg-8{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-8,.bx--grid--condensed .bx--col-xlg-8{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-8,.bx--grid--narrow .bx--col-xlg-8{padding-right:1rem;padding-left:0}.bx--col-xlg-9{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-9,.bx--grid--condensed .bx--col-xlg-9{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-9,.bx--grid--narrow .bx--col-xlg-9{padding-right:1rem;padding-left:0}.bx--col-xlg-10{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-10,.bx--grid--condensed .bx--col-xlg-10{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-10,.bx--grid--narrow .bx--col-xlg-10{padding-right:1rem;padding-left:0}.bx--col-xlg-11{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-11,.bx--grid--condensed .bx--col-xlg-11{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-11,.bx--grid--narrow .bx--col-xlg-11{padding-right:1rem;padding-left:0}.bx--col-xlg-12{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-12,.bx--grid--condensed .bx--col-xlg-12{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-12,.bx--grid--narrow .bx--col-xlg-12{padding-right:1rem;padding-left:0}.bx--col-xlg-13{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-13,.bx--grid--condensed .bx--col-xlg-13{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-13,.bx--grid--narrow .bx--col-xlg-13{padding-right:1rem;padding-left:0}.bx--col-xlg-14{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-14,.bx--grid--condensed .bx--col-xlg-14{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-14,.bx--grid--narrow .bx--col-xlg-14{padding-right:1rem;padding-left:0}.bx--col-xlg-15{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-15,.bx--grid--condensed .bx--col-xlg-15{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-15,.bx--grid--narrow .bx--col-xlg-15{padding-right:1rem;padding-left:0}.bx--col-xlg-16{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg-16,.bx--grid--condensed .bx--col-xlg-16{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg-16,.bx--grid--narrow .bx--col-xlg-16{padding-right:1rem;padding-left:0}.bx--col-xlg,.bx--col-xlg--auto{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-xlg,.bx--grid--condensed .bx--col-xlg,.bx--row--condensed .bx--col-xlg--auto,.bx--grid--condensed .bx--col-xlg--auto{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-xlg,.bx--grid--narrow .bx--col-xlg,.bx--row--narrow .bx--col-xlg--auto,.bx--grid--narrow .bx--col-xlg--auto{padding-right:1rem;padding-left:0}@media (min-width: 82rem){.bx--col,.bx--col-xlg{max-width:100%;flex-basis:0;flex-grow:1}.bx--col--auto,.bx--col-xlg--auto{width:auto;max-width:100%;flex:1 0 0%}.bx--col-xlg-0{display:none}.bx--col-xlg-1{display:block;max-width:6.25%;flex:0 0 6.25%}.bx--col-xlg-2{display:block;max-width:12.5%;flex:0 0 12.5%}.bx--col-xlg-3{display:block;max-width:18.75%;flex:0 0 18.75%}.bx--col-xlg-4{display:block;max-width:25%;flex:0 0 25%}.bx--col-xlg-5{display:block;max-width:31.25%;flex:0 0 31.25%}.bx--col-xlg-6{display:block;max-width:37.5%;flex:0 0 37.5%}.bx--col-xlg-7{display:block;max-width:43.75%;flex:0 0 43.75%}.bx--col-xlg-8{display:block;max-width:50%;flex:0 0 50%}.bx--col-xlg-9{display:block;max-width:56.25%;flex:0 0 56.25%}.bx--col-xlg-10{display:block;max-width:62.5%;flex:0 0 62.5%}.bx--col-xlg-11{display:block;max-width:68.75%;flex:0 0 68.75%}.bx--col-xlg-12{display:block;max-width:75%;flex:0 0 75%}.bx--col-xlg-13{display:block;max-width:81.25%;flex:0 0 81.25%}.bx--col-xlg-14{display:block;max-width:87.5%;flex:0 0 87.5%}.bx--col-xlg-15{display:block;max-width:93.75%;flex:0 0 93.75%}.bx--col-xlg-16{display:block;max-width:100%;flex:0 0 100%}.bx--offset-xlg-0{margin-left:0}.bx--offset-xlg-1{margin-left:6.25%}.bx--offset-xlg-2{margin-left:12.5%}.bx--offset-xlg-3{margin-left:18.75%}.bx--offset-xlg-4{margin-left:25%}.bx--offset-xlg-5{margin-left:31.25%}.bx--offset-xlg-6{margin-left:37.5%}.bx--offset-xlg-7{margin-left:43.75%}.bx--offset-xlg-8{margin-left:50%}.bx--offset-xlg-9{margin-left:56.25%}.bx--offset-xlg-10{margin-left:62.5%}.bx--offset-xlg-11{margin-left:68.75%}.bx--offset-xlg-12{margin-left:75%}.bx--offset-xlg-13{margin-left:81.25%}.bx--offset-xlg-14{margin-left:87.5%}.bx--offset-xlg-15{margin-left:93.75%}}.bx--col-max-0{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-0,.bx--grid--condensed .bx--col-max-0{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-0,.bx--grid--narrow .bx--col-max-0{padding-right:1rem;padding-left:0}.bx--col-max-1{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-1,.bx--grid--condensed .bx--col-max-1{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-1,.bx--grid--narrow .bx--col-max-1{padding-right:1rem;padding-left:0}.bx--col-max-2{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-2,.bx--grid--condensed .bx--col-max-2{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-2,.bx--grid--narrow .bx--col-max-2{padding-right:1rem;padding-left:0}.bx--col-max-3{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-3,.bx--grid--condensed .bx--col-max-3{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-3,.bx--grid--narrow .bx--col-max-3{padding-right:1rem;padding-left:0}.bx--col-max-4{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-4,.bx--grid--condensed .bx--col-max-4{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-4,.bx--grid--narrow .bx--col-max-4{padding-right:1rem;padding-left:0}.bx--col-max-5{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-5,.bx--grid--condensed .bx--col-max-5{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-5,.bx--grid--narrow .bx--col-max-5{padding-right:1rem;padding-left:0}.bx--col-max-6{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-6,.bx--grid--condensed .bx--col-max-6{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-6,.bx--grid--narrow .bx--col-max-6{padding-right:1rem;padding-left:0}.bx--col-max-7{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-7,.bx--grid--condensed .bx--col-max-7{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-7,.bx--grid--narrow .bx--col-max-7{padding-right:1rem;padding-left:0}.bx--col-max-8{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-8,.bx--grid--condensed .bx--col-max-8{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-8,.bx--grid--narrow .bx--col-max-8{padding-right:1rem;padding-left:0}.bx--col-max-9{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-9,.bx--grid--condensed .bx--col-max-9{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-9,.bx--grid--narrow .bx--col-max-9{padding-right:1rem;padding-left:0}.bx--col-max-10{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-10,.bx--grid--condensed .bx--col-max-10{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-10,.bx--grid--narrow .bx--col-max-10{padding-right:1rem;padding-left:0}.bx--col-max-11{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-11,.bx--grid--condensed .bx--col-max-11{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-11,.bx--grid--narrow .bx--col-max-11{padding-right:1rem;padding-left:0}.bx--col-max-12{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-12,.bx--grid--condensed .bx--col-max-12{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-12,.bx--grid--narrow .bx--col-max-12{padding-right:1rem;padding-left:0}.bx--col-max-13{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-13,.bx--grid--condensed .bx--col-max-13{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-13,.bx--grid--narrow .bx--col-max-13{padding-right:1rem;padding-left:0}.bx--col-max-14{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-14,.bx--grid--condensed .bx--col-max-14{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-14,.bx--grid--narrow .bx--col-max-14{padding-right:1rem;padding-left:0}.bx--col-max-15{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-15,.bx--grid--condensed .bx--col-max-15{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-15,.bx--grid--narrow .bx--col-max-15{padding-right:1rem;padding-left:0}.bx--col-max-16{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max-16,.bx--grid--condensed .bx--col-max-16{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max-16,.bx--grid--narrow .bx--col-max-16{padding-right:1rem;padding-left:0}.bx--col-max,.bx--col-max--auto{width:100%;padding-right:1rem;padding-left:1rem}.bx--row--condensed .bx--col-max,.bx--grid--condensed .bx--col-max,.bx--row--condensed .bx--col-max--auto,.bx--grid--condensed .bx--col-max--auto{padding-right:.03125rem;padding-left:.03125rem}.bx--row--narrow .bx--col-max,.bx--grid--narrow .bx--col-max,.bx--row--narrow .bx--col-max--auto,.bx--grid--narrow .bx--col-max--auto{padding-right:1rem;padding-left:0}@media (min-width: 99rem){.bx--col,.bx--col-max{max-width:100%;flex-basis:0;flex-grow:1}.bx--col--auto,.bx--col-max--auto{width:auto;max-width:100%;flex:1 0 0%}.bx--col-max-0{display:none}.bx--col-max-1{display:block;max-width:6.25%;flex:0 0 6.25%}.bx--col-max-2{display:block;max-width:12.5%;flex:0 0 12.5%}.bx--col-max-3{display:block;max-width:18.75%;flex:0 0 18.75%}.bx--col-max-4{display:block;max-width:25%;flex:0 0 25%}.bx--col-max-5{display:block;max-width:31.25%;flex:0 0 31.25%}.bx--col-max-6{display:block;max-width:37.5%;flex:0 0 37.5%}.bx--col-max-7{display:block;max-width:43.75%;flex:0 0 43.75%}.bx--col-max-8{display:block;max-width:50%;flex:0 0 50%}.bx--col-max-9{display:block;max-width:56.25%;flex:0 0 56.25%}.bx--col-max-10{display:block;max-width:62.5%;flex:0 0 62.5%}.bx--col-max-11{display:block;max-width:68.75%;flex:0 0 68.75%}.bx--col-max-12{display:block;max-width:75%;flex:0 0 75%}.bx--col-max-13{display:block;max-width:81.25%;flex:0 0 81.25%}.bx--col-max-14{display:block;max-width:87.5%;flex:0 0 87.5%}.bx--col-max-15{display:block;max-width:93.75%;flex:0 0 93.75%}.bx--col-max-16{display:block;max-width:100%;flex:0 0 100%}.bx--offset-max-0{margin-left:0}.bx--offset-max-1{margin-left:6.25%}.bx--offset-max-2{margin-left:12.5%}.bx--offset-max-3{margin-left:18.75%}.bx--offset-max-4{margin-left:25%}.bx--offset-max-5{margin-left:31.25%}.bx--offset-max-6{margin-left:37.5%}.bx--offset-max-7{margin-left:43.75%}.bx--offset-max-8{margin-left:50%}.bx--offset-max-9{margin-left:56.25%}.bx--offset-max-10{margin-left:62.5%}.bx--offset-max-11{margin-left:68.75%}.bx--offset-max-12{margin-left:75%}.bx--offset-max-13{margin-left:81.25%}.bx--offset-max-14{margin-left:87.5%}.bx--offset-max-15{margin-left:93.75%}}.bx--no-gutter,.bx--row.bx--no-gutter [class*=bx--col]{padding-right:0;padding-left:0}.bx--no-gutter--start,.bx--row.bx--no-gutter--start [class*=bx--col]{padding-left:0}.bx--no-gutter--end,.bx--row.bx--no-gutter--end [class*=bx--col]{padding-right:0}.bx--no-gutter--left,.bx--row.bx--no-gutter--left [class*=bx--col]{padding-left:0}.bx--no-gutter--right,.bx--row.bx--no-gutter--right [class*=bx--col]{padding-right:0}.bx--hang--start{padding-left:1rem}.bx--hang--end{padding-right:1rem}.bx--hang--left{padding-left:1rem}.bx--hang--right{padding-right:1rem}.bx--aspect-ratio{position:relative}.bx--aspect-ratio:before{width:1px;height:0;margin-left:-1px;content:"";float:left}.bx--aspect-ratio:after{display:table;clear:both;content:""}.bx--aspect-ratio--16x9:before{padding-top:56.25%}.bx--aspect-ratio--9x16:before{padding-top:177.7777777778%}.bx--aspect-ratio--2x1:before{padding-top:50%}.bx--aspect-ratio--1x2:before{padding-top:200%}.bx--aspect-ratio--4x3:before{padding-top:75%}.bx--aspect-ratio--3x4:before{padding-top:133.3333333333%}.bx--aspect-ratio--3x2:before{padding-top:66.6666666667%}.bx--aspect-ratio--2x3:before{padding-top:150%}.bx--aspect-ratio--1x1:before{padding-top:100%}.bx--aspect-ratio--object{position:absolute;top:0;left:0;width:100%;height:100%}@keyframes collapse-accordion{0%{height:100%;opacity:1;visibility:inherit}to{height:0;opacity:0;visibility:hidden}}@keyframes expand-accordion{0%{height:0;opacity:0;visibility:hidden}to{height:100%;opacity:1;visibility:inherit}}.bx--accordion{width:100%;list-style:none}.bx--accordion__item{overflow:visible;border-top:1px solid var(--cds-ui-03, #e0e0e0);transition:all .11s cubic-bezier(.2,0,.38,.9)}.bx--accordion__item:last-child{border-bottom:1px solid var(--cds-ui-03, #e0e0e0)}.bx--accordion__heading{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;position:relative;display:flex;width:100%;min-height:2.5rem;flex-direction:row-reverse;align-items:flex-start;justify-content:flex-start;padding:.625rem 0;margin:0;color:var(--cds-text-01, #161616);cursor:pointer;transition:background-color cubic-bezier(.2,0,.38,.9) .11s}.bx--accordion__heading::-moz-focus-inner{border:0}.bx--accordion__heading:hover:before,.bx--accordion__heading:focus:before{position:absolute;top:-1px;left:0;width:100%;height:calc(100% + 2px);content:""}.bx--accordion__heading:hover:before{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--accordion__heading:focus{outline:none}.bx--accordion__heading:focus:before{box-sizing:border-box;border:2px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--accordion__heading:focus:before{border-style:dotted}}.bx--accordion--xl .bx--accordion__heading,.bx--accordion--lg .bx--accordion__heading{min-height:3rem}.bx--accordion--sm .bx--accordion__heading{min-height:2rem;padding:.3125rem 0}.bx--accordion__heading[disabled]{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--accordion__heading[disabled] .bx--accordion__arrow{fill:var(--cds-disabled-02, #c6c6c6)}.bx--accordion__heading[disabled]:hover:before{background-color:#0000}.bx--accordion__item--disabled,.bx--accordion__item--disabled+.bx--accordion__item{border-top:1px solid var(--cds-disabled-01, #f4f4f4)}li.bx--accordion__item--disabled:last-of-type{border-bottom:1px solid var(--cds-disabled-01, #f4f4f4)}.bx--accordion__arrow{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;width:1rem;height:1rem;flex:0 0 1rem;margin:2px 1rem 0 0;fill:var(--cds-ui-05, #161616);transform:rotate(-270deg);transition:all .11s cubic-bezier(.2,0,.38,.9)}.bx--accordion__title{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);z-index:1;width:100%;margin:0 0 0 1rem;text-align:left}.bx--accordion__content{display:none;padding-right:1rem;padding-left:1rem;transition:padding cubic-bezier(.2,0,.38,.9) .11s}@media (min-width: 480px){.bx--accordion__content{padding-right:3rem}}@media (min-width: 640px){.bx--accordion__content{padding-right:25%}}.bx--accordion__content>p{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px)}.bx--accordion--start .bx--accordion__heading{flex-direction:row}.bx--accordion--start .bx--accordion__arrow{margin:2px 0 0 1rem}.bx--accordion--start .bx--accordion__title{margin-right:1rem}.bx--accordion--start .bx--accordion__content{margin-left:2rem}.bx--accordion__item--collapsing .bx--accordion__content,.bx--accordion__item--expanding .bx--accordion__content{display:block}.bx--accordion__item--collapsing .bx--accordion__content{animation:.11s cubic-bezier(.2,0,.38,.9) collapse-accordion}.bx--accordion__item--expanding .bx--accordion__content{animation:.11s cubic-bezier(.2,0,.38,.9) expand-accordion}.bx--accordion__item--active{overflow:visible}.bx--accordion__item--active .bx--accordion__content{display:block;padding-top:var(--cds-spacing-03, .5rem);padding-bottom:1.5rem;transition:padding-top cubic-bezier(0,0,.38,.9) .11s,padding-bottom cubic-bezier(0,0,.38,.9) .11s}.bx--accordion__item--active .bx--accordion__arrow{fill:var(--cds-ui-05, #161616);transform:rotate(-90deg)}.bx--accordion.bx--skeleton .bx--accordion__heading,.bx--accordion.bx--skeleton .bx--accordion__button{cursor:default}.bx--accordion.bx--skeleton .bx--accordion__arrow{cursor:default;fill:var(--cds-ui-05, #161616);pointer-events:none}.bx--accordion.bx--skeleton .bx--accordion__arrow:hover,.bx--accordion.bx--skeleton .bx--accordion__arrow:focus,.bx--accordion.bx--skeleton .bx--accordion__arrow:active{border:none;cursor:default;outline:none}.bx--accordion.bx--skeleton .bx--accordion__heading:hover:before{background-color:#0000}.bx--accordion--end.bx--skeleton .bx--accordion__arrow{margin-left:var(--cds-spacing-05, 1rem)}.bx--skeleton .bx--accordion__heading:focus .bx--accordion__arrow{border:none;cursor:default;outline:none}.bx--accordion__title.bx--skeleton__text{margin-bottom:0}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--accordion__arrow,.bx--accordion__item--active .bx--accordion__arrow{fill:ButtonText}}.bx--link{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:inline-flex;color:var(--cds-link-01, #0f62fe);outline:none;text-decoration:none;transition:color 70ms cubic-bezier(.2,0,.38,.9)}.bx--link:hover{color:var(--cds-hover-primary-text, #0043ce);text-decoration:underline}.bx--link:active,.bx--link:active:visited,.bx--link:active:visited:hover{color:var(--cds-text-01, #161616);text-decoration:underline}.bx--link:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--link:focus{outline-style:dotted}}.bx--link:visited{color:var(--cds-link-01, #0f62fe)}.bx--link:visited:hover{color:var(--cds-hover-primary-text, #0043ce)}.bx--link--disabled,.bx--link--disabled:hover{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed;font-weight:400;text-decoration:none}.bx--link.bx--link--visited:visited{color:var(--cds-visited-link, #8a3ffc)}.bx--link.bx--link--visited:visited:hover{color:var(--cds-hover-primary-text, #0043ce)}.bx--link.bx--link--inline{text-decoration:underline}.bx--link.bx--link--inline:focus,.bx--link.bx--link--inline:visited{text-decoration:none}.bx--link--disabled.bx--link--inline{text-decoration:underline}.bx--link--sm{font-size:var(--cds-helper-text-01-font-size, .75rem);line-height:var(--cds-helper-text-01-line-height, 1.33333);letter-spacing:var(--cds-helper-text-01-letter-spacing, .32px)}.bx--link--lg{font-size:var(--cds-body-short-02-font-size, 1rem);font-weight:var(--cds-body-short-02-font-weight, 400);line-height:var(--cds-body-short-02-line-height, 1.375);letter-spacing:var(--cds-body-short-02-letter-spacing, 0)}.bx--link__icon{display:inline-flex;align-self:center;margin-left:var(--cds-spacing-03, .5rem)}.bx--breadcrumb{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:inline}@media (min-width: 42rem){.bx--breadcrumb{display:flex;flex-wrap:wrap}}.bx--breadcrumb-item{position:relative;display:flex;align-items:center;margin-right:.5rem}.bx--breadcrumb-item .bx--link:visited{color:var(--cds-link-01, #0f62fe)}.bx--breadcrumb-item .bx--link:visited:hover{color:var(--cds-hover-primary-text, #0043ce)}.bx--breadcrumb-item:after{margin-left:.5rem;color:var(--cds-text-01, #161616);content:"/"}.bx--breadcrumb--no-trailing-slash .bx--breadcrumb-item:last-child:after{content:""}.bx--breadcrumb-item:last-child,.bx--breadcrumb-item:last-child:after{margin-right:0}.bx--breadcrumb .bx--link{white-space:nowrap}.bx--breadcrumb-item [aria-current=page],.bx--breadcrumb-item.bx--breadcrumb-item--current .bx--link{color:var(--cds-text-01, #161616);cursor:auto}.bx--breadcrumb-item [aria-current=page]:hover,.bx--breadcrumb-item.bx--breadcrumb-item--current .bx--link:hover{text-decoration:none}.bx--breadcrumb-item .bx--overflow-menu{position:relative;width:1.25rem;height:1.125rem}.bx--breadcrumb-item .bx--overflow-menu:focus{outline:1px solid var(--cds-focus, #0f62fe)}.bx--breadcrumb-item .bx--overflow-menu:hover{background:rgba(0,0,0,0)}.bx--breadcrumb-item .bx--overflow-menu:after{position:absolute;bottom:2px;width:.75rem;height:1px;background:var(--cds-hover-primary-text, #0043ce);content:"";opacity:0;transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--breadcrumb-item .bx--overflow-menu:after{transition:none}}.bx--breadcrumb-item .bx--overflow-menu:hover:after{opacity:1}.bx--breadcrumb-item .bx--overflow-menu.bx--overflow-menu--open{background:rgba(0,0,0,0);box-shadow:none}.bx--breadcrumb-item .bx--overflow-menu__icon{position:relative;fill:var(--cds-link-01, #0f62fe);transform:translateY(4px)}.bx--breadcrumb-item .bx--overflow-menu:hover .bx--overflow-menu__icon{fill:var(--cds-hover-primary-text, #0043ce)}.bx--breadcrumb-menu-options:focus{outline:none}.bx--breadcrumb-menu-options.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after{top:-.4375rem;left:.875rem;width:0;height:0;border-right:.4375rem solid rgba(0,0,0,0);border-bottom:.4375rem solid var(--cds-field-01, #f4f4f4);border-left:.4375rem solid rgba(0,0,0,0);margin:0 auto;background:rgba(0,0,0,0)}.bx--breadcrumb.bx--skeleton .bx--link{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:6.25rem;height:1rem}.bx--breadcrumb.bx--skeleton .bx--link:hover,.bx--breadcrumb.bx--skeleton .bx--link:focus,.bx--breadcrumb.bx--skeleton .bx--link:active{border:none;cursor:default;outline:none}.bx--breadcrumb.bx--skeleton .bx--link:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--breadcrumb.bx--skeleton .bx--link:before{animation:none}}.bx--btn{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:relative;display:inline-flex;max-width:20rem;min-height:3rem;flex-shrink:0;align-items:center;justify-content:space-between;padding:calc(.875rem - 3px) 63px calc(.875rem - 3px) 15px;margin:0;border-radius:0;cursor:pointer;outline:none;text-align:left;text-decoration:none;transition:background 70ms cubic-bezier(0,0,.38,.9),box-shadow 70ms cubic-bezier(0,0,.38,.9),border-color 70ms cubic-bezier(0,0,.38,.9),outline 70ms cubic-bezier(0,0,.38,.9);vertical-align:top}.bx--btn:disabled,.bx--btn:hover:disabled,.bx--btn:focus:disabled,.bx--btn.bx--btn--disabled,.bx--btn.bx--btn--disabled:hover,.bx--btn.bx--btn--disabled:focus{border-color:var(--cds-disabled-02, #c6c6c6);background:var(--cds-disabled-02, #c6c6c6);box-shadow:none;color:var(--cds-disabled-03, #8d8d8d);cursor:not-allowed}.bx--btn .bx--btn__icon{position:absolute;right:1rem;width:1rem;height:1rem;flex-shrink:0}.bx--btn::-moz-focus-inner{padding:0;border:0}.bx--btn--primary{border-width:1px;border-style:solid;border-color:#0000;background-color:var(--cds-interactive-01, #0f62fe);color:var(--cds-text-04, #ffffff)}.bx--btn--primary:hover{background-color:var(--cds-hover-primary, #0353e9)}.bx--btn--primary:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--primary:active{background-color:var(--cds-active-primary, #002d9c)}.bx--btn--primary .bx--btn__icon,.bx--btn--primary .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--primary:hover{color:var(--cds-text-04, #ffffff)}.bx--btn--secondary{border-width:1px;border-style:solid;border-color:#0000;background-color:var(--cds-interactive-02, #393939);color:var(--cds-text-04, #ffffff)}.bx--btn--secondary:hover{background-color:var(--cds-hover-secondary, #4c4c4c)}.bx--btn--secondary:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--secondary:active{background-color:var(--cds-active-secondary, #6f6f6f)}.bx--btn--secondary .bx--btn__icon,.bx--btn--secondary .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--secondary:hover,.bx--btn--secondary:focus{color:var(--cds-text-04, #ffffff)}.bx--btn--tertiary{border-width:1px;border-style:solid;border-color:var(--cds-interactive-03, #0f62fe);background-color:#0000;color:var(--cds-interactive-03, #0f62fe)}.bx--btn--tertiary:hover{background-color:var(--cds-hover-tertiary, #0353e9)}.bx--btn--tertiary:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--tertiary:active{background-color:var(--cds-active-tertiary, #002d9c)}.bx--btn--tertiary .bx--btn__icon,.bx--btn--tertiary .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--tertiary:hover{color:var(--cds-inverse-01, #ffffff)}.bx--btn--tertiary:focus{background-color:var(--cds-interactive-03, #0f62fe);color:var(--cds-inverse-01, #ffffff)}.bx--btn--tertiary:active{border-color:#0000;background-color:var(--cds-active-tertiary, #002d9c);color:var(--cds-inverse-01, #ffffff)}.bx--btn--tertiary:disabled,.bx--btn--tertiary:hover:disabled,.bx--btn--tertiary:focus:disabled,.bx--btn--tertiary.bx--btn--disabled,.bx--btn--tertiary.bx--btn--disabled:hover,.bx--btn--tertiary.bx--btn--disabled:focus{background:rgba(0,0,0,0);color:var(--cds-disabled-03, #8d8d8d);outline:none}.bx--btn--ghost{border-width:1px;border-style:solid;border-color:#0000;background-color:#0000;color:var(--cds-link-01, #0f62fe);padding:calc(.875rem - 3px) 16px}.bx--btn--ghost:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--btn--ghost:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--ghost .bx--btn__icon,.bx--btn--ghost .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--ghost .bx--btn__icon{position:static;margin-left:.5rem}.bx--btn--ghost:hover,.bx--btn--ghost:active{color:var(--cds-hover-primary-text, #0043ce)}.bx--btn--ghost:active{background-color:var(--cds-active-ui, #c6c6c6)}.bx--btn--ghost:disabled,.bx--btn--ghost:hover:disabled,.bx--btn--ghost:focus:disabled,.bx--btn--ghost.bx--btn--disabled,.bx--btn--ghost.bx--btn--disabled:hover,.bx--btn--ghost.bx--btn--disabled:focus{border-color:#0000;background:rgba(0,0,0,0);color:var(--cds-disabled-03, #8d8d8d);outline:none}.bx--btn--ghost.bx--btn--sm{padding:calc(.375rem - 3px) 16px}.bx--btn--ghost.bx--btn--field,.bx--btn--ghost.bx--btn--md{padding:calc(.675rem - 3px) 16px}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus{outline-style:dotted}}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus{outline:1px solid rgba(0,0,0,0)}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus svg{outline-style:dotted}}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{display:inline-block}}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after{transition:none}}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--a11y:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--a11y:after{transition:none}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:before{width:0;height:0;border-style:solid;content:""}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:after{content:attr(aria-label)}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--a11y:after{content:none}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus:after{opacity:1}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible+.bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover+.bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible+.bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover+.bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover.bx--tooltip--a11y:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus+.bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--hidden .bx--assistive-text,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger svg,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:hover svg,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus svg{fill:currentColor}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--btn--disabled.bx--tooltip--a11y:before,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--btn--disabled.bx--tooltip--a11y:after,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger.bx--btn--disabled .bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0);opacity:0}.bx--btn.bx--btn--icon-only:not(.bx--tooltip--hidden) .bx--assistive-text{pointer-events:all}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus{border-color:var(--cds-focus, #0f62fe)}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:active:not([disabled]){border-color:#0000}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger:focus svg{outline-color:#0000}.bx--btn.bx--btn--icon-only.bx--tooltip__trigger[disabled]:hover,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger[disabled]:focus,.bx--btn.bx--btn--icon-only.bx--tooltip__trigger[disabled]:active{cursor:not-allowed;fill:var(--cds-disabled-03, #8d8d8d)}.bx--tooltip__trigger.bx--btn--icon-only--top{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--btn--icon-only--top:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--top:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--top:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--top:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--top:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--top:before,.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--top:before,.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--btn--icon-only--top:before,.bx--tooltip__trigger.bx--btn--icon-only--top:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--btn--icon-only--top:before,.bx--tooltip__trigger.bx--btn--icon-only--top:after{transition:none}}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--btn--icon-only--top:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--btn--icon-only--top:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--btn--icon-only--top:hover:before,.bx--tooltip__trigger.bx--btn--icon-only--top:hover:after,.bx--tooltip__trigger.bx--btn--icon-only--top:focus:before,.bx--tooltip__trigger.bx--btn--icon-only--top:focus:after{opacity:1}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--top:before,.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--top:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top:after,.bx--tooltip__trigger.bx--btn--icon-only--top .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top+.bx--assistive-text{top:-.8125rem;left:50%;transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-start+.bx--assistive-text{top:-.8125rem;left:0;transform:translateY(-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-center+.bx--assistive-text{top:-.8125rem;left:50%;transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--top.bx--tooltip--align-end+.bx--assistive-text{top:-.8125rem;right:0;left:auto;transform:translateY(-100%)}.bx--tooltip__trigger.bx--btn--icon-only--right{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--btn--icon-only--right:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--right:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--right:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--right:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--right:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--right:before,.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--right:before,.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--btn--icon-only--right:before,.bx--tooltip__trigger.bx--btn--icon-only--right:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--btn--icon-only--right:before,.bx--tooltip__trigger.bx--btn--icon-only--right:after{transition:none}}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--btn--icon-only--right:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--btn--icon-only--right:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--btn--icon-only--right:hover:before,.bx--tooltip__trigger.bx--btn--icon-only--right:hover:after,.bx--tooltip__trigger.bx--btn--icon-only--right:focus:before,.bx--tooltip__trigger.bx--btn--icon-only--right:focus:after{opacity:1}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--right:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--right:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--right:before,.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--btn--icon-only--right:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right:after,.bx--tooltip__trigger.bx--btn--icon-only--right .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-start+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-center+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--right.bx--tooltip--align-end+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--bottom:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--bottom:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--btn--icon-only--bottom:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--btn--icon-only--bottom:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:after{transition:none}}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--btn--icon-only--bottom:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--btn--icon-only--bottom:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus:after{opacity:1}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--bottom:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--bottom:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:-.8125rem;left:0;transform:translateY(100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:-.8125rem;right:0;left:auto;transform:translateY(100%)}.bx--tooltip__trigger.bx--btn--icon-only--left{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--btn--icon-only--left:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--left:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--left:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--left:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--left:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--btn--icon-only--left:before,.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--left:before,.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--btn--icon-only--left:before,.bx--tooltip__trigger.bx--btn--icon-only--left:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--btn--icon-only--left:before,.bx--tooltip__trigger.bx--btn--icon-only--left:after{transition:none}}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--btn--icon-only--left:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--btn--icon-only--left:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--btn--icon-only--left:hover:before,.bx--tooltip__trigger.bx--btn--icon-only--left:hover:after,.bx--tooltip__trigger.bx--btn--icon-only--left:focus:before,.bx--tooltip__trigger.bx--btn--icon-only--left:focus:after{opacity:1}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--left:hover .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--btn--icon-only--left:focus .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--left:before,.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--btn--icon-only--left:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left:after,.bx--tooltip__trigger.bx--btn--icon-only--left .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-start+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-center+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--btn--icon-only--left.bx--tooltip--align-end+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--btn--icon-only{padding-right:.9375rem;padding-left:.9375rem}.bx--btn--icon-only .bx--btn__icon{position:static}.bx--btn--icon-only.bx--btn--ghost .bx--btn__icon,.bx--btn--icon-only.bx--btn--danger--ghost .bx--btn__icon{margin:0}.bx--btn--icon-only.bx--btn--selected{background:var(--cds-selected-ui, #e0e0e0)}.bx--btn path[data-icon-path=inner-path]{fill:none}.bx--btn--ghost.bx--btn--icon-only .bx--btn__icon path:not([data-icon-path]):not([fill=none]),.bx--btn--ghost.bx--btn--icon-only .bx--btn__icon{fill:var(--cds-icon-01, #161616)}.bx--btn--ghost.bx--btn--icon-only[disabled] .bx--btn__icon path:not([data-icon-path]):not([fill=none]),.bx--btn--ghost.bx--btn--icon-only[disabled] .bx--btn__icon,.bx--btn.bx--btn--icon-only.bx--btn--ghost[disabled]:hover .bx--btn__icon{fill:var(--cds-disabled-03, #8d8d8d)}.bx--btn--ghost.bx--btn--icon-only[disabled]{cursor:not-allowed}.bx--btn--field.bx--btn--icon-only,.bx--btn--md.bx--btn--icon-only{padding-right:.6875rem;padding-left:.6875rem}.bx--btn--sm.bx--btn--icon-only{padding-right:.4375rem;padding-left:.4375rem}.bx--btn--danger{border-width:1px;border-style:solid;border-color:#0000;background-color:var(--cds-danger-01, #da1e28);color:var(--cds-text-04, #ffffff)}.bx--btn--danger:hover{background-color:var(--cds-hover-danger, #b81921)}.bx--btn--danger:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--danger:active{background-color:var(--cds-active-danger, #750e13)}.bx--btn--danger .bx--btn__icon,.bx--btn--danger .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--danger:hover{color:var(--cds-text-04, #ffffff)}.bx--btn--danger-tertiary,.bx--btn--danger--tertiary{border-width:1px;border-style:solid;border-color:var(--cds-danger-02, #da1e28);background-color:#0000;color:var(--cds-danger-02, #da1e28)}.bx--btn--danger-tertiary:hover,.bx--btn--danger--tertiary:hover{background-color:var(--cds-hover-danger, #b81921)}.bx--btn--danger-tertiary:focus,.bx--btn--danger--tertiary:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--danger-tertiary:active,.bx--btn--danger--tertiary:active{background-color:var(--cds-active-danger, #750e13)}.bx--btn--danger-tertiary .bx--btn__icon,.bx--btn--danger-tertiary .bx--btn__icon path:not([data-icon-path]):not([fill=none]),.bx--btn--danger--tertiary .bx--btn__icon,.bx--btn--danger--tertiary .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--danger-tertiary:hover,.bx--btn--danger--tertiary:hover{border-color:var(--cds-hover-danger, #b81921);color:var(--cds-text-04, #ffffff)}.bx--btn--danger-tertiary:focus,.bx--btn--danger--tertiary:focus{background-color:var(--cds-danger-01, #da1e28);color:var(--cds-text-04, #ffffff)}.bx--btn--danger-tertiary:active,.bx--btn--danger--tertiary:active{border-color:var(--cds-active-danger, #750e13);color:var(--cds-text-04, #ffffff)}.bx--btn--danger-tertiary:disabled,.bx--btn--danger-tertiary:hover:disabled,.bx--btn--danger-tertiary:focus:disabled,.bx--btn--danger-tertiary.bx--btn--disabled,.bx--btn--danger-tertiary.bx--btn--disabled:hover,.bx--btn--danger-tertiary.bx--btn--disabled:focus,.bx--btn--danger--tertiary:disabled,.bx--btn--danger--tertiary:hover:disabled,.bx--btn--danger--tertiary:focus:disabled,.bx--btn--danger--tertiary.bx--btn--disabled,.bx--btn--danger--tertiary.bx--btn--disabled:hover,.bx--btn--danger--tertiary.bx--btn--disabled:focus{background:rgba(0,0,0,0);color:var(--cds-disabled-03, #8d8d8d);outline:none}.bx--btn--danger-ghost,.bx--btn--danger--ghost{border-width:1px;border-style:solid;border-color:#0000;background-color:#0000;color:var(--cds-danger-02, #da1e28);padding:calc(.875rem - 3px) 16px}.bx--btn--danger-ghost:hover,.bx--btn--danger--ghost:hover{background-color:var(--cds-hover-danger, #b81921)}.bx--btn--danger-ghost:focus,.bx--btn--danger--ghost:focus{border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 1px var(--cds-focus, #0f62fe),inset 0 0 0 2px var(--cds-ui-background, #ffffff)}.bx--btn--danger-ghost:active,.bx--btn--danger--ghost:active{background-color:var(--cds-active-danger, #750e13)}.bx--btn--danger-ghost .bx--btn__icon,.bx--btn--danger-ghost .bx--btn__icon path:not([data-icon-path]):not([fill=none]),.bx--btn--danger--ghost .bx--btn__icon,.bx--btn--danger--ghost .bx--btn__icon path:not([data-icon-path]):not([fill=none]){fill:currentColor}.bx--btn--danger-ghost .bx--btn__icon,.bx--btn--danger--ghost .bx--btn__icon{position:static;margin-left:.5rem}.bx--btn--danger-ghost:hover,.bx--btn--danger-ghost:active,.bx--btn--danger--ghost:hover,.bx--btn--danger--ghost:active{color:var(--cds-text-04, #ffffff)}.bx--btn--danger-ghost:disabled,.bx--btn--danger-ghost:hover:disabled,.bx--btn--danger-ghost:focus:disabled,.bx--btn--danger-ghost.bx--btn--disabled,.bx--btn--danger-ghost.bx--btn--disabled:hover,.bx--btn--danger-ghost.bx--btn--disabled:focus,.bx--btn--danger--ghost:disabled,.bx--btn--danger--ghost:hover:disabled,.bx--btn--danger--ghost:focus:disabled,.bx--btn--danger--ghost.bx--btn--disabled,.bx--btn--danger--ghost.bx--btn--disabled:hover,.bx--btn--danger--ghost.bx--btn--disabled:focus{border-color:#0000;background:rgba(0,0,0,0);color:var(--cds-disabled-02, #c6c6c6);outline:none}.bx--btn--danger-ghost.bx--btn--sm,.bx--btn--danger--ghost.bx--btn--sm{padding:calc(.375rem - 3px) 16px}.bx--btn--danger-ghost.bx--btn--field,.bx--btn--danger-ghost.bx--btn--md,.bx--btn--danger--ghost.bx--btn--field,.bx--btn--danger--ghost.bx--btn--md{padding:calc(.675rem - 3px) 16px}.bx--btn--sm{min-height:2rem;padding:calc(.375rem - 3px) 60px calc(.375rem - 3px) 12px}.bx--btn--xl:not(.bx--btn--icon-only){align-items:baseline;padding-top:var(--cds-spacing-05, 1rem);padding-right:var(--cds-spacing-10, 4rem);padding-left:var(--cds-spacing-05, 1rem);min-height:5rem}.bx--btn--lg:not(.bx--btn--icon-only){align-items:baseline;padding-top:var(--cds-spacing-05, 1rem);padding-right:var(--cds-spacing-10, 4rem);padding-left:var(--cds-spacing-05, 1rem);min-height:4rem}.bx--btn--field,.bx--btn--md{min-height:2.5rem;padding:calc(.675rem - 3px) 60px calc(.675rem - 3px) 12px}.bx--btn--expressive{font-size:var(--cds-body-short-02-font-size, 1rem);font-weight:var(--cds-body-short-02-font-weight, 400);line-height:var(--cds-body-short-02-line-height, 1.375);letter-spacing:var(--cds-body-short-02-letter-spacing, 0);min-height:3rem}.bx--btn--icon-only.bx--btn--expressive{padding:12px 13px}.bx--btn.bx--btn--expressive .bx--btn__icon{width:1.25rem;height:1.25rem}.bx--btn-set .bx--btn.bx--btn--expressive{max-width:20rem}.bx--btn.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:9.375rem}.bx--btn.bx--skeleton:hover,.bx--btn.bx--skeleton:focus,.bx--btn.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--btn.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--btn.bx--skeleton:before{animation:none}}.bx--btn-set{display:flex}.bx--btn-set--stacked{flex-direction:column}.bx--btn-set .bx--btn{width:100%;max-width:12.25rem}.bx--btn-set .bx--btn:not(:focus){box-shadow:-.0625rem 0 0 0 var(--cds-button-separator, #e0e0e0)}.bx--btn-set .bx--btn:first-of-type:not(:focus){box-shadow:inherit}.bx--btn-set .bx--btn:focus+.bx--btn{box-shadow:inherit}.bx--btn-set--stacked .bx--btn:not(:focus){box-shadow:0 -.0625rem 0 0 var(--cds-button-separator, #e0e0e0)}.bx--btn-set--stacked .bx--btn:first-of-type:not(:focus){box-shadow:inherit}.bx--btn-set .bx--btn.bx--btn--disabled{box-shadow:-.0625rem 0 0 0 var(--cds-disabled-03, #8d8d8d)}.bx--btn-set .bx--btn.bx--btn--disabled:first-of-type{box-shadow:none}.bx--btn-set--stacked .bx--btn.bx--btn--disabled{box-shadow:0 -.0625rem 0 0 var(--cds-disabled-03, #8d8d8d)}.bx--btn-set--stacked .bx--btn.bx--btn--disabled:first-of-type{box-shadow:none}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--btn:focus{color:Highlight;outline:1px solid Highlight}.bx--btn--ghost.bx--btn--icon-only .bx--btn__icon path:not([data-icon-path]):not([fill=none]),.bx--btn--ghost.bx--btn--icon-only .bx--btn__icon{fill:ButtonText}}.bx--fieldset{margin-bottom:2rem}.bx--fieldset--no-margin{margin-bottom:0}.bx--form-item{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;flex:1 1 auto;flex-direction:column;align-items:flex-start}.bx--label{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);display:inline-block;margin-bottom:.5rem;color:var(--cds-text-02, #525252);font-weight:400;line-height:1rem;vertical-align:baseline}.bx--label .bx--tooltip__trigger{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px)}.bx--label.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:4.6875rem;height:.875rem}.bx--label.bx--skeleton:hover,.bx--label.bx--skeleton:focus,.bx--label.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--label.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--label.bx--skeleton:before{animation:none}}input[type=number]{font-family:IBM Plex Mono,Menlo,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier,monospace}input[data-invalid]:not(:focus),.bx--number[data-invalid] input[type=number]:not(:focus),.bx--text-input__field-wrapper[data-invalid]>.bx--text-input--invalid:not(:focus),.bx--text-area__wrapper[data-invalid]>.bx--text-area--invalid:not(:focus),.bx--select-input__wrapper[data-invalid] .bx--select-input:not(:focus),.bx--list-box[data-invalid]:not(:focus),.bx--combo-box[data-invalid] .bx--text-input:not(:focus){outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px}@media screen and (prefers-contrast){input[data-invalid]:not(:focus),.bx--number[data-invalid] input[type=number]:not(:focus),.bx--text-input__field-wrapper[data-invalid]>.bx--text-input--invalid:not(:focus),.bx--text-area__wrapper[data-invalid]>.bx--text-area--invalid:not(:focus),.bx--select-input__wrapper[data-invalid] .bx--select-input:not(:focus),.bx--list-box[data-invalid]:not(:focus),.bx--combo-box[data-invalid] .bx--text-input:not(:focus){outline-style:dotted}}input[data-invalid]~.bx--form-requirement,.bx--number[data-invalid] .bx--number__input-wrapper~.bx--form-requirement,.bx--number__input-wrapper--warning~.bx--form-requirement,.bx--date-picker-input__wrapper~.bx--form-requirement,.bx--date-picker-input__wrapper--warn~.bx--form-requirement,.bx--date-picker-input__wrapper--invalid~.bx--form-requirement,.bx--time-picker--invalid~.bx--form-requirement,.bx--text-input__field-wrapper[data-invalid]~.bx--form-requirement,.bx--text-input__field-wrapper--warning~.bx--form-requirement,.bx--text-input__field-wrapper--warning>.bx--text-input~.bx--form-requirement,.bx--text-area__wrapper[data-invalid]~.bx--form-requirement,.bx--select-input__wrapper[data-invalid]~.bx--form-requirement,.bx--select--warning .bx--select-input__wrapper~.bx--form-requirement,.bx--time-picker[data-invalid]~.bx--form-requirement,.bx--list-box[data-invalid]~.bx--form-requirement,.bx--list-box--warning~.bx--form-requirement{display:block;overflow:visible;max-height:12.5rem;font-weight:400}input[data-invalid]~.bx--form-requirement,.bx--number[data-invalid] .bx--number__input-wrapper~.bx--form-requirement,.bx--date-picker-input__wrapper~.bx--form-requirement,.bx--date-picker-input__wrapper--invalid~.bx--form-requirement,.bx--time-picker--invalid~.bx--form-requirement,.bx--text-input__field-wrapper[data-invalid]~.bx--form-requirement,.bx--text-area__wrapper[data-invalid]~.bx--form-requirement,.bx--select-input__wrapper[data-invalid]~.bx--form-requirement,.bx--time-picker[data-invalid]~.bx--form-requirement,.bx--list-box[data-invalid]~.bx--form-requirement{color:var(--cds-text-error, #da1e28)}.bx--form--fluid .bx--text-input__field-wrapper[data-invalid],.bx--form--fluid .bx--text-input__field-wrapper--warning{display:block}.bx--form--fluid .bx--fieldset{margin:0}.bx--form--fluid input[data-invalid]{outline:none}.bx--form--fluid .bx--form-requirement{padding:.5rem 2.5rem .5rem 1rem;margin:0}input:not(output):not([data-invalid]):-moz-ui-invalid{box-shadow:none}.bx--form-requirement{font-size:var(--cds-caption-01-font-size, .75rem);font-weight:var(--cds-caption-01-font-weight, 400);line-height:var(--cds-caption-01-line-height, 1.33333);letter-spacing:var(--cds-caption-01-letter-spacing, .32px);display:none;overflow:hidden;max-height:0;margin:.25rem 0 0}.bx--select--inline .bx--form__helper-text{margin-top:0}.bx--form__helper-text{font-size:var(--cds-helper-text-01-font-size, .75rem);line-height:var(--cds-helper-text-01-line-height, 1.33333);letter-spacing:var(--cds-helper-text-01-letter-spacing, .32px);z-index:0;width:100%;margin-top:.25rem;color:var(--cds-text-02, #525252);opacity:1}.bx--label--disabled,.bx--form__helper-text--disabled,fieldset[disabled] .bx--label,fieldset[disabled] .bx--form__helper-text{color:var(--cds-disabled-02, #c6c6c6)}.bx--form-item.bx--checkbox-wrapper{position:relative;margin-bottom:.25rem}.bx--form-item.bx--checkbox-wrapper:first-of-type{margin-top:.1875rem}.bx--label+.bx--form-item.bx--checkbox-wrapper{margin-top:-.125rem}.bx--form-item.bx--checkbox-wrapper:last-of-type{margin-bottom:.1875rem}.bx--checkbox{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap;top:1.25rem;left:.7rem}.bx--checkbox-label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:relative;display:flex;min-height:1.5rem;padding-top:.1875rem;padding-left:1.25rem;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--checkbox-label-text{padding-left:.375rem}.bx--checkbox-label:before,.bx--checkbox-label:after{box-sizing:border-box}.bx--checkbox-label:before{position:absolute;top:.125rem;left:0;width:1rem;height:1rem;border:1px solid var(--cds-icon-01, #161616);margin:.125rem .125rem .125rem .1875rem;background-color:#0000;border-radius:1px;content:""}.bx--checkbox-label:after{position:absolute;top:.5rem;left:.4375rem;width:.5625rem;height:.3125rem;border-bottom:2px solid var(--cds-inverse-01, #ffffff);border-left:2px solid var(--cds-inverse-01, #ffffff);margin-top:-.1875rem;background:none;content:"";transform:scale(0) rotate(-45deg);transform-origin:bottom right}.bx--checkbox:checked+.bx--checkbox-label:before,.bx--checkbox:indeterminate+.bx--checkbox-label:before,.bx--checkbox-label[data-contained-checkbox-state=true]:before,.bx--checkbox-label[data-contained-checkbox-state=mixed]:before{border-width:1px;border-color:var(--cds-icon-01, #161616);background-color:var(--cds-icon-01, #161616)}.bx--checkbox:checked+.bx--checkbox-label:after,.bx--checkbox-label[data-contained-checkbox-state=true]:after{transform:scale(1) rotate(-45deg)}.bx--checkbox:indeterminate+.bx--checkbox-label:after,.bx--checkbox-label[data-contained-checkbox-state=mixed]:after{top:.6875rem;width:.5rem;border-bottom:2px solid var(--cds-inverse-01, #ffffff);border-left:0 solid var(--cds-inverse-01, #ffffff);transform:scale(1) rotate(0)}.bx--checkbox:focus+.bx--checkbox-label:before,.bx--checkbox-label__focus:before,.bx--checkbox:checked:focus+.bx--checkbox-label:before,.bx--checkbox-label[data-contained-checkbox-state=true].bx--checkbox-label__focus:before,.bx--checkbox:indeterminate:focus+.bx--checkbox-label:before,.bx--checkbox-label[data-contained-checkbox-state=mixed].bx--checkbox-label__focus:before{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:1px}.bx--checkbox:disabled+.bx--checkbox-label,.bx--checkbox-label[data-contained-checkbox-disabled=true]{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--checkbox:disabled+.bx--checkbox-label:before,.bx--checkbox-label[data-contained-checkbox-disabled=true]:before{border-color:var(--cds-disabled-02, #c6c6c6)}.bx--checkbox:checked:disabled+.bx--checkbox-label:before,.bx--checkbox:indeterminate:disabled+.bx--checkbox-label:before,.bx--checkbox-label[data-contained-checkbox-state=true][data-contained-checkbox-disabled=true]:before,.bx--checkbox-label[data-contained-checkbox-state=mixed][data-contained-checkbox-disabled=true]:before{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--checkbox-label-text.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:6.25rem;height:var(--cds-spacing-05, 1rem);margin:.0625rem 0 0 .375rem}.bx--checkbox-label-text.bx--skeleton:hover,.bx--checkbox-label-text.bx--skeleton:focus,.bx--checkbox-label-text.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--checkbox-label-text.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--checkbox-label-text.bx--skeleton:before{animation:none}}.bx--checkbox--inline{position:relative}.bx--snippet--disabled,.bx--snippet--disabled .bx--btn.bx--snippet-btn--expand{background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6)}.bx--snippet--disabled .bx--snippet-btn--expand:hover,.bx--snippet--disabled .bx--copy-btn:hover{background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--snippet--disabled .bx--snippet__icon,.bx--snippet--disabled .bx--snippet-btn--expand .bx--icon-chevron--down{fill:var(--cds-disabled-02, #c6c6c6)}.bx--snippet code{font-family:var(--cds-code-01-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-01-font-size, .75rem);font-weight:var(--cds-code-01-font-weight, 400);line-height:var(--cds-code-01-line-height, 1.33333);letter-spacing:var(--cds-code-01-letter-spacing, .32px)}.bx--snippet--inline{position:relative;display:inline;padding:0;border:2px solid rgba(0,0,0,0);background-color:var(--cds-field-01, #f4f4f4);border-radius:4px;color:var(--cds-text-01, #161616);cursor:pointer}.bx--snippet--inline:hover{background-color:var(--cds-ui-03, #e0e0e0)}.bx--snippet--inline:active{background-color:var(--cds-active-ui, #c6c6c6)}.bx--snippet--inline:focus{border:2px solid var(--cds-focus, #0f62fe);outline:none}.bx--snippet--inline:before{position:absolute;z-index:6000;width:0;height:0;border-style:solid;content:"";display:none}.bx--snippet--inline .bx--copy-btn__feedback{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:none;overflow:visible;box-sizing:content-box;margin:auto;clip:auto}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--snippet--inline .bx--copy-btn__feedback{width:auto}}@supports (-ms-accelerator: true){.bx--snippet--inline .bx--copy-btn__feedback{width:auto}}@supports (-ms-ime-align: auto){.bx--snippet--inline .bx--copy-btn__feedback{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--snippet--inline .bx--copy-btn__feedback{border:1px solid rgba(0,0,0,0)}}.bx--snippet--inline .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--snippet--inline:before,.bx--snippet--inline:after,.bx--snippet--inline .bx--assistive-text,.bx--snippet--inline+.bx--assistive-text{bottom:0;left:50%}.bx--snippet--inline:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--snippet--inline:after,.bx--snippet--inline .bx--assistive-text,.bx--snippet--inline+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--snippet--inline.bx--copy-btn--animating:before,.bx--snippet--inline.bx--copy-btn--animating .bx--copy-btn__feedback{display:block}.bx--snippet--inline.bx--copy-btn--animating.bx--copy-btn--fade-out:before,.bx--snippet--inline.bx--copy-btn--animating.bx--copy-btn--fade-out .bx--copy-btn__feedback{animation:.11s cubic-bezier(.2,0,.38,.9) hide-feedback}.bx--snippet--inline.bx--copy-btn--animating.bx--copy-btn--fade-in:before,.bx--snippet--inline.bx--copy-btn--animating.bx--copy-btn--fade-in .bx--copy-btn__feedback{animation:.11s cubic-bezier(.2,0,.38,.9) show-feedback}.bx--snippet--inline code{padding:0 var(--cds-spacing-03, .5rem)}.bx--snippet--inline.bx--snippet--no-copy{display:inline-block}.bx--snippet--inline.bx--snippet--no-copy:hover{background-color:var(--cds-field-01, #f4f4f4);cursor:auto}.bx--snippet--light.bx--snippet--inline.bx--snippet--no-copy:hover{background-color:var(--cds-field-02, #ffffff);cursor:auto}.bx--snippet--single{font-family:var(--cds-code-01-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-01-font-size, .75rem);font-weight:var(--cds-code-01-font-weight, 400);line-height:var(--cds-code-01-line-height, 1.33333);letter-spacing:var(--cds-code-01-letter-spacing, .32px);position:relative;width:100%;max-width:48rem;background-color:var(--cds-field-01, #f4f4f4);display:flex;height:2.5rem;align-items:center;padding-right:2.5rem}.bx--snippet--single.bx--snippet--no-copy{padding:0}.bx--snippet--single.bx--snippet--no-copy:after{right:1rem}.bx--snippet--single .bx--snippet-container{position:relative;display:flex;height:100%;align-items:center;padding-left:1rem;overflow-x:auto}.bx--snippet--single .bx--snippet-container:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--snippet--single .bx--snippet-container:focus{outline-style:dotted}}.bx--snippet--single pre{font-family:var(--cds-code-01-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-01-font-size, .75rem);font-weight:var(--cds-code-01-font-weight, 400);line-height:var(--cds-code-01-line-height, 1.33333);letter-spacing:var(--cds-code-01-letter-spacing, .32px);padding-right:var(--cds-spacing-03, .5rem)}.bx--snippet--single pre,.bx--snippet--inline code{white-space:pre}.bx--snippet--multi{font-family:var(--cds-code-01-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-01-font-size, .75rem);font-weight:var(--cds-code-01-font-weight, 400);line-height:var(--cds-code-01-line-height, 1.33333);letter-spacing:var(--cds-code-01-letter-spacing, .32px);position:relative;width:100%;max-width:48rem;background-color:var(--cds-field-01, #f4f4f4);display:flex;padding:1rem}.bx--snippet--multi .bx--snippet-container{position:relative;min-height:100%;max-height:100%;order:1;overflow-y:auto;transition:max-height .15s cubic-bezier(.2,0,.38,.9)}.bx--snippet--multi.bx--snippet--expand .bx--snippet-container{padding-bottom:var(--cds-spacing-05, 1rem);transition:max-height .15s cubic-bezier(.2,0,.38,.9)}.bx--snippet--multi.bx--snippet--wraptext pre{white-space:pre-wrap;word-wrap:break-word}.bx--snippet--multi .bx--snippet-container pre{padding-right:2.5rem;padding-bottom:1.5rem;overflow-x:auto}.bx--snippet--multi.bx--snippet--no-copy .bx--snippet-container pre{padding-right:0}.bx--snippet--multi.bx--snippet--expand .bx--snippet-container pre{overflow-x:auto}.bx--snippet--multi .bx--snippet-container pre:after{position:absolute;top:0;right:0;width:1rem;height:100%;background-image:linear-gradient(to right,rgba(var(--cds-field-01, #f4f4f4),0),var(--cds-field-01, #f4f4f4));content:""}.bx--snippet--multi .bx--snippet-container pre code{overflow:hidden}.bx--snippet__icon{width:1rem;height:1rem;fill:var(--cds-icon-01, #161616);transition:all 70ms cubic-bezier(.2,0,.38,.9)}.bx--snippet-button{position:absolute;top:0;right:0;display:flex;overflow:visible;width:2.5rem;height:2.5rem;align-items:center;justify-content:center;padding:0;border:none;background-color:var(--cds-field-01, #f4f4f4);cursor:pointer;outline:none}.bx--snippet-button:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;outline-color:var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--snippet-button:focus{outline-style:dotted}}.bx--snippet--multi .bx--snippet-button{top:var(--cds-spacing-03, .5rem);right:var(--cds-spacing-03, .5rem);width:2rem;height:2rem}.bx--snippet-button:hover{background:var(--cds-hover-ui, #e5e5e5)}.bx--snippet-button:active{background-color:var(--cds-active-ui, #c6c6c6)}.bx--btn--copy__feedback{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);font-family:IBM Plex Sans,Helvetica Neue,Arial,sans-serif;z-index:6000;top:.75rem;right:1.25rem;left:inherit;font-weight:400}.bx--btn--copy__feedback:before,.bx--btn--copy__feedback:after{background:var(--cds-inverse-02, #393939)}.bx--btn--copy__feedback:after{border:none}.bx--snippet .bx--copy-btn{position:absolute;top:0;right:0;font-family:IBM Plex Sans,Helvetica Neue,Arial,sans-serif}.bx--snippet-btn--expand{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);font-family:IBM Plex Sans,Helvetica Neue,Arial,sans-serif;position:absolute;z-index:10;right:0;bottom:0;display:inline-flex;align-items:center;padding:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);border:0;background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616)}.bx--snippet-btn--expand .bx--snippet-btn--text{position:relative;top:-.0625rem}.bx--snippet-btn--expand--hide.bx--snippet-btn--expand{display:none}.bx--snippet-btn--expand .bx--icon-chevron--down{margin-left:var(--cds-spacing-03, .5rem);fill:var(--cds-icon-primary, #161616);transform:rotate(0);transition:.15s cubic-bezier(.2,0,.38,.9)}.bx--snippet-btn--expand:hover{background:var(--cds-hover-ui, #e5e5e5);color:var(--cds-text-01, #161616)}.bx--snippet-btn--expand:active{background-color:var(--cds-active-ui, #c6c6c6)}.bx--snippet-btn--expand:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;border-color:#0000}@media screen and (prefers-contrast){.bx--snippet-btn--expand:focus{outline-style:dotted}}.bx--snippet--expand .bx--snippet-btn--expand .bx--icon-chevron--down{transform:rotate(180deg);transition:transform .24s}.bx--snippet--light,.bx--snippet--light .bx--snippet-button,.bx--snippet--light .bx--btn.bx--snippet-btn--expand,.bx--snippet--light .bx--copy-btn{background-color:var(--cds-field-02, #ffffff)}.bx--snippet--light.bx--snippet--inline:hover,.bx--snippet--light .bx--snippet-button:hover,.bx--snippet--light .bx--btn.bx--snippet-btn--expand:hover,.bx--snippet--light .bx--copy-btn:hover{background-color:var(--cds-hover-light-ui, #e5e5e5)}.bx--snippet--light.bx--snippet--inline:active,.bx--snippet--light .bx--snippet-button:active,.bx--snippet--light .bx--btn.bx--snippet-btn--expand:active,.bx--snippet--light .bx--copy-btn:active{background-color:var(--cds-active-light-ui, #c6c6c6)}.bx--snippet--light.bx--snippet--single:after,.bx--snippet--light.bx--snippet--multi .bx--snippet-container pre:after{background-image:linear-gradient(to right,rgba(var(--cds-field-02, #ffffff),0),var(--cds-field-02, #ffffff))}.bx--snippet.bx--skeleton .bx--snippet-container{width:100%;height:100%}.bx--snippet-button .bx--btn--copy__feedback{top:3.175rem;right:auto;left:50%}.bx--snippet-button .bx--btn--copy__feedback:before{top:0}.bx--snippet-button .bx--btn--copy__feedback:after{top:-.25rem}.bx--snippet--multi .bx--copy-btn{z-index:10;top:.5rem;right:.5rem;width:2rem;height:2rem}.bx--snippet--multi .bx--snippet-button .bx--btn--copy__feedback{top:2.675rem}.bx--snippet--inline .bx--btn--copy__feedback{top:calc(100% - .25rem);right:auto;left:50%}.bx--snippet__overflow-indicator--left,.bx--snippet__overflow-indicator--right{z-index:1;width:1rem;flex:1 0 auto}.bx--snippet__overflow-indicator--left{order:0;margin-right:-1rem;background-image:linear-gradient(to left,transparent,var(--cds-field-01, #f4f4f4))}.bx--snippet__overflow-indicator--right{order:2;margin-left:-1rem;background-image:linear-gradient(to right,transparent,var(--cds-field-01, #f4f4f4))}.bx--snippet--single .bx--snippet__overflow-indicator--right,.bx--snippet--single .bx--snippet__overflow-indicator--left{position:absolute;width:2rem;height:calc(100% - .25rem)}.bx--snippet--single .bx--snippet__overflow-indicator--right{right:2.5rem}.bx--snippet--single.bx--snippet--no-copy .bx--snippet__overflow-indicator--right{right:0}.bx--snippet--single .bx--snippet-container:focus~.bx--snippet__overflow-indicator--right{right:2.625rem}.bx--snippet--single .bx--snippet-container:focus+.bx--snippet__overflow-indicator--left{left:.125rem}.bx--snippet--light .bx--snippet__overflow-indicator--left{background-image:linear-gradient(to left,transparent,var(--cds-field-02, #ffffff))}.bx--snippet--light .bx--snippet__overflow-indicator--right{background-image:linear-gradient(to right,transparent,var(--cds-field-02, #ffffff))}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){.bx--snippet__overflow-indicator--left{background-image:linear-gradient(to left,rgba(var(--cds-field-01, #f4f4f4),0),var(--cds-field-01, #f4f4f4))}.bx--snippet__overflow-indicator--right{background-image:linear-gradient(to right,rgba(var(--cds-field-01, #f4f4f4),0),var(--cds-field-01, #f4f4f4))}}}.bx--snippet--multi.bx--skeleton{height:6.125rem}.bx--snippet--single.bx--skeleton{height:3.5rem}.bx--snippet.bx--skeleton span{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;display:block;width:100%;height:1rem;margin-top:.5rem}.bx--snippet.bx--skeleton span:hover,.bx--snippet.bx--skeleton span:focus,.bx--snippet.bx--skeleton span:active{border:none;cursor:default;outline:none}.bx--snippet.bx--skeleton span:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--snippet.bx--skeleton span:before{animation:none}}.bx--snippet.bx--skeleton span:first-child{margin:0}.bx--snippet.bx--skeleton span:nth-child(2){width:85%}.bx--snippet.bx--skeleton span:nth-child(3){width:95%}.bx--snippet--single.bx--skeleton .bx--snippet-container{padding-bottom:0}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--snippet__icon{fill:ButtonText}.bx--snippet--inline:focus{color:Highlight;outline:1px solid Highlight}.bx--snippet--single,.bx--snippet--multi{outline:1px solid rgba(0,0,0,0)}}.bx--list-box__wrapper--inline{display:inline-grid;align-items:center;grid-gap:.25rem;grid-template:auto auto/auto auto}.bx--list-box__wrapper--inline .bx--label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}.bx--list-box__wrapper--inline .bx--label,.bx--list-box__wrapper--inline .bx--form__helper-text,.bx--list-box__wrapper--inline .bx--form-requirement{margin:0}.bx--list-box__wrapper--inline .bx--form__helper-text{max-width:none}.bx--list-box__wrapper--inline .bx--form-requirement{grid-column:2}.bx--list-box{position:relative;width:100%;height:2.5rem;max-height:2.5rem;border:none;border-bottom:1px solid var(--cds-ui-04, #8d8d8d);background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616);cursor:pointer;transition:all 70ms cubic-bezier(.2,0,.38,.9)}.bx--list-box:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--list-box--xl,.bx--list-box--lg{height:3rem;max-height:3rem}.bx--list-box--sm{height:2rem;max-height:2rem}.bx--list-box--expanded{border-bottom-color:var(--cds-ui-03, #e0e0e0)}.bx--list-box--expanded:hover{background-color:var(--cds-field-01, #f4f4f4)}.bx--list-box--expanded:hover.bx--list-box--light:hover{background-color:var(--cds-field-02, #ffffff)}.bx--list-box .bx--text-input{min-width:0;height:100%}.bx--list-box__invalid-icon{position:absolute;top:50%;right:2.5rem;fill:var(--cds-support-01, #da1e28);transform:translateY(-50%)}.bx--list-box__invalid-icon--warning{fill:var(--cds-support-03, #f1c21b)}.bx--list-box__invalid-icon--warning path[fill]{fill:#000;opacity:1}.bx--list-box[data-invalid] .bx--list-box__field,.bx--list-box.bx--list-box--warning .bx--list-box__field{padding-right:4rem;border-bottom:0}.bx--list-box[data-invalid].bx--list-box--inline .bx--list-box__field{padding-right:3.5rem}.bx--list-box--light{background-color:var(--cds-field-02, #ffffff)}.bx--list-box--light:hover{background-color:var(--cds-hover-light-ui, #e5e5e5)}.bx--list-box--light .bx--list-box__menu{background:var(--cds-field-02, #ffffff)}.bx--list-box--light .bx--list-box__menu-item__option{border-top-color:var(--cds-decorative-01, #e0e0e0)}.bx--list-box--light.bx--list-box--expanded{border-bottom-color:#0000}.bx--list-box--disabled:hover{background-color:var(--cds-field-01, #f4f4f4)}.bx--list-box--light.bx--list-box--disabled{background-color:var(--cds-field-02, #ffffff)}.bx--list-box--disabled,.bx--list-box--disabled .bx--list-box__field,.bx--list-box--disabled .bx--list-box__field:focus{border-bottom-color:#0000;outline:none}.bx--list-box--disabled .bx--list-box__label,.bx--list-box--disabled.bx--list-box--inline .bx--list-box__label{color:var(--cds-disabled-02, #c6c6c6)}.bx--list-box--disabled .bx--list-box__menu-icon>svg,.bx--list-box--disabled .bx--list-box__selection>svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--list-box--disabled,.bx--list-box--disabled .bx--list-box__field,.bx--list-box--disabled .bx--list-box__menu-icon{cursor:not-allowed}.bx--list-box--disabled .bx--list-box__menu-item,.bx--list-box--disabled .bx--list-box__menu-item:hover,.bx--list-box--disabled .bx--list-box__menu-item--highlighted{color:var(--cds-disabled-02, #c6c6c6);text-decoration:none}.bx--list-box--disabled .bx--list-box__selection:hover{cursor:not-allowed}.bx--list-box--disabled.bx--list-box[data-invalid] .bx--list-box__field{padding-right:3rem}.bx--list-box--disabled.bx--list-box[data-invalid].bx--list-box--inline .bx--list-box__field{padding-right:2rem}.bx--list-box.bx--list-box--inline{border-width:0;background-color:#0000}.bx--list-box.bx--list-box--inline:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--list-box.bx--list-box--inline.bx--list-box--expanded{border-bottom-width:0}.bx--list-box.bx--list-box--inline.bx--list-box--expanded .bx--list-box__field[aria-expanded=true]{border-width:0}.bx--list-box.bx--list-box--inline.bx--list-box--disabled:hover{background-color:#0000}.bx--list-box.bx--list-box--inline.bx--list-box--expanded:hover{background-color:var(--cds-field-02, #ffffff)}.bx--list-box.bx--list-box--inline .bx--list-box__field{padding:0 2rem 0 .5rem}.bx--list-box.bx--list-box--inline .bx--list-box__menu-icon{right:.5rem}.bx--list-box.bx--list-box--inline .bx--list-box__invalid-icon{right:2rem}.bx--list-box--inline .bx--list-box__label{color:var(--cds-text-01, #161616)}.bx--list-box--inline .bx--list-box__field{height:100%}.bx--dropdown--inline .bx--list-box__field{max-width:30rem}.bx--dropdown--inline .bx--list-box__menu{min-width:18rem;max-width:30rem}.bx--list-box__field{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;width:100%;position:relative;display:inline-flex;overflow:hidden;height:calc(100% + 1px);align-items:center;padding:0 3rem 0 1rem;cursor:pointer;outline:none;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}.bx--list-box__field::-moz-focus-inner{border:0}.bx--list-box__field:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--list-box__field:focus{outline-style:dotted}}.bx--list-box__field[disabled]{color:var(--cds-disabled-02, #c6c6c6);outline:none}.bx--list-box__field .bx--text-input{padding-right:4.5rem}.bx--list-box[data-invalid] .bx--list-box__field .bx--text-input,.bx--list-box--warning .bx--list-box__field .bx--text-input{padding-right:6.125rem}.bx--list-box[data-invalid] .bx--list-box__field .bx--text-input+.bx--list-box__invalid-icon,.bx--list-box--warning .bx--list-box__field .bx--text-input+.bx--list-box__invalid-icon{right:4.125rem}.bx--list-box__field .bx--text-input--empty{padding-right:3rem}.bx--list-box[data-invalid] .bx--list-box__field .bx--text-input--empty,.bx--list-box--warning .bx--list-box__field .bx--text-input--empty{padding-right:4.5rem}.bx--list-box[data-invalid] .bx--list-box__field .bx--text-input--empty+.bx--list-box__invalid-icon,.bx--list-box--warning .bx--list-box__field .bx--text-input--empty+.bx--list-box__invalid-icon{right:2.5rem}.bx--list-box__label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);overflow:hidden;color:var(--cds-text-01, #161616);text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.bx--list-box__menu-icon{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;position:absolute;right:1rem;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;cursor:pointer;outline:none;transition:transform 70ms cubic-bezier(.2,0,.38,.9)}.bx--list-box__menu-icon::-moz-focus-inner{border:0}.bx--list-box__menu-icon>svg{fill:var(--cds-icon-01, #161616)}.bx--list-box__menu-icon--open{width:1.5rem;justify-content:center;transform:rotate(180deg)}.bx--list-box__selection{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;position:absolute;top:50%;right:2.5rem;display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;cursor:pointer;transform:translateY(-50%);transition:background-color 70ms cubic-bezier(.2,0,.38,.9);-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--list-box__selection::-moz-focus-inner{border:0}.bx--list-box__selection:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--list-box__selection:focus{outline-style:dotted}}.bx--list-box__selection:focus:hover{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--list-box__selection:focus:hover{outline-style:dotted}}.bx--list-box__selection>svg{fill:var(--cds-icon-01, #161616)}.bx--list-box--disabled .bx--list-box__selection:focus{outline:none}.bx--list-box__selection--multi{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);position:static;top:auto;display:flex;width:auto;height:1.5rem;align-items:center;justify-content:space-between;padding:.5rem .125rem .5rem .5rem;margin-right:.625rem;background-color:var(--cds-inverse-02, #393939);border-radius:.75rem;color:var(--cds-inverse-01, #ffffff);line-height:0;transform:none}.bx--list-box__selection--multi>svg{width:1.25rem;height:1.25rem;padding:.125rem;margin-left:.25rem;fill:var(--cds-inverse-01, #ffffff)}.bx--list-box__selection--multi>svg:hover{background-color:var(--cds-hover-secondary, #4c4c4c);border-radius:50%}.bx--list-box--disabled .bx--list-box__selection--multi{background-color:var(--cds-disabled-02, #c6c6c6);color:var(--cds-disabled-01, #f4f4f4)}.bx--list-box--disabled .bx--list-box__selection--multi.bx--tag--interactive:hover,.bx--list-box--disabled .bx--list-box__selection--multi .bx--tag__close-icon:hover{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--list-box--disabled .bx--list-box__selection--multi>svg{fill:var(--cds-disabled-01, #f4f4f4)}.bx--list-box--disabled .bx--list-box__selection--multi>svg:hover{background-color:initial}.bx--list-box__selection--multi:hover{outline:none}.bx--list-box__menu{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:absolute;z-index:9100;right:0;left:0;width:100%;background-color:var(--cds-ui-01, #f4f4f4);overflow-y:auto;transition:max-height .11s cubic-bezier(.2,0,.38,.9)}.bx--list-box__menu:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--list-box__menu:focus{outline-style:dotted}}.bx--list-box .bx--list-box__field[aria-expanded=false]+.bx--list-box__menu{max-height:0}.bx--list-box--expanded .bx--list-box__menu{max-height:13.75rem}.bx--list-box--expanded.bx--list-box--xl .bx--list-box__menu,.bx--list-box--expanded.bx--list-box--lg .bx--list-box__menu{max-height:16.5rem}.bx--list-box--expanded.bx--list-box--sm .bx--list-box__menu{max-height:11rem}.bx--list-box__menu-item{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:relative;height:2.5rem;color:var(--cds-text-02, #525252);cursor:pointer;transition:background 70ms cubic-bezier(.2,0,.38,.9);-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--list-box__menu-item:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--list-box__menu-item:active{background-color:var(--cds-selected-ui, #e0e0e0)}.bx--list-box--light .bx--list-box__menu-item:hover{background-color:var(--cds-hover-light-ui, #e5e5e5)}.bx--list-box--sm .bx--list-box__menu-item{height:2rem}.bx--list-box--xl .bx--list-box__menu-item,.bx--list-box--lg .bx--list-box__menu-item{height:3rem}.bx--list-box--disabled .bx--list-box__menu-item:hover{background-color:#0000}.bx--list-box--light .bx--list-box__menu-item:active{background-color:var(--cds-selected-light-ui, #e0e0e0)}.bx--list-box--disabled .bx--list-box__menu-item__option:hover{border-top-color:var(--cds-ui-03, #e0e0e0)}.bx--list-box__menu-item:first-of-type .bx--list-box__menu-item__option{border-top-color:#0000}.bx--list-box__menu-item:hover .bx--list-box__menu-item__option{color:var(--cds-text-01, #161616)}.bx--list-box__menu-item:hover+.bx--list-box__menu-item .bx--list-box__menu-item__option{border-top-color:#0000}.bx--list-box--disabled .bx--list-box__menu-item:hover+.bx--list-box__menu-item .bx--list-box__menu-item__option{border-top-color:var(--cds-ui-03, #e0e0e0)}.bx--list-box__menu-item__option{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:block;overflow:hidden;height:2.5rem;padding:.6875rem 1.5rem .6875rem 0;border-top:1px solid rgba(0,0,0,0);border-top-color:var(--cds-ui-03, #e0e0e0);border-bottom:1px solid rgba(0,0,0,0);margin:0 1rem;color:var(--cds-text-02, #525252);font-weight:400;line-height:1rem;text-decoration:none;text-overflow:ellipsis;transition:border-color 70ms cubic-bezier(.2,0,.38,.9),color 70ms cubic-bezier(.2,0,.38,.9);white-space:nowrap}.bx--list-box__menu-item__option:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;padding:.6875rem 1rem;border-color:#0000;margin:0}@media screen and (prefers-contrast){.bx--list-box__menu-item__option:focus{outline-style:dotted}}.bx--list-box__menu-item__option:hover{border-color:#0000;color:var(--cds-text-01, #161616)}.bx--list-box--sm .bx--list-box__menu-item__option{height:2rem;padding-top:.4375rem;padding-bottom:.4375rem}.bx--list-box--xl .bx--list-box__menu-item__option,.bx--list-box--lg .bx--list-box__menu-item__option{height:3rem;padding-top:.9375rem;padding-bottom:.9375rem}.bx--list-box--disabled .bx--list-box__menu-item:hover .bx--list-box__menu-item__option,.bx--list-box--disabled .bx--list-box__menu-item__option{color:var(--cds-disabled-02, #c6c6c6)}.bx--list-box__menu-item[disabled],.bx--list-box__menu-item[disabled] *,.bx--list-box__menu-item[disabled] .bx--list-box__menu-item__option,.bx--list-box__menu-item[disabled]:hover{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed;outline:none}.bx--list-box__menu-item[disabled]:hover{background-color:revert}.bx--list-box__menu-item[disabled] .bx--checkbox-label:before{border-color:var(--cds-disabled-02, #c6c6c6)}.bx--list-box__menu-item[disabled] .bx--list-box__menu-item__option{border-top-color:var(--cds-ui-03, #e0e0e0)}.bx--list-box__menu-item[disabled]:hover+.bx--list-box__menu-item .bx--list-box__menu-item__option{border-top-color:var(--cds-ui-03, #e0e0e0)}.bx--list-box.bx--list-box--inline .bx--list-box__menu-item__option{margin:0 .5rem}.bx--list-box.bx--list-box--inline .bx--list-box__menu-item__option:focus{padding-right:.5rem;padding-left:.5rem;margin:0}.bx--list-box__menu-item--highlighted{border-color:#0000;background-color:var(--cds-hover-ui, #e5e5e5);color:var(--cds-text-01, #161616)}.bx--list-box__menu-item--highlighted .bx--list-box__menu-item__option,.bx--list-box__menu-item--highlighted+.bx--list-box__menu-item .bx--list-box__menu-item__option{border-top-color:#0000}.bx--list-box__menu-item--highlighted .bx--list-box__menu-item__option{color:var(--cds-text-01, #161616)}.bx--list-box__menu-item--active{border-bottom-color:var(--cds-selected-ui, #e0e0e0);background-color:var(--cds-selected-ui, #e0e0e0);color:var(--cds-text-01, #161616)}.bx--list-box--light .bx--list-box__menu-item--active{border-bottom-color:var(--cds-selected-light-ui, #e0e0e0);background-color:var(--cds-selected-light-ui, #e0e0e0)}.bx--list-box__menu-item--active:hover,.bx--list-box__menu-item--active.bx--list-box__menu-item--highlighted{border-bottom-color:var(--cds-hover-selected-ui, #cacaca);background-color:var(--cds-hover-selected-ui, #cacaca)}.bx--list-box__menu-item--active .bx--list-box__menu-item__option{color:var(--cds-text-01, #161616)}.bx--list-box__menu-item--active+.bx--list-box__menu-item>.bx--list-box__menu-item__option{border-top-color:#0000}.bx--list-box__menu-item__selected-icon{position:absolute;top:50%;right:1rem;display:none;fill:var(--cds-icon-01, #161616);transform:translateY(-50%)}.bx--list-box--inline .bx--list-box__menu-item__selected-icon{right:.5rem}.bx--list-box__menu-item--active .bx--list-box__menu-item__selected-icon{display:block}.bx--list-box__menu-item .bx--checkbox-label{width:100%}.bx--list-box__menu-item .bx--checkbox-label-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bx--list-box--up .bx--list-box__menu{bottom:2.5rem}.bx--list-box--up.bx--dropdown--sm .bx--list-box__menu,.bx--list-box--up.bx--list-box--sm .bx--list-box__menu,.bx--list-box--up .bx--list-box--sm .bx--list-box__menu{bottom:2rem}.bx--list-box--up.bx--dropdown--xl .bx--list-box__menu,.bx--list-box--up.bx--list-box--xl .bx--list-box__menu,.bx--list-box--up.bx--dropdown--lg .bx--list-box__menu,.bx--list-box--up.bx--list-box--lg .bx--list-box__menu,.bx--list-box--up .bx--list-box--lg .bx--list-box__menu{bottom:3rem}.bx--list-box input[role=combobox],.bx--list-box input[type=text]{min-width:0;background-color:inherit}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--list-box__field,.bx--list-box__menu,.bx--multi-select .bx--tag--filter{outline:1px solid rgba(0,0,0,0)}.bx--list-box__field:focus,.bx--multi-select .bx--tag__close-icon:focus,.bx--list-box__menu-item--highlighted .bx--list-box__menu-item__option{color:Highlight;outline:1px solid Highlight}.bx--list-box__menu-icon>svg,.bx--list-box__selection>svg,.bx--list-box__selection--multi>svg{fill:ButtonText}}.bx--combo-box:hover{background-color:var(--cds-field-01, #f4f4f4)}.bx--combo-box.bx--list-box--light:hover{background-color:var(--cds-field-02, #ffffff)}.bx--combo-box .bx--text-input::-ms-clear{display:none}.bx--combo-box.bx--list-box--expanded .bx--text-input{border-bottom-color:var(--cds-ui-03, #e0e0e0)}.bx--combo-box .bx--list-box__field,.bx--combo-box.bx--list-box[data-invalid] .bx--list-box__field,.bx--combo-box.bx--list-box--warning .bx--list-box__field,.bx--combo-box.bx--list-box--disabled.bx--list-box[data-invalid] .bx--list-box__field,.bx--combo-box.bx--list-box--disabled.bx--list-box--warning .bx--list-box__field{padding:0}.bx--content-switcher{display:flex;width:100%;height:2.5rem;justify-content:space-evenly}.bx--content-switcher--sm{height:2rem}.bx--content-switcher--xl,.bx--content-switcher--lg{height:3rem}.bx--content-switcher-btn{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:relative;display:inline-flex;overflow:hidden;width:100%;align-items:center;padding:.5rem 1rem;border:none;border-top:.0625rem solid var(--cds-border-inverse, #161616);border-bottom:.0625rem solid var(--cds-border-inverse, #161616);margin:0;background-color:#0000;color:var(--cds-text-secondary, #525252);text-align:left;text-decoration:none;transition:all .15s cubic-bezier(.2,0,.38,.9);white-space:nowrap}.bx--content-switcher-btn:after{position:absolute;top:0;left:0;display:block;width:100%;height:100%;background-color:var(--cds-layer-selected-inverse, #161616);content:"";transform:scaleY(0);transform-origin:bottom;transition:all .15s cubic-bezier(.2,0,.38,.9)}@media (prefers-reduced-motion: reduce){.bx--content-switcher-btn:after{transition:none}}.bx--content-switcher-btn:disabled:after{display:none}.bx--content-switcher-btn:focus{z-index:3;border-color:var(--cds-focus, #0f62fe);box-shadow:inset 0 0 0 2px var(--cds-focus, #0f62fe),inset 0 0 0 3px var(--cds-focus-inset, #ffffff)}.bx--content-switcher-btn:focus:after{-webkit-clip-path:inset(3px 3px 3px 3px);clip-path:inset(3px 3px 3px 3px)}.bx--content-switcher-btn:hover{color:var(--cds-text-primary, #161616);cursor:pointer}.bx--content-switcher-btn:hover,.bx--content-switcher-btn:active{z-index:3;background-color:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}.bx--content-switcher-btn:disabled{border-color:var(--cds-border-disabled, #f4f4f4);background-color:#0000;color:var(--cds-text-disabled, #c6c6c6)}.bx--content-switcher-btn:disabled:hover{cursor:not-allowed}.bx--content-switcher-btn:disabled:first-child,.bx--content-switcher-btn:disabled:last-child{border-color:var(--cds-border-disabled, #f4f4f4)}.bx--content-switcher-btn:first-child{border-left:.0625rem solid var(--cds-border-inverse, #161616);border-bottom-left-radius:.25rem;border-top-left-radius:.25rem}.bx--content-switcher-btn:last-child{border-right:.0625rem solid var(--cds-border-inverse, #161616);border-bottom-right-radius:.25rem;border-top-right-radius:.25rem}.bx--content-switcher--selected,.bx--content-switcher--selected:first-child,.bx--content-switcher--selected:last-child{border:0}.bx--content-switcher-btn:before{position:absolute;z-index:2;left:0;display:block;width:.0625rem;height:1rem;background-color:var(--cds-border-subtle, #e0e0e0);content:""}.bx--content-switcher-btn:first-of-type:before{display:none}.bx--content-switcher-btn:focus:before,.bx--content-switcher-btn:focus+.bx--content-switcher-btn:before,.bx--content-switcher-btn:hover:before,.bx--content-switcher-btn:hover+.bx--content-switcher-btn:before,.bx--content-switcher--selected:before,.bx--content-switcher--selected+.bx--content-switcher-btn:before{background-color:#0000}.bx--content-switcher-btn:disabled:before,.bx--content-switcher-btn:disabled:hover+.bx--content-switcher-btn:disabled:before{background-color:var(--cds-border-disabled, #f4f4f4)}.bx--content-switcher-btn.bx--content-switcher--selected:disabled+.bx--content-switcher-btn:before,.bx--content-switcher-btn.bx--content-switcher--selected:disabled:hover+.bx--content-switcher-btn:before{background-color:#0000}.bx--content-switcher__icon{fill:var(--cds-icon-secondary, #525252);transition:fill 70ms cubic-bezier(.2,0,.38,.9)}.bx--content-switcher__icon+span{margin-left:.5rem}.bx--content-switcher__label{z-index:1;overflow:hidden;max-width:100%;text-overflow:ellipsis;white-space:nowrap}.bx--content-switcher-btn:hover .bx--content-switcher__icon,.bx--content-switcher-btn:focus .bx--content-switcher__icon{fill:var(--cds-icon-primary, #161616)}.bx--content-switcher-btn.bx--content-switcher--selected{z-index:3;background-color:var(--cds-layer-selected-inverse, #161616);color:var(--cds-text-inverse, #ffffff)}.bx--content-switcher-btn.bx--content-switcher--selected:after{transform:scaleY(1)}.bx--content-switcher-btn.bx--content-switcher--selected:disabled{background-color:var(--cds-layer-selected-disabled, #8d8d8d);color:var(--cds-text-disabled, #c6c6c6)}.bx--content-switcher-btn.bx--content-switcher--selected .bx--content-switcher__icon{fill:var(--cds-icon-inverse, #ffffff)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--content-switcher-btn:focus{color:Highlight;outline:1px solid Highlight}}@keyframes hide-feedback{0%{opacity:1;visibility:inherit}to{opacity:0;visibility:hidden}}@keyframes show-feedback{0%{opacity:0;visibility:hidden}to{opacity:1;visibility:inherit}}.bx--btn--copy{position:relative;overflow:visible}.bx--btn--copy .bx--btn__icon{margin-left:.3125rem}.bx--btn--copy__feedback{position:absolute;top:1.2rem;left:50%;display:none}.bx--btn--copy__feedback:before{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);z-index:2;top:1.1rem;padding:var(--cds-spacing-02, .25rem);border-radius:4px;color:var(--cds-text-inverse, #ffffff);content:attr(data-feedback);font-weight:400;pointer-events:none;transform:translate(-50%);white-space:nowrap}.bx--btn--copy__feedback:after{z-index:1;top:.85rem;left:-.3rem;width:.6rem;height:.6rem;border-right:1px solid var(--cds-background-inverse, #393939);border-bottom:1px solid var(--cds-background-inverse, #393939);content:"";transform:rotate(-135deg)}.bx--btn--copy__feedback:before,.bx--btn--copy__feedback:after{position:absolute;display:block;background:var(--cds-background-inverse, #393939)}.bx--btn--copy__feedback--displayed{display:inline-flex}.bx--copy-btn{position:relative;display:flex;width:2.5rem;height:2.5rem;align-items:center;justify-content:center;padding:0;border:none;background-color:var(--cds-layer, #f4f4f4);cursor:pointer}.bx--copy-btn:hover{background-color:var(--cds-layer-hover, #e5e5e5)}.bx--copy-btn:active{background-color:var(--cds-layer-active, #c6c6c6)}.bx--copy-btn:before{position:absolute;z-index:6000;width:0;height:0;border-style:solid;content:"";display:none}.bx--copy-btn .bx--copy-btn__feedback{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:none;overflow:visible;box-sizing:content-box;margin:auto;clip:auto}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--copy-btn .bx--copy-btn__feedback{width:auto}}@supports (-ms-accelerator: true){.bx--copy-btn .bx--copy-btn__feedback{width:auto}}@supports (-ms-ime-align: auto){.bx--copy-btn .bx--copy-btn__feedback{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--copy-btn .bx--copy-btn__feedback{border:1px solid rgba(0,0,0,0)}}.bx--copy-btn .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--copy-btn:before,.bx--copy-btn:after,.bx--copy-btn .bx--assistive-text,.bx--copy-btn+.bx--assistive-text{bottom:0;left:50%}.bx--copy-btn:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--copy-btn:after,.bx--copy-btn .bx--assistive-text,.bx--copy-btn+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--copy-btn:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;outline-color:var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--copy-btn:focus{outline-style:dotted}}.bx--copy-btn.bx--copy-btn--animating:before,.bx--copy-btn.bx--copy-btn--animating .bx--copy-btn__feedback{display:block}.bx--copy-btn.bx--copy-btn--animating.bx--copy-btn--fade-out:before,.bx--copy-btn.bx--copy-btn--animating.bx--copy-btn--fade-out .bx--copy-btn__feedback{animation:.11s cubic-bezier(.2,0,.38,.9) hide-feedback}.bx--copy-btn.bx--copy-btn--animating.bx--copy-btn--fade-in:before,.bx--copy-btn.bx--copy-btn--animating.bx--copy-btn--fade-in .bx--copy-btn__feedback{animation:.11s cubic-bezier(.2,0,.38,.9) show-feedback}.bx--copy{font-size:0}.bx--table-toolbar{position:relative;display:flex;width:100%;min-height:var(--cds-spacing-09, 3rem);background-color:var(--cds-layer, #f4f4f4)}.bx--toolbar-content{display:flex;width:100%;height:var(--cds-spacing-09, 3rem);justify-content:flex-end;transform:translateZ(0);transition:transform .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9)}.bx--batch-actions~.bx--toolbar-content{-webkit-clip-path:polygon(0 0,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,100% 0,100% 100%,0 100%)}.bx--toolbar-content .bx--search .bx--search-input{background-color:#0000}.bx--batch-actions~.bx--toolbar-search-container{display:flex;align-items:center;opacity:1;transition:opacity .11s}.bx--toolbar-content .bx--toolbar-search-container-expandable{position:relative;width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem);box-shadow:none;cursor:pointer;transition:width .24s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(0,0,.38,.9)}.bx--toolbar-content .bx--toolbar-search-container-expandable:hover{background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-expandable .bx--search-input{height:100%;cursor:pointer;opacity:0}.bx--toolbar-search-container-expandable:not(.bx--toolbar-search-container-active) .bx--search-input{padding:0}.bx--toolbar-search-container-expandable .bx--search-magnifier-icon{left:0;width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem);padding:var(--cds-spacing-05, 1rem);fill:var(--cds-icon-primary, #161616)}.bx--toolbar-search-container-expandable.bx--search--disabled .bx--search-magnifier-icon{background-color:var(--cds-layer, #f4f4f4);cursor:not-allowed;transition:background-color none}.bx--toolbar-search-container-disabled .bx--search-input{cursor:not-allowed}.bx--toolbar-search-container-expandable.bx--search .bx--label{visibility:hidden}.bx--toolbar-search-container-expandable.bx--search .bx--search-close{width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem)}.bx--toolbar-search-container-expandable.bx--search .bx--search-close:before{top:.125rem;height:calc(100% - .25rem);background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-expandable.bx--search .bx--search-close:focus:before{background-color:var(--cds-focus, #0f62fe)}.bx--toolbar-search-container-active.bx--search{width:100%}.bx--toolbar-search-container-active .bx--search-input{opacity:1}.bx--toolbar-search-container-active .bx--label,.bx--toolbar-search-container-active .bx--search-input{padding:0 var(--cds-spacing-09, 3rem);cursor:text}.bx--toolbar-search-container-active .bx--search-input:focus+.bx--search-close{border:none;box-shadow:none;outline:none}.bx--toolbar-search-container-active .bx--search-input:not(:-moz-placeholder-shown){border:none;background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-active .bx--search-input:not(:placeholder-shown){border:none;background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-active .bx--search-magnifier-icon:focus,.bx--toolbar-search-container-active .bx--search-magnifier-icon:active,.bx--toolbar-search-container-active .bx--search-magnifier-icon:hover{border:none;background-color:#0000;outline:none}.bx--toolbar-search-container-persistent .bx--search-close,.bx--toolbar-search-container-persistent .bx--search-close:hover,.bx--toolbar-search-container-active .bx--search-close,.bx--toolbar-search-container-active .bx--search-close:hover{border:none;background-color:#0000}.bx--toolbar-search-container-persistent .bx--search-close:before{display:none}.bx--overflow-menu.bx--toolbar-action{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;width:100%;display:flex;width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem);padding:var(--cds-spacing-05, 1rem);cursor:pointer;transition:background .11s cubic-bezier(0,0,.38,.9)}.bx--overflow-menu.bx--toolbar-action::-moz-focus-inner{border:0}.bx--toolbar-action{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;width:100%;display:flex;width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem);cursor:pointer;transition:background .11s cubic-bezier(0,0,.38,.9)}.bx--toolbar-action::-moz-focus-inner{border:0}.bx--toolbar-action:hover:not([disabled]){background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-action:hover[aria-expanded=true]{background-color:var(--cds-layer, #f4f4f4)}.bx--toolbar-action[disabled]{cursor:not-allowed}.bx--toolbar-action[disabled] .bx--toolbar-action__icon{cursor:not-allowed;fill:var(--cds-icon-disabled, #c6c6c6)}.bx--toolbar-action:focus:not([disabled]),.bx--toolbar-action:active:not([disabled]){outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--toolbar-action:focus:not([disabled]),.bx--toolbar-action:active:not([disabled]){outline-style:dotted}}.bx--toolbar-action:focus:not([disabled]).bx--toolbar-search-container-expandable,.bx--toolbar-action:active:not([disabled]).bx--toolbar-search-container-expandable{outline:none}.bx--toolbar-action~.bx--btn{max-width:none;margin:0;white-space:nowrap}.bx--overflow-menu--data-table{height:var(--cds-spacing-09, 3rem)}.bx--toolbar-action__icon{width:auto;max-width:var(--cds-spacing-05, 1rem);height:var(--cds-spacing-05, 1rem);fill:var(--cds-icon-primary, #161616)}.bx--toolbar-search-container-persistent{position:relative;width:100%;height:var(--cds-spacing-09, 3rem);opacity:1}.bx--toolbar-search-container-persistent+.bx--toolbar-content{position:relative;width:auto}.bx--toolbar-search-container-persistent .bx--search{position:initial}.bx--toolbar-search-container-persistent .bx--search-magnifier-icon{left:var(--cds-spacing-05, 1rem)}.bx--toolbar-search-container-persistent .bx--search-input{height:var(--cds-spacing-09, 3rem);padding:0 var(--cds-spacing-09, 3rem);border:none}.bx--toolbar-search-container-persistent .bx--search-input:focus:not([disabled]){outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--toolbar-search-container-persistent .bx--search-input:focus:not([disabled]){outline-style:dotted}}.bx--toolbar-search-container-persistent .bx--search-input:hover:not([disabled]){background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-persistent .bx--search-input:not(:-moz-placeholder-shown){background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-persistent .bx--search-input:active:not([disabled]),.bx--toolbar-search-container-persistent .bx--search-input:not(:placeholder-shown){background-color:var(--cds-field-hover, #e5e5e5)}.bx--toolbar-search-container-persistent .bx--search-close{width:var(--cds-spacing-09, 3rem);height:var(--cds-spacing-09, 3rem)}.bx--batch-actions--active~.bx--toolbar-search-container,.bx--batch-actions--active~.bx--toolbar-content{-webkit-clip-path:polygon(0 0,100% 0,100% 0,0 0);clip-path:polygon(0 0,100% 0,100% 0,0 0);transform:translate3d(0,48px,0);transition:transform .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9)}.bx--batch-actions{position:absolute;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:space-between;background-color:var(--cds-background-brand, #0f62fe);-webkit-clip-path:polygon(0 0,100% 0,100% 0,0 0);clip-path:polygon(0 0,100% 0,100% 0,0 0);pointer-events:none;transform:translate3d(0,48px,0);transition:transform .11s cubic-bezier(.2,0,.38,.9),opacity .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9),opacity .11s cubic-bezier(.2,0,.38,.9);transition:transform .11s cubic-bezier(.2,0,.38,.9),clip-path .11s cubic-bezier(.2,0,.38,.9),opacity .11s cubic-bezier(.2,0,.38,.9),-webkit-clip-path .11s cubic-bezier(.2,0,.38,.9);will-change:transform}.bx--batch-actions:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--batch-actions:focus{outline-style:dotted}}.bx--batch-actions--active{overflow:auto hidden;-webkit-clip-path:polygon(0 0,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,100% 0,100% 100%,0 100%);pointer-events:all;transform:translateZ(0)}.bx--action-list{display:flex;align-items:center}.bx--action-list .bx--btn{padding:calc(.875rem - 3px) 16px;color:var(--cds-text-on-color, #ffffff);white-space:nowrap}.bx--action-list .bx--btn:disabled{color:var(--cds-text-on-color-disabled, #8d8d8d)}.bx--action-list .bx--btn .bx--btn__icon{position:static;margin-left:var(--cds-spacing-03, .5rem);fill:var(--cds-icon-on-color, #ffffff)}.bx--action-list .bx--btn .bx--btn__icon .st0{fill:none}.bx--batch-download{padding:.0625rem}.bx--action-list .bx--btn--primary:focus:before,.bx--action-list .bx--btn--primary:before,.bx--action-list .bx--btn--primary:focus:after,.bx--action-list .bx--btn--primary:after{display:none}.bx--action-list .bx--btn--primary:focus{outline:2px solid var(--cds-layer, #f4f4f4);outline-offset:-.125rem}.bx--action-list .bx--btn--primary:nth-child(3):hover+.bx--btn--primary.bx--batch-summary__cancel:before,.bx--action-list .bx--btn--primary:nth-child(3):focus+.bx--btn--primary.bx--batch-summary__cancel:before{opacity:0}.bx--btn--primary.bx--batch-summary__cancel:before{position:absolute;top:.9375rem;left:0;display:block;width:.0625rem;height:var(--cds-spacing-05, 1rem);border:none;background-color:var(--cds-text-on-color, #ffffff);content:"";opacity:1;transition:opacity .11s cubic-bezier(.2,0,.38,.9)}.bx--btn--primary.bx--batch-summary__cancel:hover:before{opacity:0;transition:opacity .11s cubic-bezier(.2,0,.38,.9)}.bx--batch-summary{position:sticky;z-index:100000;left:0;display:flex;min-height:3rem;align-items:center;padding:0 var(--cds-spacing-05, 1rem);background-color:var(--cds-background-brand, #0f62fe);color:var(--cds-text-on-color, #ffffff)}.bx--batch-summary__scroll{box-shadow:.5px 0 .2px var(--cds-hover-primary-text, #0043ce)}.bx--batch-summary__para{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}.bx--table-toolbar--small,.bx--table-toolbar--sm{height:2rem;min-height:2rem}.bx--table-toolbar--small .bx--toolbar-search-container-expandable,.bx--table-toolbar--small .bx--toolbar-search-container-persistent,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable,.bx--table-toolbar--sm .bx--toolbar-search-container-persistent,.bx--table-toolbar--small .bx--toolbar-search-container-expandable .bx--search-input,.bx--table-toolbar--small .bx--toolbar-search-container-persistent .bx--search-input,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable .bx--search-input,.bx--table-toolbar--sm .bx--toolbar-search-container-persistent .bx--search-input{height:2rem}.bx--table-toolbar--small .bx--toolbar-search-container-expandable .bx--search-close,.bx--table-toolbar--small .bx--toolbar-search-container-persistent .bx--search-close,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable .bx--search-close,.bx--table-toolbar--sm .bx--toolbar-search-container-persistent .bx--search-close{width:2rem;height:2rem}.bx--table-toolbar--small .bx--toolbar-search-container-expandable .bx--search-magnifier-icon,.bx--table-toolbar--small .bx--toolbar-search-container-persistent .bx--search-magnifier-icon,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable .bx--search-magnifier-icon,.bx--table-toolbar--sm .bx--toolbar-search-container-persistent .bx--search-magnifier-icon{width:2rem;height:2rem;padding:var(--cds-spacing-03, .5rem)}.bx--table-toolbar--small .bx--toolbar-action.bx--toolbar-search-container-persistent,.bx--table-toolbar--sm .bx--toolbar-action.bx--toolbar-search-container-persistent{width:100%}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-magnifier-icon,.bx--table-toolbar--small .bx--toolbar-search-container-persistent .bx--search-magnifier-icon,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-magnifier-icon,.bx--table-toolbar--sm .bx--toolbar-search-container-persistent .bx--search-magnifier-icon{left:var(--cds-spacing-03, .5rem)}.bx--table-toolbar--small .bx--toolbar-search-container-expandable,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable{width:2rem}.bx--table-toolbar--small .bx--toolbar-search-container-expandable .bx--search .bx--search-input,.bx--table-toolbar--sm .bx--toolbar-search-container-expandable .bx--search .bx--search-input{padding:0 var(--cds-spacing-09, 3rem)}.bx--table-toolbar--small .bx--toolbar-search-container-active,.bx--table-toolbar--sm .bx--toolbar-search-container-active{flex:auto;transition:flex 175ms cubic-bezier(.2,0,.38,.9)}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input{visibility:inherit}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input:focus,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;background-color:var(--cds-field-hover, #e5e5e5)}@media screen and (prefers-contrast){.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input:focus,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input:focus{outline-style:dotted}}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input:not(:-moz-placeholder-shown),.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input:not(:-moz-placeholder-shown){background-color:var(--cds-field-hover, #e5e5e5)}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input:active,.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-input:not(:placeholder-shown),.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input:active,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-input:not(:placeholder-shown){background-color:var(--cds-field-hover, #e5e5e5)}.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-magnifier-icon:focus,.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-magnifier-icon:active,.bx--table-toolbar--small .bx--toolbar-search-container-active .bx--search-magnifier-icon:hover,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-magnifier-icon:focus,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-magnifier-icon:active,.bx--table-toolbar--sm .bx--toolbar-search-container-active .bx--search-magnifier-icon:hover{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;background-color:#0000}.bx--table-toolbar--small .bx--overflow-menu.bx--toolbar-action,.bx--table-toolbar--sm .bx--overflow-menu.bx--toolbar-action{width:2rem;min-width:2rem;height:2rem}.bx--table-toolbar--small .bx--toolbar-content,.bx--table-toolbar--sm .bx--toolbar-content{height:2rem}.bx--search--disabled .bx--search-magnifier-icon:hover{background-color:#0000}.bx--table-toolbar--small .bx--batch-actions .bx--action-list,.bx--table-toolbar--sm .bx--batch-actions .bx--action-list{height:2rem}.bx--table-toolbar--small .bx--toolbar-action,.bx--table-toolbar--sm .bx--toolbar-action{width:2rem;height:2rem;padding:var(--cds-spacing-03, .5rem) 0}.bx--table-toolbar--small .bx--btn--primary,.bx--table-toolbar--sm .bx--btn--primary{height:2rem;min-height:auto;padding-top:calc(.375rem - 3px);padding-bottom:calc(.375rem - 3px)}.bx--table-toolbar--small .bx--btn--primary.bx--batch-summary__cancel:before,.bx--table-toolbar--sm .bx--btn--primary.bx--batch-summary__cancel:before{top:.5rem}.bx--table-toolbar--small .bx--toolbar-action~.bx--btn,.bx--table-toolbar--sm .bx--toolbar-action~.bx--btn{overflow:hidden;height:2rem}.bx--table-toolbar--small .bx--batch-summary,.bx--table-toolbar--sm .bx--batch-summary{min-height:2rem}.bx--data-table-container{position:relative;padding-top:var(--cds-spacing-01, .125rem)}.bx--data-table-content{overflow-x:auto}.bx--data-table-header{padding:var(--cds-spacing-05, 1rem) 0 var(--cds-spacing-06, 1.5rem) var(--cds-spacing-05, 1rem);background:var(--cds-layer, #f4f4f4)}.bx--data-table-header__title{font-size:var(--cds-productive-heading-03-font-size, 1.25rem);font-weight:var(--cds-productive-heading-03-font-weight, 400);line-height:var(--cds-productive-heading-03-line-height, 1.4);letter-spacing:var(--cds-productive-heading-03-letter-spacing, 0);color:var(--cds-text-primary, #161616)}.bx--data-table-header__description{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);color:var(--cds-text-secondary, #525252)}.bx--data-table{width:100%;border-collapse:collapse;border-spacing:0}.bx--data-table thead{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);background-color:var(--cds-layer-accent, #e0e0e0)}.bx--data-table tbody{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);width:100%;background-color:var(--cds-layer, #f4f4f4)}.bx--data-table tr{width:100%;height:var(--cds-spacing-09, 3rem);border:none}.bx--data-table tbody tr,.bx--data-table tbody tr td,.bx--data-table tbody tr th{transition:background-color 70ms cubic-bezier(0,0,.38,.9)}.bx--data-table tbody tr:hover{background:var(--cds-layer-hover, #e5e5e5)}.bx--data-table tbody tr:hover td,.bx--data-table tbody tr:hover th{border-top:1px solid var(--cds-layer-hover, #e5e5e5);border-bottom:1px solid var(--cds-layer-hover, #e5e5e5);background:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}.bx--data-table tr:hover .bx--link{color:var(--cds-link-secondary, #0043ce)}.bx--data-table tr:hover .bx--link--disabled{color:var(--cds-disabled-02, #c6c6c6)}.bx--data-table th,.bx--data-table td{text-align:left;vertical-align:middle}.bx--data-table th[align=right],.bx--data-table td[align=right]{text-align:right}.bx--data-table th[align=center],.bx--data-table td[align=center]{text-align:center}.bx--data-table th{padding-right:var(--cds-spacing-05, 1rem);padding-left:var(--cds-spacing-05, 1rem);background-color:var(--cds-layer-accent, #e0e0e0);color:var(--cds-text-primary, #161616)}.bx--data-table th:last-of-type{position:static;width:auto}.bx--data-table td,.bx--data-table tbody th{padding-right:var(--cds-spacing-05, 1rem);padding-left:var(--cds-spacing-05, 1rem);border-top:1px solid var(--cds-layer, #f4f4f4);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background:var(--cds-layer, #f4f4f4);color:var(--cds-text-secondary, #525252)}.bx--data-table td+td:first-of-type,.bx--data-table tbody th+td:first-of-type{padding-left:var(--cds-spacing-04, .75rem)}@supports (-moz-appearance: none){.bx--data-table td{background-clip:padding-box}}.bx--data-table .bx--list-box input[role=combobox],.bx--data-table .bx--list-box input[type=text],.bx--data-table .bx--dropdown,.bx--data-table .bx--list-box,.bx--data-table .bx--number input[type=number],.bx--data-table .bx--number__control-btn:before,.bx--data-table .bx--number__control-btn:after,.bx--data-table .bx--text-input,.bx--data-table .bx--select-input{background-color:var(--cds-field-02, #ffffff)}.bx--data-table td.bx--table-column-menu .bx--overflow-menu[aria-expanded=false]:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--data-table td.bx--table-column-menu .bx--overflow-menu[aria-expanded=false]:focus{outline-style:dotted}}.bx--data-table td.bx--table-column-menu .bx--overflow-menu[aria-expanded=true]:focus{outline:none}@media screen and (hover: hover),(-ms-high-contrast: active),(-ms-high-contrast: none){.bx--data-table td.bx--table-column-menu .bx--overflow-menu .bx--overflow-menu__icon{opacity:0}}.bx--data-table td.bx--table-column-menu .bx--overflow-menu.bx--overflow-menu--open .bx--overflow-menu__icon{opacity:1}.bx--data-table.bx--data-table--visible-overflow-menu td.bx--table-column-menu .bx--overflow-menu .bx--overflow-menu__icon,.bx--data-table td.bx--table-column-menu .bx--overflow-menu:hover .bx--overflow-menu__icon,.bx--data-table td.bx--table-column-menu .bx--overflow-menu:focus .bx--overflow-menu__icon,.bx--data-table tr:hover td.bx--table-column-menu .bx--overflow-menu .bx--overflow-menu__icon{opacity:1}.bx--table-row--menu-option .bx--overflow-menu-options__btn .bx--overflow-menu-options__option-content svg{position:relative;top:.1875rem;margin-right:var(--cds-spacing-03, .5rem)}.bx--data-table .bx--overflow-menu:hover,.bx--data-table .bx--overflow-menu__trigger:hover{background-color:var(--cds-layer-selected-hover, #cacaca)}.bx--data-table--selected .bx--overflow-menu:hover,.bx--data-table--selected .bx--overflow-menu__trigger:hover{background-color:var(--cds-layer-hover, #e5e5e5)}.bx--data-table--selected .bx--link:not(.bx--link--disabled){color:var(--cds-link-secondary, #0043ce)}.bx--data-table--compact td.bx--table-column-menu,.bx--data-table--xs td.bx--table-column-menu,.bx--data-table--short td.bx--table-column-menu,.bx--data-table--sm td.bx--table-column-menu{height:1.5rem;padding-top:0;padding-bottom:0}.bx--data-table--short td.bx--table-column-menu,.bx--data-table--sm td.bx--table-column-menu{height:2rem}.bx--data-table--md td.bx--table-column-menu{height:2.5rem}.bx--data-table--tall .bx--table-column-menu,.bx--data-table--xl .bx--table-column-menu{padding-top:var(--cds-spacing-03, .5rem)}.bx--data-table--zebra tbody tr:not(.bx--parent-row):nth-child(odd) td{border-bottom:1px solid var(--cds-layer, #f4f4f4)}.bx--data-table--zebra tbody tr:not(.bx--parent-row):nth-child(even) td{border-top:1px solid var(--cds-ui-02, #ffffff);border-bottom:1px solid var(--cds-ui-02, #ffffff);background-color:var(--cds-ui-02, #ffffff)}.bx--data-table--zebra tbody tr:not(.bx--parent-row):hover td{border-top:1px solid var(--cds-layer-hover, #e5e5e5);border-bottom:1px solid var(--cds-layer-hover, #e5e5e5);background-color:var(--cds-layer-hover, #e5e5e5)}.bx--table-column-checkbox .bx--checkbox-label{padding-left:0}.bx--data-table th.bx--table-column-checkbox{position:static;width:2rem;background:var(--cds-layer-accent, #e0e0e0);transition:background-color 70ms cubic-bezier(0,0,.38,.9)}.bx--data-table .bx--table-column-checkbox .bx--checkbox:focus+.bx--checkbox-label:before{outline-offset:.375rem}.bx--data-table--compact .bx--table-column-checkbox .bx--checkbox:focus+.bx--checkbox-label:before,.bx--data-table--xs .bx--table-column-checkbox .bx--checkbox:focus+.bx--checkbox-label:before{outline-offset:.125rem}.bx--data-table thead th.bx--table-column-checkbox,.bx--data-table tbody td.bx--table-column-checkbox,.bx--data-table thead th.bx--table-expand,.bx--data-table tbody td.bx--table-expand{min-width:0}.bx--data-table thead th.bx--table-column-checkbox,.bx--data-table tbody td.bx--table-column-checkbox{width:2.5rem;padding-right:.25rem;padding-left:1rem}.bx--data-table thead th.bx--table-expand,.bx--data-table tbody td.bx--table-expand{width:2rem;height:2rem}.bx--data-table--compact thead th.bx--table-expand,.bx--data-table--compact tbody td.bx--table-expand,.bx--data-table--xs thead th.bx--table-expand,.bx--data-table--xs tbody td.bx--table-expand{width:1.5rem;height:1.5rem;padding:0 0 0 .5rem}.bx--data-table--short thead th.bx--table-expand,.bx--data-table--short tbody td.bx--table-expand,.bx--data-table--sm thead th.bx--table-expand,.bx--data-table--sm tbody td.bx--table-expand{width:2rem;height:2rem;padding:0;padding-left:.5rem}.bx--data-table--md thead th.bx--table-expand,.bx--data-table--md tbody td.bx--table-expand{width:2.5rem;height:2.5rem;padding:.25rem 0 .25rem .5rem}.bx--data-table--tall thead th.bx--table-expand,.bx--data-table--tall tbody td.bx--table-expand,.bx--data-table--xl thead th.bx--table-expand,.bx--data-table--xl tbody td.bx--table-expand{height:4rem;padding-top:.625rem;padding-bottom:1.375rem}.bx--data-table--tall .bx--table-column-checkbox,.bx--data-table--xl .bx--table-column-checkbox{padding-top:.8125rem}.bx--data-table--tall .bx--table-column-radio,.bx--data-table--xl .bx--table-column-radio{padding-top:var(--cds-spacing-05, 1rem)}tr.bx--data-table--selected:hover .bx--radio-button[disabled]+.bx--radio-button__label,tr.bx--data-table--selected:hover .bx--checkbox[disabled]+.bx--checkbox-label,tr.bx--data-table--selected:hover .bx--link--disabled{color:var(--cds-disabled-03, #8d8d8d)}tr.bx--data-table--selected:hover .bx--radio-button[disabled]+.bx--radio-button__label .bx--radio-button__appearance,tr.bx--data-table--selected:hover .bx--checkbox[disabled]+.bx--checkbox-label:before{border-color:var(--cds-disabled-03, #8d8d8d)}.bx--table-column-radio{width:48px}.bx--table-column-radio .bx--radio-button__appearance{margin-right:-.125rem}.bx--data-table--zebra tbody tr:nth-child(odd).bx--data-table--selected td,tr.bx--data-table--selected td{border-top:1px solid var(--cds-layer-selected, #e0e0e0);border-bottom:1px solid var(--cds-layer-active, #c6c6c6);background-color:var(--cds-layer-selected, #e0e0e0);color:var(--cds-text-primary, #161616)}.bx--data-table--zebra tbody tr:first-of-type:nth-child(odd).bx--data-table--selected td,tr.bx--data-table--selected:first-of-type td{border-top:1px solid var(--cds-layer-active, #c6c6c6)}.bx--data-table--zebra tbody tr:last-of-type:nth-child(odd).bx--data-table--selected td,.bx--data-table--zebra tbody tr:last-of-type:nth-child(even).bx--data-table--selected td,tr.bx--data-table--selected:last-of-type td{border-top:1px solid var(--cds-layer-selected, #e0e0e0);border-bottom:1px solid var(--cds-layer-selected, #e0e0e0)}.bx--data-table--zebra tbody tr:nth-child(even).bx--data-table--selected td{border-bottom:1px solid var(--cds-layer-active, #c6c6c6)}.bx--data-table--zebra tbody tr:nth-child(even).bx--data-table--selected:hover td{border-bottom:1px solid var(--cds-hover-selected-ui, #cacaca)}.bx--data-table--zebra tbody tr:nth-child(odd).bx--data-table--selected:hover td,.bx--data-table tbody .bx--data-table--selected:hover td{border-top:1px solid var(--cds-hover-selected-ui, #cacaca);border-bottom:1px solid var(--cds-hover-selected-ui, #cacaca);background:var(--cds-hover-selected-ui, #cacaca);color:var(--cds-text-primary, #161616)}.bx--data-table--selected .bx--overflow-menu .bx--overflow-menu__icon{opacity:1}.bx--data-table--compact thead tr,.bx--data-table--compact tbody tr,.bx--data-table--compact tbody tr th{height:1.5rem}.bx--data-table--compact .bx--table-header-label,.bx--data-table--compact td,.bx--data-table--compact tbody tr th{padding-top:.125rem;padding-bottom:.125rem}.bx--data-table--compact .bx--overflow-menu{width:2rem;height:100%}.bx--data-table.bx--data-table--compact .bx--table-column-checkbox{padding-top:0;padding-bottom:0}.bx--data-table.bx--data-table--compact .bx--table-column-checkbox .bx--checkbox-label{height:1.4375rem;min-height:1.4375rem}.bx--data-table--xs thead tr,.bx--data-table--xs tbody tr,.bx--data-table--xs tbody tr th{height:1.5rem}.bx--data-table--xs .bx--table-header-label,.bx--data-table--xs td,.bx--data-table--xs tbody tr th{padding-top:.125rem;padding-bottom:.125rem}.bx--data-table--xs .bx--overflow-menu{width:2rem;height:calc(100% + 1px)}.bx--data-table.bx--data-table--xs .bx--table-column-checkbox{padding-top:0;padding-bottom:0}.bx--data-table.bx--data-table--xs .bx--table-column-checkbox .bx--checkbox-label{height:1.4375rem;min-height:1.4375rem}.bx--data-table--short thead tr,.bx--data-table--short tbody tr,.bx--data-table--short tbody tr th{height:2rem}.bx--data-table--short .bx--table-header-label{padding-top:.4375rem;padding-bottom:.4375rem}.bx--data-table--short td,.bx--data-table--short tbody tr th{padding-top:.4375rem;padding-bottom:.375rem}.bx--data-table.bx--data-table--short .bx--table-column-checkbox{padding-top:.1875rem;padding-bottom:.1875rem}.bx--data-table--short .bx--overflow-menu{height:100%}.bx--data-table--sm thead tr,.bx--data-table--sm tbody tr,.bx--data-table--sm tbody tr th{height:2rem}.bx--data-table--sm .bx--table-header-label{padding-top:.4375rem;padding-bottom:.4375rem}.bx--data-table--sm td,.bx--data-table--sm tbody tr th{padding-top:.4375rem;padding-bottom:.375rem}.bx--data-table.bx--data-table--sm .bx--table-column-checkbox{padding-top:.1875rem;padding-bottom:.1875rem}.bx--data-table--sm .bx--overflow-menu{height:calc(100% + 1px)}.bx--data-table--md thead tr,.bx--data-table--md tbody tr,.bx--data-table--md tbody tr th{height:2.5rem}.bx--data-table--md .bx--table-header-label{padding-top:.4375rem;padding-bottom:.4375rem}.bx--data-table--md td,.bx--data-table--md tbody tr th{padding-top:.4375rem;padding-bottom:.375rem}.bx--data-table.bx--data-table--md .bx--table-column-checkbox,.bx--data-table--md .bx--table-column-menu{padding-top:.1875rem;padding-bottom:.1875rem}.bx--data-table--tall thead tr,.bx--data-table--tall tbody tr,.bx--data-table--tall tbody tr th{height:4rem}.bx--data-table--tall .bx--table-header-label{padding-top:var(--cds-spacing-05, 1rem);padding-bottom:var(--cds-spacing-05, 1rem)}.bx--data-table--tall td,.bx--data-table--tall tbody tr th{padding-top:1rem}.bx--data-table--tall th,.bx--data-table--tall td{vertical-align:top}.bx--data-table--tall .bx--data-table--cell-secondary-text{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px)}.bx--data-table--xl thead tr,.bx--data-table--xl tbody tr,.bx--data-table--xl tbody tr th{height:4rem}.bx--data-table--xl .bx--table-header-label{padding-top:var(--cds-spacing-05, 1rem);padding-bottom:var(--cds-spacing-05, 1rem)}.bx--data-table--xl td,.bx--data-table--xl tbody tr th{padding-top:1rem}.bx--data-table--xl th,.bx--data-table--xl td{vertical-align:top}.bx--data-table--xl .bx--data-table--cell-secondary-text{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px)}.bx--data-table--static{width:auto}.bx--data-table-container--static{width:-moz-fit-content;width:fit-content}.bx--data-table_inner-container{background-color:var(--cds-layer-accent, #e0e0e0);transform:translateZ(0)}.bx--data-table--sticky-header{display:block;overflow-y:scroll}.bx--data-table--sticky-header thead,.bx--data-table--sticky-header tbody,.bx--data-table--sticky-header tr,.bx--data-table--sticky-header th,.bx--data-table--sticky-header td{display:flex}.bx--data-table--sticky-header thead{position:sticky;z-index:1;top:0;overflow:scroll;width:100%;-ms-overflow-style:none;will-change:transform}.bx--data-table--sticky-header thead tr th{border-bottom:1px solid var(--cds-layer-active, #c6c6c6)}.bx--data-table--sticky-header tbody{flex-direction:column;-ms-overflow-style:none;overflow-x:scroll;will-change:transform}.bx--data-table--sticky-header tr.bx--parent-row.bx--expandable-row{height:auto;min-height:3rem}.bx--data-table--sticky-header tr.bx--expandable-row:not(.bx--parent-row){height:auto}.bx--data-table--sticky-header .bx--table-expand{max-width:3rem}.bx--data-table--sticky-header thead .bx--table-expand{align-items:center}.bx--data-table--sticky-header .bx--parent-row{min-height:3rem}.bx--data-table--sticky-header:not(.bx--data-table--compact):not(.bx--data-table--xs):not(.bx--data-table--tall):not(.bx--data-table--xl):not(.bx--data-table--short):not(.bx--data-table--sm) td:not(.bx--table-column-menu):not(.bx--table-column-checkbox){padding-top:.875rem}.bx--data-table--sticky-header tr.bx--parent-row.bx--expandable-row:hover+tr[data-child-row] td{border-top:1px solid var(--cds-layer-hover, #e5e5e5)}.bx--data-table--sticky-header tr.bx--expandable-row:last-of-type{overflow:hidden}.bx--data-table--sticky-header tr.bx--data-table--selected:first-of-type td{border-top:none}.bx--data-table--sticky-header thead th.bx--table-column-checkbox,.bx--data-table--sticky-header tbody tr td.bx--table-column-checkbox{width:2.25rem;min-width:2.25rem;align-items:center}.bx--data-table--sticky-header.bx--data-table--tall thead th.bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--xl thead th.bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--tall td.bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--xl td.bx--table-column-checkbox{align-items:flex-start}.bx--data-table--sticky-header th.bx--table-column-checkbox~th:last-of-type:empty{max-width:4rem}.bx--data-table--sticky-header th:empty:not(.bx--table-expand){max-width:2.25rem}.bx--data-table--sticky-header td.bx--table-column-menu{height:auto;align-items:center;padding-top:0}.bx--data-table--sticky-header thead::-webkit-scrollbar,.bx--data-table--sticky-header tbody::-webkit-scrollbar{display:none}@-moz-document url-prefix(){.bx--data-table--sticky-header thead,.bx--data-table--sticky-header tbody{scrollbar-width:none}}.bx--data-table--sticky-header tbody tr:last-of-type{border-bottom:0}.bx--data-table--sticky-header th:not(.bx--table-column-checkbox):not(.bx--table-column-menu):not(.bx--table-expand-v2):not(.bx--table-column-icon),.bx--data-table--sticky-header td:not(.bx--table-column-checkbox):not(.bx--table-column-menu):not(.bx--table-expand-v2):not(.bx--table-column-icon){width:100%;min-width:0}.bx--data-table--sticky-header.bx--data-table--compact tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--xs tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--short tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--sm tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--tall tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--xl tr:not(.bx--expandable-row){height:auto}.bx--data-table--sticky-header.bx--data-table--compact tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--xs tr:not(.bx--expandable-row){min-height:1.5rem}.bx--data-table--sticky-header.bx--data-table--short tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--sm tr:not(.bx--expandable-row){min-height:2rem}.bx--data-table--sticky-header.bx--data-table--tall tr:not(.bx--expandable-row),.bx--data-table--sticky-header.bx--data-table--xl tr:not(.bx--expandable-row){min-height:4rem}.bx--data-table--sticky-header.bx--data-table--compact tr td.bx--table-expand,.bx--data-table--sticky-header.bx--data-table--xs tr td.bx--table-expand{padding-top:.25rem}.bx--data-table--sticky-header.bx--data-table--short tr td.bx--table-expand,.bx--data-table--sticky-header.bx--data-table--sm tr td.bx--table-expand{padding-top:.5rem}.bx--data-table--sticky-header .bx--table-header-label{display:block;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:calc(100% - 10px);padding-top:.9375rem;padding-bottom:1rem;overflow-y:hidden}.bx--data-table--sticky-header.bx--data-table--compact th .bx--table-header-label,.bx--data-table--sticky-header.bx--data-table--xs th .bx--table-header-label{padding-top:.1875rem;padding-bottom:0}.bx--data-table--sticky-header.bx--data-table--short th .bx--table-header-label,.bx--data-table--sticky-header.bx--data-table--sm th .bx--table-header-label{padding-top:.5rem;padding-bottom:0}.bx--data-table--sticky-header.bx--data-table--tall th .bx--table-header-label,.bx--data-table--sticky-header.bx--data-table--xl th .bx--table-header-label{padding-top:1rem}.bx--data-table--sticky-header.bx--data-table--tall th.bx--table-expand,.bx--data-table--sticky-header.bx--data-table--xl th.bx--table-expand{display:flex;align-items:flex-start}.bx--data-table--sticky-header.bx--data-table--compact tr.bx--parent-row .bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--short tr.bx--parent-row .bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--xs tr.bx--parent-row .bx--table-column-checkbox,.bx--data-table--sticky-header.bx--data-table--sm tr.bx--parent-row .bx--table-column-checkbox{align-items:flex-start}.bx--data-table--max-width{max-width:100%}.bx--data-table--sticky-header{max-height:18.75rem}.bx--data-table .bx--form-item.bx--checkbox-wrapper:last-of-type{margin:0}.bx--data-table--short .bx--form-item.bx--checkbox-wrapper:last-of-type,.bx--data-table--compact .bx--form-item.bx--checkbox-wrapper:last-of-type,.bx--data-table--xs .bx--form-item.bx--checkbox-wrapper:last-of-type,.bx--data-table--sm .bx--form-item.bx--checkbox-wrapper:last-of-type{margin:-.1875rem 0}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--data-table-content{outline:1px solid rgba(0,0,0,0)}}.bx--data-table tr.bx--parent-row:first-of-type td{border-top:1px solid var(--cds-border-subtle, #e0e0e0)}.bx--expandable-row--hidden td{width:auto;padding:var(--cds-spacing-05, 1rem);border-top:0}tr.bx--parent-row:not(.bx--expandable-row)+tr[data-child-row]{height:0;transition:height .15s cubic-bezier(.2,0,.38,.9)}tr.bx--parent-row:not(.bx--expandable-row)+tr[data-child-row] td{padding-top:0;padding-bottom:0;border:0;background-color:var(--cds-layer-hover, #e5e5e5);transition:padding .15s cubic-bezier(.2,0,.38,.9),background-color .15s cubic-bezier(.2,0,.38,.9)}tr.bx--parent-row:not(.bx--expandable-row)+tr[data-child-row] td .bx--child-row-inner-container{overflow:hidden;max-height:0}tr.bx--parent-row.bx--expandable-row+tr[data-child-row]{transition:height .15s cubic-bezier(.2,0,.38,.9)}tr.bx--parent-row.bx--expandable-row+tr[data-child-row] td{padding-left:4rem;border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);transition:padding-bottom .11s cubic-bezier(.2,0,.38,.9),transform .11s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9)}tr.bx--parent-row.bx--expandable-row+tr[data-child-row] td .bx--child-row-inner-container{max-height:100%}.bx--parent-row.bx--expandable-row>td,.bx--parent-row.bx--expandable-row+tr[data-child-row]>td{border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);box-shadow:0 1px var(--cds-border-subtle, #e0e0e0)}.bx--parent-row:not(.bx--expandable-row)+tr[data-child-row]>td{box-shadow:none}.bx--parent-row.bx--expandable-row>td:first-of-type{box-shadow:none}tr.bx--parent-row:not(.bx--expandable-row) td,tr.bx--parent-row.bx--expandable-row td,tr.bx--parent-row.bx--expandable-row{transition:height .24s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9)}tr.bx--parent-row:not(.bx--expandable-row):first-of-type:hover td{border-top:1px solid var(--cds-border-subtle, #e0e0e0);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0)}tr.bx--parent-row.bx--expandable-row:hover td{border-top:1px solid var(--cds-border-subtle, #e0e0e0);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background-color:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}tr.bx--parent-row.bx--expandable-row:hover td:first-of-type{border-bottom:1px solid var(--cds-layer-hover, #e5e5e5)}tr.bx--parent-row.bx--expandable-row:hover+tr[data-child-row] td{border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background-color:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}tr.bx--expandable-row--hover+tr[data-child-row] td{border-bottom:1px solid var(--cds-border-subtle, #e0e0e0)}tr.bx--expandable-row--hover{background-color:var(--cds-layer-hover, #e5e5e5)}tr.bx--expandable-row--hover td{border-top:1px solid var(--cds-border-subtle, #e0e0e0);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background-color:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}tr.bx--parent-row.bx--expandable-row.bx--expandable-row--hover td:first-of-type{border-bottom:1px solid rgba(0,0,0,0)}.bx--data-table td.bx--table-expand{border-bottom:1px solid var(--cds-border-subtle, #e0e0e0)}.bx--data-table th.bx--table-expand+.bx--table-column-checkbox,.bx--data-table td.bx--table-expand+.bx--table-column-checkbox{padding-right:.375rem;padding-left:.375rem}.bx--data-table th.bx--table-expand+.bx--table-column-checkbox+th,.bx--data-table td.bx--table-expand+.bx--table-column-checkbox+td{padding-left:.5rem}.bx--data-table td.bx--table-expand,.bx--data-table th.bx--table-expand{padding:.5rem;padding-right:0}.bx--data-table td.bx--table-expand[data-previous-value=collapsed]{border-bottom:1px solid rgba(0,0,0,0)}.bx--table-expand[data-previous-value=collapsed] .bx--table-expand__svg{transform:rotate(270deg);transition:transform .15s cubic-bezier(.2,0,.38,.9)}.bx--table-expand__button{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;display:inline-flex;width:100%;height:calc(100% + 1px);align-items:center;justify-content:center;padding:0 .5rem;vertical-align:inherit}.bx--table-expand__button::-moz-focus-inner{border:0}.bx--table-expand__button:focus{box-shadow:inset 0 0 0 2px var(--cds-focus, #0f62fe);outline:none}.bx--table-expand__svg{fill:var(--cds-ui-05, #161616);transform:rotate(90deg);transition:transform .15s cubic-bezier(.2,0,.38,.9)}.bx--data-table--tall .bx--table-expand__button,.bx--data-table--xl .bx--table-expand__button{width:2rem;padding:0}tr.bx--parent-row.bx--expandable-row td.bx--table-expand+td:after{position:absolute;bottom:-.0625rem;left:0;width:.5rem;height:.0625rem;background:var(--cds-layer-accent, #e0e0e0);content:""}tr.bx--parent-row.bx--expandable-row:hover td.bx--table-expand+td:after,tr.bx--parent-row.bx--expandable-row.bx--expandable-row--hover td.bx--table-expand+td:after{background:var(--cds-layer-hover, #e5e5e5)}tr.bx--parent-row.bx--data-table--selected td.bx--table-expand+td:after{display:none}.bx--data-table--zebra tbody tr[data-parent-row]:nth-child(4n+3) td,.bx--data-table--zebra tbody tr[data-child-row]:nth-child(4n+4) td{border-bottom:1px solid var(--cds-layer, #f4f4f4)}.bx--data-table--zebra tbody tr[data-parent-row]:nth-child(4n+1) td,.bx--data-table--zebra tbody tr[data-child-row]:nth-child(4n+2) td{border-top:1px solid var(--cds-ui-02, #ffffff);border-bottom:1px solid var(--cds-ui-02, #ffffff);background-color:var(--cds-ui-02, #ffffff)}.bx--data-table--zebra tr.bx--parent-row td,.bx--data-table--zebra tr.bx--parent-row.bx--expandable-row+tr[data-child-row] td{transition:transform .15s cubic-bezier(.2,0,.38,.9),border-bottom .15s cubic-bezier(.2,0,.38,.9),border-top .15s cubic-bezier(.2,0,.38,.9)}.bx--data-table--zebra tbody tr[data-parent-row]:hover td,.bx--data-table--zebra tbody tr[data-parent-row]:hover+tr[data-child-row] td,.bx--data-table--zebra tbody tr[data-child-row]:hover td{border-top:1px solid var(--cds-layer-hover, #e5e5e5);border-bottom:1px solid var(--cds-layer-hover, #e5e5e5);background-color:var(--cds-layer-hover, #e5e5e5)}.bx--data-table--zebra tr.bx--parent-row.bx--expandable-row.bx--expandable-row--hover td{border-top:1px solid var(--cds-layer-hover, #e5e5e5);border-bottom:1px solid var(--cds-layer-hover, #e5e5e5);background:var(--cds-layer-hover, #e5e5e5)}tr.bx--parent-row.bx--data-table--selected:first-of-type td{border-top:1px solid var(--cds-layer-active, #c6c6c6);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background:var(--cds-layer-selected, #e0e0e0);box-shadow:0 1px var(--cds-layer-active, #c6c6c6)}tr.bx--parent-row.bx--data-table--selected td{border-bottom:1px solid rgba(0,0,0,0);background:var(--cds-layer-selected, #e0e0e0);box-shadow:0 1px var(--cds-layer-active, #c6c6c6);color:var(--cds-text-primary, #161616)}tr.bx--parent-row.bx--data-table--selected:last-of-type td{border-bottom:1px solid rgba(0,0,0,0);background:var(--cds-layer-selected, #e0e0e0);box-shadow:0 1px var(--cds-border-subtle, #e0e0e0)}tr.bx--parent-row.bx--data-table--selected:not(.bx--expandable-row):hover td{border-top:1px solid var(--cds-layer-selected-hover, #cacaca);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background:var(--cds-layer-selected-hover, #cacaca);box-shadow:0 1px var(--cds-layer-selected-hover, #cacaca)}tr.bx--parent-row.bx--data-table--selected.bx--expandable-row td,tr.bx--parent-row.bx--data-table--selected.bx--expandable-row td:first-of-type{border-bottom:1px solid rgba(0,0,0,0);box-shadow:0 1px var(--cds-layer-selected, #e0e0e0)}tr.bx--parent-row.bx--data-table--selected.bx--expandable-row:hover td,tr.bx--parent-row.bx--data-table--selected.bx--expandable-row:hover td:first-of-type,tr.bx--parent-row.bx--data-table--selected.bx--expandable-row--hover td,tr.bx--parent-row.bx--data-table--selected.bx--expandable-row--hover td:first-of-type{border-top:1px solid var(--cds-layer-selected-hover, #cacaca);border-bottom:1px solid rgba(0,0,0,0);background:var(--cds-layer-selected-hover, #cacaca);box-shadow:0 1px var(--cds-layer-selected-hover, #cacaca)}tr.bx--parent-row.bx--data-table--selected.bx--expandable-row+tr[data-child-row] td{border-top:1px solid var(--cds-layer-active, #c6c6c6);border-bottom:1px solid var(--cds-border-subtle, #e0e0e0);background-color:var(--cds-layer-hover, #e5e5e5);box-shadow:0 1px var(--cds-layer-active, #c6c6c6);color:var(--cds-text-primary, #161616)}tr.bx--parent-row.bx--data-table--selected.bx--expandable-row+tr[data-child-row]:last-of-type td{padding-bottom:1.5rem;box-shadow:inset 0 -1px var(--cds-layer-active, #c6c6c6)}tr.bx--parent-row.bx--data-table--selected.bx--expandable-row:hover+tr[data-child-row] td,tr.bx--parent-row.bx--data-table--selected.bx--expandable-row--hover+tr[data-child-row] td{background:var(--cds-layer-selected, #e0e0e0)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--table-expand__button:focus .bx--table-expand__svg{color:Highlight;outline:1px solid Highlight}.bx--table-expand__svg{fill:ButtonText}}.bx--data-table--sort th,.bx--data-table th[aria-sort]{height:var(--cds-spacing-09, 3rem);padding:0;border-top:none;border-bottom:none}.bx--table-sort{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;display:flex;width:100%;min-height:100%;align-items:center;justify-content:space-between;padding-left:var(--cds-spacing-05, 1rem);background-color:var(--cds-layer-accent, #e0e0e0);color:var(--cds-text-primary, #161616);font:inherit;line-height:1;text-align:left;transition:background-color 70ms cubic-bezier(0,0,.38,.9),outline 70ms cubic-bezier(0,0,.38,.9)}.bx--table-sort::-moz-focus-inner{border:0}.bx--table-sort:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--table-sort:focus{outline-style:dotted}}.bx--table-sort:hover{background:var(--cds-hover-selected-ui, #cacaca)}.bx--table-sort:focus svg,.bx--table-sort:hover svg{opacity:1}.bx--data-table.bx--data-table--sort th>.bx--table-header-label{padding-right:var(--cds-spacing-05, 1rem);padding-left:var(--cds-spacing-05, 1rem)}th .bx--table-sort__flex{display:flex;width:100%;height:100%;min-height:3rem;align-items:center;justify-content:space-between}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.bx--data-table--sort:not(.bx--data-table--compact):not(.bx--data-table--short):not(.bx--data-table--tall):not(.bx--data-table--xs):not(.bx--data-table--sm):not(.bx--data-table--md):not(.bx--data-table--xl) th .bx--table-sort__flex{height:2.99rem}}.bx--data-table--compact.bx--data-table--sort th .bx--table-sort__flex,.bx--data-table--xs.bx--data-table--sort th .bx--table-sort__flex{min-height:1.5rem}.bx--data-table--short.bx--data-table--sort th .bx--table-sort__flex,.bx--data-table--sm.bx--data-table--sort th .bx--table-sort__flex{min-height:2rem}.bx--data-table--md.bx--data-table--sort th .bx--table-sort__flex{min-height:2.5rem}.bx--data-table--tall.bx--data-table--sort th .bx--table-sort__flex,.bx--data-table--xl.bx--data-table--sort th .bx--table-sort__flex{min-height:4rem;align-items:flex-start}.bx--table-sort .bx--table-sort__icon-inactive{display:block}.bx--table-sort .bx--table-sort__icon{display:none}.bx--table-sort__icon-unsorted{width:1.25rem;min-width:var(--cds-spacing-05, 1rem);margin-right:var(--cds-spacing-03, .5rem);margin-left:var(--cds-spacing-03, .5rem);fill:var(--cds-icon-primary, #161616);opacity:0}.bx--table-sort.bx--table-sort--active{background:var(--cds-hover-selected-ui, #cacaca)}.bx--table-sort.bx--table-sort--active .bx--table-sort__icon-unsorted{display:none}.bx--table-sort.bx--table-sort--active .bx--table-sort__icon{display:block;opacity:1}.bx--table-sort--ascending .bx--table-sort__icon{transform:rotate(180deg)}.bx--table-sort__icon{width:1.25rem;min-width:var(--cds-spacing-05, 1rem);margin-right:var(--cds-spacing-03, .5rem);margin-left:var(--cds-spacing-03, .5rem);fill:var(--cds-icon-primary, #161616);opacity:1;transform:rotate(0);transition:transform .11s cubic-bezier(.2,0,.38,.9)}.bx--data-table--compact.bx--data-table--sort th,.bx--data-table--xs.bx--data-table--sort th{height:1.5rem}.bx--data-table--short.bx--data-table--sort th,.bx--data-table--sm.bx--data-table--sort th{height:2rem}.bx--data-table--md.bx--data-table--sort th{height:2.5rem}.bx--data-table--tall.bx--data-table--sort th,.bx--data-table--xl.bx--data-table--sort th{height:4rem}.bx--data-table--tall.bx--data-table--sort th .bx--table-sort,.bx--data-table--xl.bx--data-table--sort th .bx--table-sort{display:inline-block;height:4rem}.bx--data-table--tall .bx--table-sort__icon-unsorted,.bx--data-table--tall .bx--table-sort__icon,.bx--data-table--xl .bx--table-sort__icon-unsorted,.bx--data-table--xl .bx--table-sort__icon{margin-top:.8125rem}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--table-sort__icon,.bx--table-sort__icon-unsorted{fill:ButtonText}}.bx--inline-edit-label{display:flex;align-items:center;justify-content:space-between}.bx--inline-edit-label:hover .bx--inline-edit-label__icon{opacity:1}.bx--inline-edit-label--inactive{display:none}.bx--inline-edit-label__action{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer}.bx--inline-edit-label__action::-moz-focus-inner{border:0}.bx--inline-edit-label__action:hover{cursor:pointer}.bx--inline-edit-label__action:focus{outline:1px solid var(--cds-focus, #0f62fe);padding:var(--cds-spacing-01, .125rem)}@media screen and (prefers-contrast){.bx--inline-edit-label__action:focus{outline-style:dotted}}.bx--inline-edit-label__action:focus .bx--inline-edit-label__icon{width:auto;opacity:1}.bx--inline-edit-label__icon{fill:var(--cds-icon-primary, #161616);opacity:0}.bx--inline-edit-input{display:none}.bx--inline-edit-input--active{display:block;margin-left:-.75rem}.bx--inline-edit-input--active input{padding-left:var(--cds-spacing-04, .75rem)}.bx--data-table.bx--skeleton th{padding-left:1rem;vertical-align:middle}.bx--data-table.bx--skeleton th span,.bx--data-table.bx--skeleton td span{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;display:block;width:4rem;height:1rem}.bx--data-table.bx--skeleton th span:hover,.bx--data-table.bx--skeleton th span:focus,.bx--data-table.bx--skeleton th span:active,.bx--data-table.bx--skeleton td span:hover,.bx--data-table.bx--skeleton td span:focus,.bx--data-table.bx--skeleton td span:active{border:none;cursor:default;outline:none}.bx--data-table.bx--skeleton th span:before,.bx--data-table.bx--skeleton td span:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--data-table.bx--skeleton th span:before,.bx--data-table.bx--skeleton td span:before{animation:none}}.bx--data-table.bx--skeleton tr:hover td{border-color:var(--cds-border-subtle, #e0e0e0);background:rgba(0,0,0,0)}.bx--data-table.bx--skeleton tr:hover td:first-of-type,.bx--data-table.bx--skeleton tr:hover td:last-of-type{border-color:var(--cds-border-subtle, #e0e0e0)}.bx--data-table.bx--skeleton .bx--table-sort-v2{pointer-events:none}.bx--data-table.bx--skeleton th span{background:var(--cds-skeleton-element, #c6c6c6)}.bx--data-table.bx--skeleton th span:before{background:var(--cds-skeleton-background, #e5e5e5)}.bx--data-table-container.bx--skeleton .bx--data-table-header__title{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:7.5rem;height:1.5rem}.bx--data-table-container.bx--skeleton .bx--data-table-header__title:hover,.bx--data-table-container.bx--skeleton .bx--data-table-header__title:focus,.bx--data-table-container.bx--skeleton .bx--data-table-header__title:active{border:none;cursor:default;outline:none}.bx--data-table-container.bx--skeleton .bx--data-table-header__title:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--data-table-container.bx--skeleton .bx--data-table-header__title:before{animation:none}}.bx--data-table-container.bx--skeleton .bx--data-table-header__description{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:10rem;height:1rem;margin-top:var(--cds-spacing-03, .5rem)}.bx--data-table-container.bx--skeleton .bx--data-table-header__description:hover,.bx--data-table-container.bx--skeleton .bx--data-table-header__description:focus,.bx--data-table-container.bx--skeleton .bx--data-table-header__description:active{border:none;cursor:default;outline:none}.bx--data-table-container.bx--skeleton .bx--data-table-header__description:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--data-table-container.bx--skeleton .bx--data-table-header__description:before{animation:none}}@keyframes fpFadeInDown{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes fpSlideLeft{0%{transform:translateZ(0)}to{transform:translate3d(-100%,0,0)}}@keyframes fpSlideLeftNew{0%{transform:translate3d(100%,0,0)}to{transform:translateZ(0)}}@keyframes fpSlideRight{0%{transform:translateZ(0)}to{transform:translate3d(100%,0,0)}}@keyframes fpSlideRightNew{0%{transform:translate3d(-100%,0,0)}to{transform:translateZ(0)}}@keyframes fpFadeOut{0%{opacity:1}to{opacity:0}}@keyframes fpFadeIn{0%{opacity:0}to{opacity:1}}.flatpickr-calendar{position:absolute;box-sizing:border-box;width:19.6875rem;max-height:0;padding:0;overflow:hidden;direction:ltr;text-align:center;border:0;border-radius:0;visibility:hidden;opacity:0;animation:none;touch-action:manipulation}.flatpickr-calendar.open,.flatpickr-calendar.inline{max-height:40rem;overflow:visible;visibility:inherit;opacity:1}.flatpickr-calendar.open{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;width:18rem;height:21rem;margin-top:-.125rem;padding:.25rem .25rem .5rem;overflow:hidden;background-color:var(--cds-ui-01, #f4f4f4);border:none}.flatpickr-calendar.open:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.flatpickr-calendar.open:focus{outline-style:dotted}}.flatpickr-calendar.animate.open{animation:fpFadeInDown .11s cubic-bezier(0,0,.38,.9)}.flatpickr-calendar.inline{position:relative;top:.125rem;display:block}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.hasWeeks{width:auto}.dayContainer{display:flex;flex-wrap:wrap;justify-content:space-around;height:15.375rem;padding:0;outline:0}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:2.5rem;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:focus{outline:0}.flatpickr-months{display:flex;justify-content:space-between;width:100%}.flatpickr-month{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);display:flex;align-items:center;height:2.5rem;color:var(--cds-text-01, #161616);line-height:1;text-align:center;background-color:#0000}.flatpickr-prev-month,.flatpickr-next-month{z-index:3;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;padding:0;line-height:16px;text-decoration:none;transform:scale(1);cursor:pointer;transition:background-color 70ms cubic-bezier(.2,0,.38,.9);fill:var(--cds-icon-01, #161616);-webkit-user-select:none;-moz-user-select:none;user-select:none}.flatpickr-prev-month:hover,.flatpickr-next-month:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.flatpickr-next-month.disabled svg,.flatpickr-prev-month.disabled svg{cursor:not-allowed;fill:var(--cds-ui-05, #161616)}.flatpickr-next-month.disabled:hover svg,.flatpickr-prev-month.disabled:hover svg{fill:var(--cds-ui-05, #161616)}.flatpickr-current-month{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);display:flex;align-items:center;justify-content:center;height:1.75rem;text-align:center}.flatpickr-current-month .cur-month{margin-right:.25rem;margin-left:.25rem}.flatpickr-current-month .cur-month:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.numInputWrapper{position:relative;width:3.75rem}.numInputWrapper:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.numInputWrapper .numInput{display:inline-block;width:100%;margin:0;padding:.25rem;color:var(--cds-text-01, #161616);font-weight:600;font-size:inherit;font-family:inherit;background-color:var(--cds-field-01, #f4f4f4);border:none;cursor:default;-moz-appearance:textfield}.numInputWrapper .numInput::-webkit-outer-spin-button,.numInputWrapper .numInput::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper .numInput:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.numInputWrapper .numInput:focus{outline-style:dotted}}.numInputWrapper .numInput[disabled],.numInputWrapper .numInput[disabled]:hover{color:var(--cds-disabled-02, #c6c6c6);background-color:var(--cds-ui-01, #f4f4f4);pointer-events:none}.numInputWrapper .arrowUp{top:.25rem;border-bottom:0}.numInputWrapper .arrowUp:after{border-bottom:.25rem solid var(--cds-icon-01, #161616)}.numInputWrapper .arrowDown{top:.6875rem}.numInputWrapper .arrowDown:after{border-top:.25rem solid var(--cds-icon-01, #161616)}.numInputWrapper .arrowUp,.numInputWrapper .arrowDown{position:absolute;left:2.6rem;width:.75rem;height:50%;padding:0 .25rem 0 .125rem;line-height:50%;border:none;cursor:pointer;opacity:0}.numInputWrapper .arrowUp:after,.numInputWrapper .arrowDown:after{position:absolute;top:33%;display:block;border-right:.25rem solid rgba(0,0,0,0);border-left:.25rem solid rgba(0,0,0,0);content:""}.numInputWrapper .arrowUp:hover:after,.numInputWrapper .arrowDown:hover:after{border-top-color:var(--cds-interactive-01, #0f62fe);border-bottom-color:var(--cds-interactive-01, #0f62fe)}.numInputWrapper .arrowUp:active:after,.numInputWrapper .arrowDown:active:after{border-top-color:var(--cds-interactive-04, #0f62fe);border-bottom-color:var(--cds-interactive-04, #0f62fe)}.numInput[disabled]~.arrowUp:after{border-bottom-color:var(--cds-disabled-02, #c6c6c6)}.numInput[disabled]~.arrowDown:after{border-top-color:var(--cds-disabled-02, #c6c6c6)}.numInputWrapper:hover .arrowUp,.numInputWrapper:hover .arrowDown{opacity:1}.numInputWrapper:hover .numInput[disabled]~.arrowUp,.numInputWrapper:hover .numInput[disabled]~.arrowDown{opacity:0}.flatpickr-weekdays{display:flex;align-items:center;height:2.5rem}.flatpickr-weekdaycontainer{display:flex;width:100%}.flatpickr-weekday{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);flex:1;color:var(--cds-text-01, #161616);cursor:default}.flatpickr-days:focus{outline:0}.flatpickr-calendar.animate .dayContainer.slideLeft{animation:fpFadeOut .4s cubic-bezier(.23,1,.32,1),fpSlideLeft .4s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.animate .dayContainer.slideLeft,.flatpickr-calendar.animate .dayContainer.slideLeftNew{transform:translate3d(-100%,0,0)}.flatpickr-calendar.animate .dayContainer.slideLeftNew{animation:fpFadeIn .4s cubic-bezier(.23,1,.32,1),fpSlideLeft .4s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.animate .dayContainer.slideRight{transform:translate3d(100%,0,0);animation:fpFadeOut .4s cubic-bezier(.23,1,.32,1),fpSlideRight .4s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.animate .dayContainer.slideRightNew{animation:fpFadeIn .4s cubic-bezier(.23,1,.32,1),fpSlideRightNew .4s cubic-bezier(.23,1,.32,1)}.flatpickr-day{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;color:var(--cds-text-01, #161616);cursor:pointer;transition:all 70ms cubic-bezier(.2,0,.38,.9)}.flatpickr-day:hover{background:var(--cds-hover-ui, #e5e5e5)}.flatpickr-day:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;outline-color:var(--cds-interactive-01, #0f62fe)}@media screen and (prefers-contrast){.flatpickr-day:focus{outline-style:dotted}}.nextMonthDay,.prevMonthDay{color:var(--cds-text-05, #6f6f6f)}.flatpickr-day.today{position:relative;color:var(--cds-link-01, #0f62fe);font-weight:600}.flatpickr-day.today:after{position:absolute;bottom:.4375rem;left:50%;display:block;width:.25rem;height:.25rem;background-color:var(--cds-link-01, #0f62fe);transform:translate(-50%);content:""}.flatpickr-day.today.no-border{border:none}.flatpickr-day.today.selected{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.flatpickr-day.today.selected{outline-style:dotted}}.flatpickr-day.today.selected:after{display:none}.flatpickr-day.inRange{color:var(--cds-text-01, #161616);background-color:var(--cds-highlight, #d0e2ff)}.flatpickr-day.selected{color:var(--cds-text-04, #ffffff);background-color:var(--cds-interactive-01, #0f62fe)}.flatpickr-day.selected:focus{outline:.0625rem solid var(--cds-ui-02, #ffffff);outline-offset:-.1875rem}.flatpickr-day.startRange.selected{z-index:2;box-shadow:none}.flatpickr-day.startRange.inRange:not(.selected),.flatpickr-day.endRange.inRange{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;z-index:3;background:var(--cds-ui-01, #f4f4f4)}@media screen and (prefers-contrast){.flatpickr-day.startRange.inRange:not(.selected),.flatpickr-day.endRange.inRange{outline-style:dotted}}.flatpickr-day.endRange:hover{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;color:var(--cds-text-01, #161616);background:var(--cds-ui-01, #f4f4f4)}@media screen and (prefers-contrast){.flatpickr-day.endRange:hover{outline-style:dotted}}.flatpickr-day.endRange.inRange.selected{color:var(--cds-text-04, #ffffff);background:var(--cds-interactive-01, #0f62fe)}.flatpickr-day.flatpickr-disabled{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.flatpickr-day.flatpickr-disabled:hover{background-color:#0000}.flatpickr-input[readonly]{cursor:pointer}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.flatpickr-prev-month,.flatpickr-next-month{fill:ButtonText}.flatpickr-day.selected{color:Highlight;outline:1px solid Highlight;outline-style:dotted}.flatpickr-day.today,.flatpickr-day.inRange{color:Highlight}.flatpickr-calendar{outline:1px solid rgba(0,0,0,0)}}.bx--date-picker{display:flex}.bx--date-picker--light .bx--date-picker__input{background:var(--cds-field-02, #ffffff)}.bx--date-picker~.bx--label{order:1}.bx--date-picker-container{position:relative;display:flex;flex-direction:column;justify-content:space-between}.bx--date-picker-input__wrapper{position:relative;display:flex;align-items:center}.bx--date-picker.bx--date-picker--simple .bx--date-picker__input,.bx--date-picker.bx--date-picker--simple .bx--label{width:7.5rem}.bx--date-picker.bx--date-picker--simple .bx--date-picker-input__wrapper--invalid .bx--date-picker__input,.bx--date-picker.bx--date-picker--simple .bx--date-picker-input__wrapper--invalid~.bx--form-requirement,.bx--date-picker.bx--date-picker--simple .bx--date-picker-input__wrapper--warn .bx--date-picker__input,.bx--date-picker.bx--date-picker--simple .bx--date-picker-input__wrapper--warn~.bx--form-requirement{width:9.5rem}.bx--date-picker.bx--date-picker--simple.bx--date-picker--short .bx--date-picker__input{width:5.7rem}.bx--date-picker.bx--date-picker--single .bx--date-picker__input{width:18rem}.bx--date-picker .bx--date-picker-input__wrapper--warn~.bx--form-requirement{color:var(--cds-text-primary, #161616)}.bx--date-picker__input{font-family:var(--cds-code-02-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-02-font-size, .875rem);font-weight:var(--cds-code-02-font-weight, 400);line-height:var(--cds-code-02-line-height, 1.42857);letter-spacing:var(--cds-code-02-letter-spacing, .32px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:relative;display:block;height:2.5rem;padding:0 1rem;border:none;border-bottom:1px solid var(--cds-border-strong, #8d8d8d);background-color:var(--cds-field, #f4f4f4);color:var(--cds-text-primary, #161616);transition:70ms cubic-bezier(.2,0,.38,.9) all}.bx--date-picker__input:focus,.bx--date-picker__input.bx--focused{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--date-picker__input:focus,.bx--date-picker__input.bx--focused{outline-style:dotted}}.bx--date-picker__input:disabled{border-bottom:1px solid rgba(0,0,0,0);background-color:var(--cds-field, #f4f4f4);color:var(--cds-text-disabled, #c6c6c6);cursor:not-allowed}.bx--date-picker__input:disabled::-moz-placeholder{color:var(--cds-text-disabled, #c6c6c6)}.bx--date-picker__input:disabled::placeholder{color:var(--cds-text-disabled, #c6c6c6)}.bx--date-picker__input:disabled:hover{border-bottom:1px solid rgba(0,0,0,0)}.bx--date-picker__input::-moz-placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--date-picker__input::placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--date-picker__input--xl,.bx--date-picker__input--lg{height:3rem}.bx--date-picker__input--sm{height:2rem}.bx--date-picker__icon{position:absolute;z-index:1;top:50%;right:1rem;fill:var(--cds-icon-primary, #161616);pointer-events:none;transform:translateY(-50%)}.bx--date-picker__icon--invalid,.bx--date-picker__icon--warn{cursor:auto}.bx--date-picker__icon--warn{fill:var(--cds-support-warning, #f1c21b)}.bx--date-picker__icon--warn path:first-of-type{fill:#000;opacity:1}.bx--date-picker__icon--invalid{fill:var(--cds-support-error, #da1e28)}.bx--date-picker__icon~.bx--date-picker__input{padding-right:3rem}.bx--date-picker__input:disabled~.bx--date-picker__icon{cursor:not-allowed;fill:var(--cds-icon-disabled, #c6c6c6)}.bx--date-picker--range>.bx--date-picker-container:first-child{margin-right:.0625rem}.bx--date-picker--range .bx--date-picker-container,.bx--date-picker--range .bx--date-picker__input{width:8.96875rem}.bx--date-picker.bx--skeleton input,.bx--date-picker__input.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:100%}.bx--date-picker.bx--skeleton input:hover,.bx--date-picker.bx--skeleton input:focus,.bx--date-picker.bx--skeleton input:active,.bx--date-picker__input.bx--skeleton:hover,.bx--date-picker__input.bx--skeleton:focus,.bx--date-picker__input.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--date-picker.bx--skeleton input:before,.bx--date-picker__input.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--date-picker.bx--skeleton input:before,.bx--date-picker__input.bx--skeleton:before{animation:none}}.bx--date-picker.bx--skeleton input::-moz-placeholder,.bx--date-picker__input.bx--skeleton::-moz-placeholder{color:#0000}.bx--date-picker.bx--skeleton input::placeholder,.bx--date-picker__input.bx--skeleton::placeholder{color:#0000}.bx--date-picker.bx--skeleton .bx--label{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:4.6875rem;height:.875rem}.bx--date-picker.bx--skeleton .bx--label:hover,.bx--date-picker.bx--skeleton .bx--label:focus,.bx--date-picker.bx--skeleton .bx--label:active{border:none;cursor:default;outline:none}.bx--date-picker.bx--skeleton .bx--label:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--date-picker.bx--skeleton .bx--label:before{animation:none}}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--date-picker__icon{fill:ButtonText}}.bx--dropdown__wrapper--inline{display:inline-grid;align-items:center;grid-gap:0 1.5rem;grid-template:auto auto/auto min-content}.bx--dropdown__wrapper--inline .bx--label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}.bx--dropdown__wrapper--inline .bx--label,.bx--dropdown__wrapper--inline .bx--form__helper-text,.bx--dropdown__wrapper--inline .bx--form-requirement{margin:0}.bx--dropdown__wrapper--inline .bx--form-requirement{grid-column:2}.bx--dropdown{outline-offset:-2px;position:relative;display:block;width:100%;height:2.5rem;border:none;border-bottom:1px solid var(--cds-border-strong, #8d8d8d);background-color:var(--cds-field, #f4f4f4);color:var(--cds-text-primary, #161616);cursor:pointer;list-style:none;outline:2px solid rgba(0,0,0,0);transition:background-color 70ms cubic-bezier(.2,0,.38,.9)}.bx--dropdown:hover{background-color:var(--cds-field-hover, #e5e5e5)}.bx--dropdown .bx--list-box__field{text-align:left}.bx--dropdown--xl,.bx--dropdown--lg{height:3rem;max-height:3rem}.bx--dropdown--xl .bx--dropdown__arrow,.bx--dropdown--lg .bx--dropdown__arrow{top:1rem}.bx--dropdown--sm{height:2rem;max-height:2rem}.bx--dropdown--sm .bx--dropdown__arrow{top:.5rem}.bx--dropdown--open{border-bottom-color:var(--cds-border-subtle, #e0e0e0)}.bx--dropdown--invalid{outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px}@media screen and (prefers-contrast){.bx--dropdown--invalid{outline-style:dotted}}.bx--dropdown--invalid .bx--dropdown-text{padding-right:3.5rem}.bx--dropdown--invalid+.bx--form-requirement{display:inline-block;max-height:12.5rem;color:var(--cds-text-error, #da1e28)}.bx--dropdown__invalid-icon{position:absolute;top:50%;right:var(--cds-spacing-08, 2.5rem);fill:var(--cds-support-error, #da1e28);transform:translateY(-50%)}.bx--dropdown--open:hover{background-color:var(--cds-field, #f4f4f4)}.bx--dropdown--open:focus{outline:1px solid rgba(0,0,0,0)}.bx--dropdown--open .bx--dropdown-list{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));max-height:13.75rem;transition:max-height .11s cubic-bezier(0,0,.38,.9)}.bx--dropdown--light{background-color:var(--cds-field-02, #ffffff)}.bx--dropdown--light:hover{background-color:var(--cds-hover-light-ui, #e5e5e5)}.bx--dropdown--up .bx--dropdown-list{bottom:2rem}.bx--dropdown__arrow{position:absolute;top:.8125rem;right:1rem;fill:var(--cds-icon-primary, #161616);pointer-events:none;transform-origin:50% 45%;transition:transform .11s cubic-bezier(.2,0,.38,.9)}button.bx--dropdown-text{width:100%;border:none;background:none;color:var(--cds-text-primary, #161616);text-align:left}button.bx--dropdown-text:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){button.bx--dropdown-text:focus{outline-style:dotted}}.bx--dropdown-text{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:block;overflow:hidden;height:calc(100% + 1px);padding-right:2.625rem;padding-left:1rem;text-overflow:ellipsis;white-space:nowrap}.bx--dropdown-list{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:absolute;z-index:9100;display:flex;width:100%;max-height:0;flex-direction:column;background-color:var(--cds-layer, #f4f4f4);list-style:none;overflow-x:hidden;overflow-y:auto;transition:max-height .11s cubic-bezier(.2,0,.38,.9)}.bx--dropdown--light .bx--dropdown-list{background-color:var(--cds-field-02, #ffffff)}.bx--dropdown:not(.bx--dropdown--open) .bx--dropdown-item{visibility:hidden}.bx--dropdown-item{position:relative;opacity:0;transition:visibility 70ms cubic-bezier(.2,0,.38,.9),opacity 70ms cubic-bezier(.2,0,.38,.9),background-color 70ms cubic-bezier(.2,0,.38,.9);visibility:inherit}.bx--dropdown-item:hover{background-color:var(--cds-layer-hover, #e5e5e5)}.bx--dropdown-item:hover+.bx--dropdown-item .bx--dropdown-link{border-color:#0000}.bx--dropdown-item:active{background-color:var(--cds-layer-selected, #e0e0e0)}.bx--dropdown-item:first-of-type .bx--dropdown-link{border-top-color:#0000}.bx--dropdown-item:last-of-type .bx--dropdown-link{border-bottom:none}.bx--dropdown-link{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:block;overflow:hidden;height:2.5rem;padding:.6875rem 0;border:1px solid rgba(0,0,0,0);border-top-color:var(--cds-border-subtle, #e0e0e0);margin:0 1rem;color:var(--cds-text-secondary, #525252);font-weight:400;line-height:1rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.bx--dropdown-link:hover{border-color:#0000;color:var(--cds-text-01, #161616)}.bx--dropdown--light .bx--dropdown-link{border-top-color:var(--cds-decorative-01, #e0e0e0)}.bx--dropdown--sm .bx--dropdown-link{height:2rem;padding-top:.4375rem;padding-bottom:.4375rem}.bx--dropdown--xl .bx--dropdown-link{height:3rem;padding-top:.9375rem;padding-bottom:.9375rem}.bx--dropdown--focused,.bx--dropdown-link:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;padding:.6875rem 1rem;margin:0}@media screen and (prefers-contrast){.bx--dropdown--focused,.bx--dropdown-link:focus{outline-style:dotted}}.bx--dropdown-list[aria-activedescendant] .bx--dropdown-link:focus{padding:.6875rem 0;margin:0 1rem;outline:none}.bx--dropdown-list[aria-activedescendant] .bx--dropdown--focused:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;padding:.6875rem 1rem;margin:0}@media screen and (prefers-contrast){.bx--dropdown-list[aria-activedescendant] .bx--dropdown--focused:focus{outline-style:dotted}}.bx--dropdown-list[aria-activedescendant] .bx--dropdown-item:active{background-color:inherit}.bx--dropdown-item:hover .bx--dropdown-link{border-bottom-color:var(--cds-layer-hover, #e5e5e5)}.bx--dropdown--open .bx--dropdown__arrow{transform:rotate(-180deg)}.bx--dropdown--open.bx--dropdown--xl .bx--dropdown-list{max-height:16.5rem}.bx--dropdown--open.bx--dropdown--sm .bx--dropdown-list{max-height:11rem}.bx--dropdown--open .bx--dropdown-item{opacity:1}.bx--dropdown--disabled{border-bottom-color:#0000}.bx--dropdown--disabled:hover{background-color:var(--cds-field, #f4f4f4)}.bx--dropdown--disabled:focus{outline:none}.bx--dropdown--disabled .bx--dropdown-text,.bx--dropdown--disabled .bx--list-box__label{color:var(--cds-text-disabled, #c6c6c6)}.bx--dropdown--disabled .bx--dropdown__arrow,.bx--dropdown--disabled .bx--list-box__menu-icon svg{fill:var(--cds-icon-disabled, #c6c6c6)}.bx--dropdown--disabled.bx--dropdown--light:hover{background-color:var(--cds-field-02, #ffffff)}.bx--dropdown--disabled .bx--list-box__field,.bx--dropdown--disabled .bx--list-box__menu-icon{cursor:not-allowed}.bx--dropdown--auto-width{width:auto;max-width:25rem}.bx--dropdown--inline{display:inline-block;width:auto;border-bottom-color:#0000;background-color:#0000;justify-self:start;transition:background 70ms cubic-bezier(0,0,.38,.9)}.bx--dropdown--inline:hover{background-color:var(--cds-field-hover, #e5e5e5)}.bx--dropdown--inline.bx--dropdown--disabled{background-color:#0000}.bx--dropdown--inline .bx--dropdown__arrow{top:.5rem;right:.5rem}.bx--dropdown--inline.bx--dropdown--open{background-color:#0000}.bx--dropdown--inline .bx--dropdown-text{display:inline-block;overflow:visible;height:2rem;padding:.4375rem 2rem .4375rem .75rem;color:var(--cds-text-primary, #161616)}.bx--dropdown--inline.bx--dropdown--disabled .bx--dropdown-text{color:var(--cds-text-disabled, #c6c6c6)}.bx--dropdown--inline.bx--dropdown--disabled:focus .bx--dropdown-text{outline:0}.bx--dropdown--inline.bx--dropdown--invalid .bx--dropdown__invalid-icon{right:2rem}.bx--dropdown--inline.bx--dropdown--invalid .bx--dropdown-text{padding-right:3.5rem}.bx--dropdown--inline.bx--dropdown--open:focus .bx--dropdown-list{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3))}.bx--dropdown--inline .bx--dropdown-link{font-weight:400}.bx--dropdown--show-selected .bx--dropdown--selected{display:block;background-color:var(--cds-layer-hover, #e5e5e5);color:var(--cds-text-primary, #161616)}.bx--dropdown--show-selected .bx--dropdown--selected:hover{background-color:var(--cds-layer-selected, #e0e0e0)}.bx--dropdown--show-selected .bx--dropdown--selected .bx--dropdown-link{border-top-color:#0000}.bx--dropdown--show-selected .bx--dropdown--selected+.bx--dropdown-item .bx--dropdown-link{border-top-color:#0000}.bx--dropdown--show-selected .bx--dropdown--selected .bx--list-box__menu-item__selected-icon{display:block}.bx--dropdown-v2.bx--skeleton,.bx--dropdown.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none}.bx--dropdown-v2.bx--skeleton:hover,.bx--dropdown-v2.bx--skeleton:focus,.bx--dropdown-v2.bx--skeleton:active,.bx--dropdown.bx--skeleton:hover,.bx--dropdown.bx--skeleton:focus,.bx--dropdown.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--dropdown-v2.bx--skeleton:before,.bx--dropdown.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--dropdown-v2.bx--skeleton:before,.bx--dropdown.bx--skeleton:before{animation:none}}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--dropdown .bx--list-box__field{outline:1px solid rgba(0,0,0,0)}.bx--list-box__menu-item__option{outline:none}.bx--list-box__menu-item__selected-icon{fill:ButtonText}}.bx--loading{animation-duration:.69s;animation-fill-mode:forwards;animation-iteration-count:infinite;animation-name:rotate;animation-timing-function:linear;width:5.5rem;height:5.5rem}.bx--loading svg circle{animation-duration:10ms;animation-name:init-stroke;animation-timing-function:cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--loading svg circle{animation:none}}.bx--loading__svg{fill:#0000}.bx--loading__svg circle{stroke-dasharray:276.4608 276.4608;stroke-linecap:butt;stroke-width:10}.bx--loading__stroke{stroke:var(--cds-interactive-04, #0f62fe);stroke-dashoffset:52.527552}.bx--loading--small .bx--loading__stroke{stroke-dashoffset:143.759616}.bx--loading--stop{animation:rotate-end-p1 .7s cubic-bezier(.2,0,1,.9) forwards,rotate-end-p2 .7s cubic-bezier(.2,0,1,.9) .7s forwards}.bx--loading--stop svg circle{animation-delay:.7s;animation-duration:.7s;animation-fill-mode:forwards;animation-name:stroke-end;animation-timing-function:cubic-bezier(.2,0,1,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--loading--stop svg circle{animation:none}}.bx--loading--small{width:1rem;height:1rem}.bx--loading--small circle{stroke-width:16}.bx--loading--small .bx--loading__svg{stroke:var(--cds-interactive-04, #0f62fe)}.bx--loading__background{stroke:var(--cds-ui-03, #e0e0e0);stroke-dashoffset:-22}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){circle.bx--loading__background{stroke-dasharray:265;stroke-dashoffset:0}}}.bx--loading-overlay{position:fixed;z-index:6000;top:0;left:0;display:flex;width:100%;height:100%;align-items:center;justify-content:center;background-color:var(--cds-overlay-01, rgba(22, 22, 22, .5));transition:background-color .72s cubic-bezier(.4,.14,.3,1)}.bx--loading-overlay--stop{display:none}.bx--file{width:100%}.bx--file--invalid{margin-right:.5rem;fill:var(--cds-support-01, #da1e28)}.bx--file--label{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);margin-bottom:.5rem;color:var(--cds-text-01, #161616)}.bx--file--label--disabled{color:var(--cds-disabled-02, #c6c6c6)}.bx--file-input{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--file-btn{display:inline-flex;padding-right:4rem;margin:0}.bx--file-browse-btn{display:inline-block;width:100%;max-width:20rem;margin-bottom:.5rem;color:var(--cds-link-01, #0f62fe);cursor:pointer;outline:2px solid rgba(0,0,0,0);outline-offset:-2px;transition:.11s cubic-bezier(.2,0,.38,.9)}.bx--file-browse-btn:focus,.bx--file-browse-btn:hover{outline:2px solid var(--cds-interactive-03, #0f62fe)}.bx--file-browse-btn:hover,.bx--file-browse-btn:focus,.bx--file-browse-btn:active,.bx--file-browse-btn:active:visited{text-decoration:underline}.bx--file-browse-btn:active{color:var(--cds-text-01, #161616)}.bx--file-browse-btn--disabled{color:var(--cds-disabled-02, #c6c6c6);cursor:no-drop;text-decoration:none}.bx--file-browse-btn--disabled:hover,.bx--file-browse-btn--disabled:focus{color:var(--cds-disabled-02, #c6c6c6);outline:none;text-decoration:none}.bx--file-browse-btn--disabled .bx--file__drop-container{border:1px dashed var(--cds-disabled-02, #c6c6c6)}.bx--label-description{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);margin-bottom:1rem;color:var(--cds-text-02, #525252)}.bx--label-description--disabled{color:var(--cds-disabled-02, #c6c6c6)}.bx--file-btn~.bx--file-container{margin-top:1.5rem}.bx--btn~.bx--file-container{margin-top:1rem}.bx--file .bx--file-container,.bx--file~.bx--file-container{margin-top:.5rem}.bx--file__selected-file{display:grid;max-width:20rem;min-height:3rem;align-items:center;margin-bottom:.5rem;background-color:var(--cds-field-01, #f4f4f4);gap:.75rem 1rem;grid-auto-rows:auto;grid-template-columns:1fr auto;word-break:break-word}.bx--file__selected-file:last-child{margin-bottom:0}.bx--file__selected-file .bx--form-requirement{display:block;max-height:none;margin:0;grid-column:1/-1}.bx--file__selected-file .bx--inline-loading__animation .bx--loading{margin-right:0}.bx--file__selected-file .bx--file-filename{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);overflow:hidden;margin-left:1rem;text-overflow:ellipsis;white-space:nowrap}.bx--file__selected-file--field,.bx--file__selected-file--md{min-height:2.5rem;gap:.5rem 1rem}.bx--file__selected-file--sm{min-height:2rem;gap:.25rem 1rem}.bx--file__selected-file--invalid__wrapper{outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px;max-width:20rem;margin-bottom:.5rem;background-color:var(--cds-field-01, #f4f4f4);outline-width:1px}@media screen and (prefers-contrast){.bx--file__selected-file--invalid__wrapper{outline-style:dotted}}.bx--file__selected-file--invalid{outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px;padding:.75rem 0}@media screen and (prefers-contrast){.bx--file__selected-file--invalid{outline-style:dotted}}.bx--file__selected-file--invalid.bx--file__selected-file--sm{padding:.25rem 0}.bx--file__selected-file--invalid.bx--file__selected-file--field,.bx--file__selected-file--invalid.bx--file__selected-file--md{padding:.5rem 0}.bx--file__selected-file--invalid .bx--form-requirement{padding-top:1rem;border-top:1px solid var(--cds-ui-03, #e0e0e0)}.bx--file__selected-file--invalid.bx--file__selected-file--sm .bx--form-requirement{padding-top:.4375rem}.bx--file__selected-file--invalid.bx--file__selected-file--field .bx--form-requirement,.bx--file__selected-file--invalid.bx--file__selected-file--md .bx--form-requirement{padding-top:.6875rem}.bx--file__selected-file--invalid .bx--form-requirement__title,.bx--file__selected-file--invalid .bx--form-requirement__supplement{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);padding:0 1rem}.bx--file__selected-file--invalid .bx--form-requirement__title{color:var(--cds-text-error, #da1e28)}.bx--file__selected-file--invalid .bx--form-requirement__supplement{color:var(--cds-text-01, #161616)}.bx--file__selected-file--invalid+.bx--form-requirement{font-size:var(--cds-caption-01-font-size, .75rem);font-weight:var(--cds-caption-01-font-weight, 400);line-height:var(--cds-caption-01-line-height, 1.33333);letter-spacing:var(--cds-caption-01-letter-spacing, .32px);display:block;overflow:visible;max-height:12.5rem;padding:.5rem 1rem;color:var(--cds-text-error, #da1e28);font-weight:400}.bx--file__selected-file--invalid+.bx--form-requirement .bx--form-requirement__supplement{padding-bottom:.5rem;color:var(--cds-text-01, #161616)}.bx--file__state-container{display:flex;min-width:1.5rem;align-items:center;justify-content:center;padding-right:1rem}.bx--file__state-container .bx--loading__svg{stroke:var(--cds-ui-05, #161616)}.bx--file__state-container .bx--file-complete{cursor:pointer;fill:var(--cds-interactive-04, #0f62fe)}.bx--file__state-container .bx--file-complete:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--file__state-container .bx--file-complete:focus{outline-style:dotted}}.bx--file__state-container .bx--file-complete [data-icon-path=inner-path]{fill:var(--cds-icon-03, #ffffff);opacity:1}.bx--file__state-container .bx--file-invalid{width:1rem;height:1rem;fill:var(--cds-support-01, #da1e28)}.bx--file__state-container .bx--file-close{display:flex;width:1.5rem;height:1.5rem;align-items:center;justify-content:center;padding:0;border:none;background-color:#0000;cursor:pointer;fill:var(--cds-icon-01, #161616)}.bx--file__state-container .bx--file-close:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--file__state-container .bx--file-close:focus{outline-style:dotted}}.bx--file__state-container .bx--file-close svg path{fill:var(--cds-icon-01, #161616)}.bx--file__state-container .bx--inline-loading__animation{margin-right:-.5rem}.bx--file__drop-container{display:flex;overflow:hidden;height:6rem;align-items:flex-start;justify-content:space-between;padding:1rem;border:1px dashed var(--cds-ui-04, #8d8d8d)}.bx--file__drop-container--drag-over{background:none;outline:2px solid var(--cds-interactive-03, #0f62fe);outline-offset:-2px}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--file__selected-file{outline:1px solid rgba(0,0,0,0)}.bx--file__state-container .bx--file-close svg path{fill:ButtonText}}@keyframes stroke{to{stroke-dashoffset:0}}.bx--inline-loading{display:flex;width:100%;min-height:2rem;align-items:center}.bx--inline-loading__text{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);color:var(--cds-text-02, #525252)}.bx--inline-loading__animation{position:relative;display:flex;align-items:center;justify-content:center;margin-right:.5rem}.bx--inline-loading__checkmark-container{fill:var(--cds-support-02, #198038)}.bx--inline-loading__checkmark-container.bx--inline-loading__svg{position:absolute;top:.75rem;width:.75rem}.bx--inline-loading__checkmark-container[hidden]{display:none}.bx--inline-loading__checkmark{animation-duration:.25s;animation-fill-mode:forwards;animation-name:stroke;fill:none;stroke:var(--cds-interactive-04, #0f62fe);stroke-dasharray:12;stroke-dashoffset:12;stroke-width:1.8;transform-origin:50% 50%}.bx--inline-loading--error{width:1rem;height:1rem;fill:var(--cds-support-01, #da1e28)}.bx--inline-loading--error[hidden]{display:none}.bx--loading--small .bx--inline-loading__svg{stroke:var(--cds-interactive-04, #0f62fe)}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.bx--inline-loading__checkmark-container{top:1px;right:.5rem}.bx--inline-loading__checkmark{animation:none;stroke-dasharray:0;stroke-dashoffset:0}}.bx--list--nested,.bx--list--unordered,.bx--list--ordered,.bx--list--ordered--native{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);list-style:none}.bx--list--expressive,.bx--list--expressive .bx--list--nested{font-size:var(--cds-body-long-02-font-size, 1rem);font-weight:var(--cds-body-long-02-font-weight, 400);line-height:var(--cds-body-long-02-line-height, 1.5);letter-spacing:var(--cds-body-long-02-letter-spacing, 0)}.bx--list--ordered--native{list-style:decimal}.bx--list__item{color:var(--cds-text-01, #161616)}.bx--list--nested{margin-left:2rem}.bx--list--nested .bx--list__item{padding-left:.25rem}.bx--list--ordered:not(.bx--list--nested){counter-reset:item}.bx--list--ordered:not(.bx--list--nested)>.bx--list__item{position:relative}.bx--list--ordered:not(.bx--list--nested)>.bx--list__item:before{position:absolute;left:-1.5rem;content:counter(item) ".";counter-increment:item}.bx--list--ordered.bx--list--nested,.bx--list--ordered--native.bx--list--nested{list-style-type:lower-latin}.bx--list--unordered>.bx--list__item{position:relative}.bx--list--unordered>.bx--list__item:before{position:absolute;left:-1rem;content:"–"}.bx--list--unordered.bx--list--nested>.bx--list__item:before{left:-.75rem;content:"▪"}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes rotate-end-p1{to{transform:rotate(360deg)}}@keyframes rotate-end-p2{to{transform:rotate(-360deg)}}@keyframes init-stroke{0%{stroke-dashoffset:276.4608}to{stroke-dashoffset:52.527552}}@keyframes stroke-end{0%{stroke-dashoffset:52.527552}to{stroke-dashoffset:276.4608}}.bx--menu{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:fixed;z-index:9000;min-width:13rem;max-width:18rem;padding:var(--cds-spacing-02, .25rem) 0;background-color:var(--cds-layer, #f4f4f4);visibility:hidden}.bx--menu--open{visibility:visible}.bx--menu--open:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--menu--open:focus{outline-style:dotted}}.bx--menu--invisible{opacity:0;pointer-events:none}.bx--menu-option{position:relative;height:2rem;background-color:var(--cds-layer, #f4f4f4);color:var(--cds-text-primary, #161616);cursor:pointer;transition:background-color 70ms cubic-bezier(.2,0,.38,.9)}.bx--menu-option:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--menu-option:focus{outline-style:dotted}}.bx--menu-option--active,.bx--menu-option:hover{background-color:var(--cds-layer-hover, #e5e5e5)}.bx--menu-option--danger:hover,.bx--menu-option--danger:focus{background-color:var(--cds-button-danger-primary, #da1e28);color:var(--cds-text-on-color, #ffffff)}.bx--menu-option>.bx--menu{margin-top:calc(var(--cds-spacing-02, .25rem) * -1)}.bx--menu-option__content{display:flex;height:100%;align-items:center;justify-content:space-between;padding:0 var(--cds-spacing-05, 1rem)}.bx--menu-option__content--disabled{background-color:var(--cds-layer, #f4f4f4);color:var(--cds-text-disabled, #c6c6c6);cursor:not-allowed}.bx--menu-option__content--disabled .bx--menu-option__label,.bx--menu-option__content--disabled .bx--menu-option__info,.bx--menu-option__content--disabled .bx--menu-option__icon{color:var(--cds-text-disabled, #c6c6c6)}.bx--menu-option__content--indented .bx--menu-option__label{margin-left:var(--cds-spacing-05, 1rem)}.bx--menu-option__label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);overflow:hidden;flex-grow:1;padding:var(--cds-spacing-02, .25rem) 0;text-align:start;text-overflow:ellipsis;white-space:nowrap}.bx--menu-option__info{display:inline-flex;margin-left:var(--cds-spacing-05, 1rem)}.bx--menu-option__icon{display:flex;width:1rem;height:1rem;align-items:center;margin-right:var(--cds-spacing-03, .5rem)}.bx--menu-divider{width:100%;height:1px;margin:var(--cds-spacing-02, .25rem) 0;background-color:var(--cds-border-subtle, #e0e0e0)}.bx--menu--md .bx--menu-option{height:2.5rem}.bx--menu--lg .bx--menu-option{height:3rem}.bx--modal{position:fixed;z-index:9000;top:0;left:0;display:flex;width:100vw;height:100vh;align-items:center;justify-content:center;background-color:var(--cds-overlay-01, rgba(22, 22, 22, .5));content:"";opacity:0;transition:opacity .24s cubic-bezier(.4,.14,1,1),visibility 0ms linear .24s;visibility:hidden}.bx--modal.is-visible{opacity:1;transition:opacity .24s cubic-bezier(0,0,.3,1),visibility 0ms linear;visibility:inherit}@media screen and (prefers-reduced-motion: reduce){.bx--modal.is-visible{transition:none}}.bx--modal .bx--pagination,.bx--modal .bx--pagination__control-buttons,.bx--modal .bx--text-input,.bx--modal .bx--text-area,.bx--modal .bx--search-input,.bx--modal .bx--select-input,.bx--modal .bx--dropdown,.bx--modal .bx--dropdown-list,.bx--modal .bx--number input[type=number],.bx--modal .bx--date-picker__input,.bx--modal .bx--multi-select{background-color:var(--cds-field-02, #ffffff)}.bx--modal.is-visible .bx--modal-container{transform:translateZ(0);transition:transform .24s cubic-bezier(0,0,.3,1)}.bx--modal-container{position:fixed;top:0;display:grid;overflow:hidden;width:100%;height:100%;max-height:100%;background-color:var(--cds-ui-01, #f4f4f4);grid-template-columns:100%;grid-template-rows:auto 1fr auto;outline:3px solid rgba(0,0,0,0);outline-offset:-3px;transform:translate3d(0,-24px,0);transform-origin:top center;transition:transform .24s cubic-bezier(.4,.14,1,1)}@media (min-width: 42rem){.bx--modal-container{position:static;width:84%;height:auto;max-height:90%}}@media (min-width: 66rem){.bx--modal-container{width:60%;max-height:84%}}@media (min-width: 82rem){.bx--modal-container{width:48%}}.bx--modal-content{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);position:relative;padding-top:var(--cds-spacing-03, .5rem);padding-right:var(--cds-spacing-05, 1rem);padding-left:var(--cds-spacing-05, 1rem);margin-bottom:var(--cds-spacing-09, 3rem);color:var(--cds-text-01, #161616);font-weight:400;grid-column:1/-1;grid-row:2/-2;overflow-y:auto}.bx--modal-content:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--modal-content:focus{outline-style:dotted}}.bx--modal-content p,.bx--modal-content__regular-content{padding-right:20%;font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px)}.bx--modal-content--with-form{padding-right:var(--cds-spacing-05, 1rem)}.bx--modal-header{padding-top:var(--cds-spacing-05, 1rem);padding-right:var(--cds-spacing-09, 3rem);padding-left:var(--cds-spacing-05, 1rem);margin-bottom:var(--cds-spacing-03, .5rem);grid-column:1/-1;grid-row:1/1}.bx--modal-header__label{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);margin-bottom:var(--cds-spacing-02, .25rem);color:var(--cds-text-02, #525252)}.bx--modal-header__heading{font-size:var(--cds-productive-heading-03-font-size, 1.25rem);font-weight:var(--cds-productive-heading-03-font-weight, 400);line-height:var(--cds-productive-heading-03-line-height, 1.4);letter-spacing:var(--cds-productive-heading-03-letter-spacing, 0);color:var(--cds-text-01, #161616)}.bx--modal-container--xs .bx--modal-content__regular-content{padding-right:var(--cds-spacing-05, 1rem)}.bx--modal-container--xs .bx--modal-content p{padding-right:0}@media (min-width: 42rem){.bx--modal-container--xs{width:48%}}@media (min-width: 66rem){.bx--modal-container--xs{width:32%;max-height:48%}}@media (min-width: 82rem){.bx--modal-container--xs{width:24%}}.bx--modal-container--sm .bx--modal-content__regular-content{padding-right:var(--cds-spacing-05, 1rem)}.bx--modal-container--sm .bx--modal-content p{padding-right:0}@media (min-width: 42rem){.bx--modal-container--sm{width:60%}}@media (min-width: 66rem){.bx--modal-container--sm{width:42%;max-height:72%}.bx--modal-container--sm .bx--modal-content p,.bx--modal-container--sm .bx--modal-content__regular-content{padding-right:20%}}@media (min-width: 82rem){.bx--modal-container--sm{width:36%}}@media (min-width: 42rem){.bx--modal-container--lg{width:96%}}@media (min-width: 66rem){.bx--modal-container--lg{width:84%;max-height:96%}}@media (min-width: 82rem){.bx--modal-container--lg{width:72%}}.bx--modal-scroll-content>*:last-child{padding-bottom:var(--cds-spacing-07, 2rem)}.bx--modal-content--overflow-indicator{position:absolute;bottom:var(--cds-spacing-09, 3rem);left:0;width:100%;height:2rem;background-image:linear-gradient(to bottom,rgba(var(--cds-ui-01, #f4f4f4),0),var(--cds-ui-01, #f4f4f4));content:"";grid-column:1/-1;grid-row:2/-2;pointer-events:none}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){.bx--modal-content--overflow-indicator{background-image:linear-gradient(to bottom,rgba(var(--cds-layer, #f4f4f4),0),var(--cds-layer, #f4f4f4))}}}.bx--modal-content:focus~.bx--modal-content--overflow-indicator{width:calc(100% - 4px);margin:0 2px 2px}@media screen and (-ms-high-contrast: active){.bx--modal-scroll-content>*:last-child{padding-bottom:0}.bx--modal-content--overflow-indicator{display:none}}.bx--modal-footer{display:flex;height:4rem;justify-content:flex-end;margin-top:auto;grid-column:1/-1;grid-row:-1/-1}.bx--modal-footer .bx--btn{max-width:none;height:4rem;flex:0 1 50%;padding-top:var(--cds-spacing-05, 1rem);padding-bottom:var(--cds-spacing-07, 2rem);margin:0}.bx--modal-footer--three-button .bx--btn{flex:0 1 25%;align-items:flex-start}.bx--modal-close{position:absolute;z-index:2;top:0;right:0;overflow:hidden;width:3rem;height:3rem;padding:.75rem;border:2px solid rgba(0,0,0,0);background-color:#0000;cursor:pointer;transition:background-color .11s cubic-bezier(.2,0,.38,.9)}.bx--modal-close:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--modal-close:focus{border-color:var(--cds-focus, #0f62fe);outline:none}.bx--modal-close::-moz-focus-inner{border:0}.bx--modal-close__icon{width:1.25rem;height:1.25rem;fill:var(--cds-icon-01, #161616)}.bx--body--with-modal-open{overflow:hidden}.bx--body--with-modal-open .bx--tooltip,.bx--body--with-modal-open .bx--overflow-menu-options{z-index:9000}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--modal-close__icon{fill:ButtonText}.bx--modal-close:focus{color:Highlight;outline:1px solid Highlight}}.bx--multi-select .bx--tag{min-width:auto;margin:0 .5rem 0 0}.bx--multi-select--filterable .bx--tag{margin:0 .5rem 0 1rem}.bx--multi-select .bx--list-box__menu{min-width:auto}.bx--multi-select .bx--list-box__menu-item__option .bx--checkbox-wrapper{display:flex;width:100%;height:100%;align-items:center}.bx--multi-select .bx--list-box__menu-item__option .bx--checkbox-label{display:inline-block;overflow:hidden;width:100%;padding-left:1.75rem;text-overflow:ellipsis;white-space:nowrap}.bx--multi-select .bx--list-box__menu-item__option>.bx--form-item{flex-direction:row;margin:0}.bx--multi-select .bx--list-box__menu-item .bx--checkbox:checked~.bx--checkbox-label-text{color:var(--cds-text-01, #161616)}.bx--multi-select--filterable{transition:outline-color 70ms cubic-bezier(.2,0,.38,.9)}.bx--multi-select--filterable.bx--combo-box .bx--text-input{border:.125rem solid rgba(0,0,0,0);background-clip:padding-box;outline:none}.bx--multi-select--filterable--input-focused{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--multi-select--filterable--input-focused{outline-style:dotted}}.bx--multi-select--filterable.bx--multi-select--selected .bx--text-input{padding-left:0}.bx--multi-select--filterable.bx--list-box--disabled:hover .bx--text-input{background-color:var(--cds-field-01, #f4f4f4)}.bx--multi-select--filterable .bx--list-box__selection--multi{margin:0 0 0 var(--cds-spacing-05, 1rem)}.bx--multi-select--filterable.bx--multi-select--inline,.bx--multi-select--filterable.bx--multi-select--inline .bx--text-input{border-bottom:0;background-color:#0000}.bx--number{position:relative;display:flex;width:100%;flex-direction:column}.bx--number input[type=number]{font-family:var(--cds-code-01-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-01-font-size, .75rem);font-weight:var(--cds-code-01-font-weight, 400);line-height:var(--cds-code-01-line-height, 1.33333);letter-spacing:var(--cds-code-01-letter-spacing, .32px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:inline-flex;width:100%;min-width:9.375rem;height:2.5rem;box-sizing:border-box;padding-right:8rem;padding-left:1rem;border:0;border-bottom:.0625rem solid var(--cds-ui-04, #8d8d8d);-moz-appearance:textfield;background-color:var(--cds-field-01, #f4f4f4);border-radius:0;color:var(--cds-text-01, #161616);font-family:IBM Plex Mono,Menlo,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier,monospace;font-weight:300;transition:background-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--number input[type=number]:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--number input[type=number]:focus{outline-style:dotted}}.bx--number input[type=number]:disabled~.bx--number__controls{cursor:not-allowed;pointer-events:none}.bx--number input[type=number]:disabled~.bx--number__controls svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--number input[type=number]::-ms-clear{display:none}.bx--number input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none}.bx--number--xl.bx--number input[type=number],.bx--number--lg.bx--number input[type=number]{padding-right:9rem}.bx--number--sm.bx--number input[type=number]{padding-right:7rem}.bx--number input[type=number]:disabled{border-bottom-color:#0000;background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--number__input-wrapper{position:relative;display:flex;align-items:center}.bx--number__controls{position:absolute;top:50%;right:0;display:flex;width:5rem;height:100%;flex-direction:row;align-items:center;justify-content:center;transform:translateY(-50%)}.bx--number__control-btn{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;position:relative;display:inline-flex;height:100%;align-items:center;justify-content:center;border-bottom:.0625rem solid var(--cds-ui-04, #8d8d8d);color:var(--cds-icon-01, #161616)}.bx--number__control-btn::-moz-focus-inner{border:0}.bx--number__control-btn:before,.bx--number__control-btn:after{position:absolute;top:.125rem;display:block;width:.125rem;height:2.25rem;background-color:var(--cds-field-01, #f4f4f4);content:""}.bx--number__control-btn:before{left:0}.bx--number__control-btn:after{right:0}.bx--number__control-btn svg{fill:currentColor}.bx--number__control-btn:focus{outline:1px solid var(--cds-focus, #0f62fe);color:var(--cds-icon-01, #161616);outline-offset:-2px;outline-width:2px}@media screen and (prefers-contrast){.bx--number__control-btn:focus{outline-style:dotted}}.bx--number__control-btn:hover{background-color:var(--cds-hover-ui, #e5e5e5);color:var(--cds-icon-01, #161616);cursor:pointer}.bx--number__control-btn:hover:before,.bx--number__control-btn:hover:after{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--number__control-btn:focus:before,.bx--number__control-btn:focus:after,.bx--number__control-btn:hover:focus:before,.bx--number__control-btn:hover:focus:after{background-color:#0000}.bx--number__control-btn:disabled{border-bottom-color:#0000;color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--number__control-btn.down-icon{order:1}.bx--number__control-btn.up-icon{order:2}.bx--number input[type=number]:focus~.bx--number__controls .bx--number__control-btn{border-bottom-width:0}.bx--number input[type=number]:focus~.bx--number__controls .bx--number__control-btn:hover{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;border:0}@media screen and (prefers-contrast){.bx--number input[type=number]:focus~.bx--number__controls .bx--number__control-btn:hover{outline-style:dotted}}.bx--number input[type=number][data-invalid]~.bx--number__controls .bx--number__control-btn{border-bottom-width:0}.bx--number input[type=number][data-invalid]:not(:focus)~.bx--number__controls .bx--number__control-btn:hover{outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px}@media screen and (prefers-contrast){.bx--number input[type=number][data-invalid]:not(:focus)~.bx--number__controls .bx--number__control-btn:hover{outline-style:dotted}}.bx--number input[type=number]:focus~.bx--number__controls .bx--number__control-btn.up-icon:after{background-color:#0000}.bx--number input[type=number][data-invalid]~.bx--number__controls .bx--number__control-btn.up-icon:after{background-color:var(--cds-support-01, #da1e28)}.bx--number input[type=number][data-invalid]:focus~.bx--number__controls .bx--number__control-btn.up-icon:after,.bx--number input[type=number][data-invalid]~.bx--number__controls .bx--number__control-btn.up-icon:focus:after{background-color:var(--cds-focus, #0f62fe)}.bx--number__rule-divider{position:absolute;z-index:6000;width:.0625rem;height:1rem;background-color:var(--cds-ui-03, #e0e0e0)}.bx--number__rule-divider:first-of-type{order:0}.bx--number__controls .bx--number__rule-divider:first-of-type{left:0;background-color:#0000}.bx--number__invalid+.bx--number__controls .bx--number__rule-divider:first-of-type{background-color:var(--cds-ui-03, #e0e0e0)}.bx--number--light .bx--number__rule-divider,.bx--number--light .bx--number__invalid+.bx--number__controls .bx--number__rule-divider:first-of-type{background-color:var(--cds-decorative-01, #e0e0e0)}.bx--number input[type=number]:disabled+.bx--number__controls .bx--number__rule-divider:first-of-type{background-color:#0000}.bx--number input[type=number]:disabled+.bx--number__controls .bx--number__rule-divider{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--number__control-btn:focus~.bx--number__rule-divider{background-color:#0000}.bx--number__invalid{position:absolute;right:6rem;fill:var(--cds-support-01, #da1e28)}.bx--number--xl .bx--number__invalid,.bx--number--lg .bx--number__invalid{right:7rem}.bx--number--sm .bx--number__invalid{right:5rem}.bx--number__invalid+.bx--number__rule-divider{position:absolute;right:5rem}.bx--number--xl .bx--number__invalid+.bx--number__rule-divider,.bx--number--lg .bx--number__invalid+.bx--number__rule-divider{right:6rem}.bx--number--sm .bx--number__invalid+.bx--number__rule-divider{right:4rem}.bx--number__control-btn.down-icon:hover~.bx--number__rule-divider,.bx--number__control-btn.up-icon:hover+.bx--number__rule-divider,.bx--number__control-btn.down-icon:focus~.bx--number__rule-divider,.bx--number__control-btn.up-icon:focus+.bx--number__rule-divider{background-color:#0000}.bx--number__invalid--warning{fill:var(--cds-support-03, #f1c21b)}.bx--number__invalid--warning path:first-of-type{fill:#000;opacity:1}.bx--number--light input[type=number]{background-color:var(--cds-field-02, #ffffff)}.bx--number--light input[type=number]:disabled{background-color:var(--cds-field-02, #ffffff)}.bx--number--light .bx--number__control-btn:before,.bx--number--light .bx--number__control-btn:after{background-color:var(--cds-field-02, #ffffff)}.bx--number--light .bx--number__control-btn:focus:before,.bx--number--light .bx--number__control-btn:focus:after{background-color:#0000}.bx--number--light .bx--number__control-btn:hover,.bx--number--light .bx--number__control-btn:not(:focus):hover:before,.bx--number--light .bx--number__control-btn:not(:focus):hover:after{background-color:var(--cds-hover-light-ui, #e5e5e5)}.bx--number--xl input[type=number],.bx--number--lg input[type=number]{height:3rem}.bx--number--xl .bx--number__controls,.bx--number--lg .bx--number__controls{width:6rem}.bx--number--xl .bx--number__control-btn,.bx--number--lg .bx--number__control-btn{width:3rem}.bx--number--xl .bx--number__control-btn:before,.bx--number--xl .bx--number__control-btn:after,.bx--number--lg .bx--number__control-btn:before,.bx--number--lg .bx--number__control-btn:after{height:2.75rem}.bx--number--sm input[type=number]{height:2rem}.bx--number--sm .bx--number__controls{width:4rem}.bx--number--sm .bx--number__control-btn{width:2rem}.bx--number--sm .bx--number__control-btn:before,.bx--number--sm .bx--number__control-btn:after{height:1.75rem}.bx--number--nolabel .bx--label+.bx--form__helper-text{margin-top:0}.bx--number--nosteppers input[type=number]{padding-right:3rem}.bx--number--nosteppers .bx--number__invalid{right:1rem}.bx--number--readonly input[type=number]{background:rgba(0,0,0,0)}.bx--number--readonly .bx--number__controls{display:none}.bx--number__readonly-icon{position:absolute;right:1rem}.bx--number.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:100%;height:2.5rem}.bx--number.bx--skeleton:hover,.bx--number.bx--skeleton:focus,.bx--number.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--number.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--number.bx--skeleton:before{animation:none}}.bx--number.bx--skeleton input[type=number]{display:none}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--number__control-btn:hover,.bx--number__control-btn:focus{color:Highlight;outline:1px solid Highlight}.bx--number__control-btn{outline:1px solid rgba(0,0,0,0)}.bx--number__control-btn svg{fill:ButtonText}}.bx--overflow-menu,.bx--overflow-menu__trigger{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;width:100%;outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:relative;display:flex;width:2.5rem;height:2.5rem;align-items:center;justify-content:center;cursor:pointer;transition:outline .11s cubic-bezier(0,0,.38,.9),background-color .11s cubic-bezier(0,0,.38,.9)}.bx--overflow-menu::-moz-focus-inner,.bx--overflow-menu__trigger::-moz-focus-inner{border:0}.bx--overflow-menu:focus,.bx--overflow-menu__trigger:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--overflow-menu:focus,.bx--overflow-menu__trigger:focus{outline-style:dotted}}.bx--overflow-menu:hover,.bx--overflow-menu__trigger:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--overflow-menu--sm{width:2rem;height:2rem}.bx--overflow-menu--xl,.bx--overflow-menu--lg{width:3rem;height:3rem}.bx--overflow-menu__trigger.bx--tooltip--a11y.bx--tooltip__trigger:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--overflow-menu__trigger.bx--tooltip--a11y.bx--tooltip__trigger:focus{outline-style:dotted}}.bx--overflow-menu__trigger.bx--tooltip--a11y.bx--tooltip__trigger:focus svg{outline:none}.bx--overflow-menu.bx--overflow-menu--open,.bx--overflow-menu.bx--overflow-menu--open .bx--overflow-menu__trigger{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));background-color:var(--cds-field-01, #f4f4f4);transition:none}.bx--overflow-menu--light.bx--overflow-menu--open,.bx--overflow-menu--light.bx--overflow-menu--open .bx--overflow-menu__trigger{background-color:var(--cds-field-02, #ffffff)}.bx--overflow-menu__icon{width:1rem;height:1rem;fill:var(--cds-icon-01, #161616)}.bx--overflow-menu-options{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:absolute;z-index:6000;top:32px;left:0;display:none;width:10rem;flex-direction:column;align-items:flex-start;background-color:var(--cds-field-01, #f4f4f4);list-style:none}.bx--overflow-menu-options:after{position:absolute;display:block;background-color:var(--cds-field-01, #f4f4f4);content:"";transition:background-color .11s cubic-bezier(0,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--overflow-menu-options:after{transition:none}}.bx--overflow-menu.bx--overflow-menu--open:hover{background-color:var(--cds-field-01, #f4f4f4)}.bx--overflow-menu-options--light{background-color:var(--cds-field-02, #ffffff)}.bx--overflow-menu-options--light:after{background-color:var(--cds-field-02, #ffffff)}.bx--overflow-menu.bx--overflow-menu--light.bx--overflow-menu--open:hover{background-color:var(--cds-field-02, #ffffff)}.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after{top:-.1875rem;left:0;width:2.5rem;height:.1875rem}.bx--overflow-menu-options[data-floating-menu-direction=top]:after{bottom:-.5rem;left:0;width:2.5rem;height:.5rem}.bx--overflow-menu-options[data-floating-menu-direction=left]:after{top:0;right:-.375rem;width:.375rem;height:2.5rem}.bx--overflow-menu-options[data-floating-menu-direction=right]:after{top:0;left:-.375rem;width:.375rem;height:2.5rem}.bx--overflow-menu-options--sm.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after,.bx--overflow-menu-options--sm.bx--overflow-menu-options[data-floating-menu-direction=top]:after{width:2rem}.bx--overflow-menu-options--sm.bx--overflow-menu-options[data-floating-menu-direction=left]:after,.bx--overflow-menu-options--sm.bx--overflow-menu-options[data-floating-menu-direction=right]:after{height:2rem}.bx--overflow-menu-options--xl.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after,.bx--overflow-menu-options--xl.bx--overflow-menu-options[data-floating-menu-direction=top]:after,.bx--overflow-menu-options--lg.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after,.bx--overflow-menu-options--lg.bx--overflow-menu-options[data-floating-menu-direction=top]:after{width:3rem}.bx--overflow-menu-options--xl.bx--overflow-menu-options[data-floating-menu-direction=left]:after,.bx--overflow-menu-options--xl.bx--overflow-menu-options[data-floating-menu-direction=right]:after,.bx--overflow-menu-options--lg.bx--overflow-menu-options[data-floating-menu-direction=left]:after,.bx--overflow-menu-options--lg.bx--overflow-menu-options[data-floating-menu-direction=right]:after{height:3rem}.bx--overflow-menu--flip.bx--overflow-menu-options[data-floating-menu-direction=top]:after,.bx--overflow-menu--flip.bx--overflow-menu-options[data-floating-menu-direction=bottom]:after{right:0;left:auto}.bx--overflow-menu--flip.bx--overflow-menu-options[data-floating-menu-direction=left]:after,.bx--overflow-menu--flip.bx--overflow-menu-options[data-floating-menu-direction=right]:after{top:auto;bottom:0}.bx--overflow-menu-options--open{display:flex}.bx--overflow-menu-options__content{width:100%}.bx--overflow-menu-options__option{display:flex;width:100%;height:2.5rem;align-items:center;padding:0;background-color:#0000;transition:background-color .11s cubic-bezier(0,0,.38,.9)}.bx--overflow-menu-options--sm .bx--overflow-menu-options__option{height:2rem}.bx--overflow-menu-options--xl .bx--overflow-menu-options__option,.bx--overflow-menu-options--lg .bx--overflow-menu-options__option{height:3rem}.bx--overflow-menu--divider{border-top:1px solid var(--cds-ui-03, #e0e0e0)}.bx--overflow-menu--light .bx--overflow-menu--divider{border-top:1px solid var(--cds-decorative-01, #e0e0e0)}a.bx--overflow-menu-options__btn:before{display:inline-block;height:100%;content:"";vertical-align:middle}.bx--overflow-menu-options__btn{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:inline-flex;width:100%;max-width:11.25rem;height:100%;align-items:center;padding:0 1rem;border:none;background-color:#0000;color:var(--cds-text-02, #525252);cursor:pointer;font-weight:400;text-align:left;transition:outline .11s cubic-bezier(0,0,.38,.9),background-color .11s cubic-bezier(0,0,.38,.9),color .11s cubic-bezier(0,0,.38,.9)}.bx--overflow-menu-options__btn:hover{color:var(--cds-text-01, #161616)}.bx--overflow-menu-options__btn:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--overflow-menu-options__btn:focus{outline-style:dotted}}.bx--overflow-menu-options__btn::-moz-focus-inner{border:none}.bx--overflow-menu-options__btn svg{fill:var(--cds-icon-02, #525252)}.bx--overflow-menu-options__btn:hover svg{fill:var(--cds-icon-01, #161616)}.bx--overflow-menu-options__option-content{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bx--overflow-menu-options__option:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--overflow-menu-options__option--danger .bx--overflow-menu-options__btn:hover,.bx--overflow-menu-options__option--danger .bx--overflow-menu-options__btn:focus{background-color:var(--cds-danger-01, #da1e28);color:var(--cds-text-04, #ffffff)}.bx--overflow-menu-options__option--danger .bx--overflow-menu-options__btn:hover svg,.bx--overflow-menu-options__option--danger .bx--overflow-menu-options__btn:focus svg{fill:currentColor}.bx--overflow-menu-options__option--disabled:hover{background-color:var(--cds-ui-01, #f4f4f4);cursor:not-allowed}.bx--overflow-menu-options__option--disabled .bx--overflow-menu-options__btn{color:var(--cds-disabled-02, #c6c6c6);pointer-events:none}.bx--overflow-menu-options__option--disabled .bx--overflow-menu-options__btn:hover,.bx--overflow-menu-options__option--disabled .bx--overflow-menu-options__btn:active,.bx--overflow-menu-options__option--disabled .bx--overflow-menu-options__btn:focus{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;background-color:var(--cds-ui-01, #f4f4f4)}.bx--overflow-menu-options__option--disabled .bx--overflow-menu-options__btn svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--overflow-menu--flip{left:-140px}.bx--overflow-menu--flip:before{left:145px}.bx--overflow-menu__container{display:inline-block}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--overflow-menu:focus,.bx--overflow-menu-options__btn:focus{color:Highlight;outline:1px solid Highlight}.bx--overflow-menu svg{fill:ButtonText}}.bx--pagination-nav{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);line-height:0}.bx--pagination-nav__list{display:flex;align-items:center;list-style:none}.bx--pagination-nav__list-item{padding:0}.bx--pagination-nav__list-item:first-child{padding-left:0}.bx--pagination-nav__list-item:last-child{padding-right:0}.bx--pagination-nav__page{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;position:relative;display:block;min-width:3rem;padding:1.0625rem .25rem;border-radius:0;color:var(--cds-text-02, #525252);font-weight:400;line-height:1;outline:0;text-align:center;text-decoration:none;transition:background-color .11s cubic-bezier(.2,0,.38,.9),color .11s cubic-bezier(.2,0,.38,.9);-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--pagination-nav__page::-moz-focus-inner{border:0}.bx--pagination-nav__page:hover{background-color:var(--cds-hover-ui, #e5e5e5);color:var(--cds-text-02, #525252)}.bx--pagination-nav__page:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--pagination-nav__page:focus{outline-style:dotted}}.bx--pagination-nav__page:disabled,.bx--pagination-nav__page.bx--pagination-nav__page--disabled{background:none;color:rgba(var(--cds-text-02, #525252),.5);outline:none;pointer-events:none}.bx--pagination-nav__page:not(.bx--pagination-nav__page--direction):after{position:absolute;bottom:0;left:50%;display:block;width:0;height:.25rem;background-color:var(--cds-interactive-01, #0f62fe);content:"";opacity:0;transition:width .11s cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--pagination-nav__page:not(.bx--pagination-nav__page--direction):after{transition:none}}.bx--pagination-nav__page--active+.bx--pagination-nav__page:after,.bx--pagination-nav__page.bx--pagination-nav__page--active:after{left:calc(50% - .5rem);width:1rem;opacity:1}.bx--pagination-nav__page.bx--pagination-nav__page--active{background-color:initial;color:var(--cds-text-02, #525252);font-weight:600}.bx--pagination-nav__page .bx--pagination-nav__icon{fill:currentColor;pointer-events:none}.bx--pagination-nav__page--direction{display:flex;width:3rem;height:3rem;align-items:center;justify-content:center;line-height:0}.bx--pagination-nav__select{position:relative}.bx--pagination-nav__page--select{max-height:3rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-indent:calc(50% - 4.5px)}@-moz-document url-prefix(){.bx--pagination-nav__page--select{text-indent:0}}.bx--pagination-nav__select-icon-wrapper{position:absolute;top:0;width:100%;height:100%;pointer-events:none}.bx--pagination-nav__select-icon-wrapper:not(.bx--pagination-nav__page--direction):after{position:absolute;bottom:0;left:50%;display:block;width:0;height:.25rem;background-color:var(--cds-interactive-01, #0f62fe);content:"";opacity:0;transition:width .11s cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--pagination-nav__select-icon-wrapper:not(.bx--pagination-nav__page--direction):after{transition:none}}.bx--pagination-nav__page--active+.bx--pagination-nav__select-icon-wrapper:after,.bx--pagination-nav__select-icon-wrapper.bx--pagination-nav__page--active:after{left:calc(50% - .5rem);width:1rem;opacity:1}.bx--pagination-nav__page--active+.bx--pagination-nav__select-icon-wrapper .bx--pagination-nav__select-icon{display:none}.bx--pagination-nav__select-icon{position:absolute;top:calc(50% - .5rem);left:calc(50% - .5rem);pointer-events:none}.bx--pagination-nav__accessibility-label{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--select{position:relative;display:flex;width:100%;flex-direction:column;align-items:flex-start}.bx--select-input__wrapper{position:relative;display:flex;width:100%;align-items:center}.bx--select-input{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:block;width:100%;height:2.5rem;padding:0 var(--cds-spacing-09, 3rem) 0 var(--cds-spacing-05, 1rem);border:none;border-bottom:1px solid var(--cds-ui-04, #8d8d8d);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--cds-field-01, #f4f4f4);border-radius:0;color:var(--cds-text-01, #161616);cursor:pointer;font-family:inherit;opacity:1;transition:outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--select-input:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--select-input::-ms-expand{display:none}@-moz-document url-prefix(){.bx--select-input:-moz-focusring,.bx--select-input::-moz-focus-inner{background-image:none;color:#0000;text-shadow:0 0 0 #000}}.bx--select-input:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;color:var(--cds-text-01, #161616)}@media screen and (prefers-contrast){.bx--select-input:focus{outline-style:dotted}}.bx--select-input:disabled,.bx--select-input:hover:disabled{border-bottom-color:var(--cds-disabled-01, #f4f4f4);background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--select-input--sm{height:2rem;max-height:2rem}.bx--select-input--xl,.bx--select-input--lg{height:3rem;max-height:3rem}.bx--select--disabled .bx--label,.bx--select--disabled .bx--form__helper-text{color:var(--cds-disabled-02, #c6c6c6)}.bx--select-input__wrapper[data-invalid] .bx--select-input,.bx--select--warning .bx--select-input{padding-right:4.5rem}.bx--select-input:disabled~.bx--select__arrow{fill:var(--cds-disabled-02, #c6c6c6)}.bx--select--light .bx--select-input{background-color:var(--cds-field-02, #ffffff)}.bx--select--light .bx--select-input:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--select--light .bx--select-input:disabled,.bx--select--light .bx--select-input:hover:disabled{background-color:var(--cds-field-02, #ffffff);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--select__arrow{position:absolute;top:0;right:var(--cds-spacing-05, 1rem);height:100%;fill:var(--cds-ui-05, #161616);pointer-events:none}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--select__arrow path{fill:ButtonText}}.bx--select__invalid-icon{position:absolute;right:var(--cds-spacing-08, 2.5rem)}.bx--select-input__wrapper[data-invalid] .bx--select-input~.bx--select__invalid-icon{fill:var(--cds-support-01, #da1e28)}.bx--select__invalid-icon--warning{fill:var(--cds-support-03, #f1c21b)}.bx--select__invalid-icon--warning path[fill]{fill:#000;opacity:1}optgroup.bx--select-optgroup,.bx--select-option{background-color:var(--cds-background-hover, #e5e5e5);color:var(--cds-text-01, #161616)}optgroup.bx--select-optgroup:disabled,.bx--select-option:disabled{color:var(--cds-text-disabled, #c6c6c6)}.bx--select--inline{display:flex;flex-direction:row;align-items:center}.bx--select--inline.bx--select--invalid .bx--label,.bx--select--inline.bx--select--invalid .bx--form__helper-text{align-self:flex-start;margin-top:.8125rem}.bx--select--inline .bx--form__helper-text{margin-bottom:0;margin-left:var(--cds-spacing-03, .5rem)}.bx--select--inline .bx--label{margin:0 .5rem 0 0;white-space:nowrap}.bx--select--inline .bx--select-input{width:auto;padding-right:var(--cds-spacing-07, 2rem);padding-left:.5rem;border-bottom:none;background-color:#0000;color:var(--cds-text-01, #161616)}.bx--select--inline .bx--select-input:focus,.bx--select--inline .bx--select-input:focus option,.bx--select--inline .bx--select-input:focus optgroup{background-color:var(--cds-background, #ffffff)}.bx--select--inline .bx--select-input[disabled],.bx--select--inline .bx--select-input[disabled]:hover{background-color:var(--cds-disabled-01, #f4f4f4)}.bx--select--inline .bx--select__arrow{right:.5rem}.bx--select--inline.bx--select--invalid .bx--select-input{padding-right:3.5rem}.bx--select--inline.bx--select--invalid .bx--select-input~.bx--select__invalid-icon{right:var(--cds-spacing-07, 2rem)}.bx--select--inline .bx--select-input:disabled{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--select--inline .bx--select-input:disabled~*{cursor:not-allowed}.bx--select.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:100%;height:2.5rem}.bx--select.bx--skeleton:hover,.bx--select.bx--skeleton:focus,.bx--select.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--select.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--select.bx--skeleton:before{animation:none}}.bx--select.bx--skeleton .bx--select-input{display:none}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--select__arrow{fill:ButtonText}}.bx--text-input{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;width:100%;height:2.5rem;padding:0 1rem;border:none;border-bottom:1px solid var(--cds-ui-04, #8d8d8d);background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616);transition:background-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--text-input:focus,.bx--text-input:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--text-input:focus,.bx--text-input:active{outline-style:dotted}}.bx--text-input-wrapper svg[hidden]{display:none}.bx--text-input--xl,.bx--text-input--lg{height:3rem}.bx--text-input--sm{height:2rem}.bx--password-input{padding-right:2.5rem}.bx--text-input--sm.bx--password-input{padding-right:2rem}.bx--text-input--lg.bx--password-input{padding-right:3rem}.bx--text-input::-moz-placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--text-input::placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--text-input--light{background-color:var(--cds-field-02, #ffffff)}.bx--text-input__field-wrapper{position:relative;display:flex;width:100%}.bx--text-input__invalid-icon,.bx--text-input__readonly-icon{position:absolute;top:50%;right:1rem;transform:translateY(-50%)}.bx--text-input__invalid-icon{fill:var(--cds-support-01, #da1e28)}.bx--text-input__invalid-icon--warning{fill:var(--cds-support-03, #f1c21b)}.bx--text-input__invalid-icon--warning path:first-of-type{fill:#000;opacity:1}.bx--text-input--password__visibility{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--text-input--password__visibility:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--text-input--password__visibility:focus{outline-style:dotted}}.bx--text-input--password__visibility:focus{outline:1px solid rgba(0,0,0,0)}.bx--text-input--password__visibility:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--text-input--password__visibility:focus svg{outline-style:dotted}}.bx--text-input--password__visibility:before,.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--text-input--password__visibility:before,.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{display:inline-block}}.bx--text-input--password__visibility:before,.bx--text-input--password__visibility:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--text-input--password__visibility:before,.bx--text-input--password__visibility:after{transition:none}}.bx--text-input--password__visibility.bx--tooltip--a11y:before,.bx--text-input--password__visibility.bx--tooltip--a11y:after{transition:none}.bx--text-input--password__visibility:before{width:0;height:0;border-style:solid;content:""}.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--text-input--password__visibility:after{content:attr(aria-label)}.bx--text-input--password__visibility.bx--tooltip--a11y:after{content:none}.bx--text-input--password__visibility.bx--tooltip--visible:before,.bx--text-input--password__visibility.bx--tooltip--visible:after,.bx--text-input--password__visibility:hover:before,.bx--text-input--password__visibility:hover:after,.bx--text-input--password__visibility:focus:before,.bx--text-input--password__visibility:focus:after{opacity:1}.bx--text-input--password__visibility.bx--tooltip--visible .bx--assistive-text,.bx--text-input--password__visibility.bx--tooltip--visible+.bx--assistive-text,.bx--text-input--password__visibility:hover .bx--assistive-text,.bx--text-input--password__visibility:hover+.bx--assistive-text,.bx--text-input--password__visibility:focus .bx--assistive-text,.bx--text-input--password__visibility:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--text-input--password__visibility.bx--tooltip--visible .bx--assistive-text,.bx--text-input--password__visibility.bx--tooltip--visible+.bx--assistive-text,.bx--text-input--password__visibility.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--text-input--password__visibility:hover .bx--assistive-text,.bx--text-input--password__visibility:hover+.bx--assistive-text,.bx--text-input--password__visibility:hover.bx--tooltip--a11y:before,.bx--text-input--password__visibility:focus .bx--assistive-text,.bx--text-input--password__visibility:focus+.bx--assistive-text,.bx--text-input--password__visibility:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--text-input--password__visibility.bx--tooltip--hidden .bx--assistive-text,.bx--text-input--password__visibility.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--text-input--password__visibility.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--text-input--password__visibility .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--text-input--password__visibility:before,.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{bottom:0;left:50%}.bx--text-input--password__visibility:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--text-input--password__visibility:after,.bx--text-input--password__visibility .bx--assistive-text,.bx--text-input--password__visibility+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--text-input--password__visibility,.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:absolute;right:0;display:flex;width:2.5rem;height:100%;min-height:auto;align-items:center;justify-content:center;padding:0;border:0;background:none;cursor:pointer;transition:outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--text-input--sm+.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger{width:2rem}.bx--text-input--lg+.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger{width:3rem}.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger svg{fill:var(--cds-icon-secondary, #525252);transition:fill 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger svg{fill:ButtonText}}.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger:focus{outline-style:dotted}}.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger:hover svg,.bx--btn.bx--text-input--password__visibility__toggle.bx--tooltip__trigger:focus svg{fill:var(--cds-icon-primary, #161616)}.bx--text-input--invalid,.bx--text-input--warning,.bx--text-input-wrapper--readonly .bx--text-input{padding-right:2.5rem}.bx--text-input--invalid.bx--password-input{padding-right:4rem}.bx--text-input--invalid+.bx--text-input--password__visibility,.bx--text-input--invalid+.bx--text-input--password__visibility__toggle{right:1rem}.bx--password-input-wrapper .bx--text-input__invalid-icon{right:2.5rem}.bx--text-input:disabled+.bx--text-input--password__visibility svg,.bx--text-input:disabled+.bx--text-input--password__visibility__toggle.bx--tooltip__trigger svg{cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--text-input:disabled+.bx--text-input--password__visibility svg:hover,.bx--text-input:disabled+.bx--text-input--password__visibility__toggle.bx--tooltip__trigger svg:hover{fill:var(--cds-disabled-02, #c6c6c6)}.bx--text-input:disabled{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;border-bottom:1px solid rgba(0,0,0,0);background-color:var(--cds-field, #f4f4f4);color:var(--cds-text-disabled, #c6c6c6);cursor:not-allowed;-webkit-text-fill-color:var(--cds-disabled-02, #c6c6c6)}.bx--text-input--light:disabled{background-color:var(--cds-field-02, #ffffff)}.bx--text-input:disabled::-moz-placeholder{color:var(--cds-disabled-02, #c6c6c6);opacity:1}.bx--text-input:disabled::placeholder{color:var(--cds-disabled-02, #c6c6c6);opacity:1}.bx--text-input--invalid{outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px;box-shadow:none}@media screen and (prefers-contrast){.bx--text-input--invalid{outline-style:dotted}}.bx--text-input--invalid .bx--text-input--password__visibility,.bx--text-input--invalid .bx--text-input--password__visibility__toggle{right:2.5rem}.bx--skeleton.bx--text-input{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none}.bx--skeleton.bx--text-input:hover,.bx--skeleton.bx--text-input:focus,.bx--skeleton.bx--text-input:active{border:none;cursor:default;outline:none}.bx--skeleton.bx--text-input:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--skeleton.bx--text-input:before{animation:none}}.bx--form--fluid .bx--text-input-wrapper{position:relative;background:var(--cds-field-01, #f4f4f4);transition:background-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--form--fluid .bx--label{position:absolute;z-index:1;top:.8125rem;left:1rem;margin:0}.bx--form--fluid .bx--form__helper-text{display:none}.bx--form--fluid .bx--text-input{min-height:4rem;padding:2rem 1rem .8125rem}.bx--text-input__divider,.bx--form--fluid .bx--text-input__divider{display:none}.bx--form--fluid .bx--text-input--invalid,.bx--form--fluid .bx--text-input--warn{border-bottom:none}.bx--form--fluid .bx--text-input--invalid+.bx--text-input__divider,.bx--form--fluid .bx--text-input--warn+.bx--text-input__divider{display:block;border-style:solid;border-color:var(--cds-ui-03, #e0e0e0);border-bottom:none;margin:0 1rem}.bx--form--fluid .bx--text-input__invalid-icon{top:5rem}.bx--form--fluid .bx--text-input-wrapper--light{background:var(--cds-field-02, #ffffff)}.bx--form--fluid .bx--text-input__field-wrapper[data-invalid]>.bx--text-input--invalid{outline:2px solid rgba(0,0,0,0);outline-offset:-2px}.bx--form--fluid .bx--text-input__field-wrapper[data-invalid]:not(:focus){outline:2px solid var(--cds-support-01, #da1e28);outline-offset:-2px}@media screen and (prefers-contrast){.bx--form--fluid .bx--text-input__field-wrapper[data-invalid]:not(:focus){outline-style:dotted}}.bx--form--fluid .bx--text-input__field-wrapper[data-invalid]>.bx--text-input--invalid:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--form--fluid .bx--text-input__field-wrapper[data-invalid]>.bx--text-input--invalid:focus{outline-style:dotted}}.bx--text-input-wrapper.bx--text-input-wrapper--inline{flex-flow:row wrap}.bx--text-input-wrapper .bx--label--inline{flex:1;margin:.8125rem 0 0;overflow-wrap:break-word;word-break:break-word}.bx--text-input-wrapper .bx--label--inline--sm{margin-top:.5625rem}.bx--text-input-wrapper .bx--label--inline--xl,.bx--text-input-wrapper .bx--label--inline--lg{margin-top:1.0625rem}.bx--text-input__label-helper-wrapper{max-width:8rem;flex:2;flex-direction:column;margin-right:1.5rem;overflow-wrap:break-word}.bx--text-input-wrapper .bx--form__helper-text--inline{margin-top:.125rem}.bx--text-input__field-outer-wrapper{display:flex;width:100%;flex:1 1 auto;flex-direction:column;align-items:flex-start}.bx--text-input__field-outer-wrapper--inline{flex:8;flex-direction:column}.bx--form--fluid .bx--text-input-wrapper--readonly,.bx--text-input-wrapper--readonly .bx--text-input{background:rgba(0,0,0,0)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--text-input--password__visibility,.bx--btn.bx--btn--icon-only.bx--text-input--password__visibility__toggle.bx--tooltip__trigger svg,.bx--btn.bx--btn--icon-only.bx--text-input--password__visibility__toggle.bx--tooltip__trigger:hover svg{fill:ButtonText}}.bx--data-table-container+.bx--pagination{border-top:0}.bx--pagination{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;width:calc(100% - 1px);min-height:2.5rem;align-items:center;justify-content:space-between;border-top:1px solid var(--cds-ui-03, #e0e0e0);background-color:var(--cds-ui-01, #f4f4f4);overflow-x:auto}@media (min-width: 42rem){.bx--pagination{overflow:initial}.bx--pagination .bx--pagination__control-buttons{display:flex}}@media (max-width: 41.98rem){.bx--pagination .bx--pagination__left>*,.bx--pagination .bx--pagination__right>*{display:none}.bx--pagination .bx--pagination__items-count{display:initial}.bx--pagination .bx--pagination__control-buttons{display:flex}}.bx--pagination--sm{min-height:2rem}.bx--pagination--lg{min-height:3rem}.bx--pagination .bx--select{height:100%;align-items:center}.bx--pagination .bx--select-input--inline__wrapper{display:flex;height:100%}.bx--pagination .bx--select-input{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);width:auto;min-width:auto;height:100%;padding:0 2.25rem 0 var(--cds-spacing-05, 1rem);background-color:var(--cds-ui-01, #f4f4f4);line-height:2.5rem}.bx--pagination--sm .bx--select-input{line-height:2rem}.bx--pagination--lg .bx--select-input{line-height:3rem}.bx--pagination .bx--select-input:hover{background:var(--cds-hover-ui, #e5e5e5)}.bx--pagination .bx--select--inline .bx--select-input:focus,.bx--pagination .bx--select--inline .bx--select-input:focus option,.bx--pagination .bx--select--inline .bx--select-input:focus optgroup{background-color:var(--cds-layer, #f4f4f4)}.bx--pagination .bx--select__arrow{top:50%;transform:translate(-.5rem,-50%)}.bx--pagination .bx--select__item-count .bx--select-input{border-right:.0625rem solid var(--cds-ui-03, #e0e0e0)}.bx--pagination .bx--select__page-number .bx--select-input{border-left:1px solid var(--cds-ui-03, #e0e0e0)}.bx--pagination__left,.bx--pagination__right{display:flex;height:100%;align-items:center}.bx--pagination__left>.bx--form-item,.bx--pagination__right>.bx--form-item{height:100%}.bx--pagination__left .bx--pagination__text,.bx--pagination__right .bx--pagination__text{white-space:nowrap}.bx--pagination__left .bx--pagination__text{margin-right:.0625rem}.bx--pagination__right .bx--pagination__text{margin-right:1rem;margin-left:.0625rem}.bx--pagination__left{padding:0 1rem 0 0}@media (min-width: 42rem){.bx--pagination__left{padding:0 1rem}.bx--pagination__text{display:inline-block}}span.bx--pagination__text{margin-left:1rem;color:var(--cds-text-02, #525252)}.bx--pagination__button,.bx--btn--ghost.bx--pagination__button{display:flex;width:2.5rem;height:2.5rem;min-height:2rem;align-items:center;justify-content:center;border:none;border-left:1px solid var(--cds-ui-03, #e0e0e0);margin:0;background:none;cursor:pointer;fill:var(--cds-ui-05, #161616);transition:outline .11s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9)}.bx--pagination--sm .bx--pagination__button,.bx--pagination--sm .bx--btn--ghost.bx--pagination__button{width:2rem;height:2rem}.bx--pagination--lg .bx--pagination__button,.bx--pagination--lg .bx--btn--ghost.bx--pagination__button{width:3rem;height:3rem}.bx--pagination__button:focus,.bx--btn--ghost:focus.bx--pagination__button{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;border-left:0}@media screen and (prefers-contrast){.bx--pagination__button:focus,.bx--btn--ghost:focus.bx--pagination__button{outline-style:dotted}}.bx--pagination__button:hover,.bx--btn--ghost:hover.bx--pagination__button{background:var(--cds-hover-ui, #e5e5e5)}.bx--pagination__button--no-index,.bx--btn--ghost.bx--pagination__button--no-index{cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--pagination__button:disabled:hover,.bx--pagination__button--no-index:hover,.bx--btn--ghost:disabled:hover.bx--pagination__button,.bx--btn--ghost:hover.bx--pagination__button--no-index{border-color:var(--cds-ui-03, #e0e0e0);background:var(--cds-ui-01, #f4f4f4);cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--pagination.bx--skeleton .bx--skeleton__text{margin-right:1rem;margin-bottom:0}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--pagination__button,.bx--btn--ghost.bx--pagination__button{outline:1px solid rgba(0,0,0,0)}}.bx--progress-bar__label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;min-width:3rem;justify-content:space-between;margin-bottom:var(--cds-spacing-03, .5rem);color:var(--cds-text-primary, #161616)}.bx--progress-bar__label-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bx--progress-bar__track{position:relative;width:100%;min-width:3rem;height:.5rem;background-color:var(--cds-layer, #f4f4f4)}.bx--progress-bar--big .bx--progress-bar__track{height:.5rem}.bx--progress-bar--small .bx--progress-bar__track{height:.25rem}.bx--progress-bar__bar{display:block;width:100%;height:100%;background-color:currentColor;color:var(--cds-interactive, #0f62fe);transform:scaleX(0);transform-origin:0 center;transition:transform .11s cubic-bezier(.2,0,.38,.9)}.bx--progress-bar--indeterminate .bx--progress-bar__track:after{position:absolute;inset:0;animation-duration:1.4s;animation-iteration-count:infinite;animation-name:progress-bar-indeterminate;animation-timing-function:linear;background-image:linear-gradient(90deg,var(--cds-interactive, #0f62fe) 12.5%,transparent 12.5%);background-position-x:0%;background-size:200% 100%;content:""}.bx--progress-bar__helper-text{font-size:var(--cds-helper-text-01-font-size, .75rem);line-height:var(--cds-helper-text-01-line-height, 1.33333);letter-spacing:var(--cds-helper-text-01-letter-spacing, .32px);margin-top:var(--cds-spacing-03, .5rem);color:var(--cds-text-secondary, #525252)}.bx--progress-bar__status-icon{flex-shrink:0;margin-left:var(--cds-spacing-05, 1rem)}.bx--progress-bar--finished .bx--progress-bar__bar,.bx--progress-bar--finished .bx--progress-bar__status-icon{color:var(--cds-support-success, #198038)}.bx--progress-bar--error .bx--progress-bar__bar,.bx--progress-bar--error .bx--progress-bar__status-icon,.bx--progress-bar--error .bx--progress-bar__helper-text{color:var(--cds-support-error, #da1e28)}.bx--progress-bar--finished .bx--progress-bar__bar,.bx--progress-bar--error .bx--progress-bar__bar{transform:scaleX(1)}.bx--progress-bar--finished.bx--progress-bar--inline .bx--progress-bar__track,.bx--progress-bar--error.bx--progress-bar--inline .bx--progress-bar__track{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--progress-bar--finished.bx--progress-bar--inline .bx--progress-bar__label,.bx--progress-bar--error.bx--progress-bar--inline .bx--progress-bar__label{flex-shrink:1;justify-content:flex-start;margin-right:0}@keyframes progress-bar-indeterminate{0%{background-position-x:25%}80%,to{background-position-x:-105%}}.bx--progress-bar--inline{display:flex;align-items:center}.bx--progress-bar--inline .bx--progress-bar__label{margin-right:var(--cds-spacing-05, 1rem);margin-bottom:0}.bx--progress-bar--inline .bx--progress-bar__track{flex-basis:0;flex-grow:1}.bx--progress-bar--inline .bx--progress-bar__helper-text{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--progress-bar--indented .bx--progress-bar__label,.bx--progress-bar--indented .bx--progress-bar__helper-text{padding-right:var(--cds-spacing-05, 1rem);padding-left:var(--cds-spacing-05, 1rem)}.bx--tooltip__label{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);display:inline-flex;align-items:center;color:var(--cds-text-02, #525252)}.bx--tooltip__label:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__label:focus{outline-style:dotted}}.bx--tooltip__trigger svg{fill:var(--cds-icon-02, #525252)}.bx--tooltip__trigger:not(.bx--btn--icon-only){display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;display:inline-flex;align-items:center;font-size:1rem}.bx--tooltip__trigger:not(.bx--btn--icon-only)::-moz-focus-inner{border:0}.bx--tooltip__trigger:not(.bx--btn--icon-only):focus{outline:1px solid var(--cds-focus, #0f62fe);fill:var(--cds-hover-primary, #0353e9)}@media screen and (prefers-contrast){.bx--tooltip__trigger:not(.bx--btn--icon-only):focus{outline-style:dotted}}.bx--tooltip__trigger:not(.bx--btn--icon-only)[disabled] svg{fill:var(--cds-icon-disabled, #c6c6c6)}.bx--tooltip__label .bx--tooltip__trigger{margin-left:.5rem}.bx--tooltip__label--bold{font-weight:600}.bx--tooltip{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:absolute;z-index:6000;display:none;min-width:13rem;max-width:18rem;padding:1rem;margin-top:.25rem;background:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);word-wrap:break-word}.bx--tooltip:focus{box-shadow:inset 0 0 0 1px var(--cds-inverse-02, #393939),inset 0 0 0 2px var(--cds-ui-background, #ffffff);outline:0}.bx--tooltip.bx--tooltip--top.bx--tooltip--align-start,.bx--tooltip.bx--tooltip--bottom.bx--tooltip--align-start{transform:translate(calc(50% - 22px))}.bx--tooltip.bx--tooltip--top.bx--tooltip--align-start .bx--tooltip__caret,.bx--tooltip.bx--tooltip--bottom.bx--tooltip--align-start .bx--tooltip__caret{margin-left:15px}.bx--tooltip.bx--tooltip--top.bx--tooltip--align-end,.bx--tooltip.bx--tooltip--bottom.bx--tooltip--align-end{transform:translate(calc(22px - 50%))}.bx--tooltip.bx--tooltip--top.bx--tooltip--align-end .bx--tooltip__caret,.bx--tooltip.bx--tooltip--bottom.bx--tooltip--align-end .bx--tooltip__caret{margin-right:15px}.bx--tooltip.bx--tooltip--left.bx--tooltip--align-start{transform:translateY(calc(-15px + 50%))}.bx--tooltip.bx--tooltip--left.bx--tooltip--align-start .bx--tooltip__caret{top:14px}.bx--tooltip.bx--tooltip--left.bx--tooltip--align-end{transform:translateY(calc(31px - 50%))}.bx--tooltip.bx--tooltip--left.bx--tooltip--align-end .bx--tooltip__caret{top:initial;bottom:25px}.bx--tooltip.bx--tooltip--right.bx--tooltip--align-start{transform:translateY(calc(-26px + 50%))}.bx--tooltip.bx--tooltip--right.bx--tooltip--align-start .bx--tooltip__caret{top:26px}.bx--tooltip.bx--tooltip--right.bx--tooltip--align-end{transform:translateY(calc(20px - 50%))}.bx--tooltip.bx--tooltip--right.bx--tooltip--align-end .bx--tooltip__caret{top:initial;bottom:12px}.bx--tooltip p{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);text-align:left}.bx--tooltip button{padding-right:2rem}.bx--tooltip .bx--btn:focus{border-color:var(--cds-inverse-focus-ui, #ffffff);outline-color:var(--cds-inverse-02, #393939)}.bx--tooltip .bx--link{color:var(--cds-inverse-link, #78a9ff);font-size:.875rem}.bx--tooltip .bx--link:focus{outline:1px solid var(--cds-inverse-focus-ui, #ffffff);outline-offset:2px}.bx--tooltip .bx--link:active,.bx--tooltip .bx--link:active:visited,.bx--tooltip .bx--link:active:visited:hover{color:var(--cds-inverse-01, #ffffff)}.bx--tooltip .bx--link:visited{color:var(--cds-inverse-link, #78a9ff)}.bx--tooltip .bx--tooltip__content[tabindex="-1"]:focus{outline:none}.bx--tooltip .bx--tooltip__caret{position:absolute;top:calc(-.4296875rem + 1px);right:0;left:0;width:0;height:0;border-right:.4296875rem solid rgba(0,0,0,0);border-bottom:.4296875rem solid var(--cds-inverse-02, #393939);border-left:.4296875rem solid rgba(0,0,0,0);margin:0 auto;content:""}.bx--tooltip .bx--tooltip__footer{display:flex;align-items:center;justify-content:space-between;margin-top:1rem}.bx--tooltip[data-floating-menu-direction=left]{margin-left:calc(var(--cds-spacing-03, .5rem) * -1)}.bx--tooltip[data-floating-menu-direction=left] .bx--tooltip__caret{top:50%;right:calc(-.4296875rem + 1px);left:auto;transform:rotate(90deg) translate(50%,-50%)}.bx--tooltip[data-floating-menu-direction=top]{margin-top:calc(var(--cds-spacing-03, .5rem) * -1)}.bx--tooltip[data-floating-menu-direction=top] .bx--tooltip__caret{top:auto;bottom:calc(-.4296875rem + 1px);transform:rotate(180deg)}.bx--tooltip[data-floating-menu-direction=right]{margin-left:var(--cds-spacing-03, .5rem)}.bx--tooltip[data-floating-menu-direction=right] .bx--tooltip__caret{top:50%;right:auto;left:calc(-.4296875rem + 1px);transform:rotate(270deg) translate(50%,-50%)}.bx--tooltip[data-floating-menu-direction=bottom]{margin-top:var(--cds-spacing-03, .5rem)}.bx--tooltip__heading{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);margin-bottom:var(--cds-spacing-03, .5rem)}.bx--tooltip--shown{display:block;margin-top:0}.bx--tooltip--definition{position:relative}.bx--tooltip--definition .bx--tooltip__trigger{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);position:relative;display:inline-flex;border-bottom:1px dotted var(--cds-interactive-01, #0f62fe);color:var(--cds-text-01, #161616)}.bx--tooltip--definition .bx--tooltip__trigger:hover+.bx--tooltip--definition__top,.bx--tooltip--definition .bx--tooltip__trigger:hover+.bx--tooltip--definition__bottom{display:block}.bx--tooltip--definition .bx--tooltip__trigger:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip--definition .bx--tooltip__trigger:focus{outline-style:dotted}}.bx--tooltip--definition .bx--tooltip__trigger:focus+.bx--tooltip--definition__top,.bx--tooltip--definition .bx--tooltip__trigger:focus+.bx--tooltip--definition__bottom{display:block}.bx--tooltip--definition__bottom,.bx--tooltip--definition__top{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:absolute;z-index:1;display:none;width:13rem;padding:.5rem 1rem;margin-top:.75rem;background:var(--cds-inverse-02, #393939);border-radius:.125rem;pointer-events:none}.bx--tooltip--definition__bottom p,.bx--tooltip--definition__top p{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);color:var(--cds-inverse-01, #ffffff)}.bx--tooltip--definition__bottom .bx--tooltip__caret,.bx--tooltip--definition__top .bx--tooltip__caret{position:absolute;right:0;left:0;width:.6rem;height:.6rem;margin-left:1rem;background:var(--cds-inverse-02, #393939)}.bx--tooltip--definition__bottom .bx--tooltip__caret{top:-.2rem;transform:rotate(-135deg)}.bx--tooltip--definition__top{margin-top:-2rem;transform:translateY(-100%)}.bx--tooltip--definition__top .bx--tooltip__caret{bottom:-.2rem;transform:rotate(45deg)}.bx--tooltip--definition__align-end{right:0}.bx--tooltip--definition__align-center{margin-left:50%;transform:translate(-50%)}.bx--tooltip--definition__top.bx--tooltip--definition__align-center{margin-left:50%;transform:translate(-50%,-100%)}.bx--tooltip--definition__align-center .bx--tooltip__caret{left:auto;margin-right:calc(50% - 6px);margin-left:auto}.bx--tooltip--definition__align-end .bx--tooltip__caret{left:auto;margin-right:1rem;margin-left:auto}.bx--tooltip--definition.bx--tooltip--a11y{display:inline-flex}.bx--tooltip--definition button.bx--tooltip--a11y{margin:0}.bx--tooltip__trigger.bx--tooltip__trigger--definition{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);border-bottom:.0625rem dotted var(--cds-text-02, #525252);transition:border-color .11s}.bx--tooltip__trigger.bx--tooltip__trigger--definition:hover,.bx--tooltip__trigger.bx--tooltip__trigger--definition:focus{border-bottom-color:var(--cds-interactive-04, #0f62fe)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:default}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after{transition:none}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.5rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus:after{opacity:1}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:before{top:-.25rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top+.bx--assistive-text{top:-.5625rem;left:0;transform:translateY(-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start:before{top:-.25rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-start+.bx--assistive-text{top:-.5625rem;left:0;transform:translateY(-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center:before{top:-.25rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-center+.bx--assistive-text{top:-.5625rem;left:50%;transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end:before{top:-.25rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--top.bx--tooltip--align-end+.bx--assistive-text{top:-.5625rem;right:0;left:auto;transform:translateY(-100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:default}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after{transition:none}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.5rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus:after{opacity:1}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:before{bottom:-.25rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom+.bx--assistive-text{bottom:-.5625rem;left:0;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--a11y+.bx--assistive-text{bottom:-.5rem;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start:before{bottom:-.25rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:-.5625rem;left:0;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-start.bx--tooltip--a11y+.bx--assistive-text{bottom:-.5rem;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center:before{bottom:-.25rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:-.5625rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-center.bx--tooltip--a11y+.bx--assistive-text{bottom:-.5rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end:before{bottom:-.25rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:-.5625rem;right:0;left:auto;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip__trigger--definition.bx--tooltip--bottom.bx--tooltip--align-end.bx--tooltip--a11y+.bx--assistive-text{bottom:-.5rem;transform:translateY(100%)}.bx--tooltip--icon{display:inline-flex;align-items:center}.bx--tooltip--icon__top,.bx--tooltip--icon__bottom{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip--icon__top:before,.bx--tooltip--icon__top:after,.bx--tooltip--icon__bottom:before,.bx--tooltip--icon__bottom:after{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:absolute;display:flex;align-items:center;opacity:0;pointer-events:none;transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip--icon__top:before,.bx--tooltip--icon__top:after,.bx--tooltip--icon__bottom:before,.bx--tooltip--icon__bottom:after{transition:none}}.bx--tooltip--icon__top:before,.bx--tooltip--icon__bottom:before{right:0;left:0;width:0;height:0;border-width:0 .25rem .3125rem .25rem;border-style:solid;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);margin:1px auto 0 50%;content:""}.bx--tooltip--icon__top:after,.bx--tooltip--icon__bottom:after{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));min-width:1.5rem;max-width:13rem;height:1.5rem;padding:0 1rem;margin-left:50%;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);content:attr(aria-label);font-weight:400;pointer-events:none;transform:translate(-50%);white-space:nowrap}.bx--tooltip--icon__top:hover:before,.bx--tooltip--icon__top:hover:after,.bx--tooltip--icon__top:focus:before,.bx--tooltip--icon__top:focus:after,.bx--tooltip--icon__bottom:hover:before,.bx--tooltip--icon__bottom:hover:after,.bx--tooltip--icon__bottom:focus:before,.bx--tooltip--icon__bottom:focus:after{opacity:1}.bx--tooltip--icon__top:hover svg,.bx--tooltip--icon__top:focus svg,.bx--tooltip--icon__bottom:hover svg,.bx--tooltip--icon__bottom:focus svg{fill:var(--cds-icon-02, #525252)}.bx--tooltip--icon__top:focus,.bx--tooltip--icon__bottom:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip--icon__top:focus svg,.bx--tooltip--icon__bottom:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip--icon__top:focus svg,.bx--tooltip--icon__bottom:focus svg{outline-style:dotted}}.bx--tooltip--icon__top:before{transform:translate(-50%,calc(-100% - 9px)) rotate(180deg);top:1px}.bx--tooltip--icon__top:after{transform:translate(-50%,calc(-100% - 12px));top:0}.bx--tooltip--icon__bottom:before{transform:translate(-50%,10px) rotate(0);bottom:0}.bx--tooltip--icon__bottom:after{transform:translate(-50%,calc(100% + 10px));bottom:0}.bx--tooltip--icon__top.bx--tooltip--icon__align-start:before{transform:translateY(calc(-100% - 9px)) rotate(180deg);top:1px;margin-left:4px}.bx--tooltip--icon__top.bx--tooltip--icon__align-start:after{transform:translateY(calc(-100% - 12px));top:0;margin-left:0}.bx--tooltip--icon__top.bx--tooltip--icon__align-end:before{transform:translateY(calc(-100% - 9px)) rotate(180deg);top:1px;right:0;left:auto;margin-right:4px}.bx--tooltip--icon__top.bx--tooltip--icon__align-end:after{transform:translateY(calc(-100% - 12px));top:0;margin-left:0;right:0}.bx--tooltip--icon__bottom.bx--tooltip--icon__align-start:before{transform:translateY(10px) rotate(0);bottom:0;margin-left:4px}.bx--tooltip--icon__bottom.bx--tooltip--icon__align-start:after{transform:translateY(calc(100% + 10px));bottom:0;margin-left:0}.bx--tooltip--icon__bottom.bx--tooltip--icon__align-end:before{transform:translateY(10px) rotate(0);bottom:0;right:0;left:auto;margin-right:4px}.bx--tooltip--icon__bottom.bx--tooltip--icon__align-end:after{transform:translateY(calc(100% + 10px));bottom:0;margin-left:0;right:0}.bx--tooltip--icon .bx--tooltip__trigger svg{margin-left:0}.bx--tooltip__trigger:hover svg,.bx--tooltip__trigger:focus svg{fill:var(--cds-icon-02, #525252)}.bx--tooltip__trigger.bx--tooltip--top{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--tooltip--top:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--top:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--top:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--top:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--top:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip--top:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip--top:after{transition:none}}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip--top:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip--top:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip--top:hover:before,.bx--tooltip__trigger.bx--tooltip--top:hover:after,.bx--tooltip__trigger.bx--tooltip--top:focus:before,.bx--tooltip__trigger.bx--tooltip--top:focus:after{opacity:1}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--top:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--top:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip--top:before,.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip--top:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top:after,.bx--tooltip__trigger.bx--tooltip--top .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top+.bx--assistive-text{top:-.8125rem;left:50%;transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-start+.bx--assistive-text{top:-.8125rem;left:0;transform:translateY(-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-center+.bx--assistive-text{top:-.8125rem;left:50%;transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;bottom:-.75rem}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end+.bx--assistive-text{top:0;left:50%}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end:before{top:-.5rem;border-width:.3125rem .25rem 0 .25rem;border-color:var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(-50%,-100%)}.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--top.bx--tooltip--align-end+.bx--assistive-text{top:-.8125rem;right:0;left:auto;transform:translateY(-100%)}.bx--tooltip__trigger.bx--tooltip--right{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--tooltip--right:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--right:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--right:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--right:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--right:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--right:before,.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--right:before,.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip--right:before,.bx--tooltip__trigger.bx--tooltip--right:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip--right:before,.bx--tooltip__trigger.bx--tooltip--right:after{transition:none}}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip--right:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip--right:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip--right:hover:before,.bx--tooltip__trigger.bx--tooltip--right:hover:after,.bx--tooltip__trigger.bx--tooltip--right:focus:before,.bx--tooltip__trigger.bx--tooltip--right:focus:after{opacity:1}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--right:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--right:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--tooltip--right:before,.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--tooltip--right:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right:after,.bx--tooltip__trigger.bx--tooltip--right .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-start+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-center+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;left:-.75rem}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end+.bx--assistive-text{top:50%;right:0}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end:before{right:-.5rem;border-width:.25rem .3125rem .25rem 0;border-color:rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0) rgba(0,0,0,0);transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--right.bx--tooltip--align-end+.bx--assistive-text{right:-.8125rem;transform:translate(100%,-50%)}.bx--tooltip__trigger.bx--tooltip--bottom{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--tooltip--bottom:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--bottom:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--bottom:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--bottom:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--bottom:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip--bottom:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip--bottom:after{transition:none}}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip--bottom:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip--bottom:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip--bottom:hover:before,.bx--tooltip__trigger.bx--tooltip--bottom:hover:after,.bx--tooltip__trigger.bx--tooltip--bottom:focus:before,.bx--tooltip__trigger.bx--tooltip--bottom:focus:after{opacity:1}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--bottom:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--bottom:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip--bottom:before,.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip--bottom:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom:after,.bx--tooltip__trigger.bx--tooltip--bottom .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-start+.bx--assistive-text{bottom:-.8125rem;left:0;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-center+.bx--assistive-text{bottom:-.8125rem;transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";left:0;width:100%;height:.75rem;top:-.75rem}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:0;left:50%}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end:before{bottom:-.5rem;border-width:0 .25rem .3125rem .25rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939) rgba(0,0,0,0);transform:translate(-50%,100%)}.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--bottom.bx--tooltip--align-end+.bx--assistive-text{bottom:-.8125rem;right:0;left:auto;transform:translateY(100%)}.bx--tooltip__trigger.bx--tooltip--left{position:relative;display:inline-flex;overflow:visible;align-items:center;cursor:pointer}.bx--tooltip__trigger.bx--tooltip--left:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--left:focus{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--left:focus{outline:1px solid rgba(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--left:focus svg{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--left:focus svg{outline-style:dotted}}.bx--tooltip__trigger.bx--tooltip--left:before,.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{position:absolute;z-index:6000;display:flex;align-items:center;opacity:0;pointer-events:none}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--left:before,.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{display:inline-block}}.bx--tooltip__trigger.bx--tooltip--left:before,.bx--tooltip__trigger.bx--tooltip--left:after{transition:opacity 70ms cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tooltip__trigger.bx--tooltip--left:before,.bx--tooltip__trigger.bx--tooltip--left:after{transition:none}}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--a11y:after{transition:none}.bx--tooltip__trigger.bx--tooltip--left:before{width:0;height:0;border-style:solid;content:""}.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{box-sizing:content-box;color:inherit;opacity:1;white-space:normal;word-break:break-word}.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));z-index:6000;width:-moz-max-content;width:max-content;min-width:1.5rem;max-width:13rem;height:auto;padding:.1875rem 1rem;background-color:var(--cds-inverse-02, #393939);border-radius:.125rem;color:var(--cds-inverse-01, #ffffff);font-weight:400;text-align:left;transform:translate(-50%);font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px)}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{width:auto}}@supports (-ms-accelerator: true){.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{width:auto}}@supports (-ms-ime-align: auto){.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{width:auto}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{border:1px solid rgba(0,0,0,0)}}.bx--tooltip__trigger.bx--tooltip--left:after{content:attr(aria-label)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--a11y:after{content:none}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible:before,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible:after,.bx--tooltip__trigger.bx--tooltip--left:hover:before,.bx--tooltip__trigger.bx--tooltip--left:hover:after,.bx--tooltip__trigger.bx--tooltip--left:focus:before,.bx--tooltip__trigger.bx--tooltip--left:focus:after{opacity:1}@keyframes tooltip-fade{0%{opacity:0}to{opacity:1}}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:focus+.bx--assistive-text{overflow:visible;margin:auto;clip:auto}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--visible.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--left:hover .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:hover+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:hover.bx--tooltip--a11y:before,.bx--tooltip__trigger.bx--tooltip--left:focus .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:focus+.bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left:focus.bx--tooltip--a11y:before{animation:tooltip-fade 70ms cubic-bezier(.2,0,.38,.9)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--hidden .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--hidden+.bx--assistive-text{overflow:hidden;margin:-1px;clip:rect(0,0,0,0)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--hidden.bx--tooltip--a11y:before{animation:none;opacity:0}.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--tooltip--left:before,.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--tooltip--left:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left:after,.bx--tooltip__trigger.bx--tooltip--left .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start:before,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-start+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center:before,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-center+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end .bx--assistive-text:after{position:absolute;display:block;content:"";top:0;width:.75rem;height:100%;right:-.75rem}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end:before,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end+.bx--assistive-text{top:50%;left:0}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end:before{left:-.5rem;border-width:.25rem 0 .25rem .3125rem;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) var(--cds-inverse-02, #393939);transform:translate(-100%,-50%)}.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end:after,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end .bx--assistive-text,.bx--tooltip__trigger.bx--tooltip--left.bx--tooltip--align-end+.bx--assistive-text{left:-.8125rem;transform:translate(-100%,-50%)}.bx--tooltip__trigger:not(.bx--tooltip--hidden) .bx--assistive-text{pointer-events:all}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--tooltip__trigger svg,.bx--tooltip__trigger:hover svg,.bx--tooltip__trigger:focus svg{fill:ButtonText}.bx--tooltip__trigger:focus svg{color:Highlight;outline:1px solid Highlight}.bx--tooltip,.bx--assistive-text{outline:1px solid rgba(0,0,0,0)}}.bx--progress{display:flex;list-style:none}.bx--progress-step{position:relative;display:inline-flex;overflow:visible;width:8rem;min-width:7rem;flex-direction:row}.bx--progress-step .bx--tooltip__label{display:block}.bx--progress--space-equal .bx--progress-step{min-width:8rem;flex-grow:1}.bx--progress-line{position:absolute;left:0;width:8rem;height:1px;border:1px inset rgba(0,0,0,0)}.bx--progress--space-equal .bx--progress-line{width:100%;min-width:8rem}.bx--progress-step svg{position:relative;z-index:1;width:1rem;height:1rem;flex-shrink:0;margin:.625rem .5rem 0 0;border-radius:50%;fill:var(--cds-interactive-04, #0f62fe)}.bx--progress-label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);overflow:hidden;max-width:5.5rem;margin:.5rem 0 0;color:var(--cds-text-01, #161616);line-height:1.45;text-overflow:ellipsis;transition:box-shadow .11s cubic-bezier(.2,0,.38,.9),color .11s cubic-bezier(.2,0,.38,.9);white-space:nowrap}.bx--progress-label:before{display:block;content:""}.bx--progress-label:hover{box-shadow:0 .0625rem var(--cds-link-01, #0f62fe);color:var(--cds-link-01, #0f62fe);cursor:pointer}.bx--progress-label:focus{box-shadow:0 .1875rem 0 0 var(--cds-link-01, #0f62fe);color:var(--cds-link-01, #0f62fe);outline:none}.bx--progress--space-equal .bx--progress-label{max-width:100%;margin-right:.75rem}.bx--progress-step-button:not(.bx--progress-step-button--unclickable) .bx--progress-label:active{box-shadow:0 .1875rem 0 0 var(--cds-interactive, #0f62fe);color:var(--cds-interactive, #0f62fe)}.bx--progress-label-overflow:hover~.bx--tooltip,.bx--progress-label-overflow:focus~.bx--tooltip{visibility:inherit}.bx--progress-step .bx--tooltip .bx--tooltip__caret{margin-left:.625rem}.bx--tooltip__text{padding:0;margin:0;font-weight:400}.bx--progress-step .bx--tooltip{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);display:block;width:7.8125rem;min-width:7.1875rem;min-height:1.5rem;padding:.5rem 1rem;margin-top:2.5rem;margin-left:1.375rem;color:var(--cds-inverse-01, #ffffff);visibility:hidden}.bx--progress-step .bx--tooltip_multi{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);width:9.375rem;height:auto;color:var(--cds-inverse-01, #ffffff)}.bx--progress-optional{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);position:absolute;left:0;margin-top:1.75rem;margin-left:1.5rem;color:var(--cds-text-02, #525252);text-align:start}.bx--progress-step--current .bx--progress-line{background-color:var(--cds-interactive-04, #0f62fe)}.bx--progress-step--incomplete svg{fill:var(--cds-ui-05, #161616)}.bx--progress-step--incomplete .bx--progress-line{background-color:var(--cds-ui-03, #e0e0e0)}.bx--progress-step--complete .bx--progress-line{background-color:var(--cds-interactive-04, #0f62fe)}.bx--progress-step-button{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;display:flex;text-align:left}.bx--progress-step-button::-moz-focus-inner{border:0}.bx--progress-step-button--unclickable{cursor:default;outline:none}.bx--progress-step-button--unclickable .bx--progress-label:hover{box-shadow:none;color:var(--cds-text-01, #161616);cursor:default}.bx--progress-step-button--unclickable .bx--tooltip__label:hover{box-shadow:0 .0625rem var(--cds-link-01, #0f62fe);color:var(--cds-link-01, #0f62fe);cursor:pointer}.bx--progress-step--disabled{cursor:not-allowed;pointer-events:none}.bx--progress-step--disabled svg{cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--progress-step--disabled .bx--progress-label,.bx--progress-step--disabled .bx--progress-label:hover{box-shadow:none;color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--progress-step--disabled .bx--progress-label:focus,.bx--progress-step--disabled .bx--progress-label:active{box-shadow:none;outline:none}.bx--progress-step--disabled .bx--progress-line{cursor:not-allowed}.bx--progress-step--disabled .bx--progress-label-overflow:hover~.bx--tooltip--definition .bx--tooltip--definition__bottom{display:none}.bx--progress__warning>*{fill:var(--cds-support-01, #da1e28)}.bx--progress.bx--skeleton .bx--progress-label{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:2.5rem;height:.875rem;margin-top:.625rem}.bx--progress.bx--skeleton .bx--progress-label:hover,.bx--progress.bx--skeleton .bx--progress-label:focus,.bx--progress.bx--skeleton .bx--progress-label:active{border:none;cursor:default;outline:none}.bx--progress.bx--skeleton .bx--progress-label:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--progress.bx--skeleton .bx--progress-label:before{animation:none}}.bx--progress--vertical,.bx--progress-text{display:flex;flex-direction:column}.bx--progress--vertical .bx--progress-step,.bx--progress--vertical .bx--progress-step-button{width:initial;min-width:initial;min-height:3.625rem;align-content:flex-start}.bx--progress--vertical .bx--progress-step svg,.bx--progress--vertical .bx--progress-step-button svg{display:inline-block;margin:.0625rem .5rem 0}.bx--progress--vertical .bx--progress-label{display:inline-block;width:initial;max-width:10rem;margin:0;vertical-align:top;white-space:initial}.bx--progress--vertical .bx--progress-step .bx--tooltip{margin-top:.5rem}.bx--progress--vertical .bx--progress-optional{position:static;width:100%;margin:auto 0}.bx--progress--vertical .bx--progress-line{position:absolute;top:0;left:0;width:1px;height:100%}.bx--radio-button-group{position:relative;display:flex;align-items:center}.bx--label+.bx--form-item .bx--radio-button-group{margin-top:0}.bx--radio-button-group--vertical{flex-direction:column;align-items:flex-start}.bx--radio-button-group--vertical.bx--radio-button-group--label-left{align-items:flex-end}.bx--radio-button-group--vertical .bx--radio-button__label{margin-right:0;line-height:1.25rem}.bx--radio-button-group--vertical .bx--radio-button__label:not(:last-of-type){margin-bottom:.5rem}.bx--radio-button{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);white-space:nowrap;visibility:inherit}.bx--radio-button__label{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;align-items:center;margin-right:1rem;cursor:pointer}.bx--radio-button__appearance{width:1.125rem;height:1.125rem;flex-shrink:0;border:1px solid var(--cds-icon-01, #161616);margin:.0625rem .5rem .125rem .125rem;background-color:#0000;border-radius:50%}.bx--radio-button:checked+.bx--radio-button__label .bx--radio-button__appearance{display:flex;align-items:center;justify-content:center;border-color:var(--cds-icon-01, #161616)}.bx--radio-button:checked+.bx--radio-button__label .bx--radio-button__appearance:before{position:relative;display:inline-block;width:100%;height:100%;background-color:var(--cds-icon-01, #161616);border-radius:50%;content:"";transform:scale(.5)}@media screen and (-ms-high-contrast: active){.bx--radio-button:checked+.bx--radio-button__label .bx--radio-button__appearance:before{background-color:WindowText}}@media screen and (prefers-contrast){.bx--radio-button:checked+.bx--radio-button__label .bx--radio-button__appearance:before{border:2px solid WindowText}}.bx--radio-button:disabled+.bx--radio-button__label{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--radio-button:disabled+.bx--radio-button__label .bx--radio-button__appearance,.bx--radio-button:disabled:checked+.bx--radio-button__label .bx--radio-button__appearance{border-color:var(--cds-disabled-02, #c6c6c6)}.bx--radio-button:disabled+.bx--radio-button__label .bx--radio-button__appearance:before,.bx--radio-button:disabled:checked+.bx--radio-button__label .bx--radio-button__appearance:before{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--radio-button:focus+.bx--radio-button__label .bx--radio-button__appearance{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:1.5px}.bx--radio-button__label.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:6.25rem;height:1.125rem}.bx--radio-button__label.bx--skeleton:hover,.bx--radio-button__label.bx--skeleton:focus,.bx--radio-button__label.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--radio-button__label.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--radio-button__label.bx--skeleton:before{animation:none}}.bx--radio-button__label.bx--skeleton .bx--radio-button__appearance{display:none}.bx--radio-button-wrapper .bx--radio-button__label{display:flex;align-items:flex-start;justify-content:center;margin:0}.bx--radio-button-wrapper:not(:last-of-type){margin-right:1rem}.bx--radio-button-group--vertical .bx--radio-button-wrapper:not(:last-of-type){margin-right:0;margin-bottom:.5rem}.bx--radio-button-group--label-right .bx--radio-button__label,.bx--radio-button-wrapper.bx--radio-button-wrapper--label-right .bx--radio-button__label{flex-direction:row}.bx--radio-button-group--label-left .bx--radio-button__label,.bx--radio-button-wrapper.bx--radio-button-wrapper--label-left .bx--radio-button__label{flex-direction:row-reverse}.bx--radio-button-group--label-left .bx--radio-button__appearance,.bx--radio-button-wrapper.bx--radio-button-wrapper--label-left .bx--radio-button__appearance{margin-right:0;margin-left:.5rem}.bx--search{position:relative;display:flex;width:100%;align-items:center}.bx--search .bx--label{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--search-input{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;width:100%;order:1;padding:0 2.5rem;border:none;border-bottom:1px solid var(--cds-ui-04, #8d8d8d);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616);text-overflow:ellipsis;transition:background-color .11s cubic-bezier(.2,0,.38,.9),outline .11s cubic-bezier(.2,0,.38,.9)}.bx--search-input:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--search-input:focus{outline-style:dotted}}.bx--search-input::-moz-placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--search-input::placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--search-input::-ms-clear{display:none}.bx--search-input[disabled]{border-bottom:1px solid rgba(0,0,0,0);background-color:var(--cds-field, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--search-input[disabled]::-moz-placeholder{color:var(--cds-disabled-02, #c6c6c6)}.bx--search-input[disabled]::placeholder{color:var(--cds-disabled-02, #c6c6c6)}.bx--search--light .bx--search-input{background:var(--cds-field-02, #ffffff)}.bx--search--light .bx--search-close:before{background:var(--cds-field-02, #ffffff)}.bx--search--sm .bx--search-input,.bx--search--sm.bx--search--expandable.bx--search--expanded .bx--search-input{height:2rem;padding:0 var(--cds-spacing-07, 2rem)}.bx--search--sm .bx--search-magnifier-icon{left:.5rem}.bx--search--lg .bx--search-input,.bx--search--lg.bx--search--expandable.bx--search--expanded .bx--search-input{height:2.5rem;padding:0 var(--cds-spacing-08, 2.5rem)}.bx--search--lg .bx--search-magnifier-icon{left:.75rem}.bx--search--xl .bx--search-input,.bx--search--xl.bx--search--expandable.bx--search--expanded .bx--search-input{height:3rem;padding:0 var(--cds-spacing-09, 3rem)}.bx--search-magnifier-icon{position:absolute;z-index:2;top:50%;left:var(--cds-spacing-05, 1rem);width:1rem;height:1rem;fill:var(--cds-icon-02, #525252);pointer-events:none;transform:translateY(-50%)}.bx--search-close{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;outline:2px solid rgba(0,0,0,0);outline-offset:-2px;position:absolute;top:0;right:0}.bx--search-close::-moz-focus-inner{border:0}.bx--search-close:before{position:absolute;top:.0625rem;left:0;display:block;width:2px;height:calc(100% - 2px);background-color:var(--cds-field-01, #f4f4f4);content:"";transition:background-color .11s cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--search-close:before{transition:none}}.bx--search-close:hover{border-bottom:1px solid var(--cds-ui-04, #8d8d8d)}.bx--search-close:hover:before{background-color:var(--cds-hover-field, #e5e5e5)}.bx--search-button{flex-shrink:0;margin-left:.125rem;background-color:var(--cds-field-01, #f4f4f4)}.bx--search-button svg{fill:currentColor;vertical-align:middle}.bx--search-close svg{fill:inherit}.bx--search-close,.bx--search-button{display:flex;width:2.5rem;height:2.5rem;align-items:center;justify-content:center;border-width:1px 0;border-style:solid;border-color:#0000;cursor:pointer;fill:var(--cds-icon-01, #161616);opacity:1;transition:opacity .11s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9),outline .11s cubic-bezier(.2,0,.38,.9),border .11s cubic-bezier(.2,0,.38,.9);visibility:inherit}.bx--search-close:hover,.bx--search-button:hover{background-color:var(--cds-hover-field, #e5e5e5)}.bx--search-close:focus,.bx--search-button:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--search-close:focus,.bx--search-button:focus{outline-style:dotted}}.bx--search-close:active,.bx--search-button:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;background-color:var(--cds-selected-ui, #e0e0e0)}@media screen and (prefers-contrast){.bx--search-close:active,.bx--search-button:active{outline-style:dotted}}.bx--search--disabled .bx--search-close,.bx--search--disabled.bx--search--expandable .bx--search-magnifier{cursor:not-allowed;outline:none}.bx--search--disabled .bx--search-close:hover,.bx--search--disabled.bx--search--expandable .bx--search-magnifier:hover{border-bottom-color:#0000;background-color:#0000}.bx--search--disabled .bx--search-close:hover:before,.bx--search--disabled.bx--search--expandable .bx--search-magnifier:hover:before{background-color:#0000}.bx--search--disabled svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--search-close:focus:before,.bx--search-close:active:before{background-color:var(--cds-focus, #0f62fe)}.bx--search-input:focus~.bx--search-close:hover{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--search-input:focus~.bx--search-close:hover{outline-style:dotted}}.bx--search--sm .bx--search-close,.bx--search--sm~.bx--search-button,.bx--search--sm.bx--search--expandable,.bx--search--sm.bx--search--expandable .bx--search-magnifier{width:2rem;height:2rem}.bx--search--sm.bx--search--expandable .bx--search-input::-moz-placeholder{padding:0 2rem}.bx--search--sm.bx--search--expandable .bx--search-input::placeholder{padding:0 2rem}.bx--search--lg .bx--search-close,.bx--search--lg~.bx--search-button,.bx--search--lg.bx--search--expandable,.bx--search--lg.bx--search--expandable .bx--search-magnifier{width:2.5rem;height:2.5rem}.bx--search--lg.bx--search--expandable .bx--search-input::-moz-placeholder{padding:0 2.5rem}.bx--search--lg.bx--search--expandable .bx--search-input::placeholder{padding:0 2.5rem}.bx--search--xl .bx--search-close,.bx--search--xl~.bx--search-button,.bx--search--xl.bx--search--expandable,.bx--search--xl.bx--search--expandable .bx--search-magnifier{width:3rem;height:3rem}.bx--search--xl.bx--search--expandable .bx--search-input::-moz-placeholder{padding:0 3rem}.bx--search--xl.bx--search--expandable .bx--search-input::placeholder{padding:0 3rem}.bx--search-close--hidden{opacity:0;visibility:hidden}.bx--search--xl.bx--skeleton .bx--search-input,.bx--search--lg.bx--skeleton .bx--search-input,.bx--search--sm.bx--skeleton .bx--search-input{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:100%}.bx--search--xl.bx--skeleton .bx--search-input:hover,.bx--search--xl.bx--skeleton .bx--search-input:focus,.bx--search--xl.bx--skeleton .bx--search-input:active,.bx--search--lg.bx--skeleton .bx--search-input:hover,.bx--search--lg.bx--skeleton .bx--search-input:focus,.bx--search--lg.bx--skeleton .bx--search-input:active,.bx--search--sm.bx--skeleton .bx--search-input:hover,.bx--search--sm.bx--skeleton .bx--search-input:focus,.bx--search--sm.bx--skeleton .bx--search-input:active{border:none;cursor:default;outline:none}.bx--search--xl.bx--skeleton .bx--search-input:before,.bx--search--lg.bx--skeleton .bx--search-input:before,.bx--search--sm.bx--skeleton .bx--search-input:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--search--xl.bx--skeleton .bx--search-input:before,.bx--search--lg.bx--skeleton .bx--search-input:before,.bx--search--sm.bx--skeleton .bx--search-input:before{animation:none}}.bx--search--xl.bx--skeleton .bx--search-input::-moz-placeholder,.bx--search--lg.bx--skeleton .bx--search-input::-moz-placeholder,.bx--search--sm.bx--skeleton .bx--search-input::-moz-placeholder{color:#0000}.bx--search--xl.bx--skeleton .bx--search-input::placeholder,.bx--search--lg.bx--skeleton .bx--search-input::placeholder,.bx--search--sm.bx--skeleton .bx--search-input::placeholder{color:#0000}.bx--search--expandable{transition:width 70ms cubic-bezier(.2,0,.38,.9)}.bx--search--expandable.bx--search--expanded{width:100%}.bx--search--expandable .bx--search-input{width:0;padding:0;transition:padding 70ms cubic-bezier(.2,0,.38,.9),width 0s linear 70ms}.bx--search--expandable .bx--search-input::-moz-placeholder{position:relative;opacity:0;transition-duration:70ms;-moz-transition-property:padding,opacity;transition-property:padding,opacity;transition-timing-function:cubic-bezier(.2,0,.38,.9)}.bx--search--expandable .bx--search-input::placeholder{position:relative;opacity:0;transition-duration:70ms;transition-property:padding,opacity;transition-timing-function:cubic-bezier(.2,0,.38,.9)}.bx--search--expandable.bx--search--expanded .bx--search-input{width:100%;transition:padding 70ms cubic-bezier(.2,0,.38,.9)}.bx--search--expandable.bx--search--expanded .bx--search-input::-moz-placeholder{position:relative;padding:0;opacity:1}.bx--search--expandable.bx--search--expanded .bx--search-input::placeholder{position:relative;padding:0;opacity:1}.bx--search--expandable .bx--search-magnifier{position:absolute;cursor:pointer}.bx--search--expandable .bx--search-magnifier:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--search--expandable.bx--search--expanded .bx--search-magnifier{pointer-events:none}.bx--search--expandable .bx--search-magnifier-icon{fill:var(--cds-icon-01, #161616)}.bx--search--expandable.bx--search--expanded .bx--search-magnifier-icon{fill:var(--cds-icon-02, #525252)}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--search-close svg,.bx--search-magnifier-icon{fill:ButtonText}}.bx--skeleton__text{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:100%;height:1rem;margin-bottom:.5rem}.bx--skeleton__text:hover,.bx--skeleton__text:focus,.bx--skeleton__text:active{border:none;cursor:default;outline:none}.bx--skeleton__text:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--skeleton__text:before{animation:none}}.bx--skeleton__heading{height:1.5rem}.bx--icon--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;display:inline-block;width:1rem;height:1rem}.bx--icon--skeleton:hover,.bx--icon--skeleton:focus,.bx--icon--skeleton:active{border:none;cursor:default;outline:none}.bx--icon--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--icon--skeleton:before{animation:none}}.bx--skeleton__placeholder{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:6.25rem;height:6.25rem}.bx--skeleton__placeholder:hover,.bx--skeleton__placeholder:focus,.bx--skeleton__placeholder:active{border:none;cursor:default;outline:none}.bx--skeleton__placeholder:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--skeleton__placeholder:before{animation:none}}.bx--slider-container{display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--slider{position:relative;width:100%;min-width:12.5rem;max-width:40rem;padding:var(--cds-spacing-05, 1rem) 0;margin:0 1rem;cursor:pointer}.bx--slider__range-label{font-family:var(--cds-code-02-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-02-font-size, .875rem);font-weight:var(--cds-code-02-font-weight, 400);line-height:var(--cds-code-02-line-height, 1.42857);letter-spacing:var(--cds-code-02-letter-spacing, .32px);color:var(--cds-text-01, #161616);white-space:nowrap}.bx--slider__range-label:last-of-type{margin-right:1rem}.bx--slider__track{position:absolute;width:100%;height:.125rem;background:var(--cds-ui-03, #e0e0e0);transform:translateY(-50%)}.bx--slider__track:before{position:absolute;top:-.3125rem;left:50%;display:inline-block;width:.125rem;height:.25rem;background:var(--cds-ui-03, #e0e0e0);content:"";transform:translate(-50%)}.bx--slider__filled-track{position:absolute;width:100%;height:.125rem;background:var(--cds-ui-05, #161616);pointer-events:none;transform:translateY(-50%);transform-origin:left;transition:background .11s cubic-bezier(.2,0,.38,.9)}.bx--slider__thumb{position:absolute;z-index:3;width:.875rem;height:.875rem;background:var(--cds-ui-05, #161616);border-radius:50%;box-shadow:inset 0 0 0 1px #0000,inset 0 0 0 2px #0000;outline:none;transform:translate(-50%,-50%);transition:transform .11s cubic-bezier(.2,0,.38,.9),background .11s cubic-bezier(.2,0,.38,.9),box-shadow .11s cubic-bezier(.2,0,.38,.9)}.bx--slider__thumb:hover{transform:translate(-50%,-50%) scale(1.4286)}.bx--slider__thumb:focus{background-color:var(--cds-interactive-04, #0f62fe);box-shadow:inset 0 0 0 2px var(--cds-interactive-04, #0f62fe),inset 0 0 0 3px var(--cds-ui-01, #f4f4f4);transform:translate(-50%,-50%) scale(1.4286)}.bx--slider__thumb:active{box-shadow:inset 0 0 0 2px var(--cds-interactive-04, #0f62fe);transform:translate(-50%,-50%) scale(1.4286)}.bx--slider__input{display:none}.bx--slider-text-input,.bx-slider-text-input{width:4rem;height:2.5rem;-moz-appearance:textfield;text-align:center}.bx--slider-text-input::-webkit-outer-spin-button,.bx--slider-text-input::-webkit-inner-spin-button,.bx-slider-text-input::-webkit-outer-spin-button,.bx-slider-text-input::-webkit-inner-spin-button{display:none}.bx--slider-text-input.bx--text-input--invalid{padding-right:1rem}.bx--slider__thumb:focus~.bx--slider__filled-track{background-color:var(--cds-interactive-04, #0f62fe)}.bx--label--disabled~.bx--slider-container>.bx--slider__range-label{color:var(--cds-disabled-02, #c6c6c6)}.bx--slider--disabled.bx--slider{cursor:not-allowed}.bx--slider--disabled .bx--slider__thumb{background-color:var(--cds-ui-03, #e0e0e0)}.bx--slider--disabled .bx--slider__thumb:hover{cursor:not-allowed;transform:translate(-50%,-50%)}.bx--slider--disabled .bx--slider__thumb:focus{background-color:var(--cds-ui-03, #e0e0e0);box-shadow:none;outline:none;transform:translate(-50%,-50%)}.bx--slider--disabled .bx--slider__thumb:active{background:var(--cds-ui-03, #e0e0e0);transform:translate(-50%,-50%)}.bx--slider--disabled .bx--slider__track,.bx--slider--disabled .bx--slider__filled-track,.bx--slider--disabled .bx--slider__thumb:focus~.bx--slider__filled-track{background-color:var(--cds-ui-03, #e0e0e0)}.bx--slider--disabled~.bx--form-item .bx--slider-text-input,.bx--slider--disabled~.bx--slider-text-input{border:none;background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed;transition:none}.bx--slider--disabled~.bx--form-item .bx--slider-text-input:active,.bx--slider--disabled~.bx--form-item .bx--slider-text-input:focus,.bx--slider--disabled~.bx--form-item .bx--slider-text-input:hover,.bx--slider--disabled~.bx--slider-text-input:active,.bx--slider--disabled~.bx--slider-text-input:focus,.bx--slider--disabled~.bx--slider-text-input:hover{color:var(--cds-disabled-02, #c6c6c6);outline:none}.bx--slider-container.bx--skeleton .bx--slider__range-label{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:1.25rem;height:.75rem}.bx--slider-container.bx--skeleton .bx--slider__range-label:hover,.bx--slider-container.bx--skeleton .bx--slider__range-label:focus,.bx--slider-container.bx--skeleton .bx--slider__range-label:active{border:none;cursor:default;outline:none}.bx--slider-container.bx--skeleton .bx--slider__range-label:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--slider-container.bx--skeleton .bx--slider__range-label:before{animation:none}}.bx--slider-container.bx--skeleton .bx--slider__track{cursor:default;pointer-events:none}.bx--slider-container.bx--skeleton .bx--slider__thumb{left:50%;cursor:default;pointer-events:none}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--slider__thumb{outline:1px solid rgba(0,0,0,0)}.bx--slider__thumb:focus{color:Highlight;outline:1px solid Highlight}.bx--slider__track{outline:1px solid rgba(0,0,0,0)}}.bx--structured-list--selection .bx--structured-list-td,.bx--structured-list--selection .bx--structured-list-th,.bx--structured-list--selection .bx--structured-list-td:first-child,.bx--structured-list--selection .bx--structured-list-th:first-child{padding-right:1rem;padding-left:1rem}.bx--structured-list-input{display:none}.bx--structured-list{display:table;width:100%;margin-bottom:5rem;background-color:#0000;border-collapse:collapse;border-spacing:0;overflow-x:auto}.bx--structured-list.bx--structured-list--condensed .bx--structured-list-td,.bx--structured-list.bx--structured-list--condensed .bx--structured-list-th{padding:.5rem}.bx--structured-list .bx--structured-list-row .bx--structured-list-td:first-of-type,.bx--structured-list .bx--structured-list-row .bx--structured-list-th:first-of-type{padding-left:1rem}.bx--structured-list.bx--structured-list--flush .bx--structured-list-row .bx--structured-list-td,.bx--structured-list.bx--structured-list--flush .bx--structured-list-row .bx--structured-list-th,.bx--structured-list.bx--structured-list--flush .bx--structured-list-row .bx--structured-list-td:first-of-type,.bx--structured-list.bx--structured-list--flush .bx--structured-list-row .bx--structured-list-th:first-of-type{padding-right:1rem;padding-left:0}.bx--structured-list-row{display:table-row;border-bottom:1px solid var(--cds-ui-03, #e0e0e0);transition:background-color .11s cubic-bezier(.2,0,.38,.9)}.bx--structured-list--selection .bx--structured-list-row:hover:not(.bx--structured-list-row--header-row):not(.bx--structured-list-row--selected){border-bottom:1px solid var(--cds-hover-row, #e5e5e5);background-color:var(--cds-hover-row, #e5e5e5);cursor:pointer}.bx--structured-list-row.bx--structured-list-row--selected{background-color:var(--cds-selected-ui, #e0e0e0)}.bx--structured-list-row.bx--structured-list-row--header-row{border-bottom:1px solid var(--cds-selected-ui, #e0e0e0);cursor:inherit}.bx--structured-list-row:focus:not(.bx--structured-list-row--header-row){outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--structured-list-row:focus:not(.bx--structured-list-row--header-row){outline-style:dotted}}.bx--structured-list--selection .bx--structured-list-row:hover:not(.bx--structured-list-row--header-row)>.bx--structured-list-td,.bx--structured-list-row.bx--structured-list-row--selected>.bx--structured-list-td{color:var(--cds-text-01, #161616)}.bx--structured-list--selection .bx--structured-list-row:hover:not(.bx--structured-list-row--header-row)>.bx--structured-list-td{border-top:1px solid var(--cds-ui-01, #f4f4f4)}.bx--structured-list-thead{display:table-header-group;vertical-align:middle}.bx--structured-list-th{padding:1rem .5rem .5rem;font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);display:table-cell;height:2.5rem;color:var(--cds-text-01, #161616);font-weight:600;text-align:left;text-transform:none;vertical-align:top}.bx--structured-list-tbody{display:table-row-group;vertical-align:middle}.bx--structured-list-td{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);padding:1rem .5rem 1.5rem;position:relative;display:table-cell;max-width:36rem;color:var(--cds-text-02, #525252);transition:color .11s cubic-bezier(.2,0,.38,.9)}.bx--structured-list-content--nowrap{white-space:nowrap}.bx--structured-list-svg{display:inline-block;fill:#0000;transition:all .11s cubic-bezier(.2,0,.38,.9);vertical-align:middle}.bx--structured-list-input:checked+.bx--structured-list-row .bx--structured-list-svg,.bx--structured-list-input:checked+.bx--structured-list-td .bx--structured-list-svg{fill:var(--cds-icon-01, #161616)}.bx--structured-list.bx--skeleton .bx--structured-list-th:first-child{width:8%}.bx--structured-list.bx--skeleton .bx--structured-list-th:nth-child(3n+2){width:30%}.bx--structured-list.bx--skeleton .bx--structured-list-th:nth-child(3n+3){width:15%}.bx--structured-list.bx--skeleton span{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;display:block;width:75%;height:1rem}.bx--structured-list.bx--skeleton span:hover,.bx--structured-list.bx--skeleton span:focus,.bx--structured-list.bx--skeleton span:active{border:none;cursor:default;outline:none}.bx--structured-list.bx--skeleton span:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--structured-list.bx--skeleton span:before{animation:none}}.bx--structured-list.bx--structured-list--selection.bx--skeleton .bx--structured-list-th:first-child{width:5%}.bx--structured-list.bx--structured-list--selection.bx--skeleton .bx--structured-list-th:first-child span{display:none}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--structured-list-input:checked+.bx--structured-list-td .bx--structured-list-svg{fill:ButtonText}}.bx--tabs{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:relative;width:100%;height:auto;color:var(--cds-text-01, #161616)}@media (min-width: 42rem){.bx--tabs{min-height:2.5rem;background:none}.bx--tabs--container{min-height:3rem}}.bx--tabs-trigger{display:flex;height:2.5rem;align-items:center;justify-content:space-between;padding:0 var(--cds-spacing-09, 3rem) 0 var(--cds-spacing-05, 1rem);border-bottom:1px solid var(--cds-ui-04, #8d8d8d);background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616);cursor:pointer;outline:2px solid rgba(0,0,0,0)}@media (min-width: 42rem){.bx--tabs-trigger{display:none}}.bx--tabs-trigger:focus,.bx--tabs-trigger:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tabs-trigger:focus,.bx--tabs-trigger:active{outline-style:dotted}}.bx--tabs-trigger svg{position:absolute;right:var(--cds-spacing-05, 1rem);fill:var(--cds-ui-05, #161616);transition:transform 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs-trigger--open:focus,.bx--tabs-trigger--open:active{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;transition:outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs-trigger--open{background:var(--cds-ui-03, #e0e0e0)}.bx--tabs-trigger--open svg{transform:rotate(-180deg);transform-origin:50% 45%;transition:transform 70ms}.bx--tabs--light.bx--tabs-trigger{background-color:var(--cds-field-02, #ffffff)}.bx--tabs-trigger-text{overflow:hidden;padding-top:2px;color:var(--cds-text-01, #161616);font-weight:400;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.bx--tabs-trigger-text:hover{color:var(--cds-text-01, #161616)}.bx--tabs-trigger-text:focus{outline:none}.bx--tabs__nav{box-shadow:0 2px 6px var(--cds-shadow, rgba(0, 0, 0, .3));position:absolute;z-index:9100;display:flex;width:100%;max-height:600px;flex-direction:column;padding:0;margin:0;background:var(--cds-ui-01, #f4f4f4);list-style:none;transition:max-height 70ms cubic-bezier(.2,0,.38,.9)}@media (min-width: 42rem){.bx--tabs__nav{z-index:auto;width:auto;flex-direction:row;background:none;box-shadow:none;transition:inherit}}.bx--tabs__nav--hidden{overflow:hidden;max-height:0;transition:max-height 70ms cubic-bezier(.2,0,.38,.9)}@media (min-width: 42rem){.bx--tabs__nav--hidden{display:flex;max-width:100%;max-height:none;overflow-x:auto;transition:inherit}}.bx--tabs__nav-item{display:flex;width:100%;height:2.5rem;padding:0;background-color:var(--cds-ui-01, #f4f4f4);cursor:pointer;transition:background-color 70ms cubic-bezier(.2,0,.38,.9)}@media (min-width: 42rem){.bx--tabs__nav-item{height:auto;background:rgba(0,0,0,0)}.bx--tabs__nav-item+.bx--tabs__nav-item{margin-left:.0625rem}.bx--tabs--container .bx--tabs__nav-item{background-color:var(--cds-ui-03, #e0e0e0)}.bx--tabs--container .bx--tabs__nav-item+.bx--tabs__nav-item{margin-left:0;box-shadow:-1px 0 0 0 var(--cds-ui-04, #8d8d8d)}.bx--tabs--container .bx--tabs__nav-item+.bx--tabs__nav-item.bx--tabs__nav-item--selected,.bx--tabs--container .bx--tabs__nav-item.bx--tabs__nav-item--selected+.bx--tabs__nav-item{box-shadow:none}}.bx--tabs__nav-item .bx--tabs__nav-link{transition:color 70ms cubic-bezier(.2,0,.38,.9),border-bottom-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}@media (min-width: 42rem){.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--selected){background:rgba(0,0,0,0)}}.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--disabled){background-color:var(--cds-hover-ui, #e5e5e5);box-shadow:0 -1px 0 var(--cds-hover-ui, #e5e5e5)}@media (min-width: 42rem){.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--disabled){background-color:#0000}.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--disabled)+.bx--tabs__nav-item{box-shadow:none}.bx--tabs--container .bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--disabled){background-color:var(--cds-hover-selected-ui, #cacaca)}}.bx--tabs__nav-item--disabled,.bx--tabs__nav-item--disabled:hover{cursor:not-allowed;outline:none}@media (min-width: 42rem){.bx--tabs--container .bx--tabs__nav-item.bx--tabs__nav-item--disabled,.bx--tabs--container .bx--tabs__nav-item.bx--tabs__nav-item--disabled:hover{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--tabs--container .bx--tabs__nav-item--disabled .bx--tabs__nav-link{border-bottom:none;color:var(--cds-disabled-03, #8d8d8d)}}.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled){display:none;border:none;transition:color 70ms cubic-bezier(.2,0,.38,.9)}@media (min-width: 42rem){.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled){display:flex}.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link,.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:focus,.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:active{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);border-bottom:2px solid var(--cds-interactive-04, #0f62fe);color:var(--cds-text-01, #161616)}.bx--tabs--container .bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled),.bx--tabs--container .bx--tabs__nav-item--selected:hover:not(.bx--tabs__nav-item--disabled){background-color:var(--cds-ui-01, #f4f4f4)}.bx--tabs--container .bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link,.bx--tabs--container .bx--tabs__nav-item--selected:hover:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link{padding:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);border-bottom:none;box-shadow:inset 0 2px 0 0 var(--cds-interactive-04, #0f62fe);line-height:calc(3rem - (var(--cds-spacing-03, .5rem) * 2))}.bx--tabs--container .bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:focus,.bx--tabs--container .bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:active,.bx--tabs--container .bx--tabs__nav-item--selected:hover:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:focus,.bx--tabs--container .bx--tabs__nav-item--selected:hover:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link:active{box-shadow:none}}a.bx--tabs__nav-link{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:inline-block;overflow:hidden;width:calc(100% - 32px);height:2.5rem;padding:var(--cds-spacing-04, .75rem) 0;border-bottom:1px solid var(--cds-ui-03, #e0e0e0);margin:0 var(--cds-spacing-05, 1rem);color:var(--cds-text-02, #525252);font-weight:400;line-height:1rem;text-decoration:none;text-overflow:ellipsis;transition:border 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9);white-space:nowrap}a.bx--tabs__nav-link:focus,a.bx--tabs__nav-link:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px;width:100%;padding-left:16px;margin:0}@media screen and (prefers-contrast){a.bx--tabs__nav-link:focus,a.bx--tabs__nav-link:active{outline-style:dotted}}@media (min-width: 42rem){a.bx--tabs__nav-link{width:10rem;padding:var(--cds-spacing-04, .75rem) var(--cds-spacing-05, 1rem) var(--cds-spacing-03, .5rem);border-bottom:2px solid var(--cds-ui-03, #e0e0e0);margin:0;line-height:inherit}a.bx--tabs__nav-link:focus,a.bx--tabs__nav-link:active{width:10rem;border-bottom:2px}.bx--tabs--container a.bx--tabs__nav-link{height:3rem;padding:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);border-bottom:none;line-height:calc(3rem - (var(--cds-spacing-03, .5rem) * 2))}}.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--selected):not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link{color:var(--cds-text-01, #161616)}@media (min-width: 42rem){.bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--selected):not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link{border-bottom:2px solid var(--cds-ui-04, #8d8d8d);color:var(--cds-text-01, #161616)}.bx--tabs--container .bx--tabs__nav-item:hover:not(.bx--tabs__nav-item--selected):not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link{border-bottom:none}}.bx--tabs__nav-item--disabled .bx--tabs__nav-link{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);pointer-events:none}.bx--tabs__nav-item--disabled:hover .bx--tabs__nav-link{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);cursor:no-drop}.bx--tabs__nav-item--disabled .bx--tabs__nav-link:focus,.bx--tabs__nav-item--disabled a.bx--tabs__nav-link:active{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);outline:none}.bx--tabs__nav-item:not(.bx--tabs__nav-item--selected):not(.bx--tabs__nav-item--disabled):not(.bx--tabs__nav-item--selected) .bx--tabs__nav-link:focus,.bx--tabs__nav-item:not(.bx--tabs__nav-item--selected):not(.bx--tabs__nav-item--disabled):not(.bx--tabs__nav-item--selected) a.bx--tabs__nav-link:active{color:var(--cds-text-02, #525252)}.bx--tab-content{padding:1rem}.bx--tab-content:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tab-content:focus{outline-style:dotted}}.bx--tabs.bx--skeleton{cursor:default;pointer-events:none}.bx--skeleton.bx--tabs--scrollable:not(.bx--tabs--scrollable--container) .bx--tabs--scrollable__nav-item{border-bottom:2px solid var(--cds-skeleton-02, #c6c6c6)}.bx--tabs.bx--skeleton .bx--tabs__nav-link{display:flex;width:10rem;height:100%;align-items:center;padding:0 1rem}.bx--tabs.bx--skeleton .bx--tabs__nav-link span{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;display:block;width:100%;height:.875rem}.bx--tabs.bx--skeleton .bx--tabs__nav-link span:hover,.bx--tabs.bx--skeleton .bx--tabs__nav-link span:focus,.bx--tabs.bx--skeleton .bx--tabs__nav-link span:active{border:none;cursor:default;outline:none}.bx--tabs.bx--skeleton .bx--tabs__nav-link span:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--tabs.bx--skeleton .bx--tabs__nav-link span:before{animation:none}}.bx--tabs.bx--skeleton .bx--tabs-trigger{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:6.25rem}.bx--tabs.bx--skeleton .bx--tabs-trigger:hover,.bx--tabs.bx--skeleton .bx--tabs-trigger:focus,.bx--tabs.bx--skeleton .bx--tabs-trigger:active{border:none;cursor:default;outline:none}.bx--tabs.bx--skeleton .bx--tabs-trigger:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--tabs.bx--skeleton .bx--tabs-trigger:before{animation:none}}.bx--tabs.bx--skeleton .bx--tabs-trigger svg{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--tabs--scrollable{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;width:100%;height:auto;min-height:2.5rem;color:var(--cds-text-01, #161616)}.bx--tabs--scrollable.bx--tabs--scrollable--container{min-height:3rem}.bx--tabs--scrollable .bx--tabs--scrollable__nav{display:flex;overflow:auto hidden;width:auto;max-width:100%;flex-direction:row;padding:0;margin:0;list-style:none;outline:0;scrollbar-width:none;transition:max-height 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs--scrollable .bx--tabs--scrollable__nav::-webkit-scrollbar{display:none}.bx--tabs--scrollable .bx--tabs__overflow-indicator--left,.bx--tabs--scrollable .bx--tabs__overflow-indicator--right{z-index:1;width:.5rem;flex:1 0 auto}.bx--tabs--scrollable .bx--tabs__overflow-indicator--left{margin-right:-.5rem;background-image:linear-gradient(to left,transparent,var(--cds-ui-background, #ffffff))}.bx--tabs--scrollable .bx--tabs__overflow-indicator--right{margin-left:-.5rem;background-image:linear-gradient(to right,transparent,var(--cds-ui-background, #ffffff))}.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs__overflow-indicator--left{background-image:linear-gradient(to left,transparent,var(--cds-ui-01, #f4f4f4))}.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs__overflow-indicator--right{background-image:linear-gradient(to right,transparent,var(--cds-ui-01, #f4f4f4))}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs__overflow-indicator--left{background-image:linear-gradient(to left,transparent,var(--cds-ui-03, #e0e0e0))}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs__overflow-indicator--right{background-image:linear-gradient(to right,transparent,var(--cds-ui-03, #e0e0e0))}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){.bx--tabs--scrollable .bx--tabs__overflow-indicator--left{background-image:linear-gradient(to left,rgba(var(--cds-ui-background, #ffffff),0),var(--cds-ui-background, #ffffff))}.bx--tabs--scrollable .bx--tabs__overflow-indicator--right{background-image:linear-gradient(to right,rgba(var(--cds-ui-background, #ffffff),0),var(--cds-ui-background, #ffffff))}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs__overflow-indicator--left{background-image:linear-gradient(to left,rgba(var(--cds-ui-03, #e0e0e0),0),var(--cds-ui-03, #e0e0e0))}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs__overflow-indicator--right{background-image:linear-gradient(to right,rgba(var(--cds-ui-03, #e0e0e0),0),var(--cds-ui-03, #e0e0e0))}}}.bx--tabs--scrollable .bx--tab--overflow-nav-button{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;display:flex;width:2.5rem;flex-shrink:0;align-items:center;justify-content:center}.bx--tabs--scrollable .bx--tab--overflow-nav-button::-moz-focus-inner{border:0}.bx--tabs--scrollable .bx--tab--overflow-nav-button:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tabs--scrollable .bx--tab--overflow-nav-button:focus{outline-style:dotted}}.bx--tabs--scrollable .bx--tab--overflow-nav-button--hidden{display:none}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tab--overflow-nav-button{width:3rem;margin:0;background-color:var(--cds-ui-03, #e0e0e0)}.bx--tabs--scrollable .bx--tab--overflow-nav-button svg{fill:var(--cds-icon-01, #161616)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item{display:flex;padding:0;cursor:pointer;transition:background-color 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item+.bx--tabs--scrollable__nav-item{margin-left:.0625rem}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item{background-color:var(--cds-ui-03, #e0e0e0)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item+.bx--tabs--scrollable__nav-item{margin-left:0;box-shadow:-.0625rem 0 0 0 var(--cds-ui-04, #8d8d8d)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item+.bx--tabs--scrollable__nav-item.bx--tabs--scrollable__nav-item--selected,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item.bx--tabs--scrollable__nav-item--selected+.bx--tabs--scrollable__nav-item{box-shadow:none}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item .bx--tabs--scrollable__nav-link{transition:color 70ms cubic-bezier(.2,0,.38,.9),border-bottom-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item:hover{background-color:var(--cds-hover-selected-ui, #cacaca)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled,.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled:hover{background-color:#0000;cursor:not-allowed;outline:none}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item.bx--tabs--scrollable__nav-item--disabled,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item.bx--tabs--scrollable__nav-item--disabled:hover{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--selected{transition:color 70ms cubic-bezier(.2,0,.38,.9)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link,.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link:active{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);border-bottom:2px solid var(--cds-interactive-04, #0f62fe);color:var(--cds-text-01, #161616)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected:hover{background-color:var(--cds-ui-01, #f4f4f4)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link:active,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected:hover .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected:hover .bx--tabs--scrollable__nav-link:active{box-shadow:none}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected .bx--tabs--scrollable__nav-link{box-shadow:inset 0 2px 0 0 var(--cds-interactive-04, #0f62fe);line-height:calc(3rem - (var(--cds-spacing-03, .5rem) * 2))}.bx--tabs--scrollable.bx--tabs--scrollable--light.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected,.bx--tabs--scrollable.bx--tabs--scrollable--light.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--selected:hover{background-color:var(--cds-ui-background, #ffffff)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-link{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;outline:2px solid rgba(0,0,0,0);outline-offset:-2px;font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);width:10rem;overflow:hidden;padding:var(--cds-spacing-04, .75rem) var(--cds-spacing-05, 1rem) var(--cds-spacing-03, .5rem);border-bottom:2px solid var(--cds-ui-03, #e0e0e0);color:var(--cds-text-02, #525252);text-align:left;text-decoration:none;text-overflow:ellipsis;transition:border 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9);white-space:nowrap}.bx--tabs--scrollable .bx--tabs--scrollable__nav-link::-moz-focus-inner{border:0}.bx--tabs--scrollable .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs--scrollable__nav-link:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tabs--scrollable .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs--scrollable__nav-link:active{outline-style:dotted}}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-link{height:3rem;padding:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);border-bottom:0;line-height:calc(3rem - (var(--cds-spacing-03, .5rem) * 2))}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item:hover .bx--tabs--scrollable__nav-link{border-bottom:2px solid var(--cds-ui-04, #8d8d8d);color:var(--cds-text-01, #161616)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item .bx--tabs--scrollable__nav-link{border-bottom:none}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6)}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled:hover .bx--tabs--scrollable__nav-link{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed;pointer-events:none}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link:active{border-bottom:2px solid var(--cds-disabled-01, #f4f4f4);outline:none}.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link,.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs--scrollable__nav-item--disabled:hover .bx--tabs--scrollable__nav-link{border-bottom-color:var(--cds-ui-03, #e0e0e0)}.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs--scrollable--light .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link:active{border-bottom-color:var(--cds-ui-03, #e0e0e0)}.bx--tabs--scrollable.bx--tabs--scrollable--container .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link{border-bottom:none;color:var(--cds-disabled-03, #8d8d8d)}.bx--tabs--scrollable .bx--tab-content{padding:1rem}.bx--tabs--scrollable .bx--tabs.bx--skeleton{cursor:default;pointer-events:none}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:4.6875rem}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link:hover,.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link:focus,.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link:active{border:none;cursor:default;outline:none}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs--scrollable__nav-link:before{animation:none}}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:4.6875rem;margin-right:.0625rem}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger:hover,.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger:focus,.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger:active{border:none;cursor:default;outline:none}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger:before{animation:none}}.bx--tabs--scrollable .bx--tabs.bx--skeleton .bx--tabs-trigger svg{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--tabs--scrollable__nav-item .bx--tabs__nav-item--selected .bx--tabs--scrollable__nav-item--selected{color:Highlight;outline:1px solid Highlight}.bx--tabs--scrollable .bx--tabs--scrollable__nav-item--disabled .bx--tabs--scrollable__nav-link{color:GrayText;fill:GrayText}}.bx--text-area{font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;width:100%;min-width:10rem;height:100%;min-height:2.5rem;padding:.6875rem 1rem;border:none;border-bottom:1px solid var(--cds-ui-04, #8d8d8d);background-color:var(--cds-field-01, #f4f4f4);color:var(--cds-text-01, #161616);resize:vertical;transition:background-color 70ms cubic-bezier(.2,0,.38,.9),outline 70ms cubic-bezier(.2,0,.38,.9)}.bx--text-area:focus,.bx--text-area:active{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--text-area:focus,.bx--text-area:active{outline-style:dotted}}.bx--text-area::-moz-placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1;font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px)}.bx--text-area::placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1;font-size:var(--cds-body-long-01-font-size, .875rem);font-weight:var(--cds-body-long-01-font-weight, 400);line-height:var(--cds-body-long-01-line-height, 1.42857);letter-spacing:var(--cds-body-long-01-letter-spacing, .16px)}.bx--text-area--light{background-color:var(--cds-field-02, #ffffff)}.bx--text-area--invalid{padding-right:2.5rem}.bx--text-area__wrapper{position:relative;display:flex;width:100%}.bx--text-area__invalid-icon{position:absolute;top:.75rem;right:1rem;fill:var(--cds-support-01, #da1e28)}.bx--text-area:disabled{border-bottom:1px solid rgba(0,0,0,0);background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed;outline:none}.bx--text-area:disabled::-moz-placeholder{color:var(--cds-disabled-02, #c6c6c6)}.bx--text-area:disabled::placeholder{color:var(--cds-disabled-02, #c6c6c6)}.bx--text-area.bx--text-area--light:disabled{background-color:var(--cds-field-02, #ffffff)}.bx--text-area.bx--skeleton{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;height:6.25rem}.bx--text-area.bx--skeleton:hover,.bx--text-area.bx--skeleton:focus,.bx--text-area.bx--skeleton:active{border:none;cursor:default;outline:none}.bx--text-area.bx--skeleton:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--text-area.bx--skeleton:before{animation:none}}.bx--text-area.bx--skeleton::-moz-placeholder{color:#0000}.bx--text-area.bx--skeleton::placeholder{color:#0000}.bx--text-area__label-wrapper{display:flex;width:100%;justify-content:space-between}.bx--tile{display:block;min-width:8rem;min-height:4rem;padding:var(--cds-spacing-05, 1rem);background-color:var(--cds-ui-01, #f4f4f4);outline:2px solid rgba(0,0,0,0);outline-offset:-2px}.bx--tile:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tile:focus{outline-style:dotted}}.bx--tile--light{background-color:var(--cds-ui-02, #ffffff)}.bx--tile--clickable,.bx--tile--selectable,.bx--tile--expandable{cursor:pointer;transition:.15s cubic-bezier(.2,0,.38,.9)}.bx--tile--clickable:hover,.bx--tile--selectable:hover,.bx--tile--expandable:hover{background:var(--cds-hover-ui, #e5e5e5)}.bx--tile--expandable .bx--link{color:var(--cds-link-secondary, #0043ce)}.bx--tile--clickable:focus,.bx--tile--expandable:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tile--clickable:focus,.bx--tile--expandable:focus{outline-style:dotted}}.bx--tile--clickable:hover .bx--tile__checkmark,.bx--tile--clickable:focus .bx--tile__checkmark,.bx--tile--expandable:hover .bx--tile__checkmark,.bx--tile--expandable:focus .bx--tile__checkmark{opacity:1}.bx--tile--expandable::-moz-focus-inner{border:0}.bx--tile--clickable{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);color:var(--cds-text-01, #161616);text-decoration:none}.bx--tile--clickable:hover,.bx--tile--clickable:active,.bx--tile--clickable:visited,.bx--tile--clickable:visited:hover{color:var(--cds-text-01, #161616);text-decoration:none}.bx--tile--clickable.bx--link--disabled{color:var(--cds-disabled-02, #c6c6c6)}.bx--tile--clickable:hover.bx--link--disabled{display:block;background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6)}.bx--tile--selectable{position:relative;padding-right:3rem;border:1px solid rgba(0,0,0,0)}.bx--tile__checkmark,.bx--tile__chevron{position:absolute;border:none;background:rgba(0,0,0,0);transition:.11s cubic-bezier(.2,0,.38,.9)}.bx--tile__checkmark{top:1rem;right:1rem;height:1rem;opacity:0}.bx--tile__checkmark svg{border-radius:50%;fill:var(--cds-icon-02, #525252)}.bx--tile__checkmark:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tile__checkmark:focus{outline-style:dotted}}.bx--tile__checkmark--persistent{opacity:1}.bx--tile__chevron{position:absolute;right:1rem;bottom:1rem;display:flex;height:1rem;align-items:flex-end}.bx--tile__chevron svg{margin-left:.5rem;fill:var(--cds-ui-05, #161616);transform-origin:center;transition:.11s cubic-bezier(.2,0,.38,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--tile__chevron svg{transition:none}}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tile__chevron svg{fill:ButtonText}}.bx--tile__chevron:hover{cursor:pointer}.bx--tile__chevron:focus{outline:none}.bx--tile--expandable{position:relative;overflow:hidden;width:100%;border:0;color:inherit;font-size:inherit;text-align:left;transition:max-height .15s cubic-bezier(.2,0,.38,.9)}.bx--tile-content__above-the-fold{display:block}.bx--tile-content__below-the-fold{display:block;opacity:0;transition:opacity .11s cubic-bezier(.2,0,.38,.9),visibility .11s cubic-bezier(.2,0,.38,.9);visibility:hidden}.bx--tile--is-expanded{overflow:visible;transition:max-height .11s cubic-bezier(.2,0,.38,.9)}.bx--tile--is-expanded .bx--tile__chevron svg{transform:rotate(180deg)}.bx--tile--is-expanded .bx--tile-content__below-the-fold{opacity:1;transition:opacity .11s cubic-bezier(.2,0,.38,.9),visibility .11s cubic-bezier(.2,0,.38,.9);visibility:inherit}@media not all and (-webkit-min-device-pixel-ratio: 0),not all and (min-resolution: .001dpcm){@supports (-webkit-appearance: none) and (stroke-color: transparent){.bx--tile--is-expanded .bx--tile-content__below-the-fold{overflow-y:auto}}}.bx--tile--is-selected{border:1px solid var(--cds-ui-05, #161616)}.bx--tile--is-selected .bx--tile__checkmark{opacity:1}.bx--tile--is-selected .bx--tile__checkmark svg{fill:var(--cds-ui-05, #161616)}@media screen and (-ms-high-contrast: active),screen and (prefers-contrast){.bx--tile--is-selected .bx--tile__checkmark svg{fill:ButtonText}}.bx--tile-content{width:100%;height:100%}.bx--tile-input{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--tile-input:focus+.bx--tile{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tile-input:focus+.bx--tile{outline-style:dotted}}.bx--tile--disabled.bx--tile--selectable{background-color:var(--cds-ui-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--tile--disabled.bx--tile--selectable.bx--tile--light{background-color:var(--cds-ui-02, #ffffff)}.bx--tile--disabled.bx--tile--is-selected{outline-color:var(--cds-disabled-02, #c6c6c6)}.bx--tile--disabled.bx--tile--is-selected .bx--tile__checkmark svg{fill:var(--cds-disabled-02, #c6c6c6)}.bx--time-picker{display:flex;align-items:flex-end}.bx--time-picker__select{justify-content:center}.bx--time-picker__select:not(:last-of-type){margin:0 .125rem}.bx--time-picker__input{display:flex;flex-direction:column}.bx--time-picker .bx--select-input{width:auto;min-width:auto;padding-right:3rem;margin:0}.bx--time-picker__input-field{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;font-family:var(--cds-code-02-font-family, "IBM Plex Mono", "Menlo", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", Courier, monospace);font-size:var(--cds-code-02-font-size, .875rem);font-weight:var(--cds-code-02-font-weight, 400);line-height:var(--cds-code-02-line-height, 1.42857);letter-spacing:var(--cds-code-02-letter-spacing, .32px);display:flex;width:4.875rem;height:2.5rem;align-items:center;transition:outline 70ms cubic-bezier(.2,0,.38,.9),background-color 70ms cubic-bezier(.2,0,.38,.9)}.bx--time-picker__input-field::-moz-placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--time-picker__input-field::placeholder{color:var(--cds-text-05, #6f6f6f);opacity:1}.bx--time-picker--light .bx--select-input{background-color:var(--cds-field-02, #ffffff)}.bx--time-picker--light .bx--select-input:hover{background-color:var(--cds-hover-ui, #e5e5e5)}.bx--time-picker--light .bx--select-input:disabled,.bx--time-picker--light .bx--select-input:hover:disabled{border-bottom:1px solid rgba(0,0,0,0);background-color:#0000;color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--time-picker--sm .bx--select-input,.bx--time-picker--sm .bx--time-picker__input-field{height:2rem;max-height:2rem}.bx--time-picker--xl .bx--select-input,.bx--time-picker--xl .bx--time-picker__input-field,.bx--time-picker--lg .bx--select-input,.bx--time-picker--lg .bx--time-picker__input-field{height:3rem;max-height:3rem}.bx--toggle{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--toggle:focus{outline:none}.bx--toggle__label{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);position:relative;display:flex;align-items:center;margin:.5rem 0;cursor:pointer}.bx--toggle__appearance{position:relative;width:3rem;height:1.5rem}.bx--toggle__appearance:before{position:absolute;top:0;display:block;width:3rem;height:1.5rem;box-sizing:border-box;background-color:var(--cds-ui-04, #8d8d8d);border-radius:.9375rem;box-shadow:0 0 0 1px #0000,0 0 0 3px #0000;content:"";cursor:pointer;transition:box-shadow 70ms cubic-bezier(.2,0,1,.9),background-color 70ms cubic-bezier(.2,0,1,.9);will-change:box-shadow}@media screen and (prefers-reduced-motion: reduce){.bx--toggle__appearance:before{transition:none}}.bx--toggle__appearance:after{position:absolute;top:.1875rem;left:.1875rem;display:block;width:1.125rem;height:1.125rem;box-sizing:border-box;background-color:var(--cds-icon-03, #ffffff);border-radius:50%;content:"";cursor:pointer;transition:transform 70ms cubic-bezier(.2,0,1,.9)}.bx--toggle__check{position:absolute;z-index:1;top:.375rem;left:.375rem;width:.375rem;height:.3125rem;fill:var(--cds-icon-03, #ffffff);transform:scale(.2);transition:70ms cubic-bezier(.2,0,1,.9)}.bx--toggle__text--left,.bx--toggle__text--right{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:relative;margin-left:.5rem}.bx--toggle__text--left{position:absolute;left:3rem}.bx--toggle:checked+.bx--toggle__label .bx--toggle__text--left,.bx--toggle:not(:checked)+.bx--toggle__label .bx--toggle__text--right{visibility:hidden}.bx--toggle:checked+.bx--toggle__label .bx--toggle__text--right,.bx--toggle:not(:checked)+.bx--toggle__label .bx--toggle__text--left{display:inline}.bx--toggle:checked+.bx--toggle__label .bx--toggle__appearance:before{background-color:var(--cds-support-02, #198038)}.bx--toggle:checked+.bx--toggle__label .bx--toggle__appearance:after{background-color:var(--cds-icon-03, #ffffff);transform:translate(1.5rem)}.bx--toggle+.bx--toggle__label .bx--toggle__appearance:before{box-shadow:0 0 0 1px #0000,0 0 0 3px #0000}.bx--toggle:focus+.bx--toggle__label,.bx--toggle:active+.bx--toggle__label .bx--toggle__appearance:before{box-shadow:0 0 0 1px var(--cds-ui-03, #e0e0e0),0 0 0 3px var(--cds-focus, #0f62fe)}.bx--toggle:disabled+.bx--toggle__label{cursor:not-allowed}.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:before{background-color:var(--cds-disabled-01, #f4f4f4)}.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:after{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:before,.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:after{cursor:not-allowed;transition:70ms cubic-bezier(.2,0,1,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:before,.bx--toggle:disabled+.bx--toggle__label .bx--toggle__appearance:after{transition:none}}.bx--toggle:disabled+.bx--toggle__label .bx--toggle__text--left,.bx--toggle:disabled+.bx--toggle__label .bx--toggle__text--right{color:var(--cds-disabled-02, #c6c6c6)}.bx--toggle:disabled:active+.bx--toggle__label .bx--toggle__appearance:before{box-shadow:none}.bx--toggle:disabled+.bx--toggle__label .bx--toggle__check{fill:var(--cds-disabled-02, #c6c6c6)}.bx--toggle--small+.bx--toggle__label .bx--toggle__appearance{width:2rem;height:1rem}.bx--toggle--small+.bx--toggle__label .bx--toggle__appearance:before{top:0;width:2rem;height:1rem;box-sizing:border-box;border-radius:.9375rem}.bx--toggle--small+.bx--toggle__label .bx--toggle__appearance:after{top:.1875rem;left:.1875rem;width:.625rem;height:.625rem}.bx--toggle--small:checked+.bx--toggle__label .bx--toggle__check{fill:var(--cds-support-02, #198038);transform:scale(1) translate(1rem)}.bx--toggle--small+.bx--toggle__label .bx--toggle__text--left{left:2rem}.bx--toggle--small:checked+.bx--toggle__label .bx--toggle__appearance:after{margin-left:0;transform:translate(1.0625rem)}.bx--toggle-input{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--toggle-input:focus{outline:none}.bx--toggle-input__label{font-size:var(--cds-label-01-font-size, .75rem);font-weight:var(--cds-label-01-font-weight, 400);line-height:var(--cds-label-01-line-height, 1.33333);letter-spacing:var(--cds-label-01-letter-spacing, .32px);display:flex;flex-direction:column;align-items:flex-start;color:var(--cds-text-02, #525252);cursor:pointer}.bx--toggle__switch{position:relative;display:flex;width:3rem;height:1.5rem;align-items:center;cursor:pointer}.bx--toggle__switch:before{position:absolute;top:0;display:block;width:3rem;height:1.5rem;box-sizing:border-box;background-color:var(--cds-ui-04, #8d8d8d);border-radius:.9375rem;box-shadow:0 0 0 1px #0000,0 0 0 3px #0000;content:"";transition:box-shadow 70ms cubic-bezier(.2,0,1,.9),background-color 70ms cubic-bezier(.2,0,1,.9);will-change:box-shadow}@media screen and (prefers-reduced-motion: reduce){.bx--toggle__switch:before{transition:none}}.bx--toggle__switch:after{position:absolute;top:.1875rem;left:.1875rem;display:block;width:1.125rem;height:1.125rem;box-sizing:border-box;background-color:var(--cds-icon-03, #ffffff);border-radius:50%;content:"";transition:transform 70ms cubic-bezier(.2,0,1,.9)}.bx--toggle-input__label .bx--toggle__switch{margin-top:1rem}.bx--toggle__text--off,.bx--toggle__text--on{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);position:absolute;top:50%;margin-left:3.5rem;transform:translateY(-50%);-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.bx--toggle-input:checked+.bx--toggle-input__label>.bx--toggle__switch>.bx--toggle__text--off,.bx--toggle-input:not(:checked)+.bx--toggle-input__label>.bx--toggle__switch>.bx--toggle__text--on{visibility:hidden}.bx--toggle-input:checked+.bx--toggle-input__label>.bx--toggle__switch:before{background-color:var(--cds-support-02, #198038)}.bx--toggle-input:checked+.bx--toggle-input__label>.bx--toggle__switch:after{background-color:var(--cds-icon-03, #ffffff);transform:translate(1.5rem)}.bx--toggle-input:focus+.bx--toggle-input__label>.bx--toggle__switch:before,.bx--toggle-input:active+.bx--toggle-input__label>.bx--toggle__switch:before{box-shadow:0 0 0 1px var(--cds-ui-02, #ffffff),0 0 0 3px var(--cds-focus, #0f62fe)}.bx--toggle-input:disabled+.bx--toggle-input__label{color:var(--cds-disabled-02, #c6c6c6);cursor:not-allowed}.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch{cursor:not-allowed}.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:before{background-color:var(--cds-disabled-02, #c6c6c6)}.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:after{background-color:var(--cds-disabled-03, #8d8d8d)}.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:before,.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:after{cursor:not-allowed;transition:70ms cubic-bezier(.2,0,1,.9)}@media screen and (prefers-reduced-motion: reduce){.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:before,.bx--toggle-input:disabled+.bx--toggle-input__label>.bx--toggle__switch:after{transition:none}}.bx--toggle-input:disabled:active+.bx--toggle-input__label>.bx--toggle__switch:before{box-shadow:none}.bx--toggle-input--small+.bx--toggle-input__label>.bx--toggle__switch{width:2rem;height:1rem}.bx--toggle-input--small+.bx--toggle-input__label>.bx--toggle__switch:before{width:2rem;height:1rem;border-radius:.9375rem}.bx--toggle-input--small+.bx--toggle-input__label>.bx--toggle__switch:after{width:.625rem;height:.625rem}.bx--toggle-input--small+.bx--toggle-input__label .bx--toggle__text--off,.bx--toggle-input--small+.bx--toggle-input__label .bx--toggle__text--on{margin-left:2.5rem}.bx--toggle-input--small:checked+.bx--toggle-input__label>.bx--toggle__switch:after{transform:translate(1.0625rem)}.bx--toggle-input--small:checked+.bx--toggle-input__label .bx--toggle__check{fill:var(--cds-support-02, #198038);transform:scale(1) translate(1rem)}.bx--toggle-input--small:disabled:checked+.bx--toggle-input__label .bx--toggle__check{fill:var(--cds-disabled-01, #f4f4f4)}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:3rem;margin-top:.5rem}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:hover,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:focus,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:active{border:none;cursor:default;outline:none}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:before{animation:none}}.bx--toggle.bx--skeleton+.bx--toggle-input__label>div{overflow:hidden;width:1.5rem;height:.5rem;font-size:0%;line-height:0;position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none}.bx--toggle.bx--skeleton+.bx--toggle-input__label>div:hover,.bx--toggle.bx--skeleton+.bx--toggle-input__label>div:focus,.bx--toggle.bx--skeleton+.bx--toggle-input__label>div:active{border:none;cursor:default;outline:none}.bx--toggle.bx--skeleton+.bx--toggle-input__label>div:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--toggle.bx--skeleton+.bx--toggle-input__label>div:before{animation:none}}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;width:2rem;margin-top:.5rem}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:hover,.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:focus,.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:active{border:none;cursor:default;outline:none}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:before{animation:none}}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div{overflow:hidden;width:1rem;height:.5rem;font-size:0%;line-height:0;position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div:hover,.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div:focus,.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div:active{border:none;cursor:default;outline:none}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label>div:before{animation:none}}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left{position:relative;padding:0;border:none;background:var(--cds-skeleton-01, #e5e5e5);box-shadow:none;pointer-events:none;position:absolute;width:1rem;height:.5rem}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left:hover,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left:focus,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left:active{border:none;cursor:default;outline:none}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left:before{position:absolute;top:0;left:0;width:100%;height:100%;animation:3s ease-in-out skeleton infinite;background:var(--cds-skeleton-02, #c6c6c6);content:"";will-change:transform-origin,transform,opacity}@media (prefers-reduced-motion: reduce){.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left:before{animation:none}}.bx--toggle-input--small.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch .bx--toggle__text--left{left:2rem}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:after,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__appearance:after,.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__appearance:before{display:none}.bx--toggle.bx--skeleton+.bx--toggle-input__label .bx--toggle__switch:before{border-radius:0}.bx--toolbar{display:flex;flex-flow:row nowrap;align-items:center;margin:1rem 0}.bx--toolbar>div{margin:0 .25rem}.bx--toolbar .bx--search-input{height:2rem;background-color:#0000;outline:none}.bx--toolbar .bx--search-close{display:none}.bx--toolbar .bx--overflow-menu__icon{fill:var(--cds-text-02, #525252);transition:fill 50ms cubic-bezier(.2,0,.38,.9)}.bx--toolbar .bx--search-magnifier{top:.5rem;left:.375rem;cursor:pointer;fill:var(--cds-text-02, #525252);transform:scale(1.15);transition:all 175ms cubic-bezier(.2,0,.38,.9)}.bx--toolbar fieldset{padding:0;border:0}.bx--toolbar .bx--toolbar-search--active{width:15.625rem}.bx--toolbar .bx--toolbar-search--active .bx--search-magnifier{top:.5625rem;transform:scale(1)}.bx--toolbar .bx--toolbar-search--active .bx--search-input{background-color:var(--cds-field-02, #ffffff)}.bx--toolbar .bx--toolbar-search--active .bx--search-close{display:block}.bx--toolbar .bx--checkbox-label{margin-bottom:0}.bx--toolbar .bx--overflow-menu--open>.bx--overflow-menu__icon{fill:var(--cds-brand-01, #0f62fe)}.bx--toolbar-search{width:1.8rem;transition:all 175ms cubic-bezier(.2,0,.38,.9)}.bx--toolbar-search__btn{position:absolute;top:0;left:0;width:2rem;height:2rem;border:0;background:rgba(0,0,0,0)}.bx--toolbar-search__btn:focus{outline:1px solid var(--cds-focus, #0f62fe)}@media screen and (prefers-contrast){.bx--toolbar-search__btn:focus{outline-style:dotted}}.bx--toolbar-filter-icon{padding-right:0;padding-left:0}.bx--toolbar-menu__title{font-size:var(--cds-caption-01-font-size, .75rem);font-weight:var(--cds-caption-01-font-weight, 400);line-height:var(--cds-caption-01-line-height, 1.33333);letter-spacing:var(--cds-caption-01-letter-spacing, .32px);padding:.5rem 1.25rem;font-weight:600}.bx--toolbar-menu__option{padding:.5rem 1.25rem}.bx--toolbar-menu__divider{width:100%;border:0;border-top:1px solid var(--cds-ui-03, #e0e0e0)}.bx--radio-button-group{border:none}.bx--toolbar-search:not(.bx--toolbar-search--active) .bx--search-input{border-bottom:none}.bx--unstable-pagination{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;width:100%;height:3rem;align-items:center;justify-content:space-between;border-top:1px solid var(--cds-ui-03, #e0e0e0);border-bottom:1px solid rgba(0,0,0,0);background-color:var(--cds-ui-01, #f4f4f4)}.bx--unstable-pagination__text{margin:0 1rem;color:var(--cds-text-02, #525252)}@media (min-width: 42rem){.bx--unstable-pagination__text{display:inline-block}}.bx--unstable-pagination__left,.bx--unstable-pagination__right{display:flex;height:100%;align-items:center}.bx--unstable-pagination__left{padding:0 1rem 0 0}.bx--unstable-pagination__left>.bx--form-item,.bx--unstable-pagination__right>.bx--form-item{height:100%}.bx--unstable-pagination__left .bx--unstable-pagination__text{margin-right:.0625rem}.bx--unstable-pagination__right .bx--unstable-pagination__text{margin-right:1rem;margin-left:.0625rem}.bx--unstable-pagination__button{display:flex;height:100%;align-items:center;justify-content:center;padding:0 .875rem;border:none;border-left:1px solid var(--cds-ui-03, #e0e0e0);margin:0;background:none;color:var(--cds-ui-05, #161616);cursor:pointer;fill:var(--cds-ui-05, #161616);transition:outline .11s cubic-bezier(.2,0,.38,.9),background-color .11s cubic-bezier(.2,0,.38,.9)}.bx--unstable-pagination__button .bx--btn__icon{width:initial;height:initial}.bx--unstable-pagination__button.bx--btn--icon-only.bx--tooltip__trigger:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--unstable-pagination__button.bx--btn--icon-only.bx--tooltip__trigger:focus{outline-style:dotted}}.bx--unstable-pagination__button:hover{background:var(--cds-hover-ui, #e5e5e5);color:var(--cds-ui-05, #161616)}.bx--unstable-pagination__button--no-index{cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--unstable-pagination__button.bx--btn:disabled{border-color:var(--cds-ui-03, #e0e0e0);background:rgba(0,0,0,0)}.bx--unstable-pagination__button:disabled:hover,.bx--unstable-pagination__button--no-index:hover{background:rgba(0,0,0,0);cursor:not-allowed;fill:var(--cds-disabled-02, #c6c6c6)}.bx--unstable-pagination__page-selector,.bx--unstable-pagination__page-sizer{height:100%;align-items:center}.bx--unstable-pagination__page-selector .bx--select-input--inline__wrapper,.bx--unstable-pagination__page-sizer .bx--select-input--inline__wrapper{display:flex;height:100%}.bx--unstable-pagination__page-selector .bx--select-input,.bx--unstable-pagination__page-sizer .bx--select-input{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);width:auto;min-width:auto;height:100%;padding:0 2.5rem 0 1rem;margin-right:-.65rem}@media (min-width: 42rem){.bx--unstable-pagination__page-selector .bx--select-input,.bx--unstable-pagination__page-sizer .bx--select-input{padding-right:2.25rem;margin-right:0}}.bx--unstable-pagination__page-selector .bx--select-input:hover,.bx--unstable-pagination__page-sizer .bx--select-input:hover{background:var(--cds-hover-ui, #e5e5e5)}.bx--unstable-pagination__page-selector .bx--select__arrow,.bx--unstable-pagination__page-sizer .bx--select__arrow{top:50%;transform:translateY(-50%)}@media (min-width: 42rem){.bx--unstable-pagination__page-selector .bx--select__arrow,.bx--unstable-pagination__page-sizer .bx--select__arrow{right:1rem}}.bx--unstable-pagination__page-selector{border-left:1px solid var(--cds-ui-03, #e0e0e0)}.bx--unstable-pagination__page-sizer{border-right:1px solid var(--cds-ui-03, #e0e0e0)}.bx--header{position:fixed;z-index:8000;top:0;right:0;left:0;display:flex;height:3rem;align-items:center;border-bottom:1px solid #393939;background-color:#161616}.bx--header__action{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;width:3rem;height:3rem;border:.0625rem solid rgba(0,0,0,0);transition:background-color .11s,border-color .11s}.bx--header__action::-moz-focus-inner{border:0}.bx--header__action>svg.bx--navigation-menu-panel-collapse-icon,.bx--header__action--active>svg.bx--navigation-menu-panel-expand-icon{display:none}.bx--header__action--active>svg.bx--navigation-menu-panel-collapse-icon{display:inline}.bx--header__action:hover{background-color:#353535}.bx--header__action--active{border-right:1px solid #393939;border-bottom:1px solid #161616;border-left:1px solid #393939}.bx--header__action:focus{border-color:#fff;outline:none}.bx--header__action:active{background-color:#393939}.bx--header__action.bx--btn--icon-only.bx--tooltip__trigger{justify-content:center}.bx--header__action>svg{fill:#fff}.bx--header__menu-trigger>svg{fill:#f4f4f4}.bx--header__menu-trigger:hover{fill:#2c2c2c}.bx--header__menu-toggle{display:flex;align-items:center;justify-content:center}@media (min-width: 66rem){.bx--header__menu-toggle__hidden{display:none}}a.bx--header__name{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;height:100%;align-items:center;padding:0 2rem 0 1rem;border:.125rem solid rgba(0,0,0,0);font-weight:600;letter-spacing:.1px;line-height:1.25rem;outline:none;text-decoration:none;transition:border-color .11s;-webkit-user-select:none;-moz-user-select:none;user-select:none}a.bx--header__name:focus{border-color:#fff}.bx--header__name--prefix{font-weight:400}a.bx--header__name,a.bx--header__name:hover{color:#f4f4f4}.bx--header__menu-toggle:not(.bx--header__menu-toggle__hidden)~.bx--header__name{padding-left:.5rem}.bx--header__nav{position:relative;display:none;height:100%;padding-left:1rem}@media (min-width: 66rem){.bx--header__nav{display:block}}.bx--header__nav:before{position:absolute;top:50%;left:0;display:block;width:.0625rem;height:1.5rem;background-color:#393939;content:"";transform:translateY(-50%)}.bx--header__menu-bar{display:flex;height:100%;padding:0;margin:0;list-style:none}a.bx--header__menu-item{position:relative;display:flex;height:100%;align-items:center;padding:0 1rem;border:2px solid rgba(0,0,0,0);color:#c6c6c6;font-size:.875rem;font-weight:400;letter-spacing:0;line-height:1.125rem;text-decoration:none;transition:background-color .11s,border-color .11s,color .11s;-webkit-user-select:none;-moz-user-select:none;user-select:none}a.bx--header__menu-item:hover{background-color:#2c2c2c;color:#f4f4f4}.bx--header__action:active,a.bx--header__menu-item:active{background-color:#393939;color:#f4f4f4}a.bx--header__menu-item:focus{border-color:#fff;color:#f4f4f4;outline:none}a.bx--header__menu-item:hover>svg,a.bx--header__menu-item:active>svg,a.bx--header__menu-item:focus>svg{fill:#f4f4f4}a.bx--header__menu-item[aria-current=page]:after,.bx--header__menu-item--current:after{position:absolute;inset:0 0 -2px;width:100%;border-bottom:3px solid var(--cds-inverse-support-04, #4589ff);content:""}a.bx--header__menu-item[aria-current=page]:focus:after,.bx--header__menu-item--current:focus:after{border:0}a.bx--header__menu-item[aria-current=page]:focus,a.bx--header__menu-item.bx--header__menu-item--current:focus{border:2px solid #fff}.bx--header__submenu{position:relative}.bx--header__submenu--current:after{position:absolute;inset:0;width:100%;border-bottom:3px solid var(--cds-border-interactive, #0f62fe);content:""}.bx--header__submenu--current:focus{border:2px solid var(--cds-focus, #0f62fe)}.bx--header__submenu--current:focus:after{border:0}.bx--header__menu-title[aria-haspopup=true]{position:relative}.bx--header__menu-title[aria-expanded=true]{z-index:8001;background-color:#262626;color:#fff}.bx--header__menu-title[aria-expanded=true]>.bx--header__menu-arrow{transform:rotate(180deg)}.bx--header__menu{display:none;padding:0;margin:0;list-style:none}.bx--header__menu-title[aria-expanded=true]+.bx--header__menu{position:absolute;z-index:8000;bottom:0;left:0;display:flex;width:12.5rem;flex-direction:column;background-color:#262626;box-shadow:0 4px 8px #00000080;transform:translateY(100%)}.bx--header__menu-title[aria-expanded=true]+.bx--header__menu .bx--header__menu-item:hover{background-color:#353535}.bx--header__menu-title[aria-expanded=true]+.bx--header__menu .bx--header__menu-item:active{background-color:#393939}.bx--header__menu .bx--header__menu-item{height:3rem}.bx--header__menu .bx--header__menu-item:hover{background-color:#262626;color:#f4f4f4}.bx--header__menu-arrow{margin-left:.5rem;fill:#c6c6c6;transition:transform .11s,fill .11s}.bx--header__global{display:flex;height:100%;flex:1 1 0%;justify-content:flex-end}.bx--skip-to-content{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0,0,0,0);visibility:inherit;white-space:nowrap}.bx--skip-to-content:focus{z-index:9999;top:0;left:0;display:flex;width:auto;height:3rem;align-items:center;padding:0 1rem;border:4px solid #0f62fe;background-color:#161616;clip:auto;color:#f4f4f4;outline:none}.bx--header-panel{transition-timing-function:cubic-bezier(.2,0,1,.9);position:fixed;z-index:8000;top:3rem;right:0;bottom:0;overflow:hidden;width:0;border:none;background-color:#161616;color:#c6c6c6;transition:width .11s;will-change:width}.bx--header-panel--expanded{width:16rem;border-right:1px solid #393939;border-left:1px solid #393939}.bx--panel--overlay{position:fixed;z-index:1000;top:3rem;right:0;bottom:0;width:16rem;height:100%;padding:1rem 0;background-color:#161616;overflow-x:hidden;overflow-y:auto;transform:translate3d(100%,0,0);transition:transform .11s cubic-bezier(.2,0,.38,.9);will-change:transform}.bx--panel--expanded{box-shadow:0 8px 16px #00000040;transform:translateZ(0)}.bx--product-switcher__search{padding:0 1rem;margin-bottom:1.5rem}.bx--search--shell input{background-color:#e0e0e0}.bx--product-switcher__subheader,.bx--product-switcher__all-btn{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);padding:.5rem;color:#c6c6c6}.bx--product-switcher__subheader,.bx--product-switcher__all-btn{padding-left:3.5rem}.bx--product-switcher__all-btn,.bx--product-switcher__back-btn{display:inline-block;width:100%;border:none;background:rgba(0,0,0,0);color:#0f62fe;cursor:pointer;text-align:left}.bx--product-switcher__all-btn:hover,.bx--product-switcher__back-btn:hover{text-decoration:underline}.bx--product-switcher__all-btn:focus,.bx--product-switcher__back-btn:focus{box-shadow:inset 0 0 0 3px #0f62fe;outline:none}.bx--product-switcher__back-btn{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);display:flex;align-items:center;padding:.5rem 1rem}.bx--product-switcher__back-arrow{margin-right:1rem;fill:#0f62fe}.bx--product-list__item{display:flex;align-items:center;justify-content:space-between;cursor:pointer}.bx--product-list__item:hover{background:#e0e0e0}.bx--product-link{display:flex;width:100%;flex-direction:row;align-items:center;padding:.5rem 1rem;text-decoration:none}.bx--product-link:focus{box-shadow:inset 0 0 0 3px #0f62fe;outline:none}.bx--product-switcher__icon{margin-right:1rem}.bx--product-link__name{font-size:var(--cds-body-short-01-font-size, .875rem);font-weight:var(--cds-body-short-01-font-weight, 400);line-height:var(--cds-body-short-01-line-height, 1.28572);letter-spacing:var(--cds-body-short-01-letter-spacing, .16px);margin-left:.25rem;color:#c6c6c6;font-weight:400}.bx--product-switcher__product-list .bx--overflow-menu{display:none;width:2.5rem;align-items:center;justify-content:center}.bx--product-switcher__product-list .bx--overflow-menu.bx--overflow-menu--open{display:flex}.bx--product-switcher__product-list .bx--overflow-menu>svg{fill:#c6c6c6}.bx--product-switcher__product-list .bx--overflow-menu:hover{background:#c6c6c6}.bx--product-switcher__product-list .bx--overflow-menu:hover>svg{fill:#c6c6c6}.bx--product-switcher__product-list .bx--overflow-menu:focus{display:flex;box-shadow:inset 0 0 0 3px #0f62fe;outline:none}.bx--product-switcher__product-list .bx--overflow-menu-options__option:hover{background:#fff}.bx--product-list__item:hover .bx--overflow-menu{display:flex}.bx--switcher{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#c6c6c6}.bx--switcher__item{width:100%;height:var(--cds-spacing-07, 2rem)}.bx--switcher__item:nth-child(1){margin-top:var(--cds-spacing-05, 1rem)}.bx--switcher__item--divider{display:block;width:14rem;height:1px;border:none;margin:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);background:#393939}.bx--switcher__item-link{font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);display:block;height:var(--cds-spacing-07, 2rem);padding:.375rem var(--cds-spacing-05, 1rem);color:#c6c6c6;text-decoration:none}.bx--switcher__item-link:hover:not(.bx--switcher__item-link--selected){background:#2c2c2c;color:#f4f4f4;cursor:pointer}.bx--switcher__item-link:focus{outline:2px solid #fff;outline-offset:-2px}.bx--switcher__item-link:active{background:#393939;color:#f4f4f4}.bx--switcher__item-link--selected{background:#262626;color:#f4f4f4}.bx--side-nav{position:fixed;z-index:8000;top:0;bottom:0;left:0;overflow:hidden;width:3rem;max-width:16rem;background-color:#fff;color:#525252;transition:width .11s cubic-bezier(.2,0,1,.9);will-change:width}.bx--side-nav--ux{top:var(--cds-spacing-09, 3rem);width:16rem}@media (max-width: 65.98rem){.bx--side-nav--ux{width:0}}.bx--side-nav--rail{width:3rem}.bx--side-nav--hidden{width:0}.bx--side-nav.bx--side-nav--rail:not(.bx--side-nav--fixed):hover,.bx--side-nav--expanded{width:16rem}.bx--side-nav__overlay{position:fixed;top:3rem;left:0;width:0;height:0;background-color:#0000;opacity:0;transition:opacity .24s cubic-bezier(.2,0,.38,.9),background-color .24s cubic-bezier(.2,0,.38,.9)}@media (max-width: 65.98rem){.bx--side-nav__overlay-active{width:100vw;height:100vh;background-color:var(--cds-overlay-01, rgba(22, 22, 22, .5));opacity:1;transition:opacity .24s cubic-bezier(.2,0,.38,.9),background-color .24s cubic-bezier(.2,0,.38,.9)}}.bx--header~.bx--side-nav{top:3rem;height:calc(100% - 48px)}.bx--side-nav--fixed{width:16rem}.bx--side-nav--collapsed{width:16rem;transform:translate(-16rem)}.bx--side-nav__navigation{display:flex;height:100%;flex-direction:column}.bx--side-nav__header{display:flex;width:100%;max-width:100%;height:3rem;border-bottom:1px solid #393939}.bx--side-nav:hover .bx--side-nav__header,.bx--side-nav--fixed .bx--side-nav__header,.bx--side-nav--expanded .bx--side-nav__header,.bx--side-nav--ux .bx--side-nav__header{height:auto}.bx--side-nav__details{display:flex;min-width:0;flex:1;flex-direction:column;padding-right:1rem;opacity:0;visibility:hidden}.bx--side-nav:hover .bx--side-nav__details,.bx--side-nav--fixed .bx--side-nav__details,.bx--side-nav--expanded .bx--side-nav__details{visibility:inherit;opacity:1}.bx--side-nav--ux .bx--side-nav__details{opacity:1;visibility:inherit}.bx--side-nav__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1rem;font-size:.875rem;font-weight:600;letter-spacing:.1px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--side-nav__title,.bx--side-nav__select{padding-left:.5rem}.bx--side-nav__switcher{position:relative;display:flex;align-items:center;justify-content:space-between}.bx--side-nav__switcher-chevron{position:absolute;top:0;right:.5rem;bottom:0;display:flex;align-items:center;fill:#525252}.bx--side-nav__select{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;min-width:0;height:2rem;flex:1 1 0%;padding-right:2rem;border:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#161616;border-radius:0;color:#f4f4f4;cursor:pointer;font-size:.75rem;transition:outline .11s}.bx--side-nav__select:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--side-nav__select:focus{outline-style:dotted}}.bx--side-nav__footer{width:100%;flex:0 0 3rem;background-color:#fff}.bx--side-nav__toggle{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;height:100%;padding-left:1rem;text-align:left;transition:outline .11s}.bx--side-nav__toggle::-moz-focus-inner{border:0}.bx--side-nav__toggle:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--side-nav__toggle:focus{outline-style:dotted}}.bx--side-nav__items{overflow:hidden;flex:1 1 0%;padding:1rem 0 0}.bx--side-nav:hover .bx--side-nav__items,.bx--side-nav--fixed .bx--side-nav__items,.bx--side-nav--expanded .bx--side-nav__items,.bx--side-nav--ux .bx--side-nav__items{overflow-y:auto}.bx--side-nav__item{overflow:hidden;width:auto;height:auto}.bx--side-nav--ux .bx--side-nav__item{width:auto;height:auto}.bx--side-nav__item:not(.bx--side-nav__item--active):hover .bx--side-nav__item:not(.bx--side-nav__item--active)>.bx--side-nav__submenu:hover,.bx--side-nav__item:not(.bx--side-nav__item--active)>.bx--side-nav__link:hover,.bx--side-nav__menu a.bx--side-nav__link:not(.bx--side-nav__link--current):not([aria-current=page]):hover,.bx--side-nav a.bx--header__menu-item:hover,.bx--side-nav .bx--header__menu-title[aria-expanded=true]:hover{background-color:#e5e5e5;color:#161616}.bx--side-nav__item:not(.bx--side-nav__item--active)>.bx--side-nav__link:hover>span,.bx--side-nav__item:not(.bx--side-nav__item--active) .bx--side-nav__menu-item>.bx--side-nav__link:hover>span{color:#161616}.bx--side-nav__item--large{height:3rem}.bx--side-nav__divider{height:1px;margin:var(--cds-spacing-03, .5rem) var(--cds-spacing-05, 1rem);background-color:#e0e0e0}.bx--side-nav__submenu{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);outline:2px solid rgba(0,0,0,0);outline-offset:-2px;display:flex;height:2rem;align-items:center;padding:0 1rem;color:#525252;transition:color .11s,background-color .11s,outline .11s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.bx--side-nav__submenu::-moz-focus-inner{border:0}.bx--side-nav__submenu:hover{background-color:#e5e5e5;color:#161616}.bx--side-nav__submenu:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--side-nav__submenu:focus{outline-style:dotted}}.bx--side-nav__submenu-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.bx--side-nav__icon.bx--side-nav__submenu-chevron{display:flex;flex:1;justify-content:flex-end}.bx--side-nav__submenu-chevron>svg{width:1rem;height:1rem;transition:transform .11s}.bx--side-nav__submenu[aria-expanded=true] .bx--side-nav__submenu-chevron>svg{transform:rotate(180deg)}.bx--side-nav__item--large .bx--side-nav__submenu{height:3rem}.bx--side-nav__item--active .bx--side-nav__submenu:hover{background-color:#e5e5e5;color:#161616}.bx--side-nav__item--active .bx--side-nav__submenu[aria-expanded=false]{position:relative;background-color:#e5e5e5;color:#161616}.bx--side-nav__item--active .bx--side-nav__submenu[aria-expanded=false]:before{position:absolute;top:0;bottom:0;left:0;width:4px;background-color:#0f62fe;content:""}.bx--side-nav__item--active .bx--side-nav__submenu-title{color:#161616;font-weight:600}.bx--side-nav__menu{display:block;max-height:0;visibility:hidden}.bx--side-nav__submenu[aria-expanded=true]+.bx--side-nav__menu{max-height:93.75rem;visibility:inherit}.bx--side-nav__menu a.bx--side-nav__link{height:2rem;min-height:2rem;padding-left:2rem;font-weight:400}.bx--side-nav__item.bx--side-nav__item--icon a.bx--side-nav__link{padding-left:4.5rem}.bx--side-nav__menu a.bx--side-nav__link--current,.bx--side-nav__menu a.bx--side-nav__link[aria-current=page],a.bx--side-nav__link--current{background-color:#e0e0e0}.bx--side-nav__menu a.bx--side-nav__link--current>span,.bx--side-nav__menu a.bx--side-nav__link[aria-current=page]>span,a.bx--side-nav__link--current>span{color:#161616;font-weight:600}a.bx--side-nav__link,.bx--side-nav a.bx--header__menu-item,.bx--side-nav .bx--header__menu-title[aria-expanded=true]+.bx--header__menu{outline:2px solid rgba(0,0,0,0);outline-offset:-2px;font-size:var(--cds-productive-heading-01-font-size, .875rem);font-weight:var(--cds-productive-heading-01-font-weight, 600);line-height:var(--cds-productive-heading-01-line-height, 1.28572);letter-spacing:var(--cds-productive-heading-01-letter-spacing, .16px);position:relative;display:flex;min-height:2rem;align-items:center;padding:0 1rem;text-decoration:none;transition:color .11s,background-color .11s,outline .11s}.bx--side-nav__item--large a.bx--side-nav__link{height:3rem}a.bx--side-nav__link>.bx--side-nav__link-text,.bx--side-nav a.bx--header__menu-item .bx--text-truncate-end{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#525252;font-size:.875rem;letter-spacing:.1px;line-height:1.25rem;-webkit-user-select:none;-moz-user-select:none;user-select:none}a.bx--side-nav__link:focus,.bx--side-nav a.bx--header__menu-item:focus{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){a.bx--side-nav__link:focus,.bx--side-nav a.bx--header__menu-item:focus{outline-style:dotted}}a.bx--side-nav__link[aria-current=page],a.bx--side-nav__link--current{background-color:#e5e5e5;font-weight:600}a.bx--side-nav__link[aria-current=page] .bx--side-nav__link-text,a.bx--side-nav__link--current .bx--side-nav__link-text{color:#161616}a.bx--side-nav__link[aria-current=page]:before,a.bx--side-nav__link--current:before{position:absolute;top:0;bottom:0;left:0;width:4px;background-color:#0f62fe;content:""}.bx--side-nav__icon{display:flex;flex:0 0 1rem;align-items:center;justify-content:center}.bx--side-nav__icon:not(.bx--side-nav__submenu-chevron){margin-right:1.5rem}.bx--side-nav__icon>svg{width:1rem;height:1rem;fill:#525252}.bx--side-nav__icon>svg.bx--side-nav-collapse-icon{display:none}.bx--side-nav--expanded .bx--side-nav__icon>svg.bx--side-nav-expand-icon{display:none}.bx--side-nav--expanded .bx--side-nav__icon>svg.bx--side-nav-collapse-icon{display:block}.bx--side-nav--fixed a.bx--side-nav__link,.bx--side-nav--fixed .bx--side-nav__submenu{padding-left:1rem}.bx--side-nav--fixed .bx--side-nav__item:not(.bx--side-nav__item--icon) .bx--side-nav__menu a.bx--side-nav__link{padding-left:2rem}@media (max-width: 65.98rem){.bx--side-nav .bx--header__nav{display:block}}.bx--side-nav__header-navigation{display:none}@media (max-width: 65.98rem){.bx--side-nav__header-navigation{position:relative;display:block;margin-bottom:2rem}}.bx--side-nav__header-divider:after{position:absolute;bottom:-1rem;left:1rem;width:calc(100% - 32px);height:.0625rem;background:#e0e0e0;content:""}.bx--side-nav a.bx--header__menu-item{justify-content:space-between;color:#525252;white-space:nowrap}.bx--side-nav a.bx--header__menu-item[aria-expanded=true]{background-color:#0000}.bx--side-nav .bx--header__menu-title[aria-expanded=true]+.bx--header__menu{bottom:inherit;width:100%;padding:0;background-color:#0000;box-shadow:none;transform:none}.bx--side-nav .bx--header__menu-title[aria-expanded=true]+.bx--header__menu li{width:100%}.bx--side-nav .bx--header__menu-title[aria-expanded=true]+.bx--header__menu a.bx--header__menu-item{padding-left:4.25rem;font-weight:400}.bx--side-nav .bx--header__menu-title[aria-expanded=true]+.bx--header__menu a.bx--header__menu-item:hover{background-color:#e5e5e5;color:#161616}.bx--side-nav .bx--header__menu a.bx--header__menu-item{height:inherit}.bx--side-nav a.bx--header__menu-item:hover .bx--header__menu-arrow,.bx--side-nav a.bx--header__menu-item:focus .bx--header__menu-arrow,.bx--side-nav .bx--header__menu-arrow{fill:#525252}@media screen and (-ms-high-contrast: active),(forced-colors: active),(prefers-contrast){.bx--side-nav__icon>svg,.bx--side-nav a.bx--header__menu-item:hover .bx--header__menu-arrow,.bx--side-nav a.bx--header__menu-item:focus .bx--header__menu-arrow,.bx--side-nav .bx--header__menu-arrow{fill:ButtonText}}.bx--navigation{position:fixed;z-index:9100;top:3rem;bottom:0;left:0;width:16rem;background-color:#262626;box-shadow:0 .5rem 1rem #00000040;color:#f4f4f4}.bx--navigation--right{right:0;left:auto}.bx--navigation svg{fill:#f4f4f4}.bx--navigation-section:not(:last-child):after{display:block;height:1px;margin:0 1rem;background-color:#393939;content:""}.bx--navigation-item{position:relative;display:flex;align-items:center}.bx--navigation-item--active>a.bx--navigation-link{color:#fff;font-weight:600}.bx--navigation-item--active:after{position:absolute;top:0;bottom:0;left:0;display:block;width:4px;background-color:#0f62fe;content:""}a.bx--navigation-link{display:flex;width:100%;min-height:2.5rem;align-items:center;padding-left:1rem;color:#f4f4f4;font-size:.875rem;font-weight:400;text-decoration:none}a.bx--navigation-link:hover{background-color:#333;color:#fff}a.bx--navigation-link:focus{outline:.1875rem solid #0f62fe;outline-offset:-.1875rem}.bx--navigation-item--icon>a.bx--navigation-link{padding-left:0}.bx--navigation__category{width:100%}.bx--navigation__category-toggle{display:inline-block;padding:0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;cursor:pointer;width:100%;display:flex;align-items:center}.bx--navigation__category-toggle::-moz-focus-inner{border:0}.bx--navigation__category-toggle:hover{background-color:#333}.bx--navigation__category-toggle:focus{outline:.1875rem solid #0f62fe;outline-offset:-.1875rem}.bx--navigation__category-title{display:flex;width:100%;min-height:2.5rem;align-items:center;justify-content:space-between;padding-right:1rem;padding-left:1rem;color:#f4f4f4;font-size:.875rem;font-weight:400}.bx--navigation-item--icon .bx--navigation__category-title{padding-left:0}.bx--navigation__category-items{display:none;visibility:hidden}.bx--navigation__category-item>a.bx--navigation-link{display:flex;min-height:2rem;align-items:center;padding-left:2rem}.bx--navigation__category-item{position:relative}.bx--navigation-item--icon .bx--navigation__category-item>a.bx--navigation-link{padding-left:3.5rem}.bx--navigation__category-item--active:after{position:absolute;top:0;bottom:0;left:0;display:block;width:4px;background-color:#0f62fe;content:""}.bx--navigation__category-item--active>a.bx--navigation-link{color:#fff;font-weight:600}.bx--navigation__category--expanded .bx--navigation__category-title{font-weight:600}.bx--navigation__category--expanded .bx--navigation__category-title>svg{transform:rotate(180deg)}.bx--navigation__category--expanded .bx--navigation__category-items{display:block;visibility:inherit}.bx--navigation-icon{display:flex;width:3rem;min-width:3rem;height:2.5rem;align-items:center;justify-content:center;margin-right:.5rem}.bx--content{padding:2rem;will-change:margin-left}.bx--header~.bx--content{margin-top:3rem}.bx--side-nav~.bx--content{margin-left:3rem}.bx--side-nav.bx--side-nav--expanded~.bx--content{margin-left:16rem}.bx--tree{overflow:hidden}.bx--tree .bx--tree-node{padding-left:var(--cds-spacing-05, 1rem);background-color:var(--cds-ui-01, #f4f4f4);color:var(--cds-text-02, #525252)}.bx--tree .bx--tree-node:focus{outline:none}.bx--tree .bx--tree-node:focus>.bx--tree-node__label{outline:2px solid var(--cds-focus, #0f62fe);outline-offset:-2px}@media screen and (prefers-contrast){.bx--tree .bx--tree-node:focus>.bx--tree-node__label{outline-style:dotted}}.bx--tree .bx--tree-node--disabled:focus>.bx--tree-node__label{outline:none}.bx--tree .bx--tree-node--disabled,.bx--tree .bx--tree-node--disabled .bx--tree-node__label:hover,.bx--tree .bx--tree-node--disabled .bx--tree-node__label:hover .bx--tree-node__label__details{background-color:var(--cds-disabled-01, #f4f4f4);color:var(--cds-disabled-02, #c6c6c6)}.bx--tree .bx--tree-node--disabled .bx--tree-parent-node__toggle-icon,.bx--tree .bx--tree-node--disabled .bx--tree-node__icon,.bx--tree .bx--tree-node--disabled .bx--tree-node__label:hover .bx--tree-parent-node__toggle-icon,.bx--tree .bx--tree-node--disabled .bx--tree-node__label:hover .bx--tree-node__icon{fill:var(--cds-disabled-02, #c6c6c6)}.bx--tree .bx--tree-node--disabled,.bx--tree .bx--tree-node--disabled .bx--tree-parent-node__toggle-icon:hover{cursor:not-allowed}.bx--tree .bx--tree-node__label{display:flex;min-height:2rem;flex:1;align-items:center}.bx--tree .bx--tree-node__label:hover{background-color:var(--cds-hover-ui, #e5e5e5);color:var(--cds-text-01, #161616)}.bx--tree .bx--tree-node__label:hover .bx--tree-node__label__details{color:var(--cds-text-01, #161616)}.bx--tree .bx--tree-node__label:hover .bx--tree-parent-node__toggle-icon,.bx--tree .bx--tree-node__label:hover .bx--tree-node__icon{fill:var(--cds-icon-01, #161616)}.bx--tree .bx--tree-leaf-node{display:flex;padding-left:var(--cds-spacing-08, 2.5rem)}.bx--tree .bx--tree-leaf-node.bx--tree-node--with-icon{padding-left:var(--cds-spacing-07, 2rem)}.bx--tree .bx--tree-node__label__details{display:flex;align-items:center}.bx--tree .bx--tree-node--with-icon .bx--tree-parent-node__toggle{margin-right:0}.bx--tree .bx--tree-parent-node__toggle{padding:0;border:0;margin-right:var(--cds-spacing-03, .5rem)}.bx--tree .bx--tree-parent-node__toggle:hover{cursor:pointer}.bx--tree .bx--tree-parent-node__toggle:focus{outline:none}.bx--tree .bx--tree-parent-node__toggle-icon{fill:var(--cds-icon-02, #525252);transform:rotate(-90deg);transition:all .11s cubic-bezier(.2,0,.38,.9)}.bx--tree .bx--tree-parent-node__toggle-icon--expanded{transform:rotate(0)}.bx--tree .bx--tree-node__icon{flex-shrink:0;margin-right:var(--cds-spacing-03, .5rem);fill:var(--cds-icon-02, #525252)}.bx--tree .bx--tree-node--selected>.bx--tree-node__label{background-color:var(--cds-selected-ui, #e0e0e0);color:var(--cds-text-01, #161616)}.bx--tree .bx--tree-node--selected>.bx--tree-node__label:hover{background-color:var(--cds-hover-selected-ui, #cacaca)}.bx--tree .bx--tree-node--selected>.bx--tree-node__label .bx--tree-parent-node__toggle-icon,.bx--tree .bx--tree-node--selected>.bx--tree-node__label .bx--tree-node__icon{fill:var(--cds-icon-01, #161616)}.bx--tree .bx--tree-node--active>.bx--tree-node__label{position:relative}.bx--tree .bx--tree-node--active>.bx--tree-node__label:before{position:absolute;top:0;left:0;width:.25rem;height:100%;background-color:var(--cds-interactive-04, #0f62fe);content:""}.bx--tree--compact .bx--tree-node__label{min-height:1.5rem}body{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.bx--select-input,.bx--dropdown,.bx--text-input,.bx--search-input{border-radius:.25rem;border-width:0px;--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity));outline-width:1px;outline-color:#d4d4d4}.bx--select-input:focus,.bx--dropdown:focus,.bx--text-input:focus,.bx--search-input:focus{outline-width:1px;outline-color:#737373}.bx--select-input:hover,.bx--dropdown:hover,.bx--text-input:hover,.bx--search-input:hover{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity));outline-width:1px;outline-color:#a3a3a3}.bx--list-box{border-width:0px}.bx--list-box__menu-item{--tw-bg-opacity: 1;background-color:rgb(250 250 250 / var(--tw-bg-opacity))}.bx--list-box__menu-item--active.bx--list-box__menu-item--highlighted{--tw-bg-opacity: 1;background-color:rgb(212 212 212 / var(--tw-bg-opacity))}.bx--list-box__menu{border-radius:.25rem}.bx--btn{border-radius:.25rem;padding:.5rem}.bx--btn.bx--btn--primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity));background-color:#4550e8}.bx--btn.bx--btn--primary:hover{background-color:#1741c1}.bx--btn.bx--btn--secondary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.bx--btn--tertiary{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.bx--btn--tertiary:hover{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.bx--btn--ghost{border-color:transparent;background-color:transparent;--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.bx--btn--ghost:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bx--btn.bx--btn--primary.bx--btn--disabled{--tw-border-opacity: 1;border-color:rgb(212 212 212 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(115 115 115 / var(--tw-text-opacity))}.bx--modal-container{border-radius:.25rem}.bx--modal-content.bx--modal-content--with-form{margin-top:0;margin-bottom:0;padding-bottom:1rem;padding-top:0}.bx--modal-footer .bx--btn{border-radius:0;border-style:none}.bx--modal-header{margin:0;--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity));padding-top:1rem;padding-bottom:1rem}.bx--tabs__nav-item,.bx--tabs__nav-item--selected:not(.bx--tabs__nav-item--disabled) .bx--tabs__nav-link,a.bx--tabs__nav-link{border-bottom-width:0px;border-color:transparent}a.bx--tabs__nav-link{border-radius:.25rem;border-bottom-width:0px}a.bx--tabs__nav-link:focus{outline-color:transparent}.bx--btn--icon-only.bx--btn--expressive{padding:.25rem}.bx--tooltip__label{vertical-align:middle}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border-style:solid} diff --git a/web/blueprint/build/_app/immutable/assets/_page.2a87a76f.css b/web/blueprint/build/_app/immutable/assets/_page.2a87a76f.css new file mode 100644 index 0000000000000000000000000000000000000000..815982be0bab92e399e8afdbe59fe86646ad5c20 --- /dev/null +++ b/web/blueprint/build/_app/immutable/assets/_page.2a87a76f.css @@ -0,0 +1 @@ +.bx--form-item{margin-bottom:1.5rem}.bx--fieldset{border-radius:.25rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:1rem}legend.bx--label{padding-left:.5rem;padding-right:.5rem;font-size:1.125rem;line-height:1.75rem} diff --git a/web/blueprint/build/_app/immutable/assets/_page.77bdd972.css b/web/blueprint/build/_app/immutable/assets/_page.77bdd972.css new file mode 100644 index 0000000000000000000000000000000000000000..39e2a2d1ffd5850b7d8667e82e22361f96eca36a --- /dev/null +++ b/web/blueprint/build/_app/immutable/assets/_page.77bdd972.css @@ -0,0 +1 @@ +.removable-tag{max-width:8rem}.filter-pill .bx--tooltip__label{margin-right:.25rem;display:inline-block;height:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:5rem}.filter-pill .bx--tooltip__content{display:flex;flex-direction:column;align-items:center}.embedding-badge-nolabel .bx--tooltip__label .bx--tooltip__trigger{margin:0}.embedding-badge-nolabel .bx--tag__custom-icon{margin-right:0}.search-pill .bx--tooltip__label{margin-right:.25rem;display:inline-block;height:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:5rem}.search-pill .bx--tooltip__content{display:flex;flex-direction:column;align-items:center}.filter-group.svelte-e2icyu{min-width:6rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity));padding:.75rem .5rem;--tw-shadow:0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.named-value-name.svelte-1689hje{max-width:15rem}.more-button .bx--btn{height:1.5rem;width:12rem}.highlight-span.svelte-i4bfci{padding-top:1.5px;padding-bottom:1.5px}.signal-badge .bx--tag{padding-left:.5rem;padding-right:.5rem}.signal-badge .bx--tag__custom-icon{margin-right:0}.signal-badge .bx--tooltip__label .bx--tooltip__trigger{margin:0}.bx--tabs__nav{display:flex;width:100%;flex-direction:row}.bx--tabs__nav-item,.bx--tabs__nav-item .bx--tabs__nav-link{width:7rem}.bx--form__helper-text{padding:0 0 0 1rem}.compute-embedding .bx--btn,.sort-container .bx--btn{height:3rem}.compute-embedding-indexing .bx--btn.bx--btn--disabled{color:transparent}.embedding-select .bx--select-input,.field-select .bx--select-input{height:3rem}.new-concept .bx--tag{width:1.5rem;min-width:0px;padding-left:0;padding-right:0}ul.bx--overflow-menu-options{width:11rem}.stats-table.svelte-1tctrjz td.svelte-1tctrjz{width:12rem}.stats-table.svelte-1tctrjz td.svelte-1tctrjz:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-top:.5rem;padding-bottom:.5rem;padding-right:.5rem}.stats-table.svelte-1tctrjz td.svelte-1tctrjz:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-top:.5rem;padding-bottom:.5rem;padding-left:.5rem}.bx--btn--selected{--tw-bg-opacity:1 !important;background-color:rgb(203 213 225 / var(--tw-bg-opacity))!important}.bx--btn--selected .bx--btn__icon{--tw-rotate:180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.signal-tag span{padding-left:.5rem;padding-right:.5rem}.compute-signal-chip .bx--tooltip__label .bx--tooltip__trigger{margin:0}.compute-signal-preview .bx--tag{cursor:pointer}.compute-signal-preview .bx--tag__custom-icon{margin:0}.bx--tab-content{padding:0!important} diff --git a/web/blueprint/build/_app/immutable/chunks/Checkmark.b39b03df.js b/web/blueprint/build/_app/immutable/chunks/Checkmark.b39b03df.js new file mode 100644 index 0000000000000000000000000000000000000000..b70e0249df52a7c8181abc935ddeb0c00afe2c96 --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/Checkmark.b39b03df.js @@ -0,0 +1 @@ +import{S as M,i as k,s as p,E as h,a2 as o,a3 as _,m,h as d,n as E,a4 as g,b as z,J as C,O as A,$ as c,D as v,F as b,q as B,r as R,u as q}from"./index.224851d7.js";function w(l){let e,s;return{c(){e=o("title"),s=B(l[1])},l(t){e=_(t,"title",{});var r=m(e);s=R(r,l[1]),r.forEach(d)},m(t,r){z(t,e,r),C(e,s)},p(t,r){r&2&&q(s,t[1])},d(t){t&&d(e)}}}function x(l){let e,s,t=l[1]&&w(l),r=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:l[0]},{height:l[0]},l[2],l[3]],n={};for(let i=0;i{s(5,e=h(h({},e),b(u))),s(3,i=v(e,n)),"size"in u&&s(0,a=u.size),"title"in u&&s(1,f=u.title)},l.$$.update=()=>{s(4,t=e["aria-label"]||e["aria-labelledby"]||f),s(2,r={"aria-hidden":t?void 0:!0,role:t?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=b(e),[a,f,r,i,t]}class D extends M{constructor(e){super(),k(this,e,S,x,p,{size:0,title:1})}}export{D as C}; diff --git a/web/blueprint/build/_app/immutable/chunks/ComboBox.1a71e223.js b/web/blueprint/build/_app/immutable/chunks/ComboBox.1a71e223.js new file mode 100644 index 0000000000000000000000000000000000000000..3962e414caa52c941244bb324ceb547d2c7ba555 --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/ComboBox.1a71e223.js @@ -0,0 +1 @@ +import{S as p,i as $,s as ee,E as B,a2 as Ae,a3 as ze,m as N,h as v,n as U,a4 as Pe,b as S,J as q,O as le,$ as Ve,D as F,F as Z,q as ie,r as te,u as ne,G as he,k as V,a as Y,e as y,l as R,c as X,I as O,H as I,K as A,af as Se,L as me,M as ce,N as _e,g as W,d as L,P as re,Q as M,_ as oe,ad as ye,w as se,y as H,z as J,A as K,B as Q,v as ae,f as fe,C as xe,j as kl,t as Il,a9 as Re,U as vl,V as Tl,X as El,Y as Wl}from"./index.224851d7.js";import{c as pe,W as Cl,d as Sl}from"./taskMonitoringStore.8317b9f1.js";import{C as Ll}from"./Toggle.b9cf6836.js";function Fe(l){let e,i;return{c(){e=Ae("title"),i=ie(l[1])},l(t){e=ze(t,"title",{});var s=N(e);i=te(s,l[1]),s.forEach(v)},m(t,s){S(t,e,s),q(e,i)},p(t,s){s&2&&ne(i,t[1])},d(t){t&&v(e)}}}function Al(l){let e,i,t=l[1]&&Fe(l),s=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:l[0]},{height:l[0]},l[2],l[3]],o={};for(let f=0;f{i(5,e=B(B({},e),Z(r))),i(3,f=F(e,o)),"size"in r&&i(0,a=r.size),"title"in r&&i(1,n=r.title)},l.$$.update=()=>{i(4,t=e["aria-label"]||e["aria-labelledby"]||n),i(2,s={"aria-hidden":t?void 0:!0,role:t?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=Z(e),[a,n,s,f,t]}class Bl extends p{constructor(e){super(),$(this,e,zl,Al,ee,{size:0,title:1})}}const Dl=Bl;function Ue(l){let e,i;return{c(){e=V("div"),i=ie(l[6]),this.h()},l(t){e=R(t,"DIV",{});var s=N(e);i=te(s,l[6]),s.forEach(v),this.h()},h(){I(e,"bx--form-requirement",!0)},m(t,s){S(t,e,s),q(e,i)},p(t,s){s&64&&ne(i,t[6])},d(t){t&&v(e)}}}function qe(l){let e,i;return{c(){e=V("div"),i=ie(l[8]),this.h()},l(t){e=R(t,"DIV",{});var s=N(e);i=te(s,l[8]),s.forEach(v),this.h()},h(){I(e,"bx--form-requirement",!0)},m(t,s){S(t,e,s),q(e,i)},p(t,s){s&256&&ne(i,t[8])},d(t){t&&v(e)}}}function Ml(l){let e,i,t,s,o,f,a,n;const r=l[11].default,d=he(r,l,l[10],null);let u=[{role:"listbox"},{tabindex:"-1"},{"data-invalid":i=l[5]||void 0},l[9]],b={};for(let m=0;m{l.key==="Escape"&&l.stopPropagation()};function Pl(l,e,i){const t=["size","type","open","light","disabled","invalid","invalidText","warn","warnText"];let s=F(e,t),{$$slots:o={},$$scope:f}=e,{size:a=void 0}=e,{type:n="default"}=e,{open:r=!1}=e,{light:d=!1}=e,{disabled:u=!1}=e,{invalid:b=!1}=e,{invalidText:g=""}=e,{warn:_=!1}=e,{warnText:m=""}=e;function T(k){M.call(this,l,k)}function c(k){M.call(this,l,k)}return l.$$set=k=>{e=B(B({},e),Z(k)),i(9,s=F(e,t)),"size"in k&&i(0,a=k.size),"type"in k&&i(1,n=k.type),"open"in k&&i(2,r=k.open),"light"in k&&i(3,d=k.light),"disabled"in k&&i(4,u=k.disabled),"invalid"in k&&i(5,b=k.invalid),"invalidText"in k&&i(6,g=k.invalidText),"warn"in k&&i(7,_=k.warn),"warnText"in k&&i(8,m=k.warnText),"$$scope"in k&&i(10,f=k.$$scope)},[a,n,r,d,u,b,g,_,m,s,f,o,T,c]}class Vl extends p{constructor(e){super(),$(this,e,Pl,Ml,ee,{size:0,type:1,open:2,light:3,disabled:4,invalid:5,invalidText:6,warn:7,warnText:8})}}const Rl=Vl;function Fl(l){let e,i,t,s,o,f,a,n;const r=l[11].default,d=he(r,l,l[10],null);let u=[{role:l[2]},{"aria-expanded":l[6]},{"aria-owns":i=l[6]&&l[5]||void 0},{"aria-controls":t=l[6]&&l[5]||void 0},{"aria-disabled":l[1]},{"aria-label":s=l[6]?l[4]("close"):l[4]("open")},{tabindex:o=l[1]?"-1":l[3]},l[7]],b={};for(let g=0;gT[E]}=e,{id:_="ccs-"+Math.random().toString(36)}=e,{ref:m=null}=e;const T={[b.close]:"Close menu",[b.open]:"Open menu"},c=ye("MultiSelect");function k(E){M.call(this,l,E)}function w(E){M.call(this,l,E)}function ue(E){M.call(this,l,E)}function C(E){M.call(this,l,E)}function ge(E){M.call(this,l,E)}function ke(E){M.call(this,l,E)}function Ie(E){M.call(this,l,E)}function ve(E){se[E?"unshift":"push"](()=>{m=E,i(0,m)})}return l.$$set=E=>{i(22,e=B(B({},e),Z(E))),i(7,f=F(e,o)),"disabled"in E&&i(1,r=E.disabled),"role"in E&&i(2,d=E.role),"tabindex"in E&&i(3,u=E.tabindex),"translateWithId"in E&&i(4,g=E.translateWithId),"id"in E&&i(9,_=E.id),"ref"in E&&i(0,m=E.ref),"$$scope"in E&&i(10,n=E.$$scope)},l.$$.update=()=>{l.$$.dirty&1&&c&&m&&c.declareRef({key:"field",ref:m}),i(6,t=e["aria-expanded"]),l.$$.dirty&512&&i(5,s=`menu-${_}`)},e=Z(e),[m,r,d,u,g,s,t,f,b,_,n,a,k,w,ue,C,ge,ke,Ie,ve]}class ql extends p{constructor(e){super(),$(this,e,Ul,Fl,ee,{disabled:1,role:2,tabindex:3,translationIds:8,translateWithId:4,id:9,ref:0})}get translationIds(){return this.$$.ctx[8]}}const Ol=ql;function Yl(l){let e,i,t,s,o;const f=l[4].default,a=he(f,l,l[3],null);let n=[{role:"listbox"},{id:i="menu-"+l[1]},l[2]],r={};for(let d=0;d{n=u,i(0,n)})}return l.$$set=u=>{e=B(B({},e),Z(u)),i(2,s=F(e,t)),"id"in u&&i(1,a=u.id),"ref"in u&&i(0,n=u.ref),"$$scope"in u&&i(3,f=u.$$scope)},[n,a,s,f,o,r,d]}class jl extends p{constructor(e){super(),$(this,e,Xl,Yl,ee,{id:1,ref:0})}}const Gl=jl;function Hl(l){let e,i,t,s,o;i=new Ll({props:{"aria-label":l[1],title:l[1]}});let f=[l[2]],a={};for(let n=0;nd[b]}=e;const d={[n.close]:"Close menu",[n.open]:"Open menu"};function u(b){M.call(this,l,b)}return l.$$set=b=>{e=B(B({},e),Z(b)),i(2,f=F(e,o)),"open"in b&&i(0,a=b.open),"translateWithId"in b&&i(4,r=b.translateWithId)},l.$$.update=()=>{l.$$.dirty&1&&i(5,t=a?n.close:n.open),l.$$.dirty&48&&i(1,s=(r==null?void 0:r(t))??d[t])},[a,s,f,n,r,t,u]}class Kl extends p{constructor(e){super(),$(this,e,Jl,Hl,ee,{open:0,translationIds:3,translateWithId:4})}get translationIds(){return this.$$.ctx[3]}}const Ql=Kl;function Zl(l){let e,i,t,s,o,f;const a=l[8].default,n=he(a,l,l[7],null);let r=[{role:"option"},{tabindex:"-1"},{"aria-selected":l[0]},{disabled:t=l[2]?!0:void 0},l[5]],d={};for(let u=0;u{b=c,i(3,b)})}return l.$$set=c=>{e=B(B({},e),Z(c)),i(5,f=F(e,o)),"active"in c&&i(0,r=c.active),"highlighted"in c&&i(1,d=c.highlighted),"disabled"in c&&i(2,u=c.disabled),"$$scope"in c&&i(7,n=c.$$scope)},l.$$.update=()=>{l.$$.dirty&8&&i(6,t=(b==null?void 0:b.offsetWidth)<(b==null?void 0:b.scrollWidth)),l.$$.dirty&72&&i(4,s=t?b==null?void 0:b.innerText:void 0),l.$$.dirty&10&&d&&b&&!b.matches(":hover")&&b.scrollIntoView({block:"nearest"})},[r,d,u,b,s,f,t,n,a,g,_,m,T]}class yl extends p{constructor(e){super(),$(this,e,wl,Zl,ee,{active:0,highlighted:1,disabled:2})}}const xl=yl;function pl(l){let e,i,t,s,o,f,a,n=l[1]!==void 0&&Oe(l);t=new pe({});let r=[{role:"button"},{"aria-label":l[4]},{title:l[4]},{tabindex:s=l[2]?"-1":"0"},l[6]],d={};for(let u=0;u{f[d]=null}),fe(),i=f[e],i?i.p(n,r):(i=f[e]=o[e](n),i.c()),W(i,1),i.m(t.parentNode,t))},i(n){s||(W(i),s=!0)},o(n){L(i),s=!1},d(n){f[e].d(n),n&&v(t)}}}function li(l,e,i){let t,s;const o=["selectionCount","disabled","translationIds","translateWithId","ref"];let f=F(e,o),{selectionCount:a=void 0}=e,{disabled:n=!1}=e;const r={clearAll:"clearAll",clearSelection:"clearSelection"};let{translateWithId:d=C=>b[C]}=e,{ref:u=null}=e;const b={[r.clearAll]:"Clear all selected items",[r.clearSelection]:"Clear selected item"},g=xe(),_=ye("MultiSelect");function m(C){se[C?"unshift":"push"](()=>{u=C,i(0,u)})}const T=C=>{n||g("clear",C)},c=C=>{!n&&C.key==="Enter"&&g("clear",C)};function k(C){se[C?"unshift":"push"](()=>{u=C,i(0,u)})}const w=C=>{n||g("clear",C)},ue=C=>{!n&&C.key==="Enter"&&g("clear",C)};return l.$$set=C=>{e=B(B({},e),Z(C)),i(6,f=F(e,o)),"selectionCount"in C&&i(1,a=C.selectionCount),"disabled"in C&&i(2,n=C.disabled),"translateWithId"in C&&i(7,d=C.translateWithId),"ref"in C&&i(0,u=C.ref)},l.$$.update=()=>{l.$$.dirty&1&&_&&u&&_.declareRef({key:"selection",ref:u}),l.$$.dirty&2&&i(8,t=a?r.clearAll:r.clearSelection),l.$$.dirty&384&&i(4,s=(d==null?void 0:d(t))??b[t])},[u,a,n,r,s,g,f,d,t,m,T,c,k,w,ue]}class ii extends p{constructor(e){super(),$(this,e,li,ei,ee,{selectionCount:1,disabled:2,translationIds:3,translateWithId:7,ref:0})}get translationIds(){return this.$$.ctx[3]}}const ti=ii;function Ye(l,e,i){const t=l.slice();return t[56]=e[i],t[58]=i,t}const ni=l=>({item:l[0]&16777216,index:l[0]&16777216}),Xe=l=>({item:l[56],index:l[58]});function je(l){let e,i;return{c(){e=V("label"),i=ie(l[9]),this.h()},l(t){e=R(t,"LABEL",{for:!0});var s=N(e);i=te(s,l[9]),s.forEach(v),this.h()},h(){U(e,"for",l[19]),I(e,"bx--label",!0),I(e,"bx--label--disabled",l[8])},m(t,s){S(t,e,s),q(e,i)},p(t,s){s[0]&512&&ne(i,t[9]),s[0]&524288&&U(e,"for",t[19]),s[0]&256&&I(e,"bx--label--disabled",t[8])},d(t){t&&v(e)}}}function Ge(l){let e,i;return e=new Cl({props:{class:"bx--list-box__invalid-icon"}}),{c(){H(e.$$.fragment)},l(t){J(e.$$.fragment,t)},m(t,s){K(e,t,s),i=!0},i(t){i||(W(e.$$.fragment,t),i=!0)},o(t){L(e.$$.fragment,t),i=!1},d(t){Q(e,t)}}}function He(l){let e,i;return e=new Sl({props:{class:"bx--list-box__invalid-icon bx--list-box__invalid-icon--warning"}}),{c(){H(e.$$.fragment)},l(t){J(e.$$.fragment,t)},m(t,s){K(e,t,s),i=!0},i(t){i||(W(e.$$.fragment,t),i=!0)},o(t){L(e.$$.fragment,t),i=!1},d(t){Q(e,t)}}}function Je(l){let e,i;return e=new ti({props:{translateWithId:l[18],disabled:l[8],open:l[2]}}),e.$on("clear",l[46]),e.$on("clear",l[21]),{c(){H(e.$$.fragment)},l(t){J(e.$$.fragment,t)},m(t,s){K(e,t,s),i=!0},p(t,s){const o={};s[0]&262144&&(o.translateWithId=t[18]),s[0]&256&&(o.disabled=t[8]),s[0]&4&&(o.open=t[2]),e.$set(o)},i(t){i||(W(e.$$.fragment,t),i=!0)},o(t){L(e.$$.fragment,t),i=!1},d(t){Q(e,t)}}}function ai(l){let e,i,t,s,o,f,a,n,r,d,u,b=[{tabindex:"0"},{autocomplete:"off"},{"aria-autocomplete":"list"},{"aria-expanded":l[2]},{"aria-activedescendant":l[25]},{"aria-labelledby":l[26]},{"aria-disabled":l[8]},{"aria-controls":i=l[2]?l[27]:void 0},{"aria-owns":t=l[2]?l[27]:void 0},{disabled:l[8]},{placeholder:l[10]},{id:l[19]},{name:l[20]},l[30]],g={};for(let c=0;c{_=null}),fe()),!c[13]&&c[14]?m?k[0]&24576&&W(m,1):(m=He(),m.c(),W(m,1),m.m(f.parentNode,f)):m&&(ae(),L(m,1,1,()=>{m=null}),fe()),c[1]?T?(T.p(c,k),k[0]&2&&W(T,1)):(T=Je(c),T.c(),W(T,1),T.m(a.parentNode,a)):T&&(ae(),L(T,1,1,()=>{T=null}),fe());const w={};k[0]&131072&&(w.translateWithId=c[17]),k[0]&4&&(w.open=c[2]),n.$set(w)},i(c){r||(W(_),W(m),W(T),W(n.$$.fragment,c),r=!0)},o(c){L(_),L(m),L(T),L(n.$$.fragment,c),r=!1},d(c){c&&v(e),l[41](null),c&&v(s),_&&_.d(c),c&&v(o),m&&m.d(c),c&&v(f),T&&T.d(c),c&&v(a),Q(n,c),d=!1,re(u)}}}function Ke(l){let e,i,t;function s(f){l[51](f)}let o={"aria-label":l[28],id:l[19],$$slots:{default:[ui]},$$scope:{ctx:l}};return l[4]!==void 0&&(o.ref=l[4]),e=new Gl({props:o}),se.push(()=>vl(e,"ref",s)),e.$on("scroll",l[52]),{c(){H(e.$$.fragment)},l(f){J(e.$$.fragment,f)},m(f,a){K(e,f,a),t=!0},p(f,a){const n={};a[0]&268435456&&(n["aria-label"]=f[28]),a[0]&524288&&(n.id=f[19]),a[0]&29360167|a[1]&4194304&&(n.$$scope={dirty:a,ctx:f}),!i&&a[0]&16&&(i=!0,n.ref=f[4],Tl(()=>i=!1)),e.$set(n)},i(f){t||(W(e.$$.fragment,f),t=!0)},o(f){L(e.$$.fragment,f),t=!1},d(f){Q(e,f)}}}function fi(l){let e=l[5](l[56])+"",i;return{c(){i=ie(e)},l(t){i=te(t,e)},m(t,s){S(t,i,s)},p(t,s){s[0]&16777248&&e!==(e=t[5](t[56])+"")&&ne(i,e)},d(t){t&&v(i)}}}function Qe(l){let e,i;return e=new Dl({props:{class:"bx--list-box__menu-item__selected-icon"}}),{c(){H(e.$$.fragment)},l(t){J(e.$$.fragment,t)},m(t,s){K(e,t,s),i=!0},i(t){i||(W(e.$$.fragment,t),i=!0)},o(t){L(e.$$.fragment,t),i=!1},d(t){Q(e,t)}}}function si(l){let e,i,t;const s=l[34].default,o=he(s,l,l[53],Xe),f=o||fi(l);let a=l[22]&&l[22].id===l[56].id&&Qe();return{c(){f&&f.c(),e=Y(),a&&a.c(),i=Y()},l(n){f&&f.l(n),e=X(n),a&&a.l(n),i=X(n)},m(n,r){f&&f.m(n,r),S(n,e,r),a&&a.m(n,r),S(n,i,r),t=!0},p(n,r){o?o.p&&(!t||r[0]&16777216|r[1]&4194304)&&me(o,s,n,n[53],t?_e(s,n[53],r,ni):ce(n[53]),Xe):f&&f.p&&(!t||r[0]&16777248)&&f.p(n,t?r:[-1,-1]),n[22]&&n[22].id===n[56].id?a?r[0]&20971520&&W(a,1):(a=Qe(),a.c(),W(a,1),a.m(i.parentNode,i)):a&&(ae(),L(a,1,1,()=>{a=null}),fe())},i(n){t||(W(f,n),W(a),t=!0)},o(n){L(f,n),L(a),t=!1},d(n){f&&f.d(n),n&&v(e),a&&a.d(n),n&&v(i)}}}function Ze(l,e){let i,t,s;function o(...a){return e[49](e[56],e[58],...a)}function f(){return e[50](e[56],e[58])}return t=new xl({props:{id:e[56].id,active:e[0]===e[56].id,highlighted:e[23]===e[58],disabled:e[56].disabled,$$slots:{default:[si]},$$scope:{ctx:e}}}),t.$on("click",o),t.$on("mouseenter",f),{key:l,first:null,c(){i=y(),H(t.$$.fragment),this.h()},l(a){i=y(),J(t.$$.fragment,a),this.h()},h(){this.first=i},m(a,n){S(a,i,n),K(t,a,n),s=!0},p(a,n){e=a;const r={};n[0]&16777216&&(r.id=e[56].id),n[0]&16777217&&(r.active=e[0]===e[56].id),n[0]&25165824&&(r.highlighted=e[23]===e[58]),n[0]&16777216&&(r.disabled=e[56].disabled),n[0]&20971552|n[1]&4194304&&(r.$$scope={dirty:n,ctx:e}),t.$set(r)},i(a){s||(W(t.$$.fragment,a),s=!0)},o(a){L(t.$$.fragment,a),s=!1},d(a){a&&v(i),Q(t,a)}}}function ui(l){let e=[],i=new Map,t,s,o=l[24];const f=a=>a[56].id;for(let a=0;a{o=null}),fe())},i(f){s||(W(e.$$.fragment,f),W(o),s=!0)},o(f){L(e.$$.fragment,f),L(o),s=!1},d(f){Q(e,f),f&&v(i),o&&o.d(f),f&&v(t)}}}function we(l){let e,i;return{c(){e=V("div"),i=ie(l[11]),this.h()},l(t){e=R(t,"DIV",{});var s=N(e);i=te(s,l[11]),s.forEach(v),this.h()},h(){I(e,"bx--form__helper-text",!0),I(e,"bx--form__helper-text--disabled",l[8])},m(t,s){S(t,e,s),q(e,i)},p(t,s){s[0]&2048&&ne(i,t[11]),s[0]&256&&I(e,"bx--form__helper-text--disabled",t[8])},d(t){t&&v(e)}}}function ri(l){let e,i,t,s,o,f,a,n=l[9]&&je(l);t=new Rl({props:{class:"bx--combo-box "+(l[6]==="top"&&"bx--list-box--up")+" "+(!l[13]&&l[14]&&"bx--combo-box--warning"),id:l[26],"aria-label":l[28],disabled:l[8],invalid:l[13],invalidText:l[12],open:l[2],light:l[16],size:l[7],warn:l[14],warnText:l[15],$$slots:{default:[oi]},$$scope:{ctx:l}}});let r=!l[13]&&l[11]&&!l[14]&&we(l);return{c(){e=V("div"),n&&n.c(),i=Y(),H(t.$$.fragment),s=Y(),r&&r.c(),this.h()},l(d){e=R(d,"DIV",{});var u=N(e);n&&n.l(u),i=X(u),J(t.$$.fragment,u),s=X(u),r&&r.l(u),u.forEach(v),this.h()},h(){I(e,"bx--list-box__wrapper",!0)},m(d,u){S(d,e,u),n&&n.m(e,null),q(e,i),K(t,e,null),q(e,s),r&&r.m(e,null),o=!0,f||(a=A(window,"click",l[40]),f=!0)},p(d,u){d[9]?n?n.p(d,u):(n=je(d),n.c(),n.m(e,i)):n&&(n.d(1),n=null);const b={};u[0]&24640&&(b.class="bx--combo-box "+(d[6]==="top"&&"bx--list-box--up")+" "+(!d[13]&&d[14]&&"bx--combo-box--warning")),u[0]&67108864&&(b.id=d[26]),u[0]&268435456&&(b["aria-label"]=d[28]),u[0]&256&&(b.disabled=d[8]),u[0]&8192&&(b.invalid=d[13]),u[0]&4096&&(b.invalidText=d[12]),u[0]&4&&(b.open=d[2]),u[0]&65536&&(b.light=d[16]),u[0]&128&&(b.size=d[7]),u[0]&16384&&(b.warn=d[14]),u[0]&32768&&(b.warnText=d[15]),u[0]&1608475967|u[1]&4194304&&(b.$$scope={dirty:u,ctx:d}),t.$set(b),!d[13]&&d[11]&&!d[14]?r?r.p(d,u):(r=we(d),r.c(),r.m(e,null)):r&&(r.d(1),r=null)},i(d){o||(W(t.$$.fragment,d),o=!0)},o(d){L(t.$$.fragment,d),o=!1},d(d){d&&v(e),n&&n.d(),Q(t),r&&r.d(),f=!1,a()}}}function di(l,e,i){let t,s,o,f,a;const n=["items","itemToString","selectedId","value","direction","size","disabled","titleText","placeholder","helperText","invalidText","invalid","warn","warnText","light","open","shouldFilterItem","translateWithId","translateWithIdSelection","id","name","ref","listRef","clear"];let r=F(e,n),{$$slots:d={},$$scope:u}=e,{items:b=[]}=e,{itemToString:g=h=>h.text||h.id}=e,{selectedId:_=void 0}=e,{value:m=""}=e,{direction:T="bottom"}=e,{size:c=void 0}=e,{disabled:k=!1}=e,{titleText:w=""}=e,{placeholder:ue=""}=e,{helperText:C=""}=e,{invalidText:ge=""}=e,{invalid:ke=!1}=e,{warn:Ie=!1}=e,{warnText:ve=""}=e,{light:E=!1}=e,{open:D=!1}=e,{shouldFilterItem:Te=()=>!0}=e,{translateWithId:Be=void 0}=e,{translateWithIdSelection:De=void 0}=e,{id:Ee="ccs-"+Math.random().toString(36)}=e,{name:Me=void 0}=e,{ref:j=null}=e,{listRef:We=null}=e;const $e=xe();let G,de=null,P=-1;function Le(h){let z=P+h,x=a!=null&&a.length?a:b;if(x.length===0)return;z<0?z=x.length-1:z>=x.length&&(z=0);let be=b[z].disabled;for(;be;)z=z+h,z<0?z=b.length-1:z>=b.length&&(z=0),be=b[z].disabled;i(23,P=z)}function Ne(h={}){i(33,de=null),i(23,P=-1),i(25,f=void 0),i(0,_=void 0),i(22,G=void 0),i(2,D=!1),i(1,m=""),(h==null?void 0:h.focus)!==!1&&(j==null||j.focus())}kl(()=>{D?(j.focus(),i(24,a=b.filter(h=>Te(h,m)))):(i(23,P=-1),i(24,a=[]),G?i(1,m=g(G)):(i(0,_=void 0),i(1,m=""),i(23,P=-1),i(25,f=void 0)))});function el(h){M.call(this,l,h)}function ll(h){M.call(this,l,h)}function il(h){M.call(this,l,h)}function tl(h){M.call(this,l,h)}function nl(h){M.call(this,l,h)}const al=({target:h})=>{D&&j&&!j.contains(h)&&i(2,D=!1)};function fl(h){se[h?"unshift":"push"](()=>{j=h,i(3,j)})}function sl(){m=this.value,i(1,m)}const ul=({target:h})=>{!D&&h.value.length>0&&i(2,D=!0),m.length||(Ne(),i(2,D=!0))},ol=h=>{var x;const{key:z}=h;if(["Enter","ArrowDown","ArrowUp"].includes(z)&&h.preventDefault(),z==="Enter"){if(i(2,D=!D),P>-1&&((x=a[P])==null?void 0:x.id)!==_)i(2,D=!1),a[P]&&(i(1,m=g(a[P])),i(22,G=a[P]),i(0,_=a[P].id));else{const be=a.find(Ce=>Ce.text.toLowerCase()===(m==null?void 0:m.toLowerCase())&&!Ce.disabled)??a.find(Ce=>!Ce.disabled);be&&(i(2,D=!1),i(22,G=be),i(1,m=g(G)),i(0,_=G.id))}i(23,P=-1)}else z==="Tab"?i(2,D=!1):z==="ArrowDown"?Le(1):z==="ArrowUp"?Le(-1):z==="Escape"&&i(2,D=!1)},rl=({relatedTarget:h})=>{!D||!h||h&&!["INPUT","SELECT","TEXTAREA"].includes(h.tagName)&&h.getAttribute("role")!=="button"&&h.getAttribute("role")!=="searchbox"&&j.focus()};function dl(h){M.call(this,l,h)}const bl=h=>{k||(h.stopPropagation(),i(2,D=!D))},hl=async()=>{k||(i(2,D=!0),await Il(),j.focus())},ml=(h,z,x)=>{if(h.disabled){x.stopPropagation();return}i(0,_=h.id),i(2,D=!1),a[z]&&i(1,m=g(a[z]))},cl=(h,z)=>{h.disabled||i(23,P=z)};function _l(h){We=h,i(4,We)}function gl(h){M.call(this,l,h)}return l.$$set=h=>{i(55,e=B(B({},e),Z(h))),i(30,r=F(e,n)),"items"in h&&i(31,b=h.items),"itemToString"in h&&i(5,g=h.itemToString),"selectedId"in h&&i(0,_=h.selectedId),"value"in h&&i(1,m=h.value),"direction"in h&&i(6,T=h.direction),"size"in h&&i(7,c=h.size),"disabled"in h&&i(8,k=h.disabled),"titleText"in h&&i(9,w=h.titleText),"placeholder"in h&&i(10,ue=h.placeholder),"helperText"in h&&i(11,C=h.helperText),"invalidText"in h&&i(12,ge=h.invalidText),"invalid"in h&&i(13,ke=h.invalid),"warn"in h&&i(14,Ie=h.warn),"warnText"in h&&i(15,ve=h.warnText),"light"in h&&i(16,E=h.light),"open"in h&&i(2,D=h.open),"shouldFilterItem"in h&&i(32,Te=h.shouldFilterItem),"translateWithId"in h&&i(17,Be=h.translateWithId),"translateWithIdSelection"in h&&i(18,De=h.translateWithIdSelection),"id"in h&&i(19,Ee=h.id),"name"in h&&i(20,Me=h.name),"ref"in h&&i(3,j=h.ref),"listRef"in h&&i(4,We=h.listRef),"$$scope"in h&&i(53,u=h.$$scope)},l.$$.update=()=>{l.$$.dirty[0]&2|l.$$.dirty[1]&3&&i(24,a=b.filter(h=>Te(h,m))),l.$$.dirty[0]&20971525|l.$$.dirty[1]&5&&(_!==void 0?de!==_&&(i(33,de=_),(a==null?void 0:a.length)===1&&D?(i(0,_=a[0].id),i(22,G=a[0]),i(23,P=-1),i(25,f=void 0)):i(22,G=b.find(h=>h.id===_)),$e("select",{selectedId:_,selectedItem:G})):(i(33,de=_),i(22,G=void 0))),i(28,t=e["aria-label"]||"Choose an item"),l.$$.dirty[0]&524288&&i(27,s=`menu-${Ee}`),l.$$.dirty[0]&524288&&i(26,o=`combo-${Ee}`),l.$$.dirty[0]&8388608|l.$$.dirty[1]&1&&i(25,f=b[P]?b[P].id:0)},e=Z(e),[_,m,D,j,We,g,T,c,k,w,ue,C,ge,ke,Ie,ve,E,Be,De,Ee,Me,Ne,G,P,a,f,o,s,t,Le,r,b,Te,de,d,el,ll,il,tl,nl,al,fl,sl,ul,ol,rl,dl,bl,hl,ml,cl,_l,gl,u]}class bi extends p{constructor(e){super(),$(this,e,di,ri,ee,{items:31,itemToString:5,selectedId:0,value:1,direction:6,size:7,disabled:8,titleText:9,placeholder:10,helperText:11,invalidText:12,invalid:13,warn:14,warnText:15,light:16,open:2,shouldFilterItem:32,translateWithId:17,translateWithIdSelection:18,id:19,name:20,ref:3,listRef:4,clear:21},null,[-1,-1])}get clear(){return this.$$.ctx[21]}}const _i=bi;export{_i as C,Rl as L,Ql as a,Gl as b,xl as c}; diff --git a/web/blueprint/build/_app/immutable/chunks/Commands.7700196d.js b/web/blueprint/build/_app/immutable/chunks/Commands.7700196d.js new file mode 100644 index 0000000000000000000000000000000000000000..b5924df6986f42efea18995e52137651af5dd7f6 --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/Commands.7700196d.js @@ -0,0 +1,11 @@ +import{S as le,i as ae,s as ne,E as U,k as N,l as F,m as w,h as v,H as y,I as ie,b as C,J as I,K as W,O as pe,$ as H,P as Le,D as te,F as ce,Q as G,e as Q,v as Z,d as k,f as x,g as b,C as He,w as ge,G as Ne,a as Y,c as K,n as V,L as Fe,M as qe,N as $e,y as D,z as q,A as M,W as Mi,B as j,q as se,r as fe,u as ve,R as he,T as or,o as ln,t as xl,j as ji,a1 as Wt,ad as Et,a0 as Je,a8 as ea,_ as Tn,x as zt,a2 as Oe,a3 as Ee,a4 as Qe,U as Ce,V as Te,a6 as ta,an as Ni,a5 as Fi,aj as ra}from"./index.224851d7.js";import{w as at}from"./index.fd964a74.js";import{c as qi,B as At,C as na,E as oa,r as Be,O as De,e as ir,f as an,a as Ut}from"./taskMonitoringStore.8317b9f1.js";import{F as ia,s as Me,G as cr,p as Ve,H as la,S as aa,E as sa,b as Gt,h as $i,u as Vi,y as fa,r as ua,I as ca}from"./utils.2fa053fd.js";import{t as pa}from"./Modal.67c6d9e8.js";import{T as bt,g as ma,c as sn,a as da,S as ga,J as ha}from"./JSONSchemaForm.cab38fde.js";import{L as ya}from"./urlHashStore.b3058edb.js";import{S as Ct,a as lr}from"./Toggle.b9cf6836.js";function va(t){let e,r,n,o,s=[t[0]],l={};for(let a=0;a{e=U(U({},e),ce(f)),r(0,o=te(e,n))},[o,s,l,a,i]}class _a extends le{constructor(e){super(),ae(this,e,ba,va,ne,{})}}const Sa=_a,ka=t=>({}),wn=t=>({});function Oa(t){let e,r,n,o,s,l,a,i;const f=t[19].labelText,u=Ne(f,t,t[18],wn),m=u||Aa(t);let p=[t[16]],c={};for(let h=0;h{l[u]=null}),x(),r=l[e],r?r.p(i,f):(r=l[e]=s[e](i),r.c()),b(r,1),r.m(n.parentNode,n))},i(i){o||(b(r),o=!0)},o(i){k(r),o=!1},d(i){l[e].d(i),i&&v(n)}}}function Ta(t,e,r){let n,o;const s=["value","checked","group","indeterminate","skeleton","required","readonly","disabled","labelText","hideLabel","name","title","id","ref"];let l=te(e,s),{$$slots:a={},$$scope:i}=e,{value:f=""}=e,{checked:u=!1}=e,{group:m=void 0}=e,{indeterminate:p=!1}=e,{skeleton:c=!1}=e,{required:h=!1}=e,{readonly:d=!1}=e,{disabled:g=!1}=e,{labelText:_=""}=e,{hideLabel:E=!1}=e,{name:S=""}=e,{title:A=void 0}=e,{id:z="ccs-"+Math.random().toString(36)}=e,{ref:R=null}=e;const B=He();let L=null;function oe(T){G.call(this,t,T)}function P(T){G.call(this,t,T)}function re(T){G.call(this,t,T)}function be(T){G.call(this,t,T)}function _e(T){G.call(this,t,T)}function Se(T){G.call(this,t,T)}function Ue(T){G.call(this,t,T)}function we(T){G.call(this,t,T)}function ke(T){G.call(this,t,T)}function ee(T){G.call(this,t,T)}function $(T){ge[T?"unshift":"push"](()=>{R=T,r(3,R)})}const O=()=>{n?r(1,m=m.includes(f)?m.filter(T=>T!==f):[...m,f]):r(0,u=!u)};function J(T){ge[T?"unshift":"push"](()=>{L=T,r(14,L)})}return t.$$set=T=>{e=U(U({},e),ce(T)),r(16,l=te(e,s)),"value"in T&&r(4,f=T.value),"checked"in T&&r(0,u=T.checked),"group"in T&&r(1,m=T.group),"indeterminate"in T&&r(5,p=T.indeterminate),"skeleton"in T&&r(6,c=T.skeleton),"required"in T&&r(7,h=T.required),"readonly"in T&&r(8,d=T.readonly),"disabled"in T&&r(9,g=T.disabled),"labelText"in T&&r(10,_=T.labelText),"hideLabel"in T&&r(11,E=T.hideLabel),"name"in T&&r(12,S=T.name),"title"in T&&r(2,A=T.title),"id"in T&&r(13,z=T.id),"ref"in T&&r(3,R=T.ref),"$$scope"in T&&r(18,i=T.$$scope)},t.$$.update=()=>{t.$$.dirty[0]&2&&r(15,n=Array.isArray(m)),t.$$.dirty[0]&32787&&r(0,u=n?m.includes(f):u),t.$$.dirty[0]&1&&B("check",u),t.$$.dirty[0]&16384&&r(17,o=(L==null?void 0:L.offsetWidth)<(L==null?void 0:L.scrollWidth)),t.$$.dirty[0]&147460&&r(2,A=!A&&o?L==null?void 0:L.innerText:A)},[u,m,A,R,f,p,c,h,d,g,_,E,S,z,L,n,l,o,i,a,oe,P,re,be,_e,Se,Ue,we,ke,ee,$,O,J]}class wa extends le{constructor(e){super(),ae(this,e,Ta,Ca,ne,{value:4,checked:0,group:1,indeterminate:5,skeleton:6,required:7,readonly:8,disabled:9,labelText:10,hideLabel:11,name:12,title:2,id:13,ref:3},null,[-1,-1])}}const Pa=wa;function Ia(t){let e,r,n,o,s,l;const a=t[18].default,i=Ne(a,t,t[17],null);let f=[{role:"presentation"},t[14]],u={};for(let m=0;mr(9,a=O));let S=null,A=null,z=!1;or("ComposedModal",{closeModal:()=>{r(0,m=!1)},submit:()=>{_("submit"),_("click:button--primary")},declareRef:O=>{S=O},updateLabel:O=>{E.set(O)}});function R(O){var T;if(d==null)return;const J=((T=O||A)==null?void 0:T.querySelector(d))||S;J!=null&&J.focus()}let B=!1;const L=at(m);he(t,L,O=>r(32,l=O)),pa(L),ln(()=>{xl().then(()=>{R()})}),ji(()=>{B?m||(B=!1,_("close")):m&&(B=!0,_("open"))});function oe(O){G.call(this,t,O)}function P(O){G.call(this,t,O)}function re(O){G.call(this,t,O)}function be(O){G.call(this,t,O)}function _e(O){G.call(this,t,O)}function Se(O){ge[O?"unshift":"push"](()=>{A=O,r(6,A)})}const Ue=()=>{r(7,z=!0)};function we(O){ge[O?"unshift":"push"](()=>{g=O,r(1,g)})}const ke=O=>{if(m){if(O.key==="Escape")r(0,m=!1);else if(O.key==="Tab"){const J=` + a[href], area[href], input:not([disabled]):not([tabindex='-1']), + button:not([disabled]):not([tabindex='-1']),select:not([disabled]):not([tabindex='-1']), + textarea:not([disabled]):not([tabindex='-1']), + iframe, object, embed, *[tabindex]:not([tabindex='-1']):not([disabled]), *[contenteditable=true] +`,T=Array.from(g.querySelectorAll(J));let Pe=T.indexOf(document.activeElement);Pe===-1&&O.shiftKey&&(Pe=0),Pe+=T.length+(O.shiftKey?-1:1),Pe%=T.length,T[Pe].focus(),O.preventDefault()}}},ee=()=>{!z&&!c&&r(0,m=!1),r(7,z=!1)},$=({propertyName:O,currentTarget:J})=>{O==="transform"&&_("transitionend",{open:m}),n&&(R(J),r(8,n=!1))};return t.$$set=O=>{r(15,e=U(U({},e),ce(O))),r(14,s=te(e,o)),"size"in O&&r(2,u=O.size),"open"in O&&r(0,m=O.open),"danger"in O&&r(3,p=O.danger),"preventCloseOnClickOutside"in O&&r(4,c=O.preventCloseOnClickOutside),"containerClass"in O&&r(5,h=O.containerClass),"selectorPrimaryFocus"in O&&r(16,d=O.selectorPrimaryFocus),"ref"in O&&r(1,g=O.ref),"$$scope"in O&&r(17,f=O.$$scope)},t.$$.update=()=>{t.$$.dirty[0]&1&&r(8,n=m),t.$$.dirty[0]&1&&Wt(L,l=m,l)},e=ce(e),[m,g,u,p,c,h,A,z,n,a,_,E,R,L,s,e,d,f,i,oe,P,re,be,_e,Se,Ue,we,ke,ee,$]}class Da extends le{constructor(e){super(),ae(this,e,Ba,Ia,ne,{size:2,open:0,danger:3,preventCloseOnClickOutside:4,containerClass:5,selectorPrimaryFocus:16,ref:1},null,[-1,-1])}}const fn=Da;function Pn(t){let e,r;return{c(){e=N("h2"),r=se(t[1]),this.h()},l(n){e=F(n,"H2",{class:!0});var o=w(e);r=fe(o,t[1]),o.forEach(v),this.h()},h(){V(e,"class",t[2]),y(e,"bx--modal-header__label",!0),y(e,"bx--type-delta",!0)},m(n,o){C(n,e,o),I(e,r)},p(n,o){o&2&&ve(r,n[1]),o&4&&V(e,"class",n[2]),o&4&&y(e,"bx--modal-header__label",!0),o&4&&y(e,"bx--type-delta",!0)},d(n){n&&v(e)}}}function In(t){let e,r;return{c(){e=N("h3"),r=se(t[0]),this.h()},l(n){e=F(n,"H3",{class:!0});var o=w(e);r=fe(o,t[0]),o.forEach(v),this.h()},h(){V(e,"class",t[3]),y(e,"bx--modal-header__heading",!0),y(e,"bx--type-beta",!0)},m(n,o){C(n,e,o),I(e,r)},p(n,o){o&1&&ve(r,n[0]),o&8&&V(e,"class",n[3]),o&8&&y(e,"bx--modal-header__heading",!0),o&8&&y(e,"bx--type-beta",!0)},d(n){n&&v(e)}}}function Ma(t){let e,r,n,o,s,l,a,i,f,u=t[1]&&Pn(t),m=t[0]&&In(t);const p=t[10].default,c=Ne(p,t,t[9],null);l=new qi({props:{size:20,class:"bx--modal-close__icon "+t[5],"aria-hidden":"true"}});let h=[t[8]],d={};for(let g=0;g{e=U(U({},e),ce(_)),r(8,o=te(e,n)),"title"in _&&r(0,a=_.title),"label"in _&&r(1,i=_.label),"labelClass"in _&&r(2,f=_.labelClass),"titleClass"in _&&r(3,u=_.titleClass),"closeClass"in _&&r(4,m=_.closeClass),"closeIconClass"in _&&r(5,p=_.closeIconClass),"iconDescription"in _&&r(6,c=_.iconDescription),"$$scope"in _&&r(9,l=_.$$scope)},t.$$.update=()=>{t.$$.dirty&2&&d(i)},[a,i,f,u,m,p,c,h,o,l,s,g]}class Na extends le{constructor(e){super(),ae(this,e,ja,Ma,ne,{title:0,label:1,labelClass:2,titleClass:3,closeClass:4,closeIconClass:5,iconDescription:6})}}const un=Na;function Bn(t){let e;return{c(){e=N("div"),this.h()},l(r){e=F(r,"DIV",{}),w(e).forEach(v),this.h()},h(){y(e,"bx--modal-content--overflow-indicator",!0)},m(r,n){C(r,e,n)},d(r){r&&v(e)}}}function Fa(t){let e,r,n,o,s,l;const a=t[4].default,i=Ne(a,t,t[3],null);let f=[{tabindex:r=t[1]?"0":void 0},{role:n=t[1]?"region":void 0},t[2]],u={};for(let p=0;p{e=U(U({},e),ce(f)),r(2,o=te(e,n)),"hasForm"in f&&r(0,a=f.hasForm),"hasScrollingContent"in f&&r(1,i=f.hasScrollingContent),"$$scope"in f&&r(3,l=f.$$scope)},[a,i,o,l,s]}class $a extends le{constructor(e){super(),ae(this,e,qa,Fa,ne,{hasForm:0,hasScrollingContent:1})}}const cn=$a;function Dn(t,e,r){const n=t.slice();return n[16]=e[r],n}function Va(t){let e,r;return e=new At({props:{kind:"secondary",class:t[6],$$slots:{default:[La]},$$scope:{ctx:t}}}),e.$on("click",t[14]),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){const s={};o&64&&(s.class=n[6]),o&32784&&(s.$$scope={dirty:o,ctx:n}),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Ra(t){let e,r,n=t[5],o=[];for(let l=0;lk(o[l],1,1,()=>{o[l]=null});return{c(){for(let l=0;l0?0:d[4]?1:-1}~(r=f(t))&&(n=i[r]=a[r](t));let u=t[0]&&jn(t);const m=t[12].default,p=Ne(m,t,t[15],null);let c=[t[11]],h={};for(let d=0;d{i[_]=null}),x()),~r?(n=i[r],n?n.p(d,g):(n=i[r]=a[r](d),n.c()),b(n,1),n.m(e,o)):n=null),d[0]?u?(u.p(d,g),g&1&&b(u,1)):(u=jn(d),u.c(),b(u,1),u.m(e,s)):u&&(Z(),k(u,1,1,()=>{u=null}),x()),p&&p.p&&(!l||g&32768)&&Fe(p,m,d,d[15],l?$e(m,d[15],g,null):qe(d[15]),null),ie(e,h=pe(c,[g&2048&&d[11]])),y(e,"bx--modal-footer",!0),y(e,"bx--modal-footer--three-button",d[5].length===2)},i(d){l||(b(n),b(u),b(p,d),l=!0)},o(d){k(n),k(u),k(p,d),l=!1},d(d){d&&v(e),~r&&i[r].d(),u&&u.d(),p&&p.d(d)}}}function Ga(t,e,r){const n=["primaryButtonText","primaryButtonIcon","primaryButtonDisabled","primaryClass","secondaryButtonText","secondaryButtons","secondaryClass","danger"];let o=te(e,n),{$$slots:s={},$$scope:l}=e,{primaryButtonText:a=""}=e,{primaryButtonIcon:i=void 0}=e,{primaryButtonDisabled:f=!1}=e,{primaryClass:u=void 0}=e,{secondaryButtonText:m=""}=e,{secondaryButtons:p=[]}=e,{secondaryClass:c=void 0}=e,{danger:h=!1}=e;const d=He(),{closeModal:g,submit:_}=Et("ComposedModal"),E=A=>{d("click:button--secondary",{text:A.text})},S=()=>{g(),d("click:button--secondary",{text:m})};return t.$$set=A=>{e=U(U({},e),ce(A)),r(11,o=te(e,n)),"primaryButtonText"in A&&r(0,a=A.primaryButtonText),"primaryButtonIcon"in A&&r(1,i=A.primaryButtonIcon),"primaryButtonDisabled"in A&&r(2,f=A.primaryButtonDisabled),"primaryClass"in A&&r(3,u=A.primaryClass),"secondaryButtonText"in A&&r(4,m=A.secondaryButtonText),"secondaryButtons"in A&&r(5,p=A.secondaryButtons),"secondaryClass"in A&&r(6,c=A.secondaryClass),"danger"in A&&r(7,h=A.danger),"$$scope"in A&&r(15,l=A.$$scope)},[a,i,f,u,m,p,c,h,d,g,_,o,s,E,S,l]}class Ha extends le{constructor(e){super(),ae(this,e,Ga,Ua,ne,{primaryButtonText:0,primaryButtonIcon:1,primaryButtonDisabled:2,primaryClass:3,secondaryButtonText:4,secondaryButtons:5,secondaryClass:6,danger:7})}}const pn=Ha;function Ja(t){let e,r;return e=new ya({props:{small:!0,description:t[2],withOverlay:!1,active:t[0]==="active"}}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){const s={};o&4&&(s.description=n[2]),o&1&&(s.active=n[0]==="active"),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Ya(t){let e,r;return e=new na({props:{class:"bx--inline-loading__checkmark-container",title:t[2]}}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){const s={};o&4&&(s.title=n[2]),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Ka(t){let e,r;return e=new oa({props:{class:"bx--inline-loading--error",title:t[2]}}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){const s={};o&4&&(s.title=n[2]),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Nn(t){let e,r;return{c(){e=N("div"),r=se(t[1]),this.h()},l(n){e=F(n,"DIV",{});var o=w(e);r=fe(o,t[1]),o.forEach(v),this.h()},h(){y(e,"bx--inline-loading__text",!0)},m(n,o){C(n,e,o),I(e,r)},p(n,o){o&2&&ve(r,n[1])},d(n){n&&v(e)}}}function Xa(t){let e,r,n,o,s,l,a,i;const f=[Ka,Ya,Ja],u=[];function m(d,g){return d[0]==="error"?0:d[0]==="finished"?1:d[0]==="inactive"||d[0]==="active"?2:-1}~(n=m(t))&&(o=u[n]=f[n](t));let p=t[1]&&Nn(t),c=[{"aria-live":"assertive"},t[3]],h={};for(let d=0;d{u[_]=null}),x()),~n?(o=u[n],o?o.p(d,g):(o=u[n]=f[n](d),o.c()),b(o,1),o.m(r,null)):o=null),d[1]?p?p.p(d,g):(p=Nn(d),p.c(),p.m(e,null)):p&&(p.d(1),p=null),ie(e,h=pe(c,[{"aria-live":"assertive"},g&8&&d[3]])),y(e,"bx--inline-loading",!0)},i(d){l||(b(o),l=!0)},o(d){k(o),l=!1},d(d){d&&v(e),~n&&u[n].d(),p&&p.d(),a=!1,Le(i)}}}function Qa(t,e,r){const n=["status","description","iconDescription","successDelay"];let o=te(e,n),{status:s="active"}=e,{description:l=void 0}=e,{iconDescription:a=void 0}=e,{successDelay:i=1500}=e;const f=He();let u;ln(()=>()=>{clearTimeout(u)}),ji(()=>{s==="finished"&&(u=setTimeout(()=>{f("success")},i))});function m(d){G.call(this,t,d)}function p(d){G.call(this,t,d)}function c(d){G.call(this,t,d)}function h(d){G.call(this,t,d)}return t.$$set=d=>{e=U(U({},e),ce(d)),r(3,o=te(e,n)),"status"in d&&r(0,s=d.status),"description"in d&&r(1,l=d.description),"iconDescription"in d&&r(2,a=d.iconDescription),"successDelay"in d&&r(4,i=d.successDelay)},[s,l,a,o,i,m,p,c,h]}class Za extends le{constructor(e){super(),ae(this,e,Qa,Xa,ne,{status:0,description:1,iconDescription:2,successDelay:4})}}const xa=Za;function Fn(t){let e;return{c(){e=N("span"),this.h()},l(r){e=F(r,"SPAN",{}),w(e).forEach(v),this.h()},h(){y(e,"bx--label",!0),y(e,"bx--skeleton",!0)},m(r,n){C(r,e,n)},d(r){r&&v(e)}}}function es(t){let e,r,n,o,s,l,a=!t[0]&&Fn(),i=[t[1]],f={};for(let u=0;u{e=U(U({},e),ce(u)),r(1,o=te(e,n)),"hideLabel"in u&&r(0,s=u.hideLabel)},[s,o,l,a,i,f]}class rs extends le{constructor(e){super(),ae(this,e,ts,es,ne,{hideLabel:0})}}const ns=rs;function os(t){let e,r;const n=t[4].default,o=Ne(n,t,t[3],null);let s=[{label:t[1]},{disabled:t[0]},t[2]],l={};for(let a=0;a{e=U(U({},e),ce(f)),r(2,o=te(e,n)),"disabled"in f&&r(0,a=f.disabled),"label"in f&&r(1,i=f.label),"$$scope"in f&&r(3,l=f.$$scope)},[a,i,o,l,s]}class ls extends le{constructor(e){super(),ae(this,e,is,os,ne,{disabled:0,label:1})}}const Ri=ls;function as(t){let e,r,n,o=[t[1]],s={};for(let l=0;l{e=U(U({},e),ce(u)),r(1,o=te(e,n)),"size"in u&&r(0,s=u.size)},[s,o,l,a,i,f]}class fs extends le{constructor(e){super(),ae(this,e,ss,as,ne,{size:0})}}const us=fs,cs=t=>({}),qn=t=>({}),ps=t=>({}),$n=t=>({props:{class:"bx--tag__label"}}),ms=t=>({}),Vn=t=>({props:{class:"bx--tag__label"}});function ds(t){let e,r,n,o,s,l,a=(t[11].icon||t[7])&&Rn(t);const i=t[13].default,f=Ne(i,t,t[12],null);let u=[{id:t[8]},t[10]],m={};for(let p=0;p{a=null}),x()),f&&f.p&&(!o||c&4096)&&Fe(f,i,p,p[12],o?$e(i,p[12],c,null):qe(p[12]),null),ie(e,m=pe(u,[(!o||c&256)&&{id:p[8]},c&1024&&p[10]])),y(e,"bx--tag",!0),y(e,"bx--tag--disabled",p[3]),y(e,"bx--tag--sm",p[1]==="sm"),y(e,"bx--tag--red",p[0]==="red"),y(e,"bx--tag--magenta",p[0]==="magenta"),y(e,"bx--tag--purple",p[0]==="purple"),y(e,"bx--tag--blue",p[0]==="blue"),y(e,"bx--tag--cyan",p[0]==="cyan"),y(e,"bx--tag--teal",p[0]==="teal"),y(e,"bx--tag--green",p[0]==="green"),y(e,"bx--tag--gray",p[0]==="gray"),y(e,"bx--tag--cool-gray",p[0]==="cool-gray"),y(e,"bx--tag--warm-gray",p[0]==="warm-gray"),y(e,"bx--tag--high-contrast",p[0]==="high-contrast"),y(e,"bx--tag--outline",p[0]==="outline")},i(p){o||(b(a),b(f,p),o=!0)},o(p){k(a),k(f,p),o=!1},d(p){p&&v(e),a&&a.d(),f&&f.d(p),s=!1,Le(l)}}}function gs(t){let e,r,n,o,s,l,a,i=(t[11].icon||t[7])&&Ln(t);const f=t[13].default,u=Ne(f,t,t[12],null);let m=[{type:"button"},{id:t[8]},{disabled:t[3]},{"aria-disabled":t[3]},{tabindex:o=t[3]?"-1":void 0},t[10]],p={};for(let c=0;c{i=null}),x()),u&&u.p&&(!s||h&4096)&&Fe(u,f,c,c[12],s?$e(f,c[12],h,null):qe(c[12]),null),ie(e,p=pe(m,[{type:"button"},(!s||h&256)&&{id:c[8]},(!s||h&8)&&{disabled:c[3]},(!s||h&8)&&{"aria-disabled":c[3]},(!s||h&8&&o!==(o=c[3]?"-1":void 0))&&{tabindex:o},h&1024&&c[10]])),y(e,"bx--tag",!0),y(e,"bx--tag--interactive",!0),y(e,"bx--tag--disabled",c[3]),y(e,"bx--tag--sm",c[1]==="sm"),y(e,"bx--tag--red",c[0]==="red"),y(e,"bx--tag--magenta",c[0]==="magenta"),y(e,"bx--tag--purple",c[0]==="purple"),y(e,"bx--tag--blue",c[0]==="blue"),y(e,"bx--tag--cyan",c[0]==="cyan"),y(e,"bx--tag--teal",c[0]==="teal"),y(e,"bx--tag--green",c[0]==="green"),y(e,"bx--tag--gray",c[0]==="gray"),y(e,"bx--tag--cool-gray",c[0]==="cool-gray"),y(e,"bx--tag--warm-gray",c[0]==="warm-gray"),y(e,"bx--tag--high-contrast",c[0]==="high-contrast"),y(e,"bx--tag--outline",c[0]==="outline")},i(c){s||(b(i),b(u,c),s=!0)},o(c){k(i),k(u,c),s=!1},d(c){c&&v(e),i&&i.d(),u&&u.d(c),l=!1,Le(a)}}}function hs(t){let e,r,n,o,s,l,a;const i=t[13].default,f=Ne(i,t,t[12],Vn),u=f||_s(t);o=new qi({});let m=[{"aria-label":t[6]},{id:t[8]},t[10]],p={};for(let c=0;c{j(i,1)}),x()}o?(e=zt(o,s()),D(e.$$.fragment),b(e.$$.fragment,1),M(e,r.parentNode,r)):e=null}},i(l){n||(e&&b(e.$$.fragment,l),n=!0)},o(l){e&&k(e.$$.fragment,l),n=!1},d(l){l&&v(r),e&&j(e,l)}}}function Ln(t){let e,r;const n=t[13].icon,o=Ne(n,t,t[12],$n),s=o||bs(t);return{c(){e=N("div"),s&&s.c(),this.h()},l(l){e=F(l,"DIV",{});var a=w(e);s&&s.l(a),a.forEach(v),this.h()},h(){y(e,"bx--tag__custom-icon",!0)},m(l,a){C(l,e,a),s&&s.m(e,null),r=!0},p(l,a){o?o.p&&(!r||a&4096)&&Fe(o,n,l,l[12],r?$e(n,l[12],a,ps):qe(l[12]),$n):s&&s.p&&(!r||a&128)&&s.p(l,r?a:-1)},i(l){r||(b(s,l),r=!0)},o(l){k(s,l),r=!1},d(l){l&&v(e),s&&s.d(l)}}}function bs(t){let e,r,n;var o=t[7];function s(l){return{}}return o&&(e=zt(o,s())),{c(){e&&D(e.$$.fragment),r=Q()},l(l){e&&q(e.$$.fragment,l),r=Q()},m(l,a){e&&M(e,l,a),C(l,r,a),n=!0},p(l,a){if(a&128&&o!==(o=l[7])){if(e){Z();const i=e;k(i.$$.fragment,1,0,()=>{j(i,1)}),x()}o?(e=zt(o,s()),D(e.$$.fragment),b(e.$$.fragment,1),M(e,r.parentNode,r)):e=null}},i(l){n||(e&&b(e.$$.fragment,l),n=!0)},o(l){e&&k(e.$$.fragment,l),n=!1},d(l){l&&v(r),e&&j(e,l)}}}function _s(t){let e,r;return{c(){e=N("span"),r=se(t[0]),this.h()},l(n){e=F(n,"SPAN",{});var o=w(e);r=fe(o,t[0]),o.forEach(v),this.h()},h(){y(e,"bx--tag__label",!0)},m(n,o){C(n,e,o),I(e,r)},p(n,o){o&1&&ve(r,n[0])},d(n){n&&v(e)}}}function Ss(t){let e,r,n,o;const s=[ys,hs,gs,ds],l=[];function a(i,f){return i[5]?0:i[2]?1:i[4]?2:3}return e=a(t),r=l[e]=s[e](t),{c(){r.c(),n=Q()},l(i){r.l(i),n=Q()},m(i,f){l[e].m(i,f),C(i,n,f),o=!0},p(i,[f]){let u=e;e=a(i),e===u?l[e].p(i,f):(Z(),k(l[u],1,1,()=>{l[u]=null}),x(),r=l[e],r?r.p(i,f):(r=l[e]=s[e](i),r.c()),b(r,1),r.m(n.parentNode,n))},i(i){o||(b(r),o=!0)},o(i){k(r),o=!1},d(i){l[e].d(i),i&&v(n)}}}function ks(t,e,r){const n=["type","size","filter","disabled","interactive","skeleton","title","icon","id"];let o=te(e,n),{$$slots:s={},$$scope:l}=e;const a=ea(s);let{type:i=void 0}=e,{size:f="default"}=e,{filter:u=!1}=e,{disabled:m=!1}=e,{interactive:p=!1}=e,{skeleton:c=!1}=e,{title:h="Clear filter"}=e,{icon:d=void 0}=e,{id:g="ccs-"+Math.random().toString(36)}=e;const _=He();function E($){G.call(this,t,$)}function S($){G.call(this,t,$)}function A($){G.call(this,t,$)}function z($){G.call(this,t,$)}function R($){G.call(this,t,$)}function B($){G.call(this,t,$)}function L($){G.call(this,t,$)}function oe($){G.call(this,t,$)}function P($){G.call(this,t,$)}function re($){G.call(this,t,$)}function be($){G.call(this,t,$)}function _e($){G.call(this,t,$)}function Se($){G.call(this,t,$)}function Ue($){G.call(this,t,$)}function we($){G.call(this,t,$)}function ke($){G.call(this,t,$)}const ee=()=>{_("close")};return t.$$set=$=>{e=U(U({},e),ce($)),r(10,o=te(e,n)),"type"in $&&r(0,i=$.type),"size"in $&&r(1,f=$.size),"filter"in $&&r(2,u=$.filter),"disabled"in $&&r(3,m=$.disabled),"interactive"in $&&r(4,p=$.interactive),"skeleton"in $&&r(5,c=$.skeleton),"title"in $&&r(6,h=$.title),"icon"in $&&r(7,d=$.icon),"id"in $&&r(8,g=$.id),"$$scope"in $&&r(12,l=$.$$scope)},[i,f,u,m,p,c,h,d,g,_,o,a,l,s,E,S,A,z,R,B,L,oe,P,re,be,_e,Se,Ue,we,ke,ee]}class Os extends le{constructor(e){super(),ae(this,e,ks,Ss,ne,{type:0,size:1,filter:2,disabled:3,interactive:4,skeleton:5,title:6,icon:7,id:8})}}const Es=Os;class ct{static getConcepts(){return Be(De,{method:"GET",url:"/api/v1/concepts/"})}static getConcept(e,r,n){return Be(De,{method:"GET",url:"/api/v1/concepts/{namespace}/{concept_name}",path:{namespace:e,concept_name:r},query:{draft:n},errors:{422:"Validation Error"}})}static editConcept(e,r,n){return Be(De,{method:"POST",url:"/api/v1/concepts/{namespace}/{concept_name}",path:{namespace:e,concept_name:r},body:n,mediaType:"application/json",errors:{422:"Validation Error"}})}static deleteConcept(e,r){return Be(De,{method:"DELETE",url:"/api/v1/concepts/{namespace}/{concept_name}",path:{namespace:e,concept_name:r},errors:{422:"Validation Error"}})}static createConcept(e){return Be(De,{method:"POST",url:"/api/v1/concepts/create",body:e,mediaType:"application/json",errors:{422:"Validation Error"}})}static mergeConceptDraft(e,r,n){return Be(De,{method:"POST",url:"/api/v1/concepts/{namespace}/{concept_name}/merge_draft",path:{namespace:e,concept_name:r},body:n,mediaType:"application/json",errors:{422:"Validation Error"}})}static getConceptModel(e,r,n,o=!1){return Be(De,{method:"GET",url:"/api/v1/concepts/{namespace}/{concept_name}/{embedding_name}",path:{namespace:e,concept_name:r,embedding_name:n},query:{sync_model:o},errors:{422:"Validation Error"}})}static score(e,r,n,o){return Be(De,{method:"POST",url:"/api/v1/concepts/{namespace}/{concept_name}/{embedding_name}/score",path:{namespace:e,concept_name:r,embedding_name:n},body:o,mediaType:"application/json",errors:{422:"Validation Error"}})}static generateExamples(e){return Be(De,{method:"GET",url:"/api/v1/concepts/generate_examples",query:{description:e},errors:{422:"Validation Error"}})}}class Li{static getSignals(){return Be(De,{method:"GET",url:"/api/v1/signals/"})}static getEmbeddings(){return Be(De,{method:"GET",url:"/api/v1/signals/embeddings"})}}function Wn(t){let e,r;return{c(){e=Oe("title"),r=se(t[1])},l(n){e=Ee(n,"title",{});var o=w(e);r=fe(o,t[1]),o.forEach(v)},m(n,o){C(n,e,o),I(e,r)},p(n,o){o&2&&ve(r,n[1])},d(n){n&&v(e)}}}function As(t){let e,r,n=t[1]&&Wn(t),o=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:t[0]},{height:t[0]},t[2],t[3]],s={};for(let l=0;l{r(5,e=U(U({},e),ce(f))),r(3,l=te(e,s)),"size"in f&&r(0,a=f.size),"title"in f&&r(1,i=f.title)},t.$$.update=()=>{r(4,n=e["aria-label"]||e["aria-labelledby"]||i),r(2,o={"aria-hidden":n?void 0:!0,role:n?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=ce(e),[a,i,o,l,n]}class Ts extends le{constructor(e){super(),ae(this,e,Cs,As,ne,{size:0,title:1})}}function zn(t){let e,r;return{c(){e=Oe("title"),r=se(t[1])},l(n){e=Ee(n,"title",{});var o=w(e);r=fe(o,t[1]),o.forEach(v)},m(n,o){C(n,e,o),I(e,r)},p(n,o){o&2&&ve(r,n[1])},d(n){n&&v(e)}}}function ws(t){let e,r,n,o=t[1]&&zn(t),s=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:t[0]},{height:t[0]},t[2],t[3]],l={};for(let a=0;a{r(5,e=U(U({},e),ce(f))),r(3,l=te(e,s)),"size"in f&&r(0,a=f.size),"title"in f&&r(1,i=f.title)},t.$$.update=()=>{r(4,n=e["aria-label"]||e["aria-labelledby"]||i),r(2,o={"aria-hidden":n?void 0:!0,role:n?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=ce(e),[a,i,o,l,n]}class Is extends le{constructor(e){super(),ae(this,e,Ps,ws,ne,{size:0,title:1})}}function Un(t){let e,r;return{c(){e=Oe("title"),r=se(t[1])},l(n){e=Ee(n,"title",{});var o=w(e);r=fe(o,t[1]),o.forEach(v)},m(n,o){C(n,e,o),I(e,r)},p(n,o){o&2&&ve(r,n[1])},d(n){n&&v(e)}}}function Bs(t){let e,r,n=t[1]&&Un(t),o=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:t[0]},{height:t[0]},t[2],t[3]],s={};for(let l=0;l{r(5,e=U(U({},e),ce(f))),r(3,l=te(e,s)),"size"in f&&r(0,a=f.size),"title"in f&&r(1,i=f.title)},t.$$.update=()=>{r(4,n=e["aria-label"]||e["aria-labelledby"]||i),r(2,o={"aria-hidden":n?void 0:!0,role:n?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=ce(e),[a,i,o,l,n]}class $d extends le{constructor(e){super(),ae(this,e,Ds,Bs,ne,{size:0,title:1})}}function Gn(t){let e,r;return{c(){e=Oe("title"),r=se(t[1])},l(n){e=Ee(n,"title",{});var o=w(e);r=fe(o,t[1]),o.forEach(v)},m(n,o){C(n,e,o),I(e,r)},p(n,o){o&2&&ve(r,n[1])},d(n){n&&v(e)}}}function Ms(t){let e,r,n=t[1]&&Gn(t),o=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:t[0]},{height:t[0]},t[2],t[3]],s={};for(let l=0;l{r(5,e=U(U({},e),ce(f))),r(3,l=te(e,s)),"size"in f&&r(0,a=f.size),"title"in f&&r(1,i=f.title)},t.$$.update=()=>{r(4,n=e["aria-label"]||e["aria-labelledby"]||i),r(2,o={"aria-hidden":n?void 0:!0,role:n?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=ce(e),[a,i,o,l,n]}class Vd extends le{constructor(e){super(),ae(this,e,js,Ms,ne,{size:0,title:1})}}const Tt="concepts",Rd=ir(ct.getConcept,Tt),Ns=ir(ct.getConcepts,Tt),Fs=an(ct.createConcept,{onSuccess:()=>{Ut.invalidateQueries([Tt])}}),qs=an(ct.editConcept,{onSuccess:()=>{Ut.invalidateQueries([Tt]),Ut.invalidateQueries([ia,"selectRows"])}}),Ld=an(ct.deleteConcept,{onSuccess:()=>Ut.invalidateQueries([Tt])});function Hn(t,e,r){const n=t.slice();return n[20]=e[r],n[21]=e,n[22]=r,n}function $s(t){let e,r,n,o;return n=new xa({}),{c(){e=se(`Generate + `),r=N("span"),D(n.$$.fragment),this.h()},l(s){e=fe(s,`Generate + `),r=F(s,"SPAN",{class:!0});var l=w(r);q(n.$$.fragment,l),l.forEach(v),this.h()},h(){V(r,"class","ml-2"),y(r,"invisible",!t[3])},m(s,l){C(s,e,l),C(s,r,l),M(n,r,null),o=!0},p(s,l){(!o||l&8)&&y(r,"invisible",!s[3])},i(s){o||(b(n.$$.fragment,s),o=!0)},o(s){k(n.$$.fragment,s),o=!1},d(s){s&&v(e),s&&v(r),j(n)}}}function Jn(t){let e,r,n=t[22]+1+"",o,s,l,a,i,f,u,m,p,c;function h(_){t[14](_,t[22])}let d={};t[4][t[22]]!==void 0&&(d.value=t[4][t[22]]),a=new bt({props:d}),ge.push(()=>Ce(a,"value",h));function g(){return t[15](t[22])}return m=new At({props:{kind:"ghost",icon:Ts,expressive:!0,iconDescription:"Remove example",tooltipPosition:"top",tooltipAlignment:"end"}}),m.$on("click",g),{c(){e=N("div"),r=N("div"),o=se(n),s=Y(),l=N("div"),D(a.$$.fragment),f=Y(),u=N("div"),D(m.$$.fragment),p=Y(),this.h()},l(_){e=F(_,"DIV",{class:!0});var E=w(e);r=F(E,"DIV",{class:!0});var S=w(r);o=fe(S,n),S.forEach(v),s=K(E),l=F(E,"DIV",{class:!0});var A=w(l);q(a.$$.fragment,A),A.forEach(v),f=K(E),u=F(E,"DIV",{});var z=w(u);q(m.$$.fragment,z),z.forEach(v),p=K(E),E.forEach(v),this.h()},h(){V(r,"class","w-8 shrink-0 text-lg"),V(l,"class","grow"),V(e,"class","mb-4 flex flex-row")},m(_,E){C(_,e,E),I(e,r),I(r,o),I(e,s),I(e,l),M(a,l,null),I(e,f),I(e,u),M(m,u,null),I(e,p),c=!0},p(_,E){t=_;const S={};!i&&E&16&&(i=!0,S.value=t[4][t[22]],Te(()=>i=!1)),a.$set(S)},i(_){c||(b(a.$$.fragment,_),b(m.$$.fragment,_),c=!0)},o(_){k(a.$$.fragment,_),k(m.$$.fragment,_),c=!1},d(_){_&&v(e),j(a),j(m)}}}function Vs(t){let e,r,n,o,s,l,a,i,f,u,m,p,c,h,d,g,_,E,S,A,z,R,B,L,oe,P;function re(O){t[11](O)}let be={labelText:"namespace"};t[0]!==void 0&&(be.value=t[0]),r=new bt({props:be}),ge.push(()=>Ce(r,"value",re));function _e(O){t[12](O)}let Se={labelText:"name",required:!0};t[1]!==void 0&&(Se.value=t[1]),s=new bt({props:Se}),ge.push(()=>Ce(s,"value",_e));function Ue(O){t[13](O)}let we={labelText:"Concept description",helperText:"This will be used by an LLM to generate example sentences.",placeholder:"Enter the concept description..."};t[2]!==void 0&&(we.value=t[2]),f=new bt({props:we}),ge.push(()=>Ce(f,"value",Ue)),c=new At({props:{disabled:!t[2]||t[3],$$slots:{default:[$s]},$$scope:{ctx:t}}}),c.$on("click",t[8]);let ke=t[4]||[],ee=[];for(let O=0;Ok(ee[O],1,1,()=>{ee[O]=null});return{c(){e=N("div"),D(r.$$.fragment),o=Y(),D(s.$$.fragment),a=Y(),i=N("div"),D(f.$$.fragment),m=Y(),p=N("div"),D(c.$$.fragment),h=Y(),d=N("div"),g=se("Add positive examples"),_=Y(),E=N("div"),S=N("div");for(let O=0;O0)},m(O,J){C(O,e,J),M(r,e,null),I(e,o),M(s,e,null),C(O,a,J),C(O,i,J),M(f,i,null),I(i,m),I(i,p),M(c,p,null),C(O,h,J),C(O,d,J),I(d,g),C(O,_,J),C(O,E,J),I(E,S);for(let T=0;Tn=!1)),r.$set(T);const Pe={};!l&&J&2&&(l=!0,Pe.value=O[1],Te(()=>l=!1)),s.$set(Pe);const mt={};!u&&J&4&&(u=!0,mt.value=O[2],Te(()=>u=!1)),f.$set(mt);const Ye={};if(J&12&&(Ye.disabled=!O[2]||O[3]),J&8388616&&(Ye.$$scope={dirty:J,ctx:O}),c.$set(Ye),J&16){ke=O[4]||[];let me;for(me=0;me0)},i(O){if(!L){b(r.$$.fragment,O),b(s.$$.fragment,O),b(f.$$.fragment,O),b(c.$$.fragment,O);for(let J=0;Jr(18,o=B));const m=qs();he(t,m,B=>r(17,n=B));const p=He();let c=[""];function h(){o.mutate([{namespace:l,name:a,type:"text"}],{onSuccess:()=>{n.mutate([l,a,{insert:c.filter(B=>B!="").map(B=>({text:B,label:!0}))}],{onSuccess:()=>{p("create",{namespace:l,name:a}),g()}})}})}async function d(){if(!i)return;r(3,f=!0);const B=await ct.generateExamples(i);r(3,f=!1),c.at(-1)===""&&c.pop(),c.push(...B),r(4,c)}function g(){p("close")}function _(B){l=B,r(0,l)}function E(B){a=B,r(1,a)}function S(B){i=B,r(2,i)}function A(B,L){t.$$.not_equal(c[L],B)&&(c[L]=B,r(4,c))}const z=B=>{c.splice(B,1),r(4,c)},R=()=>{r(4,c=[...c||[],""])};return t.$$set=B=>{"command"in B&&r(10,s=B.command)},[l,a,i,f,c,u,m,h,d,g,s,_,E,S,A,z,R]}class zs extends le{constructor(e){super(),ae(this,e,Ws,Ls,ne,{command:10})}}var Yn=Object.prototype.toString,Wi=function(e){var r=Yn.call(e),n=r==="[object Arguments]";return n||(n=r!=="[object Array]"&&e!==null&&typeof e=="object"&&typeof e.length=="number"&&e.length>=0&&Yn.call(e.callee)==="[object Function]"),n},pr,Kn;function Us(){if(Kn)return pr;Kn=1;var t;if(!Object.keys){var e=Object.prototype.hasOwnProperty,r=Object.prototype.toString,n=Wi,o=Object.prototype.propertyIsEnumerable,s=!o.call({toString:null},"toString"),l=o.call(function(){},"prototype"),a=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],i=function(p){var c=p.constructor;return c&&c.prototype===p},f={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},u=function(){if(typeof window>"u")return!1;for(var p in window)try{if(!f["$"+p]&&e.call(window,p)&&window[p]!==null&&typeof window[p]=="object")try{i(window[p])}catch{return!0}}catch{return!0}return!1}(),m=function(p){if(typeof window>"u"||!u)return i(p);try{return i(p)}catch{return!1}};t=function(c){var h=c!==null&&typeof c=="object",d=r.call(c)==="[object Function]",g=n(c),_=h&&r.call(c)==="[object String]",E=[];if(!h&&!d&&!g)throw new TypeError("Object.keys called on a non-object");var S=l&&d;if(_&&c.length>0&&!e.call(c,0))for(var A=0;A0)for(var z=0;z"u"||!de?X:de(Uint8Array),tt={"%AggregateError%":typeof AggregateError>"u"?X:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?X:ArrayBuffer,"%ArrayIteratorPrototype%":nt&&de?de([][Symbol.iterator]()):X,"%AsyncFromSyncIteratorPrototype%":X,"%AsyncFunction%":ot,"%AsyncGenerator%":ot,"%AsyncGeneratorFunction%":ot,"%AsyncIteratorPrototype%":ot,"%Atomics%":typeof Atomics>"u"?X:Atomics,"%BigInt%":typeof BigInt>"u"?X:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?X:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?X:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?X:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?X:Float32Array,"%Float64Array%":typeof Float64Array>"u"?X:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?X:FinalizationRegistry,"%Function%":Ui,"%GeneratorFunction%":ot,"%Int8Array%":typeof Int8Array>"u"?X:Int8Array,"%Int16Array%":typeof Int16Array>"u"?X:Int16Array,"%Int32Array%":typeof Int32Array>"u"?X:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":nt&&de?de(de([][Symbol.iterator]())):X,"%JSON%":typeof JSON=="object"?JSON:X,"%Map%":typeof Map>"u"?X:Map,"%MapIteratorPrototype%":typeof Map>"u"||!nt||!de?X:de(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?X:Promise,"%Proxy%":typeof Proxy>"u"?X:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?X:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?X:Set,"%SetIteratorPrototype%":typeof Set>"u"||!nt||!de?X:de(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?X:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":nt&&de?de(""[Symbol.iterator]()):X,"%Symbol%":nt?Symbol:X,"%SyntaxError%":st,"%ThrowTypeError%":rf,"%TypedArray%":of,"%TypeError%":lt,"%Uint8Array%":typeof Uint8Array>"u"?X:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?X:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?X:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?X:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?X:WeakMap,"%WeakRef%":typeof WeakRef>"u"?X:WeakRef,"%WeakSet%":typeof WeakSet>"u"?X:WeakSet};if(de)try{null.error}catch(t){var lf=de(de(t));tt["%Error.prototype%"]=lf}var af=function t(e){var r;if(e==="%AsyncFunction%")r=gr("async function () {}");else if(e==="%GeneratorFunction%")r=gr("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=gr("async function* () {}");else if(e==="%AsyncGenerator%"){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var o=t("%AsyncGenerator%");o&&de&&(r=de(o.prototype))}return tt[e]=r,r},to={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},wt=gn,Ht=zi,sf=wt.call(Function.call,Array.prototype.concat),ff=wt.call(Function.apply,Array.prototype.splice),ro=wt.call(Function.call,String.prototype.replace),Jt=wt.call(Function.call,String.prototype.slice),uf=wt.call(Function.call,RegExp.prototype.exec),cf=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,pf=/\\(\\)?/g,mf=function(e){var r=Jt(e,0,1),n=Jt(e,-1);if(r==="%"&&n!=="%")throw new st("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new st("invalid intrinsic syntax, expected opening `%`");var o=[];return ro(e,cf,function(s,l,a,i){o[o.length]=a?ro(i,pf,"$1"):l||s}),o},df=function(e,r){var n=e,o;if(Ht(to,n)&&(o=to[n],n="%"+o[0]+"%"),Ht(tt,n)){var s=tt[n];if(s===ot&&(s=af(n)),typeof s>"u"&&!r)throw new lt("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:o,name:n,value:s}}throw new st("intrinsic "+e+" does not exist!")},We=function(e,r){if(typeof e!="string"||e.length===0)throw new lt("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new lt('"allowMissing" argument must be a boolean');if(uf(/^%?[^%]*%?$/,e)===null)throw new st("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=mf(e),o=n.length>0?n[0]:"",s=df("%"+o+"%",r),l=s.name,a=s.value,i=!1,f=s.alias;f&&(o=f[0],ff(n,sf([0,1],f)));for(var u=1,m=!0;u=n.length){var d=et(a,p);m=!!d,m&&"get"in d&&!("originalValue"in d.get)?a=d.get:a=a[p]}else m=Ht(a,p),a=a[p];m&&!i&&(tt[l]=a)}}return a},gf=We,qr=gf("%Object.defineProperty%",!0),$r=function(){if(qr)try{return qr({},"a",{value:1}),!0}catch{return!1}return!1};$r.hasArrayLengthDefineBug=function(){if(!$r())return null;try{return qr([],"length",{value:1}).length!==1}catch{return!0}};var hf=$r,yf=mn,vf=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",bf=Object.prototype.toString,_f=Array.prototype.concat,Gi=Object.defineProperty,Sf=function(t){return typeof t=="function"&&bf.call(t)==="[object Function]"},kf=hf(),Hi=Gi&&kf,Of=function(t,e,r,n){if(e in t){if(n===!0){if(t[e]===r)return}else if(!Sf(n)||!n())return}Hi?Gi(t,e,{configurable:!0,enumerable:!1,value:r,writable:!0}):t[e]=r},Ji=function(t,e){var r=arguments.length>2?arguments[2]:{},n=yf(e);vf&&(n=_f.call(n,Object.getOwnPropertySymbols(e)));for(var o=0;o-1?Xi(n):n},Af=mn,Qi=ar()(),Zi=Ae,no=Object,Cf=Zi("Array.prototype.push"),oo=Zi("Object.prototype.propertyIsEnumerable"),Tf=Qi?Object.getOwnPropertySymbols:null,xi=function(e,r){if(e==null)throw new TypeError("target must be an object");var n=no(e);if(arguments.length===1)return n;for(var o=1;o=0&&Vr(e)!=="[object Array]"&&Vr(e.callee)==="[object Function]"},iu=function(){return sr(arguments)}();sr.isLegacyArguments=sl;var fl=iu?sr:sl;const lu={},au=Object.freeze(Object.defineProperty({__proto__:null,default:lu},Symbol.toStringTag,{value:"Module"})),su=ma(au);var hn=typeof Map=="function"&&Map.prototype,vr=Object.getOwnPropertyDescriptor&&hn?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Yt=hn&&vr&&typeof vr.get=="function"?vr.get:null,lo=hn&&Map.prototype.forEach,yn=typeof Set=="function"&&Set.prototype,br=Object.getOwnPropertyDescriptor&&yn?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Kt=yn&&br&&typeof br.get=="function"?br.get:null,ao=yn&&Set.prototype.forEach,fu=typeof WeakMap=="function"&&WeakMap.prototype,St=fu?WeakMap.prototype.has:null,uu=typeof WeakSet=="function"&&WeakSet.prototype,kt=uu?WeakSet.prototype.has:null,cu=typeof WeakRef=="function"&&WeakRef.prototype,so=cu?WeakRef.prototype.deref:null,pu=Boolean.prototype.valueOf,mu=Object.prototype.toString,du=Function.prototype.toString,gu=String.prototype.match,vn=String.prototype.slice,Xe=String.prototype.replace,hu=String.prototype.toUpperCase,fo=String.prototype.toLowerCase,ul=RegExp.prototype.test,uo=Array.prototype.concat,Re=Array.prototype.join,yu=Array.prototype.slice,co=Math.floor,Rr=typeof BigInt=="function"?BigInt.prototype.valueOf:null,_r=Object.getOwnPropertySymbols,Lr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,ft=typeof Symbol=="function"&&typeof Symbol.iterator=="object",ye=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===ft||"symbol")?Symbol.toStringTag:null,cl=Object.prototype.propertyIsEnumerable,po=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function mo(t,e){if(t===1/0||t===-1/0||t!==t||t&&t>-1e3&&t<1e3||ul.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof t=="number"){var n=t<0?-co(-t):co(t);if(n!==t){var o=String(n),s=vn.call(e,o.length+1);return Xe.call(o,r,"$&_")+"."+Xe.call(Xe.call(s,/([0-9]{3})/g,"$&_"),/_$/,"")}}return Xe.call(e,r,"$&_")}var Wr=su,go=Wr.custom,ho=ml(go)?go:null,vu=function t(e,r,n,o){var s=r||{};if(Ke(s,"quoteStyle")&&s.quoteStyle!=="single"&&s.quoteStyle!=="double")throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Ke(s,"maxStringLength")&&(typeof s.maxStringLength=="number"?s.maxStringLength<0&&s.maxStringLength!==1/0:s.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=Ke(s,"customInspect")?s.customInspect:!0;if(typeof l!="boolean"&&l!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Ke(s,"indent")&&s.indent!==null&&s.indent!==" "&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(Ke(s,"numericSeparator")&&typeof s.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var a=s.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return gl(e,s);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var i=String(e);return a?mo(e,i):i}if(typeof e=="bigint"){var f=String(e)+"n";return a?mo(e,f):f}var u=typeof s.depth>"u"?5:s.depth;if(typeof n>"u"&&(n=0),n>=u&&u>0&&typeof e=="object")return zr(e)?"[Array]":"[Object]";var m=Fu(s,n);if(typeof o>"u")o=[];else if(dl(o,e)>=0)return"[Circular]";function p(_e,Se,Ue){if(Se&&(o=yu.call(o),o.push(Se)),Ue){var we={depth:s.depth};return Ke(s,"quoteStyle")&&(we.quoteStyle=s.quoteStyle),t(_e,we,n+1,o)}return t(_e,s,n+1,o)}if(typeof e=="function"&&!yo(e)){var c=Tu(e),h=Bt(e,p);return"[Function"+(c?": "+c:" (anonymous)")+"]"+(h.length>0?" { "+Re.call(h,", ")+" }":"")}if(ml(e)){var d=ft?Xe.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):Lr.call(e);return typeof e=="object"&&!ft?ht(d):d}if(Mu(e)){for(var g="<"+fo.call(String(e.nodeName)),_=e.attributes||[],E=0;E<_.length;E++)g+=" "+_[E].name+"="+pl(bu(_[E].value),"double",s);return g+=">",e.childNodes&&e.childNodes.length&&(g+="..."),g+="",g}if(zr(e)){if(e.length===0)return"[]";var S=Bt(e,p);return m&&!Nu(S)?"["+Ur(S,m)+"]":"[ "+Re.call(S,", ")+" ]"}if(Su(e)){var A=Bt(e,p);return!("cause"in Error.prototype)&&"cause"in e&&!cl.call(e,"cause")?"{ ["+String(e)+"] "+Re.call(uo.call("[cause]: "+p(e.cause),A),", ")+" }":A.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+Re.call(A,", ")+" }"}if(typeof e=="object"&&l){if(ho&&typeof e[ho]=="function"&&Wr)return Wr(e,{depth:u-n});if(l!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(wu(e)){var z=[];return lo&&lo.call(e,function(_e,Se){z.push(p(Se,e,!0)+" => "+p(_e,e))}),vo("Map",Yt.call(e),z,m)}if(Bu(e)){var R=[];return ao&&ao.call(e,function(_e){R.push(p(_e,e))}),vo("Set",Kt.call(e),R,m)}if(Pu(e))return Sr("WeakMap");if(Du(e))return Sr("WeakSet");if(Iu(e))return Sr("WeakRef");if(Ou(e))return ht(p(Number(e)));if(Au(e))return ht(p(Rr.call(e)));if(Eu(e))return ht(pu.call(e));if(ku(e))return ht(p(String(e)));if(!_u(e)&&!yo(e)){var B=Bt(e,p),L=po?po(e)===Object.prototype:e instanceof Object||e.constructor===Object,oe=e instanceof Object?"":"null prototype",P=!L&&ye&&Object(e)===e&&ye in e?vn.call(xe(e),8,-1):oe?"Object":"",re=L||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",be=re+(P||oe?"["+Re.call(uo.call([],P||[],oe||[]),": ")+"] ":"");return B.length===0?be+"{}":m?be+"{"+Ur(B,m)+"}":be+"{ "+Re.call(B,", ")+" }"}return String(e)};function pl(t,e,r){var n=(r.quoteStyle||e)==="double"?'"':"'";return n+t+n}function bu(t){return Xe.call(String(t),/"/g,""")}function zr(t){return xe(t)==="[object Array]"&&(!ye||!(typeof t=="object"&&ye in t))}function _u(t){return xe(t)==="[object Date]"&&(!ye||!(typeof t=="object"&&ye in t))}function yo(t){return xe(t)==="[object RegExp]"&&(!ye||!(typeof t=="object"&&ye in t))}function Su(t){return xe(t)==="[object Error]"&&(!ye||!(typeof t=="object"&&ye in t))}function ku(t){return xe(t)==="[object String]"&&(!ye||!(typeof t=="object"&&ye in t))}function Ou(t){return xe(t)==="[object Number]"&&(!ye||!(typeof t=="object"&&ye in t))}function Eu(t){return xe(t)==="[object Boolean]"&&(!ye||!(typeof t=="object"&&ye in t))}function ml(t){if(ft)return t&&typeof t=="object"&&t instanceof Symbol;if(typeof t=="symbol")return!0;if(!t||typeof t!="object"||!Lr)return!1;try{return Lr.call(t),!0}catch{}return!1}function Au(t){if(!t||typeof t!="object"||!Rr)return!1;try{return Rr.call(t),!0}catch{}return!1}var Cu=Object.prototype.hasOwnProperty||function(t){return t in this};function Ke(t,e){return Cu.call(t,e)}function xe(t){return mu.call(t)}function Tu(t){if(t.name)return t.name;var e=gu.call(du.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function dl(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return gl(vn.call(t,0,e.maxStringLength),e)+n}var o=Xe.call(Xe.call(t,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,ju);return pl(o,"single",e)}function ju(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+hu.call(e.toString(16))}function ht(t){return"Object("+t+")"}function Sr(t){return t+" { ? }"}function vo(t,e,r,n){var o=n?Ur(r,n):Re.call(r,", ");return t+" ("+e+") {"+o+"}"}function Nu(t){for(var e=0;e=0)return!1;return!0}function Fu(t,e){var r;if(t.indent===" ")r=" ";else if(typeof t.indent=="number"&&t.indent>0)r=Re.call(Array(t.indent+1)," ");else return null;return{base:r,prev:Re.call(Array(e+1),r)}}function Ur(t,e){if(t.length===0)return"";var r=` +`+e.prev+e.base;return r+Re.call(t,","+r)+` +`+e.prev}function Bt(t,e){var r=zr(t),n=[];if(r){n.length=t.length;for(var o=0;o=n)return r+1;var o=Co(e,r);if(o<55296||o>56319)return r+1;var s=Co(e,r+1);return s<56320||s>57343?r+1:r+2},Or=function(e){var r=0;return{next:function(){var o=r>=e.length,s;return o||(s=e[r],r+=1),{done:o,value:s}}}},To=function(e,r){if(ac(e)||ko(e))return Or(e);if(sc(e)){var n=0;return{next:function(){var s=pc(e,n),l=cc(e,n,s);return n=s,{done:s>e.length,value:l}}}}if(r&&typeof e["_es6-shim iterator_"]<"u")return e["_es6-shim iterator_"]()};if(!fc&&!uc)Nt.exports=function(e){if(e!=null)return To(e,!0)};else{var mc=_l,dc=kl,wo=Ie("Map.prototype.forEach",!0),Po=Ie("Set.prototype.forEach",!0);if(typeof process>"u"||!process.versions||!process.versions.node)var Io=Ie("Map.prototype.iterator",!0),Bo=Ie("Set.prototype.iterator",!0);var Do=Ie("Map.prototype.@@iterator",!0)||Ie("Map.prototype._es6-shim iterator_",!0),Mo=Ie("Set.prototype.@@iterator",!0)||Ie("Set.prototype._es6-shim iterator_",!0),gc=function(e){if(mc(e)){if(Io)return Oo(Io(e));if(Do)return Do(e);if(wo){var r=[];return wo(e,function(o,s){Ao(r,[s,o])}),Or(r)}}if(dc(e)){if(Bo)return Oo(Bo(e));if(Mo)return Mo(e);if(Po){var n=[];return Po(e,function(o){Ao(n,o)}),Or(n)}}};Nt.exports=function(e){return gc(e)||To(e)}}}var hc=Nt.exports,jo=function(t){return t!==t},Ol=function(e,r){return e===0&&r===0?1/e===1/r:!!(e===r||jo(e)&&jo(r))},yc=Ol,El=function(){return typeof Object.is=="function"?Object.is:yc},vc=El,bc=rt,_c=function(){var e=vc();return bc(Object,{is:e},{is:function(){return Object.is!==e}}),e},Sc=rt,kc=Pt,Oc=Ol,Al=El,Ec=_c,Cl=kc(Al(),Object);Sc(Cl,{getPolyfill:Al,implementation:Oc,shim:Ec});var Ac=Cl,Tl=Function.prototype.toString,it=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,Gr,Ft;if(typeof it=="function"&&typeof Object.defineProperty=="function")try{Gr=Object.defineProperty({},"length",{get:function(){throw Ft}}),Ft={},it(function(){throw 42},null,Gr)}catch(t){t!==Ft&&(it=null)}else it=null;var Cc=/^\s*class\b/,Hr=function(e){try{var r=Tl.call(e);return Cc.test(r)}catch{return!1}},Er=function(e){try{return Hr(e)?!1:(Tl.call(e),!0)}catch{return!1}},qt=Object.prototype.toString,Tc="[object Object]",wc="[object Function]",Pc="[object GeneratorFunction]",Ic="[object HTMLAllCollection]",Bc="[object HTML document.all class]",Dc="[object HTMLCollection]",Mc=typeof Symbol=="function"&&!!Symbol.toStringTag,jc=!(0 in[,]),Jr=function(){return!1};if(typeof document=="object"){var Nc=document.all;qt.call(Nc)===qt.call(document.all)&&(Jr=function(e){if((jc||!e)&&(typeof e>"u"||typeof e=="object"))try{var r=qt.call(e);return(r===Ic||r===Bc||r===Dc||r===Tc)&&e("")==null}catch{}return!1})}var Fc=it?function(e){if(Jr(e))return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;try{it(e,null,Gr)}catch(r){if(r!==Ft)return!1}return!Hr(e)&&Er(e)}:function(e){if(Jr(e))return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;if(Mc)return Er(e);if(Hr(e))return!1;var r=qt.call(e);return r!==wc&&r!==Pc&&!/^\[object HTML/.test(r)?!1:Er(e)},qc=Fc,$c=Object.prototype.toString,wl=Object.prototype.hasOwnProperty,Vc=function(e,r,n){for(var o=0,s=e.length;o=3&&(o=n),$c.call(e)==="[object Array]"?Vc(e,r,o):typeof e=="string"?Rc(e,r,o):Lc(e,r,o)},Pl=Wc,Ar=["BigInt64Array","BigUint64Array","Float32Array","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Uint8Array","Uint8ClampedArray"],zc=typeof globalThis>"u"?sn:globalThis,Il=function(){for(var e=[],r=0;r"u"?sn:globalThis,jl=Gc(),Yc=En("Array.prototype.indexOf",!0)||function(e,r){for(var n=0;n-1}return Vt?Xc(e):!1},Qc=Pt,Zc=Ae,ql=We,xc=Fl,No=ql("ArrayBuffer",!0),Fo=ql("Float32Array",!0),Rt=Zc("ArrayBuffer.prototype.byteLength",!0),qo=No&&!Rt&&new No().slice,$o=qo&&Qc(qo),$l=Rt||$o?function(e){if(!e||typeof e!="object")return!1;try{return Rt?Rt(e):$o(e,0),!0}catch{return!1}}:Fo?function(e){try{return new Fo(e).buffer===e&&!xc(e)}catch(r){return typeof e=="object"&&r.name==="RangeError"}}:function(e){return!1},ep=Date.prototype.getDay,tp=function(e){try{return ep.call(e),!0}catch{return!1}},rp=Object.prototype.toString,np="[object Date]",op=Ze(),ip=function(e){return typeof e!="object"||e===null?!1:op?tp(e):rp.call(e)===np},Yr=Ae,Vl=Ze(),Rl,Ll,Kr,Xr;if(Vl){Rl=Yr("Object.prototype.hasOwnProperty"),Ll=Yr("RegExp.prototype.exec"),Kr={};var Tr=function(){throw Kr};Xr={toString:Tr,valueOf:Tr},typeof Symbol.toPrimitive=="symbol"&&(Xr[Symbol.toPrimitive]=Tr)}var lp=Yr("Object.prototype.toString"),ap=Object.getOwnPropertyDescriptor,sp="[object RegExp]",fp=Vl?function(e){if(!e||typeof e!="object")return!1;var r=ap(e,"lastIndex"),n=r&&Rl(r,"value");if(!n)return!1;try{Ll(e,Xr)}catch(o){return o===Kr}}:function(e){return!e||typeof e!="object"&&typeof e!="function"?!1:lp(e)===sp},up=Ae,Vo=up("SharedArrayBuffer.prototype.byteLength",!0),cp=Vo?function(e){if(!e||typeof e!="object")return!1;try{return Vo(e),!0}catch{return!1}}:function(e){return!1},pp=Number.prototype.toString,mp=function(e){try{return pp.call(e),!0}catch{return!1}},dp=Object.prototype.toString,gp="[object Number]",hp=Ze(),yp=function(e){return typeof e=="number"?!0:typeof e!="object"?!1:hp?mp(e):dp.call(e)===gp},Wl=Ae,vp=Wl("Boolean.prototype.toString"),bp=Wl("Object.prototype.toString"),_p=function(e){try{return vp(e),!0}catch{return!1}},Sp="[object Boolean]",kp=Ze(),Op=function(e){return typeof e=="boolean"?!0:e===null||typeof e!="object"?!1:kp&&Symbol.toStringTag in e?_p(e):bp(e)===Sp},Qr={exports:{}},Ep=Object.prototype.toString,Ap=dn();if(Ap){var Cp=Symbol.prototype.toString,Tp=/^Symbol\(.*\)$/,wp=function(e){return typeof e.valueOf()!="symbol"?!1:Tp.test(Cp.call(e))};Qr.exports=function(e){if(typeof e=="symbol")return!0;if(Ep.call(e)!=="[object Symbol]")return!1;try{return wp(e)}catch{return!1}}}else Qr.exports=function(e){return!1};var Pp=Qr.exports,Zr={exports:{}},Ro=typeof BigInt<"u"&&BigInt,Ip=function(){return typeof Ro=="function"&&typeof BigInt=="function"&&typeof Ro(42)=="bigint"&&typeof BigInt(42)=="bigint"},Bp=Ip();if(Bp){var Dp=BigInt.prototype.valueOf,Mp=function(e){try{return Dp.call(e),!0}catch{}return!1};Zr.exports=function(e){return e===null||typeof e>"u"||typeof e=="boolean"||typeof e=="string"||typeof e=="number"||typeof e=="symbol"||typeof e=="function"?!1:typeof e=="bigint"?!0:Mp(e)}}else Zr.exports=function(e){return!1};var jp=Zr.exports,Np=vl,Fp=yp,qp=Op,$p=Pp,Vp=jp,Rp=function(e){if(e==null||typeof e!="object"&&typeof e!="function")return null;if(Np(e))return"String";if(Fp(e))return"Number";if(qp(e))return"Boolean";if($p(e))return"Symbol";if(Vp(e))return"BigInt"},Zt=typeof WeakMap=="function"&&WeakMap.prototype?WeakMap:null,Lo=typeof WeakSet=="function"&&WeakSet.prototype?WeakSet:null,xt;Zt||(xt=function(e){return!1});var xr=Zt?Zt.prototype.has:null,wr=Lo?Lo.prototype.has:null;!xt&&!xr&&(xt=function(e){return!1});var Lp=xt||function(e){if(!e||typeof e!="object")return!1;try{if(xr.call(e,xr),wr)try{wr.call(e,wr)}catch{return!0}return e instanceof Zt}catch{}return!1},en={exports:{}},Wp=We,zl=Ae,zp=Wp("%WeakSet%",!0),Pr=zl("WeakSet.prototype.has",!0);if(Pr){var Ir=zl("WeakMap.prototype.has",!0);en.exports=function(e){if(!e||typeof e!="object")return!1;try{if(Pr(e,Pr),Ir)try{Ir(e,Ir)}catch{return!0}return e instanceof zp}catch{}return!1}}else en.exports=function(e){return!1};var Up=en.exports,Gp=_l,Hp=kl,Jp=Lp,Yp=Up,Kp=function(e){if(e&&typeof e=="object"){if(Gp(e))return"Map";if(Hp(e))return"Set";if(Jp(e))return"WeakMap";if(Yp(e))return"WeakSet"}return!1},Ul=Pl,Xp=Il,Gl=Ae,Br=Bl,Qp=Gl("Object.prototype.toString"),Hl=Ze(),Wo=typeof globalThis>"u"?sn:globalThis,Zp=Xp(),xp=Gl("String.prototype.slice"),Jl={},Dr=Object.getPrototypeOf;Hl&&Br&&Dr&&Ul(Zp,function(t){if(typeof Wo[t]=="function"){var e=new Wo[t];if(Symbol.toStringTag in e){var r=Dr(e),n=Br(r,Symbol.toStringTag);if(!n){var o=Dr(r);n=Br(o,Symbol.toStringTag)}Jl[t]=n.get}}});var em=function(e){var r=!1;return Ul(Jl,function(n,o){if(!r)try{var s=n.call(e);s===o&&(r=s)}catch{}}),r},tm=Fl,rm=function(e){return tm(e)?!Hl||!(Symbol.toStringTag in e)?xp(Qp(e),8,-1):em(e):!1},nm=Ae,zo=nm("ArrayBuffer.prototype.byteLength",!0),om=$l,im=function(e){return om(e)?zo?zo(e):e.byteLength:NaN},Yl=$f,ze=Ae,Uo=tu,lm=We,ut=hc,am=hl,Go=Ac,Ho=fl,Jo=yl,Yo=$l,Ko=ip,Xo=fp,Qo=cp,Zo=mn,xo=Rp,ei=Kp,ti=rm,ri=im,ni=ze("SharedArrayBuffer.prototype.byteLength",!0),oi=ze("Date.prototype.getTime"),Mr=Object.getPrototypeOf,ii=ze("Object.prototype.toString"),er=lm("%Set%",!0),tn=ze("Map.prototype.has",!0),tr=ze("Map.prototype.get",!0),li=ze("Map.prototype.size",!0),rr=ze("Set.prototype.add",!0),Kl=ze("Set.prototype.delete",!0),nr=ze("Set.prototype.has",!0),Lt=ze("Set.prototype.size",!0);function ai(t,e,r,n){for(var o=ut(t),s;(s=o.next())&&!s.done;)if(je(e,s.value,r,n))return Kl(t,s.value),!0;return!1}function Xl(t){if(typeof t>"u")return null;if(typeof t!="object")return typeof t=="symbol"?!1:typeof t=="string"||typeof t=="number"?+t==+t:!0}function sm(t,e,r,n,o,s){var l=Xl(r);if(l!=null)return l;var a=tr(e,l),i=Yl({},o,{strict:!1});return typeof a>"u"&&!tn(e,l)||!je(n,a,i,s)?!1:!tn(t,l)&&je(n,a,i,s)}function fm(t,e,r){var n=Xl(r);return n??(nr(e,n)&&!nr(t,n))}function si(t,e,r,n,o,s){for(var l=ut(t),a,i;(a=l.next())&&!a.done;)if(i=a.value,je(r,i,o,s)&&je(n,tr(e,i),o,s))return Kl(t,i),!0;return!1}function je(t,e,r,n){var o=r||{};if(o.strict?Go(t,e):t===e)return!0;var s=xo(t),l=xo(e);if(s!==l)return!1;if(!t||!e||typeof t!="object"&&typeof e!="object")return o.strict?Go(t,e):t==e;var a=n.has(t),i=n.has(e),f;if(a&&i){if(n.get(t)===n.get(e))return!0}else f={};return a||n.set(t,f),i||n.set(e,f),pm(t,e,o,n)}function fi(t){return!t||typeof t!="object"||typeof t.length!="number"||typeof t.copy!="function"||typeof t.slice!="function"||t.length>0&&typeof t[0]!="number"?!1:!!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t))}function um(t,e,r,n){if(Lt(t)!==Lt(e))return!1;for(var o=ut(t),s=ut(e),l,a,i;(l=o.next())&&!l.done;)if(l.value&&typeof l.value=="object")i||(i=new er),rr(i,l.value);else if(!nr(e,l.value)){if(r.strict||!fm(t,e,l.value))return!1;i||(i=new er),rr(i,l.value)}if(i){for(;(a=s.next())&&!a.done;)if(a.value&&typeof a.value=="object"){if(!ai(i,a.value,r.strict,n))return!1}else if(!r.strict&&!nr(t,a.value)&&!ai(i,a.value,r.strict,n))return!1;return Lt(i)===0}return!0}function cm(t,e,r,n){if(li(t)!==li(e))return!1;for(var o=ut(t),s=ut(e),l,a,i,f,u,m;(l=o.next())&&!l.done;)if(f=l.value[0],u=l.value[1],f&&typeof f=="object")i||(i=new er),rr(i,f);else if(m=tr(e,f),typeof m>"u"&&!tn(e,f)||!je(u,m,r,n)){if(r.strict||!sm(t,e,f,u,r,n))return!1;i||(i=new er),rr(i,f)}if(i){for(;(a=s.next())&&!a.done;)if(f=a.value[0],m=a.value[1],f&&typeof f=="object"){if(!si(i,t,f,m,r,n))return!1}else if(!r.strict&&(!t.has(f)||!je(tr(t,f),m,r,n))&&!si(i,t,f,m,Yl({},r,{strict:!1}),n))return!1;return Lt(i)===0}return!0}function pm(t,e,r,n){var o,s;if(typeof t!=typeof e||t==null||e==null||ii(t)!==ii(e)||Ho(t)!==Ho(e))return!1;var l=Jo(t),a=Jo(e);if(l!==a)return!1;var i=t instanceof Error,f=e instanceof Error;if(i!==f||(i||f)&&(t.name!==e.name||t.message!==e.message))return!1;var u=Xo(t),m=Xo(e);if(u!==m||(u||m)&&(t.source!==e.source||Uo(t)!==Uo(e)))return!1;var p=Ko(t),c=Ko(e);if(p!==c||(p||c)&&oi(t)!==oi(e)||r.strict&&Mr&&Mr(t)!==Mr(e))return!1;var h=ti(t),d=ti(e);if((h||d)&&h!==d)return!1;var g=fi(t),_=fi(e);if(g!==_)return!1;if(g||_){if(t.length!==e.length)return!1;for(o=0;o=0;o--)if(R[o]!=B[o])return!1;for(o=R.length-1;o>=0;o--)if(s=R[o],!je(t[s],e[s],r,n))return!1;var L=ei(t),oe=ei(e);return L!==oe?!1:L==="Set"||oe==="Set"?um(t,e,r,n):L==="Map"?cm(t,e,r,n):!0}var mm=function(e,r,n){return je(e,r,n,am())};const jr=da(mm),Nr={};function ui(t){return t==="local"?localStorage:sessionStorage}function dm(t,e,r){const n=(r==null?void 0:r.serializer)??JSON,o=(r==null?void 0:r.storage)??"local",s=typeof window<"u"&&typeof document<"u";function l(a,i){s&&ui(o).setItem(a,n.stringify(i))}if(!Nr[t]){const a=at(e,u=>{const m=s?ui(o).getItem(t):null;if(m&&u(n.parse(m)),s){const p=c=>{c.key===t&&u(c.newValue?n.parse(c.newValue):null)};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)}}),{subscribe:i,set:f}=a;Nr[t]={set(u){l(t,u),f(u)},update(u){const m=u(ta(a));l(t,m),f(m)},subscribe:i}}return Nr[t]}const rn="DATASET_VIEW_CONTEXT",Wd={0:"Concepts",1:"Keyword"},gm="datasetViewStore",hm={};function nn(t,e){return`${t}/${e}`}const zd=(t,e)=>{const r={namespace:t,datasetName:e,searchTab:"Concepts",searchPath:null,searchEmbedding:null,selectedColumns:{},expandedColumns:{},queryOptions:{columns:[],combine_columns:!0}},{subscribe:n,set:o,update:s}=dm(`${gm}/${nn(t,e)}`,JSON.parse(JSON.stringify(r)),{storage:"session"}),l={subscribe:n,set:o,update:s,reset:()=>{o(JSON.parse(JSON.stringify(r)))},addSelectedColumn:a=>s(i=>(i.selectedColumns[Me(a)]=!0,i)),removeSelectedColumn:a=>s(i=>{i.selectedColumns[Me(a)]=!1;for(const f of Object.keys(i.selectedColumns))cr(f,a)&&!Ve(a,f)&&delete i.selectedColumns[f];return i}),addExpandedColumn(a){s(i=>(i.expandedColumns[Me(a)]=!0,i))},removeExpandedColumn(a){s(i=>(i.expandedColumns[Me(a)]=!1,i))},addUdfColumn:a=>s(i=>{var f;return(f=i.queryOptions.columns)==null||f.push(a),i}),removeUdfColumn:a=>s(i=>{var f;return i.queryOptions.columns=(f=i.queryOptions.columns)==null?void 0:f.filter(u=>u!==a),i}),editUdfColumn:a=>s(i=>{var f;return i.queryOptions.columns=(f=i.queryOptions.columns)==null?void 0:f.map(u=>la(u)&&Ve(u.path,a.path)?a:u),i}),setSearchTab:a=>s(i=>(i.searchTab=a,i)),setSearchPath:a=>s(i=>(i.searchPath=Me(a),i)),setSearchEmbedding:a=>s(i=>(i.searchEmbedding=a,i)),addSearch:a=>s(i=>{i.queryOptions.searches=i.queryOptions.searches||[];for(const f of i.queryOptions.searches)if(jr(f,a))return i;return(a.query.type==="semantic"||a.query.type==="concept")&&(i.queryOptions.sort_by=void 0,i.queryOptions.sort_order=void 0),i.queryOptions.searches.push(a),i}),removeSearch:(a,i)=>s(f=>{var u,m;return f.queryOptions.searches=(u=f.queryOptions.searches)==null?void 0:u.filter(p=>!jr(p,a)),(i==null?void 0:i.sorts)!=null&&(f.queryOptions.sort_by=(m=f.queryOptions.sort_by)==null?void 0:m.filter(p=>!((i==null?void 0:i.sorts)||[]).some(c=>Ve(c.path,p)))),f}),setSortBy:a=>s(i=>(a==null?i.queryOptions.sort_by=void 0:i.queryOptions.sort_by=[a],i)),addSortBy:a=>s(i=>(i.queryOptions.sort_by=[...i.queryOptions.sort_by||[],a],i)),removeSortBy:a=>s(i=>{var f;return i.queryOptions.sort_by=(f=i.queryOptions.sort_by)==null?void 0:f.filter(u=>!Ve(u,a)),i}),clearSorts:()=>s(a=>(a.queryOptions.sort_by=void 0,a.queryOptions.sort_order=void 0,a)),setSortOrder:a=>s(i=>(i.queryOptions.sort_order=a||void 0,i)),removeFilter:a=>s(i=>{var f;return i.queryOptions.filters=(f=i.queryOptions.filters)==null?void 0:f.filter(u=>!jr(u,a)),i}),addFilter:a=>s(i=>(i.queryOptions.filters=[...i.queryOptions.filters||[],a],i)),deleteSignal:a=>s(i=>{var f,u;return i.queryOptions.filters=(f=i.queryOptions.filters)==null?void 0:f.filter(m=>!cr(a,m.path)),i.queryOptions.sort_by=(u=i.queryOptions.sort_by)==null?void 0:u.filter(m=>!cr(a,m)),i}),deleteConcept(a,i,f){function u(m){return m.type==="concept"&&m.concept_namespace===a&&m.concept_name===i}s(m=>{var c,h,d;const p=[];return m.queryOptions.searches=(c=m.queryOptions.searches)==null?void 0:c.filter(g=>{const _=!u(g.query);if(!_&&f!=null&&f.search_results!=null){const E=f.search_results.filter(S=>Ve(S.search_path,g.path)).map(S=>S.result_path);p.push(...E)}return _}),m.queryOptions.sort_by=(h=m.queryOptions.sort_by)==null?void 0:h.filter(g=>!p.some(_=>Ve(_,g))),m.queryOptions.filters=(d=m.queryOptions.filters)==null?void 0:d.filter(g=>!p.some(_=>Ve(_,g.path))),m})}};return hm[nn(t,e)]=l,l};function Ud(t){or(rn,t)}function fr(){if(!Ni(rn))throw new Error("DatasetViewContext not found");return Et(rn)}function ym(t){const e=["*",...t.queryOptions.columns??[]];return{...t.queryOptions,columns:e}}function vm(t){const e=ym(t);return{columns:e.columns,searches:e.searches,combine_columns:e.combine_columns,sort_by:e.sort_by,sort_order:e.sort_order}}const on="DATASET_INFO_CONTEXT",bm={},Gd=(t,e)=>{const r={schema:null,stats:null,selectRowsSchema:null,visibleFields:null},{subscribe:n,set:o,update:s}=at(r),l={subscribe:n,set:o,update:s,reset:()=>{o(r)},setSchema:a=>s(i=>(i.schema=a,i)),setStats:a=>s(i=>(i.stats=a,i)),setVisibleFields:a=>s(i=>(i.visibleFields=a,i)),setSelectRowsSchema:a=>s(i=>(i.selectRowsSchema=a,i))};return bm[nn(t,e)]=l,l};function Hd(t){or(on,t)}function _m(){if(!Ni(on))throw new Error("DatasetViewContext not found");return Et(on)}function ci(t,e,r){const n=t.slice();return n[5]=e[r],n}function Sm(t){let e,r,n=t[1],o=[];for(let l=0;lk(o[l],1,1,()=>{o[l]=null});return{c(){e=N("div");for(let l=0;l{u=null}),x()),(!a||c&6&&l!==(l=t[2]===t[5].value))&&V(e,"data-active",l)},i(p){a||(b(u),a=!0)},o(p){k(u),a=!1},d(p){p&&v(e),u&&u.d(),i=!1,f()}}}function Em(t){let e,r,n,o;const s=[km,Sm],l=[];function a(i,f){return i[0]?0:1}return e=a(t),r=l[e]=s[e](t),{c(){r.c(),n=Q()},l(i){r.l(i),n=Q()},m(i,f){l[e].m(i,f),C(i,n,f),o=!0},p(i,[f]){let u=e;e=a(i),e===u?l[e].p(i,f):(Z(),k(l[u],1,1,()=>{l[u]=null}),x(),r=l[e],r?r.p(i,f):(r=l[e]=s[e](i),r.c()),b(r,1),r.m(n.parentNode,n))},i(i){o||(b(r),o=!0)},o(i){k(r),o=!1},d(i){l[e].d(i),i&&v(n)}}}function Am(t,e,r){let{skeleton:n=!1}=e,{items:o=[]}=e,{item:s=void 0}=e;const l=He(),a=i=>l("select",i.value);return t.$$set=i=>{"skeleton"in i&&r(0,n=i.skeleton),"items"in i&&r(1,o=i.items),"item"in i&&r(2,s=i.item)},[n,o,s,l,a]}class It extends le{constructor(e){super(),ae(this,e,Am,Em,ne,{skeleton:0,items:1,item:2})}}function di(t,e,r){const n=t.slice();return n[22]=e[r],n[23]=e,n[24]=r,n}function gi(t,e,r){const n=t.slice();return n[25]=e[r],n}function Fr(t){const e=t.slice(),r=e[1].path;return e[21]=r,e}function hi(t){let e,r,n,o=t[2].length>0?"and":"add",s,l,a,i,f=t[2],u=[];for(let c=0;ck(u[c],1,1,()=>{u[c]=null});function p(){return t[19](t[21])}return{c(){for(let c=0;c0?"and":"add")&&ve(s,o)},i(c){if(!l){for(let h=0;hk(o[l],1,1,()=>{o[l]=null});return{c(){for(let l=0;lCe(e,"value",o)),{c(){D(e.$$.fragment)},l(l){q(e.$$.fragment,l)},m(l,a){M(e,l,a),n=!0},p(l,a){t=l;const i={};!r&&a&4&&(r=!0,i.value=t[22].value,Te(()=>r=!1)),e.$set(i)},i(l){n||(b(e.$$.fragment,l),n=!0)},o(l){k(e.$$.fragment,l),n=!1},d(l){j(e,l)}}}function wm(t){let e,r;return{c(){e=N("span"),r=se("Blob filter not yet implemented")},l(n){e=F(n,"SPAN",{});var o=w(e);r=fe(o,"Blob filter not yet implemented"),o.forEach(v)},m(n,o){C(n,e,o),I(e,r)},p:H,i:H,o:H,d(n){n&&v(e)}}}function Pm(t){let e,r;return e=new Pa({}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p:H,i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Im(t){let e,r;return{c(){e=N("span"),r=se("In operator not yet implemented")},l(n){e=F(n,"SPAN",{});var o=w(e);r=fe(o,"In operator not yet implemented"),o.forEach(v)},m(n,o){C(n,e,o),I(e,r)},p:H,i:H,o:H,d(n){n&&v(e)}}}function Bm(t){return{c:H,l:H,m:H,p:H,i:H,o:H,d:H}}function vi(t){let e,r,n,o,s,l,a,i,f,u,m,p;function c(S){t[16](S,t[22])}let h={labelText:"Operation",$$slots:{default:[Cm]},$$scope:{ctx:t}};t[22].op!==void 0&&(h.selected=t[22].op),r=new Ct({props:h}),ge.push(()=>Ce(r,"selected",c));const d=[Bm,Im,Pm,wm,Tm],g=[];function _(S,A){return S[22].op==="exists"?0:S[22].op==="in"?1:typeof S[22].value=="boolean"?2:typeof S[22].value=="function"?3:4}s=_(t),l=g[s]=d[s](t),f=new Is({props:{size:20}});function E(){return t[18](t[22])}return{c(){e=N("div"),D(r.$$.fragment),o=Y(),l.c(),a=Y(),i=N("button"),D(f.$$.fragment),this.h()},l(S){e=F(S,"DIV",{class:!0});var A=w(e);q(r.$$.fragment,A),o=K(A),l.l(A),a=K(A),i=F(A,"BUTTON",{class:!0});var z=w(i);q(f.$$.fragment,z),z.forEach(v),A.forEach(v),this.h()},h(){V(i,"class","mt-5"),V(e,"class","flex items-center gap-x-2")},m(S,A){C(S,e,A),M(r,e,null),I(e,o),g[s].m(e,null),I(e,a),I(e,i),M(f,i,null),u=!0,m||(p=W(i,"click",E),m=!0)},p(S,A){t=S;const z={};A&268435456&&(z.$$scope={dirty:A,ctx:t}),!n&&A&4&&(n=!0,z.selected=t[22].op,Te(()=>n=!1)),r.$set(z);let R=s;s=_(t),s===R?g[s].p(t,A):(Z(),k(g[R],1,1,()=>{g[R]=null}),x(),l=g[s],l?l.p(t,A):(l=g[s]=d[s](t),l.c()),b(l,1),l.m(e,a))},i(S){u||(b(r.$$.fragment,S),b(l),b(f.$$.fragment,S),u=!0)},o(S){k(r.$$.fragment,S),k(l),k(f.$$.fragment,S),u=!1},d(S){S&&v(e),j(r),g[s].d(),j(f),m=!1,p()}}}function Dm(t){let e,r,n,o,s,l;n=new It({props:{items:t[3],item:t[1]}}),n.$on("select",t[15]);let a=t[1]&&hi(Fr(t));return{c(){e=N("div"),r=N("div"),D(n.$$.fragment),o=Y(),s=N("div"),a&&a.c(),this.h()},l(i){e=F(i,"DIV",{class:!0});var f=w(e);r=F(f,"DIV",{class:!0});var u=w(r);q(n.$$.fragment,u),u.forEach(v),o=K(f),s=F(f,"DIV",{class:!0});var m=w(s);a&&a.l(m),m.forEach(v),f.forEach(v),this.h()},h(){V(r,"class","-ml-4 mr-4 w-80 grow-0"),V(s,"class","flex w-full flex-col gap-y-6"),V(e,"class","flex flex-row")},m(i,f){C(i,e,f),I(e,r),M(n,r,null),I(e,o),I(e,s),a&&a.m(s,null),l=!0},p(i,f){const u={};f&8&&(u.items=i[3]),f&2&&(u.item=i[1]),n.$set(u),i[1]?a?(a.p(Fr(i),f),f&2&&b(a,1)):(a=hi(Fr(i)),a.c(),b(a,1),a.m(s,null)):a&&(Z(),k(a,1,1,()=>{a=null}),x())},i(i){l||(b(n.$$.fragment,i),b(a),l=!0)},o(i){k(n.$$.fragment,i),k(a),l=!1},d(i){i&&v(e),j(n),a&&a.d()}}}function Mm(t){let e,r,n,o,s,l;return e=new un({props:{label:"Filters",title:"Edit Filters"}}),n=new cn({props:{hasForm:!0,$$slots:{default:[Dm]},$$scope:{ctx:t}}}),s=new pn({props:{primaryButtonText:"Save",secondaryButtonText:"Cancel",primaryButtonDisabled:!1}}),s.$on("click:button--secondary",t[8]),{c(){D(e.$$.fragment),r=Y(),D(n.$$.fragment),o=Y(),D(s.$$.fragment)},l(a){q(e.$$.fragment,a),r=K(a),q(n.$$.fragment,a),o=K(a),q(s.$$.fragment,a)},m(a,i){M(e,a,i),C(a,r,i),M(n,a,i),C(a,o,i),M(s,a,i),l=!0},p(a,i){const f={};i&268435471&&(f.$$scope={dirty:i,ctx:a}),n.$set(f)},i(a){l||(b(e.$$.fragment,a),b(n.$$.fragment,a),b(s.$$.fragment,a),l=!0)},o(a){k(e.$$.fragment,a),k(n.$$.fragment,a),k(s.$$.fragment,a),l=!1},d(a){j(e,a),a&&v(r),j(n,a),a&&v(o),j(s,a)}}}function jm(t){let e,r;return e=new fn({props:{open:!0,$$slots:{default:[Mm]},$$scope:{ctx:t}}}),e.$on("submit",t[9]),e.$on("close",t[8]),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,[o]){const s={};o&268435471&&(s.$$scope={dirty:o,ctx:n}),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Nm(t,e,r){let n,o,s,l,a,i,f=H,u=()=>(f(),f=Fi(n,P=>r(13,i=P)),n),m;t.$$.on_destroy.push(()=>f());let{command:p}=e;const c=fr();he(t,c,P=>r(12,a=P));const h=_m();he(t,h,P=>r(14,m=P));const d=He();let g=[];ln(()=>{r(0,g=structuredClone(a.queryOptions.filters||[]))});let _;const E=[["equals","equals (=)"],["not_equal","not equal (!=)"],["greater","greater than (>)"],["greater_equal","greater or equal (>=)"],["less","less than (<)"],["less_equal","less or equal (<=)"],["in","in"],["exists","exists"]];function S(){d("close")}function A(){Wt(c,a.queryOptions.filters=g,a),S()}const z=P=>r(1,_=P.detail);function R(P,re){t.$$.not_equal(re.op,P)&&(re.op=P,r(2,l),r(0,g),r(1,_),r(11,s),r(13,i),r(10,p))}function B(P,re){t.$$.not_equal(re.value,P)&&(re.value=P,r(2,l),r(0,g),r(1,_),r(11,s),r(13,i),r(10,p))}const L=P=>{r(0,g=g.filter(re=>re!=P))},oe=P=>r(0,g=[...g,{path:P,op:"equals",value:""}]);return t.$$set=P=>{"command"in P&&r(10,p=P.command)},t.$$.update=()=>{if(t.$$.dirty&5120&&u(r(4,n=sa(p.namespace,p.datasetName,vm(a)))),t.$$.dirty&24577&&r(3,o=i!=null&&i.isSuccess&&m.schema?Gt(m.schema).map(P=>{const re=g.filter(be=>Ve(be.path,P.path));return{title:P.path.join("."),value:P,tag:re.length>0?{value:re.length.toString(),type:"blue"}:void 0}}):[]),t.$$.dirty&9216&&r(11,s=i!=null&&i.isSuccess?$i(i.data.schema,p.path):void 0),t.$$.dirty&2050&&!_&&s&&r(1,_=s),t.$$.dirty&3&&r(2,l=g.filter(P=>Ve(P.path,_==null?void 0:_.path))),t.$$.dirty&1)for(const P of g)P.op==="exists"&&(P.value=null)},[g,_,l,o,n,c,h,E,S,A,p,s,a,i,m,z,R,B,L,oe]}class Fm extends le{constructor(e){super(),ae(this,e,Nm,jm,ne,{command:10})}}function qm(t,e,r){let{value:n}=e;return t.$$set=o=>{"value"in o&&r(0,n=o.value)},[n]}class $m extends le{constructor(e){super(),ae(this,e,qm,null,ne,{value:0})}}function bi(t,e,r){const n=t.slice();return n[9]=e[r],n}function _i(t,e,r){const n=t.slice();return n[12]=e[r],n}function Si(t){let e,r,n=t[5],o=[];for(let l=0;lk(o[l],1,1,()=>{o[l]=null});return{c(){for(let l=0;lk(o[l],1,1,()=>{o[l]=null});return{c(){for(let l=0;l{n=null}),x())},i(o){r||(b(n),r=!0)},o(o){k(n),r=!1},d(o){n&&n.d(o),o&&v(e)}}}function Lm(t){let e,r;return e=new Ct({props:{labelText:"Concept *",selected:`${t[0].namespace}/${t[1]}`,invalid:t[2],invalidText:t[3],$$slots:{default:[Rm]},$$scope:{ctx:t}}}),e.$on("update",t[7]),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,[o]){const s={};o&3&&(s.selected=`${n[0].namespace}/${n[1]}`),o&4&&(s.invalid=n[2]),o&8&&(s.invalidText=n[3]),o&32816&&(s.$$scope={dirty:o,ctx:n}),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Wm(t,e,r){let n,o,s,{rootValue:l}=e,{invalid:a}=e,{invalidText:i}=e,{value:f}=e;const u=Ns();he(t,u,p=>r(4,s=p));function m(p){const[c,h]=p.detail.toString().split("/");!c||!h||(r(0,l.namespace=c,l),r(1,f=h))}return t.$$set=p=>{"rootValue"in p&&r(0,l=p.rootValue),"invalid"in p&&r(2,a=p.invalid),"invalidText"in p&&r(3,i=p.invalidText),"value"in p&&r(1,f=p.value)},t.$$.update=()=>{t.$$.dirty&16&&r(8,n=s.isSuccess?[...new Set(s.data.map(p=>p.namespace))]:[]),t.$$.dirty&272&&r(5,o=s.isSuccess?n.map(p=>{var c;return{namespace:p,concepts:((c=s.data)==null?void 0:c.filter(h=>h.namespace===p))||[]}}):[]),t.$$.dirty&19&&(!f||!l.namespace)&&s.isSuccess&&(r(0,l.namespace=s.data[0].namespace,l),r(1,f=s.data[0].name))},[l,f,a,i,s,o,u,m,n]}class zm extends le{constructor(e){super(),ae(this,e,Wm,Lm,ne,{rootValue:0,invalid:2,invalidText:3,value:1})}}function Ei(t,e,r){var s;const n=t.slice();n[16]=e[r];const o=(s=n[3])==null?void 0:s.some(function(...a){return t[14](n[16],...a)});return n[4]=o,n}function Ai(t){var n,o;let e,r;return e=new lr({props:{value:(n=t[16])==null?void 0:n.toString(),text:(o=t[16])==null?void 0:o.toString(),disabled:!t[4]}}),{c(){D(e.$$.fragment)},l(s){q(e.$$.fragment,s)},m(s,l){M(e,s,l),r=!0},p(s,l){var i,f;const a={};l&64&&(a.value=(i=s[16])==null?void 0:i.toString()),l&64&&(a.text=(f=s[16])==null?void 0:f.toString()),l&72&&(a.disabled=!s[4]),e.$set(a)},i(s){r||(b(e.$$.fragment,s),r=!0)},o(s){k(e.$$.fragment,s),r=!1},d(s){j(e,s)}}}function Um(t){let e,r,n=t[6],o=[];for(let l=0;lk(o[l],1,1,()=>{o[l]=null});return{c(){for(let l=0;lr(15,u=S));const d=Vi(u.namespace,u.datasetName);he(t,d,S=>r(13,f=S));const g=Sd();he(t,g,S=>r(12,i=S));function _(S){r(0,c=S.target.value)}const E=(S,A)=>{var z;return((z=A.signal)==null?void 0:z.signal_name)===(S==null?void 0:S.toString())};return t.$$set=S=>{"invalid"in S&&r(1,m=S.invalid),"invalidText"in S&&r(2,p=S.invalidText),"value"in S&&r(0,c=S.value)},t.$$.update=()=>{var S,A,z;t.$$.dirty&4096&&r(11,n=(A=(S=i.jsonSchema)==null?void 0:S.properties)==null?void 0:A.embedding),t.$$.dirty&12288&&r(3,o=i.path&&f.data?Gt($i(f.data,i.path)).filter(R=>R.signal!=null&&Gt(R).some(B=>B.dtype==="embedding")):void 0),t.$$.dirty&2056&&r(6,s=[...(n==null?void 0:n.enum)||[]].sort((R,B)=>{const L=o==null?void 0:o.some(P=>{var re;return((re=P.signal)==null?void 0:re.signal_name)===(R==null?void 0:R.toString())}),oe=o==null?void 0:o.some(P=>{var re;return((re=P.signal)==null?void 0:re.signal_name)===(B==null?void 0:B.toString())});return L&&!oe?-1:!L&&oe?1:0})),t.$$.dirty&8&&o!=null&&o.length&&(z=o[0].signal)!=null&&z.signal_name&&r(0,c=o[0].signal.signal_name),t.$$.dirty&9&&r(4,l=(o==null?void 0:o.some(R=>{var B;return((B=R.signal)==null?void 0:B.signal_name)===(c==null?void 0:c.toString())}))||!1),t.$$.dirty&16&&r(5,a=l?void 0:"Embedding not pre-computed for this split")},[c,m,p,o,l,a,s,h,d,g,_,n,i,f,E]}class Jm extends le{constructor(e){super(),ae(this,e,Hm,Gm,ne,{invalid:1,invalidText:2,value:0})}}const Ql="signals",Ym=ir(Li.getSignals,Ql),Km=ir(Li.getEmbeddings,Ql);function Xm(t){let e,r;return e=new It({props:{skeleton:!0}}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p:H,i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Qm(t){let e,r;return e=new It({props:{items:t[1].data.map(Ci),item:t[0]}}),e.$on("select",t[3]),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){const s={};o&2&&(s.items=n[1].data.map(Ci)),o&1&&(s.item=n[0]),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Zm(t){let e,r,n,o;const s=[Qm,Xm],l=[];function a(i,f){return i[1].isSuccess?0:i[1].isLoading?1:-1}return~(e=a(t))&&(r=l[e]=s[e](t)),{c(){r&&r.c(),n=Q()},l(i){r&&r.l(i),n=Q()},m(i,f){~e&&l[e].m(i,f),C(i,n,f),o=!0},p(i,[f]){let u=e;e=a(i),e===u?~e&&l[e].p(i,f):(r&&(Z(),k(l[u],1,1,()=>{l[u]=null}),x()),~e?(r=l[e],r?r.p(i,f):(r=l[e]=s[e](i),r.c()),b(r,1),r.m(n.parentNode,n)):r=null)},i(i){o||(b(r),o=!0)},o(i){k(r),o=!1},d(i){~e&&l[e].d(i),i&&v(n)}}}const Ci=t=>({title:t.json_schema.title||"Unnamed embedding",value:t});function xm(t,e,r){let n,{embedding:o=void 0}=e;const s=Km();he(t,s,a=>r(1,n=a));const l=a=>r(0,o=a.detail);return t.$$set=a=>{"embedding"in a&&r(0,o=a.embedding)},t.$$.update=()=>{var a;t.$$.dirty&3&&n.isSuccess&&!o&&r(0,o=(a=n.data)==null?void 0:a[0])},[o,n,s,l]}class ed extends le{constructor(e){super(),ae(this,e,xm,Zm,ne,{embedding:0})}}function Ti(t,e,r){const n=t.slice();return n[13]=e[r],n}function td(t){let e,r,n;function o(l){t[12](l)}let s={labelText:t[0],helperText:t[1],required:!0,$$slots:{default:[id]},$$scope:{ctx:t}};return t[2]!==void 0&&(s.selected=t[2]),e=new Ct({props:s}),ge.push(()=>Ce(e,"selected",o)),{c(){D(e.$$.fragment)},l(l){q(e.$$.fragment,l)},m(l,a){M(e,l,a),n=!0},p(l,a){const i={};a&1&&(i.labelText=l[0]),a&2&&(i.helperText=l[1]),a&65568&&(i.$$scope={dirty:a,ctx:l}),!r&&a&4&&(r=!0,i.selected=l[2],Te(()=>r=!1)),e.$set(i)},i(l){n||(b(e.$$.fragment,l),n=!0)},o(l){k(e.$$.fragment,l),n=!1},d(l){j(e,l)}}}function rd(t){let e,r;return e=new Ct({props:{invalid:!0,invalidText:"No valid fields found"}}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p:H,i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function nd(t){let e,r;return e=new ns({}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p:H,i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function wi(t){let e,r;return e=new Ri({props:{label:"Source Fields",$$slots:{default:[od]},$$scope:{ctx:t}}}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){const s={};o&65568&&(s.$$scope={dirty:o,ctx:n}),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Pi(t){let e,r;return e=new lr({props:{value:Me(t[13].path),disabled:!1,text:Ii(t[13])}}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){const s={};o&32&&(s.value=Me(n[13].path)),o&32&&(s.text=Ii(n[13])),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function od(t){let e,r,n=t[5],o=[];for(let l=0;lk(o[l],1,1,()=>{o[l]=null});return{c(){for(let l=0;l{n=null}),x())},i(s){r||(b(n),r=!0)},o(s){k(n),r=!1},d(s){n&&n.d(s),s&&v(e)}}}function ld(t){let e,r,n,o;const s=[nd,rd,td],l=[];function a(i,f){var u;return i[4].isLoading?0:((u=i[3])==null?void 0:u.length)===0?1:2}return e=a(t),r=l[e]=s[e](t),{c(){r.c(),n=Q()},l(i){r.l(i),n=Q()},m(i,f){l[e].m(i,f),C(i,n,f),o=!0},p(i,[f]){let u=e;e=a(i),e===u?l[e].p(i,f):(Z(),k(l[u],1,1,()=>{l[u]=null}),x(),r=l[e],r?r.p(i,f):(r=l[e]=s[e](i),r.c()),b(r,1),r.m(n.parentNode,n))},i(i){o||(b(r),o=!0)},o(i){k(r),o=!1},d(i){l[e].d(i),i&&v(n)}}}function Ii(t){return`${t.path.join(".")} (${t.dtype})`}function ad(t,e,r){let n,o,s,l,a=H,i=()=>(a(),a=Fi(n,E=>r(4,l=E)),n),f;t.$$.on_destroy.push(()=>a());let{labelText:u="Field"}=e,{helperText:m=void 0}=e,{filter:p=void 0}=e,{defaultPath:c=void 0}=e,{path:h=void 0}=e;const d=fr();he(t,d,E=>r(11,f=E));let g;function _(E){g=E,r(2,g),r(10,c),r(3,o),r(4,l),r(9,p)}return t.$$set=E=>{"labelText"in E&&r(0,u=E.labelText),"helperText"in E&&r(1,m=E.helperText),"filter"in E&&r(9,p=E.filter),"defaultPath"in E&&r(10,c=E.defaultPath),"path"in E&&r(8,h=E.path)},t.$$.update=()=>{if(t.$$.dirty&2048&&i(r(6,n=Vi(f.namespace,f.datasetName))),t.$$.dirty&528&&r(3,o=l.isSuccess?Gt(l.data).filter(E=>E.path.length>0).filter(E=>p?p(E):!0):null),t.$$.dirty&24&&r(5,s=o==null?void 0:o.filter(E=>l.data&&!fa(E,l.data))),t.$$.dirty&1036&&c&&o&&!g){const E=o.find(S=>Ve(S.path,c));E&&r(2,g=Me(E.path))}if(t.$$.dirty&24&&!(o!=null&&o.length)&&l.isSuccess&&r(8,h=void 0),t.$$.dirty&12&&o&&g&&(o.some(S=>Me(S.path)===g)||r(2,g=Me(o[0].path))),t.$$.dirty&12&&o){const E=o==null?void 0:o.find(S=>Me(S.path)===g);E&&r(8,h=E.path)}},[u,m,g,o,l,s,n,d,h,p,c,f,_]}class sd extends le{constructor(e){super(),ae(this,e,ad,ld,ne,{labelText:0,helperText:1,filter:9,defaultPath:10,path:8})}}function fd(t){let e,r;return e=new It({props:{skeleton:!0}}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p:H,i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function ud(t){let e,r;return e=new It({props:{items:t[1].data.map(Bi),item:t[0]}}),e.$on("select",t[4]),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){const s={};o&2&&(s.items=n[1].data.map(Bi)),o&1&&(s.item=n[0]),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function cd(t){let e,r,n,o;const s=[ud,fd],l=[];function a(i,f){return i[1].isSuccess?0:i[1].isLoading?1:-1}return~(e=a(t))&&(r=l[e]=s[e](t)),{c(){r&&r.c(),n=Q()},l(i){r&&r.l(i),n=Q()},m(i,f){~e&&l[e].m(i,f),C(i,n,f),o=!0},p(i,[f]){let u=e;e=a(i),e===u?~e&&l[e].p(i,f):(r&&(Z(),k(l[u],1,1,()=>{l[u]=null}),x()),~e?(r=l[e],r?r.p(i,f):(r=l[e]=s[e](i),r.c()),b(r,1),r.m(n.parentNode,n)):r=null)},i(i){o||(b(r),o=!0)},o(i){k(r),o=!1},d(i){~e&&l[e].d(i),i&&v(n)}}}const Bi=t=>({title:t.json_schema.title||"Unnamed signal",value:t});function pd(t,e,r){let n,{defaultSignal:o=void 0}=e,{signal:s=void 0}=e;const l=Ym();he(t,l,i=>r(1,n=i));const a=i=>r(0,s=i.detail);return t.$$set=i=>{"defaultSignal"in i&&r(3,o=i.defaultSignal),"signal"in i&&r(0,s=i.signal)},t.$$.update=()=>{var i,f;t.$$.dirty&11&&n.isSuccess&&!s&&r(0,s=((i=n.data)==null?void 0:i.find(u=>u.name===o))||((f=n.data)==null?void 0:f[0]))},[s,n,l,o,a]}class md extends le{constructor(e){super(),ae(this,e,pd,cd,ne,{defaultSignal:3,signal:0})}}function dd(t){let e,r,n;function o(l){t[13](l)}let s={defaultSignal:t[0].signalName};return t[2]!==void 0&&(s.signal=t[2]),e=new md({props:s}),ge.push(()=>Ce(e,"signal",o)),{c(){D(e.$$.fragment)},l(l){q(e.$$.fragment,l)},m(l,a){M(e,l,a),n=!0},p(l,a){const i={};a&1&&(i.defaultSignal=l[0].signalName),!r&&a&4&&(r=!0,i.signal=l[2],Te(()=>r=!1)),e.$set(i)},i(l){n||(b(e.$$.fragment,l),n=!0)},o(l){k(e.$$.fragment,l),n=!1},d(l){j(e,l)}}}function gd(t){let e,r,n;function o(l){t[12](l)}let s={};return t[2]!==void 0&&(s.embedding=t[2]),e=new ed({props:s}),ge.push(()=>Ce(e,"embedding",o)),{c(){D(e.$$.fragment)},l(l){q(e.$$.fragment,l)},m(l,a){M(e,l,a),n=!0},p(l,a){const i={};!r&&a&4&&(r=!0,i.embedding=l[2],Te(()=>r=!1)),e.$set(i)},i(l){n||(b(e.$$.fragment,l),n=!0)},o(l){k(e.$$.fragment,l),n=!1},d(l){j(e,l)}}}function hd(t){let e;return{c(){e=se("No signal selected")},l(r){e=fe(r,"No signal selected")},m(r,n){C(r,e,n)},p:H,i:H,o:H,d(r){r&&v(e)}}}function yd(t){let e=t[2],r,n,o=Di(t);return{c(){o.c(),r=Q()},l(s){o.l(s),r=Q()},m(s,l){o.m(s,l),C(s,r,l),n=!0},p(s,l){l&4&&ne(e,e=s[2])?(Z(),k(o,1,1,H),x(),o=Di(s),o.c(),b(o,1),o.m(r.parentNode,r)):o.p(s,l)},i(s){n||(b(o),n=!0)},o(s){k(o),n=!1},d(s){s&&v(r),o.d(s)}}}function Di(t){var g,_,E;let e,r,n,o,s,l,a,i,f,u;r=new ga({props:{source:t[2].json_schema.description}});function m(S){t[14](S)}let p={filter:t[6],defaultPath:t[0].path,labelText:"Field"};t[1]!==void 0&&(p.path=t[1]),o=new sd({props:p}),ge.push(()=>Ce(o,"path",m));function c(S){t[15](S)}function h(S){t[16](S)}let d={schema:t[2].json_schema,showDescription:!1,hiddenProperties:["/signal_name"],customComponents:t[9][(g=t[2])==null?void 0:g.name]};return t[3][(_=t[2])==null?void 0:_.name]!==void 0&&(d.value=t[3][(E=t[2])==null?void 0:E.name]),t[4]!==void 0&&(d.validationErrors=t[4]),a=new ha({props:d}),ge.push(()=>Ce(a,"value",c)),ge.push(()=>Ce(a,"validationErrors",h)),{c(){e=N("div"),D(r.$$.fragment),n=Y(),D(o.$$.fragment),l=Y(),D(a.$$.fragment),this.h()},l(S){e=F(S,"DIV",{class:!0});var A=w(e);q(r.$$.fragment,A),A.forEach(v),n=K(S),q(o.$$.fragment,S),l=K(S),q(a.$$.fragment,S),this.h()},h(){V(e,"class","whitespace-pre-wrap")},m(S,A){C(S,e,A),M(r,e,null),C(S,n,A),M(o,S,A),C(S,l,A),M(a,S,A),u=!0},p(S,A){var L,oe;const z={};A&4&&(z.source=S[2].json_schema.description),r.$set(z);const R={};A&64&&(R.filter=S[6]),A&1&&(R.defaultPath=S[0].path),!s&&A&2&&(s=!0,R.path=S[1],Te(()=>s=!1)),o.$set(R);const B={};A&4&&(B.schema=S[2].json_schema),A&4&&(B.customComponents=S[9][(L=S[2])==null?void 0:L.name]),!i&&A&12&&(i=!0,B.value=S[3][(oe=S[2])==null?void 0:oe.name],Te(()=>i=!1)),!f&&A&16&&(f=!0,B.validationErrors=S[4],Te(()=>f=!1)),a.$set(B)},i(S){u||(b(r.$$.fragment,S),b(o.$$.fragment,S),b(a.$$.fragment,S),u=!0)},o(S){k(r.$$.fragment,S),k(o.$$.fragment,S),k(a.$$.fragment,S),u=!1},d(S){S&&v(e),j(r),S&&v(n),j(o,S),S&&v(l),j(a,S)}}}function vd(t){let e,r,n,o,s,l,a,i,f;const u=[gd,dd],m=[];function p(g,_){return g[0].command===ue.ComputeEmbedding?0:1}n=p(t),o=m[n]=u[n](t);const c=[yd,hd],h=[];function d(g,_){return g[2]?0:1}return a=d(t),i=h[a]=c[a](t),{c(){e=N("div"),r=N("div"),o.c(),s=Y(),l=N("div"),i.c(),this.h()},l(g){e=F(g,"DIV",{class:!0});var _=w(e);r=F(_,"DIV",{class:!0});var E=w(r);o.l(E),E.forEach(v),s=K(_),l=F(_,"DIV",{class:!0});var S=w(l);i.l(S),S.forEach(v),_.forEach(v),this.h()},h(){V(r,"class","-ml-4 mr-4 w-96 grow-0"),V(l,"class","flex w-full flex-col gap-y-6 rounded border border-gray-300 bg-white p-4"),V(e,"class","flex flex-row")},m(g,_){C(g,e,_),I(e,r),m[n].m(r,null),I(e,s),I(e,l),h[a].m(l,null),f=!0},p(g,_){let E=n;n=p(g),n===E?m[n].p(g,_):(Z(),k(m[E],1,1,()=>{m[E]=null}),x(),o=m[n],o?o.p(g,_):(o=m[n]=u[n](g),o.c()),b(o,1),o.m(r,null));let S=a;a=d(g),a===S?h[a].p(g,_):(Z(),k(h[S],1,1,()=>{h[S]=null}),x(),i=h[a],i?i.p(g,_):(i=h[a]=c[a](g),i.c()),b(i,1),i.m(l,null))},i(g){f||(b(o),b(i),f=!0)},o(g){k(o),k(i),f=!1},d(g){g&&v(e),m[n].d(),h[a].d()}}}function bd(t){let e,r,n,o,s,l;return e=new un({props:{title:t[5]}}),n=new cn({props:{hasForm:!0,$$slots:{default:[vd]},$$scope:{ctx:t}}}),s=new pn({props:{primaryButtonText:t[0].command===ue.ComputeSignal||t[0].command===ue.ComputeEmbedding?"Compute":"Preview",secondaryButtonText:"Cancel",primaryButtonDisabled:t[4].length>0||!t[1]}}),s.$on("click:button--secondary",t[11]),{c(){D(e.$$.fragment),r=Y(),D(n.$$.fragment),o=Y(),D(s.$$.fragment)},l(a){q(e.$$.fragment,a),r=K(a),q(n.$$.fragment,a),o=K(a),q(s.$$.fragment,a)},m(a,i){M(e,a,i),C(a,r,i),M(n,a,i),C(a,o,i),M(s,a,i),l=!0},p(a,i){const f={};i&32&&(f.title=a[5]),e.$set(f);const u={};i&8388703&&(u.$$scope={dirty:i,ctx:a}),n.$set(u);const m={};i&1&&(m.primaryButtonText=a[0].command===ue.ComputeSignal||a[0].command===ue.ComputeEmbedding?"Compute":"Preview"),i&18&&(m.primaryButtonDisabled=a[4].length>0||!a[1]),s.$set(m)},i(a){l||(b(e.$$.fragment,a),b(n.$$.fragment,a),b(s.$$.fragment,a),l=!0)},o(a){k(e.$$.fragment,a),k(n.$$.fragment,a),k(s.$$.fragment,a),l=!1},d(a){j(e,a),a&&v(r),j(n,a),a&&v(o),j(s,a)}}}function _d(t){let e,r;return e=new fn({props:{open:!0,$$slots:{default:[bd]},$$scope:{ctx:t}}}),e.$on("submit",t[10]),e.$on("close",t[11]),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,[o]){const s={};o&8388735&&(s.$$scope={dirty:o,ctx:n}),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}const Zl="COMMAND_SIGNAL_CONTEXT";function Sd(){return Et(Zl)}function kd(t,e){const r=at({path:t,jsonSchema:e});return or(Zl,r),r}function Od(t,e,r){let n,o,s,l,a,{command:i}=e,f=i.path,u,m={},p=[];(i.command===ue.EditPreviewConcept||i.command==ue.ComputeSignalCommand)&&i.signalName&&(m={[i.signalName]:{...i.value}});const c=kd(f,u==null?void 0:u.json_schema);he(t,c,P=>r(19,a=P));const h=fr(),d=He(),g=ua();he(t,g,P=>r(18,l=P));const _={concept_score:{"/namespace":$m,"/concept_name":zm,"/embedding":Jm}};function E(P){P in m||r(3,m[P]={},m),r(3,m[P].signal_name=P,m)}function S(){n&&(i.command===ue.ComputeSignal||i.command===ue.ComputeEmbedding?l.mutate([i.namespace,i.datasetName,{leaf_path:f||[],signal:n}]):i.command===ue.PreviewConcept?f&&h.addUdfColumn({path:f,signal_udf:n}):i.command===ue.EditPreviewConcept&&f&&h.editUdfColumn({path:f,signal_udf:n}),A())}function A(){d("close")}function z(P){u=P,r(2,u)}function R(P){u=P,r(2,u)}function B(P){f=P,r(1,f)}function L(P){t.$$.not_equal(m[u==null?void 0:u.name],P)&&(m[u==null?void 0:u.name]=P,r(3,m))}function oe(P){p=P,r(4,p)}return t.$$set=P=>{"command"in P&&r(0,i=P.command)},t.$$.update=()=>{t.$$.dirty&2&&Wt(c,a.path=f,a),t.$$.dirty&4&&Wt(c,a.jsonSchema=u==null?void 0:u.json_schema,a),t.$$.dirty&4&&u!=null&&u.name&&E(u.name),t.$$.dirty&12&&(n=u!=null&&u.name?m[u.name]:void 0),t.$$.dirty&4&&r(6,o=P=>P.dtype?u!=null&&u.input_type?ca[u.input_type].includes(P.dtype):!0:!1),t.$$.dirty&1&&r(5,s=i.command===ue.ComputeSignal?"Compute Signal":i.command===ue.ComputeEmbedding?"Compute Embedding":"Preview Signal")},[i,f,u,m,p,s,o,c,g,_,S,A,z,R,B,L,oe]}class Ed extends le{constructor(e){super(),ae(this,e,Od,_d,ne,{command:0})}}function Ad(t){let e,r;return e=new zs({props:{command:t[0]}}),e.$on("close",Cn),e.$on("create",function(){ra(t[0].onCreate)&&t[0].onCreate.apply(this,arguments)}),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){t=n;const s={};o&1&&(s.command=t[0]),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Cd(t){let e,r;return e=new Fm({props:{command:t[0]}}),e.$on("close",Cn),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){const s={};o&1&&(s.command=n[0]),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function Td(t){let e,r;return e=new Ed({props:{command:t[0]}}),e.$on("close",Cn),{c(){D(e.$$.fragment)},l(n){q(e.$$.fragment,n)},m(n,o){M(e,n,o),r=!0},p(n,o){const s={};o&1&&(s.command=n[0]),e.$set(s)},i(n){r||(b(e.$$.fragment,n),r=!0)},o(n){k(e.$$.fragment,n),r=!1},d(n){j(e,n)}}}function wd(t){let e,r,n,o;const s=[Td,Cd,Ad],l=[];function a(i,f){return i[0].command===ue.ComputeSignal||i[0].command===ue.ComputeEmbedding||i[0].command===ue.PreviewConcept||i[0].command===ue.EditPreviewConcept?0:i[0].command===ue.EditFilter?1:i[0].command===ue.CreateConcept?2:-1}return~(e=a(t))&&(r=l[e]=s[e](t)),{c(){r&&r.c(),n=Q()},l(i){r&&r.l(i),n=Q()},m(i,f){~e&&l[e].m(i,f),C(i,n,f),o=!0},p(i,[f]){let u=e;e=a(i),e===u?~e&&l[e].p(i,f):(r&&(Z(),k(l[u],1,1,()=>{l[u]=null}),x()),~e?(r=l[e],r?r.p(i,f):(r=l[e]=s[e](i),r.c()),b(r,1),r.m(n.parentNode,n)):r=null)},i(i){o||(b(r),o=!0)},o(i){k(r),o=!1},d(i){~e&&l[e].d(i),i&&v(n)}}}var ue=(t=>(t.ComputeSignal="computeSignal",t.PreviewConcept="previewConcept",t.EditPreviewConcept="editPreviewConcept",t.EditFilter="editFilter",t.CreateConcept="createConcept",t.ComputeEmbedding="computeEmbedding",t.ComputeSignalCommand="computeSignal",t))(ue||{});function Jd(t){An.set(t)}let An=at({});function Cn(){An.set({})}function Pd(t,e,r){let n,o;return he(t,An,s=>r(1,o=s)),t.$$.update=()=>{t.$$.dirty&2&&r(0,n=o)},[n,o]}class Yd extends le{constructor(e){super(),ae(this,e,Pd,wd,ne,{})}}export{Yd as C,xa as I,Wd as S,Vd as T,$d as a,Rd as b,ue as c,Ld as d,qs as e,hm as f,bm as g,Es as h,Is as i,fr as j,_m as k,Km as l,Ts as m,ym as n,jr as o,Pa as p,Ns as q,Gd as r,Hd as s,Jd as t,zd as u,Ud as v,vm as w}; diff --git a/web/blueprint/build/_app/immutable/chunks/InProgress.26146721.js b/web/blueprint/build/_app/immutable/chunks/InProgress.26146721.js new file mode 100644 index 0000000000000000000000000000000000000000..b07de6e33b567161b2d017b7d4709ed7fe970551 --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/InProgress.26146721.js @@ -0,0 +1 @@ +import{S as M,i as p,s as E,E as f,a2 as h,a3 as _,m,h as o,n as B,a4 as g,b as A,J as z,O as C,$ as c,D as v,F as b,q as R,r as k,u as q}from"./index.224851d7.js";function w(a){let e,s;return{c(){e=h("title"),s=R(a[1])},l(t){e=_(t,"title",{});var r=m(e);s=k(r,a[1]),r.forEach(o)},m(t,r){A(t,e,r),z(e,s)},p(t,r){r&2&&q(s,t[1])},d(t){t&&o(e)}}}function x(a){let e,s,t=a[1]&&w(a),r=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:a[0]},{height:a[0]},a[2],a[3]],n={};for(let i=0;i{s(5,e=f(f({},e),b(u))),s(3,i=v(e,n)),"size"in u&&s(0,l=u.size),"title"in u&&s(1,d=u.title)},a.$$.update=()=>{s(4,t=e["aria-label"]||e["aria-labelledby"]||d),s(2,r={"aria-hidden":t?void 0:!0,role:t?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=b(e),[l,d,r,i,t]}class S extends M{constructor(e){super(),p(this,e,I,x,E,{size:0,title:1})}}export{S as I}; diff --git a/web/blueprint/build/_app/immutable/chunks/InlineNotification.91d7c257.js b/web/blueprint/build/_app/immutable/chunks/InlineNotification.91d7c257.js new file mode 100644 index 0000000000000000000000000000000000000000..833216b8c25b31b02906f5c3c1e706431eecc84d --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/InlineNotification.91d7c257.js @@ -0,0 +1 @@ +import{S as di,i as hi,s as gi,e as x,b as X,g as d,v as si,d as h,f as ai,h as v,D as $,C as ki,o as Di,E as Z,F as vi,G as O,k as F,y as fi,a as G,l as H,m as J,z as ui,c as K,H as f,I as ii,J as D,A as ci,K as Q,L as j,M as R,N as U,O as Ci,B as ri,P as Ii,Q as W,q as _i,r as mi,u as bi}from"./index.224851d7.js";import{N as pi,a as Bi}from"./NotificationIcon.9209ca8c.js";const Ei=n=>({}),ti=n=>({}),Ni=n=>({}),ni=n=>({}),qi=n=>({}),ei=n=>({});function oi(n){let i,o,e,a,u,g,p,k,C,E,N,c,q,S;e=new pi({props:{notificationType:"inline",kind:n[0],iconDescription:n[6]}});const T=n[13].title,V=O(T,n,n[12],ei),_=V||Ti(n),P=n[13].subtitle,B=O(P,n,n[12],ni),m=B||Vi(n),z=n[13].default,b=O(z,n,n[12],null),A=n[13].actions,l=O(A,n,n[12],ti);let r=!n[5]&&li(n),Y=[{role:n[2]},{kind:n[0]},n[10]],L={};for(let t=0;t{r=null}),ai()):r?(r.p(t,s),s&32&&d(r,1)):(r=li(t),r.c(),d(r,1),r.m(i,null)),ii(i,L=Ci(Y,[(!c||s&4)&&{role:t[2]},(!c||s&1)&&{kind:t[0]},s&1024&&t[10]])),f(i,"bx--inline-notification",!0),f(i,"bx--inline-notification--low-contrast",t[1]),f(i,"bx--inline-notification--hide-close-button",t[5]),f(i,"bx--inline-notification--error",t[0]==="error"),f(i,"bx--inline-notification--info",t[0]==="info"),f(i,"bx--inline-notification--info-square",t[0]==="info-square"),f(i,"bx--inline-notification--success",t[0]==="success"),f(i,"bx--inline-notification--warning",t[0]==="warning"),f(i,"bx--inline-notification--warning-alt",t[0]==="warning-alt")},i(t){c||(d(e.$$.fragment,t),d(_,t),d(m,t),d(b,t),d(l,t),d(r),c=!0)},o(t){h(e.$$.fragment,t),h(_,t),h(m,t),h(b,t),h(l,t),h(r),c=!1},d(t){t&&v(i),ri(e),_&&_.d(t),m&&m.d(t),b&&b.d(t),l&&l.d(t),r&&r.d(),q=!1,Ii(S)}}}function Ti(n){let i;return{c(){i=_i(n[3])},l(o){i=mi(o,n[3])},m(o,e){X(o,i,e)},p(o,e){e&8&&bi(i,o[3])},d(o){o&&v(i)}}}function Vi(n){let i;return{c(){i=_i(n[4])},l(o){i=mi(o,n[4])},m(o,e){X(o,i,e)},p(o,e){e&16&&bi(i,o[4])},d(o){o&&v(i)}}}function li(n){let i,o;return i=new Bi({props:{iconDescription:n[7],notificationType:"inline"}}),i.$on("click",n[9]),{c(){fi(i.$$.fragment)},l(e){ui(i.$$.fragment,e)},m(e,a){ci(i,e,a),o=!0},p(e,a){const u={};a&128&&(u.iconDescription=e[7]),i.$set(u)},i(e){o||(d(i.$$.fragment,e),o=!0)},o(e){h(i.$$.fragment,e),o=!1},d(e){ri(i,e)}}}function Pi(n){let i,o,e=n[8]&&oi(n);return{c(){e&&e.c(),i=x()},l(a){e&&e.l(a),i=x()},m(a,u){e&&e.m(a,u),X(a,i,u),o=!0},p(a,[u]){a[8]?e?(e.p(a,u),u&256&&d(e,1)):(e=oi(a),e.c(),d(e,1),e.m(i.parentNode,i)):e&&(si(),h(e,1,1,()=>{e=null}),ai())},i(a){o||(d(e),o=!0)},o(a){h(e),o=!1},d(a){e&&e.d(a),a&&v(i)}}}function Mi(n,i,o){const e=["kind","lowContrast","timeout","role","title","subtitle","hideCloseButton","statusIconDescription","closeButtonDescription"];let a=$(i,e),{$$slots:u={},$$scope:g}=i,{kind:p="error"}=i,{lowContrast:k=!1}=i,{timeout:C=0}=i,{role:E="alert"}=i,{title:N=""}=i,{subtitle:c=""}=i,{hideCloseButton:q=!1}=i,{statusIconDescription:S=p+" icon"}=i,{closeButtonDescription:T="Close notification"}=i;const V=ki();let _=!0,P;function B(l){V("close",{timeout:l===!0},{cancelable:!0})&&o(8,_=!1)}Di(()=>(C&&(P=setTimeout(()=>B(!0),C)),()=>{clearTimeout(P)}));function m(l){W.call(this,n,l)}function z(l){W.call(this,n,l)}function b(l){W.call(this,n,l)}function A(l){W.call(this,n,l)}return n.$$set=l=>{i=Z(Z({},i),vi(l)),o(10,a=$(i,e)),"kind"in l&&o(0,p=l.kind),"lowContrast"in l&&o(1,k=l.lowContrast),"timeout"in l&&o(11,C=l.timeout),"role"in l&&o(2,E=l.role),"title"in l&&o(3,N=l.title),"subtitle"in l&&o(4,c=l.subtitle),"hideCloseButton"in l&&o(5,q=l.hideCloseButton),"statusIconDescription"in l&&o(6,S=l.statusIconDescription),"closeButtonDescription"in l&&o(7,T=l.closeButtonDescription),"$$scope"in l&&o(12,g=l.$$scope)},[p,k,E,N,c,q,S,T,_,B,a,C,g,u,m,z,b,A]}class Si extends di{constructor(i){super(),hi(this,i,Mi,Pi,gi,{kind:0,lowContrast:1,timeout:11,role:2,title:3,subtitle:4,hideCloseButton:5,statusIconDescription:6,closeButtonDescription:7})}}const Fi=Si;export{Fi as I}; diff --git a/web/blueprint/build/_app/immutable/chunks/JSONSchemaForm.cab38fde.js b/web/blueprint/build/_app/immutable/chunks/JSONSchemaForm.cab38fde.js new file mode 100644 index 0000000000000000000000000000000000000000..52a326eb0e2b1604217a074579e18075c7b5c9f5 --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/JSONSchemaForm.cab38fde.js @@ -0,0 +1,81 @@ +var fi=Object.defineProperty;var ai=(i,e,t)=>e in i?fi(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t;var sn=(i,e,t)=>(ai(i,typeof e!="symbol"?e+"":e,t),t);import{S as ue,i as ce,s as de,E as Pe,a2 as Fe,a3 as Be,m as $,h,n as I,a4 as nt,b as O,J as x,O as $e,$ as pe,D as Ce,F as Me,q as ge,r as _e,u as Te,k as M,a as se,l as V,c as oe,I as wt,H as S,K as me,g as m,v as G,d as _,f as Y,P as Qt,a8 as Pr,C as Gt,G as ye,L as ke,M as ve,N as we,y as H,z as re,A as J,B as W,Q as Ae,w as De,e as q,a9 as on,ad as Tr,o as Ar,a0 as He,W as lt,x as Ee,ap as fn,aa as ui,ac as ci,T as di,U as Ve,V as Je}from"./index.224851d7.js";import{T as hi,S as pi,a as Rr}from"./Toggle.b9cf6836.js";import{W as Ir,d as jr}from"./taskMonitoringStore.8317b9f1.js";function an(i){let e,t;return{c(){e=Fe("title"),t=ge(i[1])},l(r){e=Be(r,"title",{});var n=$(e);t=_e(n,i[1]),n.forEach(h)},m(r,n){O(r,e,n),x(e,t)},p(r,n){n&2&&Te(t,r[1])},d(r){r&&h(e)}}}function mi(i){let e,t,r=i[1]&&an(i),n=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:i[0]},{height:i[0]},i[2],i[3]],l={};for(let s=0;s{t(5,e=Pe(Pe({},e),Me(a))),t(3,s=Ce(e,l)),"size"in a&&t(0,o=a.size),"title"in a&&t(1,f=a.title)},i.$$.update=()=>{t(4,r=e["aria-label"]||e["aria-labelledby"]||f),t(2,n={"aria-hidden":r?void 0:!0,role:r?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=Me(e),[o,f,n,s,r]}class _i extends ue{constructor(e){super(),ce(this,e,gi,mi,de,{size:0,title:1})}}const bi=_i;function un(i){let e,t;return{c(){e=Fe("title"),t=ge(i[1])},l(r){e=Be(r,"title",{});var n=$(e);t=_e(n,i[1]),n.forEach(h)},m(r,n){O(r,e,n),x(e,t)},p(r,n){n&2&&Te(t,r[1])},d(r){r&&h(e)}}}function Ei(i){let e,t,r=i[1]&&un(i),n=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:i[0]},{height:i[0]},i[2],i[3]],l={};for(let s=0;s{t(5,e=Pe(Pe({},e),Me(a))),t(3,s=Ce(e,l)),"size"in a&&t(0,o=a.size),"title"in a&&t(1,f=a.title)},i.$$.update=()=>{t(4,r=e["aria-label"]||e["aria-labelledby"]||f),t(2,n={"aria-hidden":r?void 0:!0,role:r?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=Me(e),[o,f,n,s,r]}class ki extends ue{constructor(e){super(),ce(this,e,yi,Ei,de,{size:0,title:1})}}const vi=ki;function cn(i){let e,t;return{c(){e=Fe("title"),t=ge(i[1])},l(r){e=Be(r,"title",{});var n=$(e);t=_e(n,i[1]),n.forEach(h)},m(r,n){O(r,e,n),x(e,t)},p(r,n){n&2&&Te(t,r[1])},d(r){r&&h(e)}}}function wi(i){let e,t,r=i[1]&&cn(i),n=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:i[0]},{height:i[0]},i[2],i[3]],l={};for(let s=0;s{t(5,e=Pe(Pe({},e),Me(a))),t(3,s=Ce(e,l)),"size"in a&&t(0,o=a.size),"title"in a&&t(1,f=a.title)},i.$$.update=()=>{t(4,r=e["aria-label"]||e["aria-labelledby"]||f),t(2,n={"aria-hidden":r?void 0:!0,role:r?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=Me(e),[o,f,n,s,r]}class Si extends ue{constructor(e){super(),ce(this,e,Oi,wi,de,{size:0,title:1})}}const Nr=Si,Pi=i=>({}),dn=i=>({});function hn(i){let e,t;const r=i[34].label,n=ye(r,i,i[33],dn),l=n||Ti(i);return{c(){e=M("label"),l&&l.c(),this.h()},l(s){e=V(s,"LABEL",{for:!0});var o=$(e);l&&l.l(o),o.forEach(h),this.h()},h(){I(e,"for",i[18]),S(e,"bx--label",!0),S(e,"bx--label--disabled",i[8]),S(e,"bx--visually-hidden",i[17])},m(s,o){O(s,e,o),l&&l.m(e,null),t=!0},p(s,o){n?n.p&&(!t||o[1]&4)&&ke(n,r,s,s[33],t?we(r,s[33],o,Pi):ve(s[33]),dn):l&&l.p&&(!t||o[0]&65536)&&l.p(s,t?o:[-1,-1]),(!t||o[0]&262144)&&I(e,"for",s[18]),(!t||o[0]&256)&&S(e,"bx--label--disabled",s[8]),(!t||o[0]&131072)&&S(e,"bx--visually-hidden",s[17])},i(s){t||(m(l,s),t=!0)},o(s){_(l,s),t=!1},d(s){s&&h(e),l&&l.d(s)}}}function Ti(i){let e;return{c(){e=ge(i[16])},l(t){e=_e(t,i[16])},m(t,r){O(t,e,r)},p(t,r){r[0]&65536&&Te(e,t[16])},d(t){t&&h(e)}}}function Ai(i){let e,t,r,n=i[11]&&pn(),l=!i[11]&&i[13]&&mn();return{c(){n&&n.c(),e=se(),l&&l.c(),t=q()},l(s){n&&n.l(s),e=oe(s),l&&l.l(s),t=q()},m(s,o){n&&n.m(s,o),O(s,e,o),l&&l.m(s,o),O(s,t,o),r=!0},p(s,o){s[11]?n?o[0]&2048&&m(n,1):(n=pn(),n.c(),m(n,1),n.m(e.parentNode,e)):n&&(G(),_(n,1,1,()=>{n=null}),Y()),!s[11]&&s[13]?l?o[0]&10240&&m(l,1):(l=mn(),l.c(),m(l,1),l.m(t.parentNode,t)):l&&(G(),_(l,1,1,()=>{l=null}),Y())},i(s){r||(m(n),m(l),r=!0)},o(s){_(n),_(l),r=!1},d(s){n&&n.d(s),s&&h(e),l&&l.d(s),s&&h(t)}}}function Ri(i){let e,t;return e=new Nr({props:{class:"bx--text-input__readonly-icon"}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},p:pe,i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function pn(i){let e,t;return e=new Ir({props:{class:"bx--number__invalid"}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function mn(i){let e,t;return e=new jr({props:{class:"bx--number__invalid bx--number__invalid--warning"}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function gn(i){let e,t,r,n,l,s,o,f,a,u,c,d,p,g,A,j,k;return r=new vi({props:{class:"down-icon"}}),u=new bi({props:{class:"up-icon"}}),{c(){e=M("div"),t=M("button"),H(r.$$.fragment),s=se(),o=M("div"),f=se(),a=M("button"),H(u.$$.fragment),p=se(),g=M("div"),this.h()},l(b){e=V(b,"DIV",{});var E=$(e);t=V(E,"BUTTON",{type:!0,tabindex:!0,title:!0,"aria-label":!0});var w=$(t);re(r.$$.fragment,w),w.forEach(h),s=oe(E),o=V(E,"DIV",{}),$(o).forEach(h),f=oe(E),a=V(E,"BUTTON",{type:!0,tabindex:!0,title:!0,"aria-label":!0});var N=$(a);re(u.$$.fragment,N),N.forEach(h),p=oe(E),g=V(E,"DIV",{}),$(g).forEach(h),E.forEach(h),this.h()},h(){I(t,"type","button"),I(t,"tabindex","-1"),I(t,"title",n=i[23]||i[10]),I(t,"aria-label",l=i[23]||i[10]),t.disabled=i[8],S(t,"bx--number__control-btn",!0),S(t,"down-icon",!0),S(o,"bx--number__rule-divider",!0),I(a,"type","button"),I(a,"tabindex","-1"),I(a,"title",c=i[24]||i[10]),I(a,"aria-label",d=i[24]||i[10]),a.disabled=i[8],S(a,"bx--number__control-btn",!0),S(a,"up-icon",!0),S(g,"bx--number__rule-divider",!0),S(e,"bx--number__controls",!0)},m(b,E){O(b,e,E),x(e,t),J(r,t,null),x(e,s),x(e,o),x(e,f),x(e,a),J(u,a,null),x(e,p),x(e,g),A=!0,j||(k=[me(t,"click",i[45]),me(a,"click",i[46])],j=!0)},p(b,E){(!A||E[0]&8389632&&n!==(n=b[23]||b[10]))&&I(t,"title",n),(!A||E[0]&8389632&&l!==(l=b[23]||b[10]))&&I(t,"aria-label",l),(!A||E[0]&256)&&(t.disabled=b[8]),(!A||E[0]&16778240&&c!==(c=b[24]||b[10]))&&I(a,"title",c),(!A||E[0]&16778240&&d!==(d=b[24]||b[10]))&&I(a,"aria-label",d),(!A||E[0]&256)&&(a.disabled=b[8])},i(b){A||(m(r.$$.fragment,b),m(u.$$.fragment,b),A=!0)},o(b){_(r.$$.fragment,b),_(u.$$.fragment,b),A=!1},d(b){b&&h(e),W(r),W(u),j=!1,Qt(k)}}}function _n(i){let e,t;return{c(){e=M("div"),t=ge(i[15]),this.h()},l(r){e=V(r,"DIV",{});var n=$(e);t=_e(n,i[15]),n.forEach(h),this.h()},h(){S(e,"bx--form__helper-text",!0),S(e,"bx--form__helper-text--disabled",i[8])},m(r,n){O(r,e,n),x(e,t)},p(r,n){n[0]&32768&&Te(t,r[15]),n[0]&256&&S(e,"bx--form__helper-text--disabled",r[8])},d(r){r&&h(e)}}}function bn(i){let e,t;return{c(){e=M("div"),t=ge(i[12]),this.h()},l(r){e=V(r,"DIV",{id:!0});var n=$(e);t=_e(n,i[12]),n.forEach(h),this.h()},h(){I(e,"id",i[21]),S(e,"bx--form-requirement",!0)},m(r,n){O(r,e,n),x(e,t)},p(r,n){n[0]&4096&&Te(t,r[12]),n[0]&2097152&&I(e,"id",r[21])},d(r){r&&h(e)}}}function En(i){let e,t;return{c(){e=M("div"),t=ge(i[14]),this.h()},l(r){e=V(r,"DIV",{id:!0});var n=$(e);t=_e(n,i[14]),n.forEach(h),this.h()},h(){I(e,"id",i[21]),S(e,"bx--form-requirement",!0)},m(r,n){O(r,e,n),x(e,t)},p(r,n){n[0]&16384&&Te(t,r[14]),n[0]&2097152&&I(e,"id",r[21])},d(r){r&&h(e)}}}function Ii(i){let e,t,r,n,l,s,o,f,a,u,c,d,p,g,A,j,k,b,E,w,N=(i[28].label||i[16])&&hn(i),R=[{type:"number"},{pattern:"[0-9]*"},{"aria-describedby":i[21]},{"data-invalid":s=i[22]||void 0},{"aria-invalid":o=i[22]||void 0},{"aria-label":f=i[16]?void 0:i[20]},{disabled:i[8]},{id:i[18]},{name:i[19]},{max:i[4]},{min:i[5]},{step:i[3]},{value:a=i[0]??""},{readOnly:i[7]},i[29]],L={};for(let y=0;y{N=null}),Y()),wt(l,L=$e(R,[{type:"number"},{pattern:"[0-9]*"},(!b||T[0]&2097152)&&{"aria-describedby":y[21]},(!b||T[0]&4194304&&s!==(s=y[22]||void 0))&&{"data-invalid":s},(!b||T[0]&4194304&&o!==(o=y[22]||void 0))&&{"aria-invalid":o},(!b||T[0]&1114112&&f!==(f=y[16]?void 0:y[20]))&&{"aria-label":f},(!b||T[0]&256)&&{disabled:y[8]},(!b||T[0]&262144)&&{id:y[18]},(!b||T[0]&524288)&&{name:y[19]},(!b||T[0]&16)&&{max:y[4]},(!b||T[0]&32)&&{min:y[5]},(!b||T[0]&8)&&{step:y[3]},(!b||T[0]&1&&a!==(a=y[0]??"")&&l.value!==a)&&{value:a},(!b||T[0]&128)&&{readOnly:y[7]},T[0]&536870912&&y[29]]));let F=c;c=te(y),c===F?Q[c].p(y,T):(G(),_(Q[F],1,1,()=>{Q[F]=null}),Y(),d=Q[c],d?d.p(y,T):(d=Q[c]=fe[c](y),d.c()),m(d,1),d.m(n,p)),y[9]?ie&&(G(),_(ie,1,1,()=>{ie=null}),Y()):ie?(ie.p(y,T),T[0]&512&&m(ie,1)):(ie=gn(y),ie.c(),m(ie,1),ie.m(n,null)),(!b||T[0]&10240)&&S(n,"bx--number__input-wrapper--warning",!y[11]&&y[13]),!y[22]&&!y[13]&&y[15]?le?le.p(y,T):(le=_n(y),le.c(),le.m(t,A)):le&&(le.d(1),le=null),y[22]?v?v.p(y,T):(v=bn(y),v.c(),v.m(t,j)):v&&(v.d(1),v=null),!y[22]&&y[13]?z?z.p(y,T):(z=En(y),z.c(),z.m(t,null)):z&&(z.d(1),z=null),(!b||T[0]&4194304&&k!==(k=y[22]||void 0))&&I(t,"data-invalid",k),(!b||T[0]&128)&&S(t,"bx--number--readonly",y[7]),(!b||T[0]&64)&&S(t,"bx--number--light",y[6]),(!b||T[0]&131072)&&S(t,"bx--number--nolabel",y[17]),(!b||T[0]&512)&&S(t,"bx--number--nosteppers",y[9]),(!b||T[0]&4)&&S(t,"bx--number--sm",y[2]==="sm"),(!b||T[0]&4)&&S(t,"bx--number--xl",y[2]==="xl")},i(y){b||(m(N),m(d),m(ie),b=!0)},o(y){_(N),_(d),_(ie),b=!1},d(y){y&&h(e),N&&N.d(),i[44](null),Q[c].d(),ie&&ie.d(),le&&le.d(),v&&v.d(),z&&z.d(),E=!1,Qt(w)}}}function yn(i){return i!=""?Number(i):null}function ji(i,e,t){let r,n,l,s,o;const f=["size","value","step","max","min","light","readonly","allowEmpty","disabled","hideSteppers","iconDescription","invalid","invalidText","warn","warnText","helperText","label","hideLabel","translateWithId","translationIds","id","name","ref"];let a=Ce(e,f),{$$slots:u={},$$scope:c}=e;const d=Pr(u);let{size:p=void 0}=e,{value:g=null}=e,{step:A=1}=e,{max:j=void 0}=e,{min:k=void 0}=e,{light:b=!1}=e,{readonly:E=!1}=e,{allowEmpty:w=!1}=e,{disabled:N=!1}=e,{hideSteppers:R=!1}=e,{iconDescription:L=""}=e,{invalid:fe=!1}=e,{invalidText:Q=""}=e,{warn:te=!1}=e,{warnText:ie=""}=e,{helperText:le=""}=e,{label:v=""}=e,{hideLabel:z=!1}=e,{translateWithId:y=C=>Oe[C]}=e;const T={increment:"increment",decrement:"decrement"};let{id:F="ccs-"+Math.random().toString(36)}=e,{name:ee=void 0}=e,{ref:ne=null}=e;const Oe={[T.increment]:"Increment number",[T.decrement]:"Decrement number"},Se=Gt();function P(C){C?ne.stepUp():ne.stepDown(),t(0,g=+ne.value),Se("input",g),Se("change",g)}function X({target:C}){t(0,g=yn(C.value)),Se("input",g)}function Ie({target:C}){Se("change",yn(C.value))}function Ne(C){Ae.call(this,i,C)}function Nt(C){Ae.call(this,i,C)}function Lt(C){Ae.call(this,i,C)}function zt(C){Ae.call(this,i,C)}function Ct(C){Ae.call(this,i,C)}function Dt(C){Ae.call(this,i,C)}function D(C){Ae.call(this,i,C)}function ri(C){Ae.call(this,i,C)}function ii(C){Ae.call(this,i,C)}function li(C){De[C?"unshift":"push"](()=>{ne=C,t(1,ne)})}const si=()=>{P(!1)},oi=()=>{P(!0)};return i.$$set=C=>{t(49,e=Pe(Pe({},e),Me(C))),t(29,a=Ce(e,f)),"size"in C&&t(2,p=C.size),"value"in C&&t(0,g=C.value),"step"in C&&t(3,A=C.step),"max"in C&&t(4,j=C.max),"min"in C&&t(5,k=C.min),"light"in C&&t(6,b=C.light),"readonly"in C&&t(7,E=C.readonly),"allowEmpty"in C&&t(30,w=C.allowEmpty),"disabled"in C&&t(8,N=C.disabled),"hideSteppers"in C&&t(9,R=C.hideSteppers),"iconDescription"in C&&t(10,L=C.iconDescription),"invalid"in C&&t(11,fe=C.invalid),"invalidText"in C&&t(12,Q=C.invalidText),"warn"in C&&t(13,te=C.warn),"warnText"in C&&t(14,ie=C.warnText),"helperText"in C&&t(15,le=C.helperText),"label"in C&&t(16,v=C.label),"hideLabel"in C&&t(17,z=C.hideLabel),"translateWithId"in C&&t(31,y=C.translateWithId),"id"in C&&t(18,F=C.id),"name"in C&&t(19,ee=C.name),"ref"in C&&t(1,ne=C.ref),"$$scope"in C&&t(33,c=C.$$scope)},i.$$.update=()=>{i.$$.dirty[1]&1&&t(24,r=y("increment")),i.$$.dirty[1]&1&&t(23,n=y("decrement")),i.$$.dirty[0]&1073744049&&t(22,l=fe&&!E||!w&&g==null||g>j||typeof g=="number"&&g({}),kn=i=>({}),Ci=i=>({}),vn=i=>({});function wn(i){let e,t,r,n=i[9]&&On(i),l=!i[22]&&i[6]&&Sn(i);return{c(){e=M("div"),n&&n.c(),t=se(),l&&l.c(),this.h()},l(s){e=V(s,"DIV",{});var o=$(e);n&&n.l(o),t=oe(o),l&&l.l(o),o.forEach(h),this.h()},h(){S(e,"bx--text-input__label-helper-wrapper",!0)},m(s,o){O(s,e,o),n&&n.m(e,null),x(e,t),l&&l.m(e,null),r=!0},p(s,o){s[9]?n?(n.p(s,o),o[0]&512&&m(n,1)):(n=On(s),n.c(),m(n,1),n.m(e,t)):n&&(G(),_(n,1,1,()=>{n=null}),Y()),!s[22]&&s[6]?l?l.p(s,o):(l=Sn(s),l.c(),l.m(e,null)):l&&(l.d(1),l=null)},i(s){r||(m(n),r=!0)},o(s){_(n),r=!1},d(s){s&&h(e),n&&n.d(),l&&l.d()}}}function On(i){let e,t;const r=i[28].labelText,n=ye(r,i,i[27],vn),l=n||Di(i);return{c(){e=M("label"),l&&l.c(),this.h()},l(s){e=V(s,"LABEL",{for:!0});var o=$(e);l&&l.l(o),o.forEach(h),this.h()},h(){I(e,"for",i[7]),S(e,"bx--label",!0),S(e,"bx--visually-hidden",i[10]),S(e,"bx--label--disabled",i[5]),S(e,"bx--label--inline",i[16]),S(e,"bx--label--inline--sm",i[2]==="sm"),S(e,"bx--label--inline--xl",i[2]==="xl")},m(s,o){O(s,e,o),l&&l.m(e,null),t=!0},p(s,o){n?n.p&&(!t||o[0]&134217728)&&ke(n,r,s,s[27],t?we(r,s[27],o,Ci):ve(s[27]),vn):l&&l.p&&(!t||o[0]&512)&&l.p(s,t?o:[-1,-1]),(!t||o[0]&128)&&I(e,"for",s[7]),(!t||o[0]&1024)&&S(e,"bx--visually-hidden",s[10]),(!t||o[0]&32)&&S(e,"bx--label--disabled",s[5]),(!t||o[0]&65536)&&S(e,"bx--label--inline",s[16]),(!t||o[0]&4)&&S(e,"bx--label--inline--sm",s[2]==="sm"),(!t||o[0]&4)&&S(e,"bx--label--inline--xl",s[2]==="xl")},i(s){t||(m(l,s),t=!0)},o(s){_(l,s),t=!1},d(s){s&&h(e),l&&l.d(s)}}}function Di(i){let e;return{c(){e=ge(i[9])},l(t){e=_e(t,i[9])},m(t,r){O(t,e,r)},p(t,r){r[0]&512&&Te(e,t[9])},d(t){t&&h(e)}}}function Sn(i){let e,t;return{c(){e=M("div"),t=ge(i[6]),this.h()},l(r){e=V(r,"DIV",{});var n=$(e);t=_e(n,i[6]),n.forEach(h),this.h()},h(){S(e,"bx--form__helper-text",!0),S(e,"bx--form__helper-text--disabled",i[5]),S(e,"bx--form__helper-text--inline",i[16])},m(r,n){O(r,e,n),x(e,t)},p(r,n){n[0]&64&&Te(t,r[6]),n[0]&32&&S(e,"bx--form__helper-text--disabled",r[5]),n[0]&65536&&S(e,"bx--form__helper-text--inline",r[16])},d(r){r&&h(e)}}}function Pn(i){let e,t;const r=i[28].labelText,n=ye(r,i,i[27],kn),l=n||$i(i);return{c(){e=M("label"),l&&l.c(),this.h()},l(s){e=V(s,"LABEL",{for:!0});var o=$(e);l&&l.l(o),o.forEach(h),this.h()},h(){I(e,"for",i[7]),S(e,"bx--label",!0),S(e,"bx--visually-hidden",i[10]),S(e,"bx--label--disabled",i[5]),S(e,"bx--label--inline",i[16]),S(e,"bx--label--inline-sm",i[16]&&i[2]==="sm"),S(e,"bx--label--inline-xl",i[16]&&i[2]==="xl")},m(s,o){O(s,e,o),l&&l.m(e,null),t=!0},p(s,o){n?n.p&&(!t||o[0]&134217728)&&ke(n,r,s,s[27],t?we(r,s[27],o,zi):ve(s[27]),kn):l&&l.p&&(!t||o[0]&512)&&l.p(s,t?o:[-1,-1]),(!t||o[0]&128)&&I(e,"for",s[7]),(!t||o[0]&1024)&&S(e,"bx--visually-hidden",s[10]),(!t||o[0]&32)&&S(e,"bx--label--disabled",s[5]),(!t||o[0]&65536)&&S(e,"bx--label--inline",s[16]),(!t||o[0]&65540)&&S(e,"bx--label--inline-sm",s[16]&&s[2]==="sm"),(!t||o[0]&65540)&&S(e,"bx--label--inline-xl",s[16]&&s[2]==="xl")},i(s){t||(m(l,s),t=!0)},o(s){_(l,s),t=!1},d(s){s&&h(e),l&&l.d(s)}}}function $i(i){let e;return{c(){e=ge(i[9])},l(t){e=_e(t,i[9])},m(t,r){O(t,e,r)},p(t,r){r[0]&512&&Te(e,t[9])},d(t){t&&h(e)}}}function Mi(i){let e,t,r,n=i[11]&&Tn(),l=!i[11]&&i[13]&&An();return{c(){n&&n.c(),e=se(),l&&l.c(),t=q()},l(s){n&&n.l(s),e=oe(s),l&&l.l(s),t=q()},m(s,o){n&&n.m(s,o),O(s,e,o),l&&l.m(s,o),O(s,t,o),r=!0},p(s,o){s[11]?n?o[0]&2048&&m(n,1):(n=Tn(),n.c(),m(n,1),n.m(e.parentNode,e)):n&&(G(),_(n,1,1,()=>{n=null}),Y()),!s[11]&&s[13]?l?o[0]&10240&&m(l,1):(l=An(),l.c(),m(l,1),l.m(t.parentNode,t)):l&&(G(),_(l,1,1,()=>{l=null}),Y())},i(s){r||(m(n),m(l),r=!0)},o(s){_(n),_(l),r=!1},d(s){n&&n.d(s),s&&h(e),l&&l.d(s),s&&h(t)}}}function Vi(i){let e,t;return e=new Nr({props:{class:"bx--text-input__readonly-icon"}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},p:pe,i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function Tn(i){let e,t;return e=new Ir({props:{class:"bx--text-input__invalid-icon"}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function An(i){let e,t;return e=new jr({props:{class:`bx--text-input__invalid-icon + bx--text-input__invalid-icon--warning`}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function Rn(i){let e;return{c(){e=M("hr"),this.h()},l(t){e=V(t,"HR",{}),this.h()},h(){S(e,"bx--text-input__divider",!0)},m(t,r){O(t,e,r)},d(t){t&&h(e)}}}function In(i){let e,t;return{c(){e=M("div"),t=ge(i[12]),this.h()},l(r){e=V(r,"DIV",{id:!0});var n=$(e);t=_e(n,i[12]),n.forEach(h),this.h()},h(){I(e,"id",i[19]),S(e,"bx--form-requirement",!0)},m(r,n){O(r,e,n),x(e,t)},p(r,n){n[0]&4096&&Te(t,r[12]),n[0]&524288&&I(e,"id",r[19])},d(r){r&&h(e)}}}function jn(i){let e,t;return{c(){e=M("div"),t=ge(i[14]),this.h()},l(r){e=V(r,"DIV",{id:!0});var n=$(e);t=_e(n,i[14]),n.forEach(h),this.h()},h(){I(e,"id",i[18]),S(e,"bx--form-requirement",!0)},m(r,n){O(r,e,n),x(e,t)},p(r,n){n[0]&16384&&Te(t,r[14]),n[0]&262144&&I(e,"id",r[18])},d(r){r&&h(e)}}}function Nn(i){let e,t;return{c(){e=M("div"),t=ge(i[6]),this.h()},l(r){e=V(r,"DIV",{id:!0});var n=$(e);t=_e(n,i[6]),n.forEach(h),this.h()},h(){I(e,"id",i[20]),S(e,"bx--form__helper-text",!0),S(e,"bx--form__helper-text--disabled",i[5]),S(e,"bx--form__helper-text--inline",i[16])},m(r,n){O(r,e,n),x(e,t)},p(r,n){n[0]&64&&Te(t,r[6]),n[0]&1048576&&I(e,"id",r[20]),n[0]&32&&S(e,"bx--form__helper-text--disabled",r[5]),n[0]&65536&&S(e,"bx--form__helper-text--inline",r[16])},d(r){r&&h(e)}}}function Ln(i){let e,t;return{c(){e=M("div"),t=ge(i[12]),this.h()},l(r){e=V(r,"DIV",{id:!0});var n=$(e);t=_e(n,i[12]),n.forEach(h),this.h()},h(){I(e,"id",i[19]),S(e,"bx--form-requirement",!0)},m(r,n){O(r,e,n),x(e,t)},p(r,n){n[0]&4096&&Te(t,r[12]),n[0]&524288&&I(e,"id",r[19])},d(r){r&&h(e)}}}function zn(i){let e,t;return{c(){e=M("div"),t=ge(i[14]),this.h()},l(r){e=V(r,"DIV",{id:!0});var n=$(e);t=_e(n,i[14]),n.forEach(h),this.h()},h(){I(e,"id",i[18]),S(e,"bx--form-requirement",!0)},m(r,n){O(r,e,n),x(e,t)},p(r,n){n[0]&16384&&Te(t,r[14]),n[0]&262144&&I(e,"id",r[18])},d(r){r&&h(e)}}}function Ui(i){let e,t,r,n,l,s,o,f,a,u,c,d,p,g,A,j,k,b,E,w,N,R,L,fe,Q=i[16]&&wn(i),te=!i[16]&&(i[9]||i[26].labelText)&&Pn(i);const ie=[Vi,Mi],le=[];function v(P,X){return P[17]?0:1}s=v(i),o=le[s]=ie[s](i);let z=[{"data-invalid":u=i[21]||void 0},{"aria-invalid":c=i[21]||void 0},{"data-warn":d=i[13]||void 0},{"aria-describedby":p=i[21]?i[19]:i[13]?i[18]:i[6]?i[20]:void 0},{disabled:i[5]},{id:i[7]},{name:i[8]},{placeholder:i[3]},{required:i[15]},{readOnly:i[17]},i[25]],y={};for(let P=0;P{Q=null}),Y()),!P[16]&&(P[9]||P[26].labelText)?te?(te.p(P,X),X[0]&67174912&&m(te,1)):(te=Pn(P),te.c(),m(te,1),te.m(e,r)):te&&(G(),_(te,1,1,()=>{te=null}),Y());let Ie=s;s=v(P),s===Ie?le[s].p(P,X):(G(),_(le[Ie],1,1,()=>{le[Ie]=null}),Y(),o=le[s],o?o.p(P,X):(o=le[s]=ie[s](P),o.c()),m(o,1),o.m(l,f)),wt(a,y=$e(z,[(!R||X[0]&2097152&&u!==(u=P[21]||void 0))&&{"data-invalid":u},(!R||X[0]&2097152&&c!==(c=P[21]||void 0))&&{"aria-invalid":c},(!R||X[0]&8192&&d!==(d=P[13]||void 0))&&{"data-warn":d},(!R||X[0]&3940416&&p!==(p=P[21]?P[19]:P[13]?P[18]:P[6]?P[20]:void 0))&&{"aria-describedby":p},(!R||X[0]&32)&&{disabled:P[5]},(!R||X[0]&128)&&{id:P[7]},(!R||X[0]&256)&&{name:P[8]},(!R||X[0]&8)&&{placeholder:P[3]},(!R||X[0]&32768)&&{required:P[15]},(!R||X[0]&131072)&&{readOnly:P[17]},X[0]&33554432&&P[25]])),X[0]&1&&a.value!==P[0]&&on(a,P[0]),S(a,"bx--text-input",!0),S(a,"bx--text-input--light",P[4]),S(a,"bx--text-input--invalid",P[21]),S(a,"bx--text-input--warning",P[13]),S(a,"bx--text-input--sm",P[2]==="sm"),S(a,"bx--text-input--xl",P[2]==="xl"),P[22]?T||(T=Rn(),T.c(),T.m(l,A)):T&&(T.d(1),T=null),P[22]&&!P[16]&&P[11]?F?F.p(P,X):(F=In(P),F.c(),F.m(l,j)):F&&(F.d(1),F=null),P[22]&&!P[16]&&P[13]?ee?ee.p(P,X):(ee=jn(P),ee.c(),ee.m(l,null)):ee&&(ee.d(1),ee=null),(!R||X[0]&2097152&&k!==(k=P[21]||void 0))&&I(l,"data-invalid",k),(!R||X[0]&8192&&b!==(b=P[13]||void 0))&&I(l,"data-warn",b),(!R||X[0]&10240)&&S(l,"bx--text-input__field-wrapper--warning",!P[11]&&P[13]),!P[11]&&!P[13]&&!P[22]&&!P[16]&&P[6]?ne?ne.p(P,X):(ne=Nn(P),ne.c(),ne.m(n,w)):ne&&(ne.d(1),ne=null),!P[22]&&P[11]?Oe?Oe.p(P,X):(Oe=Ln(P),Oe.c(),Oe.m(n,N)):Oe&&(Oe.d(1),Oe=null),!P[22]&&!P[11]&&P[13]?Se?Se.p(P,X):(Se=zn(P),Se.c(),Se.m(n,null)):Se&&(Se.d(1),Se=null),(!R||X[0]&65536)&&S(n,"bx--text-input__field-outer-wrapper--inline",P[16]),(!R||X[0]&65536)&&S(e,"bx--text-input-wrapper--inline",P[16]),(!R||X[0]&16)&&S(e,"bx--text-input-wrapper--light",P[4]),(!R||X[0]&131072)&&S(e,"bx--text-input-wrapper--readonly",P[17])},i(P){R||(m(Q),m(te),m(o),R=!0)},o(P){_(Q),_(te),_(o),R=!1},d(P){P&&h(e),Q&&Q.d(),te&&te.d(),le[s].d(),i[38](null),T&&T.d(),F&&F.d(),ee&&ee.d(),ne&&ne.d(),Oe&&Oe.d(),Se&&Se.d(),L=!1,Qt(fe)}}}function xi(i,e,t){let r,n,l,s,o;const f=["size","value","placeholder","light","disabled","helperText","id","name","labelText","hideLabel","invalid","invalidText","warn","warnText","ref","required","inline","readonly"];let a=Ce(e,f),{$$slots:u={},$$scope:c}=e;const d=Pr(u);let{size:p=void 0}=e,{value:g=""}=e,{placeholder:A=""}=e,{light:j=!1}=e,{disabled:k=!1}=e,{helperText:b=""}=e,{id:E="ccs-"+Math.random().toString(36)}=e,{name:w=void 0}=e,{labelText:N=""}=e,{hideLabel:R=!1}=e,{invalid:L=!1}=e,{invalidText:fe=""}=e,{warn:Q=!1}=e,{warnText:te=""}=e,{ref:ie=null}=e,{required:le=!1}=e,{inline:v=!1}=e,{readonly:z=!1}=e;const y=Tr("Form"),T=Gt();function F(D){return a.type!=="number"?D:D!=""?Number(D):null}const ee=D=>{t(0,g=F(D.target.value)),T("input",g)},ne=D=>{T("change",F(D.target.value))};function Oe(D){Ae.call(this,i,D)}function Se(D){Ae.call(this,i,D)}function P(D){Ae.call(this,i,D)}function X(D){Ae.call(this,i,D)}function Ie(D){Ae.call(this,i,D)}function Ne(D){Ae.call(this,i,D)}function Nt(D){Ae.call(this,i,D)}function Lt(D){Ae.call(this,i,D)}function zt(D){Ae.call(this,i,D)}function Ct(D){De[D?"unshift":"push"](()=>{ie=D,t(1,ie)})}function Dt(){g=this.value,t(0,g)}return i.$$set=D=>{e=Pe(Pe({},e),Me(D)),t(25,a=Ce(e,f)),"size"in D&&t(2,p=D.size),"value"in D&&t(0,g=D.value),"placeholder"in D&&t(3,A=D.placeholder),"light"in D&&t(4,j=D.light),"disabled"in D&&t(5,k=D.disabled),"helperText"in D&&t(6,b=D.helperText),"id"in D&&t(7,E=D.id),"name"in D&&t(8,w=D.name),"labelText"in D&&t(9,N=D.labelText),"hideLabel"in D&&t(10,R=D.hideLabel),"invalid"in D&&t(11,L=D.invalid),"invalidText"in D&&t(12,fe=D.invalidText),"warn"in D&&t(13,Q=D.warn),"warnText"in D&&t(14,te=D.warnText),"ref"in D&&t(1,ie=D.ref),"required"in D&&t(15,le=D.required),"inline"in D&&t(16,v=D.inline),"readonly"in D&&t(17,z=D.readonly),"$$scope"in D&&t(27,c=D.$$scope)},i.$$.update=()=>{i.$$.dirty[0]&133120&&t(21,n=L&&!z),i.$$.dirty[0]&128&&t(20,l=`helper-${E}`),i.$$.dirty[0]&128&&t(19,s=`error-${E}`),i.$$.dirty[0]&128&&t(18,o=`warn-${E}`)},t(22,r=!!y&&y.isFluid),[g,ie,p,A,j,k,b,E,w,N,R,L,fe,Q,te,le,v,z,o,s,l,n,r,ee,ne,a,d,c,u,Oe,Se,P,X,Ie,Ne,Nt,Lt,zt,Ct,Dt]}class qi extends ue{constructor(e){super(),ce(this,e,xi,Ui,de,{size:2,value:0,placeholder:3,light:4,disabled:5,helperText:6,id:7,name:8,labelText:9,hideLabel:10,invalid:11,invalidText:12,warn:13,warnText:14,ref:1,required:15,inline:16,readonly:17},null,[-1,-1])}}const Fi=qi;var Bi=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function It(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}function ba(i){if(i.__esModule)return i;var e=i.default;if(typeof e=="function"){var t=function r(){if(this instanceof r){var n=[null];n.push.apply(n,arguments);var l=Function.bind.apply(e,n);return new l}return e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(i).forEach(function(r){var n=Object.getOwnPropertyDescriptor(i,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return i[r]}})}),t}function Zi(){const i=console.warn;console.warn=e=>{e.includes("unknown prop")||e.includes("unexpected slot")||i(e)},Ar(()=>{console.warn=i})}function Cn(i,e,t){const r=i.slice();return r[18]=e[t],r}function Dn(i,e,t){const r=i.slice();return r[18]=e[t],r}function $n(i,e,t){const r=i.slice();return r[10]=e[t],r}function Mn(i,e,t){const r=i.slice();return r[13]=e[t],r[15]=t,r}function Vn(i,e,t){const r=i.slice();return r[16]=e[t],r[15]=t,r}function Un(i,e,t){const r=i.slice();return r[7]=e[t],r}function Hi(i){let e,t,r,n;const l=[Qi,Ki,Wi],s=[];function o(f,a){return f[0]==="table"?0:f[0]==="list"?1:2}return e=o(i),t=s[e]=l[e](i),{c(){t.c(),r=q()},l(f){t.l(f),r=q()},m(f,a){s[e].m(f,a),O(f,r,a),n=!0},p(f,a){let u=e;e=o(f),e===u?s[e].p(f,a):(G(),_(s[u],1,1,()=>{s[u]=null}),Y(),t=s[e],t?t.p(f,a):(t=s[e]=l[e](f),t.c()),m(t,1),t.m(r.parentNode,r))},i(f){n||(m(t),n=!0)},o(f){_(t),n=!1},d(f){s[e].d(f),f&&h(r)}}}function Ji(i){let e,t,r=i[1],n=[];for(let s=0;s_(n[s],1,1,()=>{n[s]=null});return{c(){for(let s=0;s{W(u,1)}),Y()}l?(e=Ee(l,s(o)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else l&&e.$set(a)},i(o){r||(e&&m(e.$$.fragment,o),r=!0)},o(o){e&&_(e.$$.fragment,o),r=!1},d(o){o&&h(t),e&&W(e,o)}}}function Ki(i){let e,t,r,n;const l=[tl,el],s=[];function o(f,a){return f[4]?0:1}return e=o(i),t=s[e]=l[e](i),{c(){t.c(),r=q()},l(f){t.l(f),r=q()},m(f,a){s[e].m(f,a),O(f,r,a),n=!0},p(f,a){let u=e;e=o(f),e===u?s[e].p(f,a):(G(),_(s[u],1,1,()=>{s[u]=null}),Y(),t=s[e],t?t.p(f,a):(t=s[e]=l[e](f),t.c()),m(t,1),t.m(r.parentNode,r))},i(f){n||(m(t),n=!0)},o(f){_(t),n=!1},d(f){s[e].d(f),f&&h(r)}}}function Qi(i){let e,t,r;var n=i[5].table;function l(s){return{props:{$$slots:{default:[dl]},$$scope:{ctx:s}}}}return n&&(e=Ee(n,l(i))),{c(){e&&H(e.$$.fragment),t=q()},l(s){e&&re(e.$$.fragment,s),t=q()},m(s,o){e&&J(e,s,o),O(s,t,o),r=!0},p(s,o){const f={};if(o&8388716&&(f.$$scope={dirty:o,ctx:s}),o&32&&n!==(n=s[5].table)){if(e){G();const a=e;_(a.$$.fragment,1,0,()=>{W(a,1)}),Y()}n?(e=Ee(n,l(s)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else n&&e.$set(f)},i(s){r||(e&&m(e.$$.fragment,s),r=!0)},o(s){e&&_(e.$$.fragment,s),r=!1},d(s){s&&h(t),e&&W(e,s)}}}function Gi(i){let e=i[6].raw+"",t;return{c(){t=ge(e)},l(r){t=_e(r,e)},m(r,n){O(r,t,n)},p(r,n){n&64&&e!==(e=r[6].raw+"")&&Te(t,e)},i:pe,o:pe,d(r){r&&h(t)}}}function Yi(i){let e,t;return e=new Xe({props:{tokens:i[1],renderers:i[5]}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},p(r,n){const l={};n&2&&(l.tokens=r[1]),n&32&&(l.renderers=r[5]),e.$set(l)},i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function Xi(i){let e,t,r,n;const l=[Yi,Gi],s=[];function o(f,a){return f[1]?0:1}return e=o(i),t=s[e]=l[e](i),{c(){t.c(),r=q()},l(f){t.l(f),r=q()},m(f,a){s[e].m(f,a),O(f,r,a),n=!0},p(f,a){let u=e;e=o(f),e===u?s[e].p(f,a):(G(),_(s[u],1,1,()=>{s[u]=null}),Y(),t=s[e],t?t.p(f,a):(t=s[e]=l[e](f),t.c()),m(t,1),t.m(r.parentNode,r))},i(f){n||(m(t),n=!0)},o(f){_(t),n=!1},d(f){s[e].d(f),f&&h(r)}}}function el(i){let e,t,r;const n=[{ordered:i[4]},i[6]];var l=i[5].list;function s(o){let f={$$slots:{default:[rl]},$$scope:{ctx:o}};for(let a=0;a{W(u,1)}),Y()}l?(e=Ee(l,s(o)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else l&&e.$set(a)},i(o){r||(e&&m(e.$$.fragment,o),r=!0)},o(o){e&&_(e.$$.fragment,o),r=!1},d(o){o&&h(t),e&&W(e,o)}}}function tl(i){let e,t,r;const n=[{ordered:i[4]},i[6]];var l=i[5].list;function s(o){let f={$$slots:{default:[ll]},$$scope:{ctx:o}};for(let a=0;a{W(u,1)}),Y()}l?(e=Ee(l,s(o)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else l&&e.$set(a)},i(o){r||(e&&m(e.$$.fragment,o),r=!0)},o(o){e&&_(e.$$.fragment,o),r=!1},d(o){o&&h(t),e&&W(e,o)}}}function nl(i){let e,t,r;return e=new Xe({props:{tokens:i[18].tokens,renderers:i[5]}}),{c(){H(e.$$.fragment),t=se()},l(n){re(e.$$.fragment,n),t=oe(n)},m(n,l){J(e,n,l),O(n,t,l),r=!0},p(n,l){const s={};l&64&&(s.tokens=n[18].tokens),l&32&&(s.renderers=n[5]),e.$set(s)},i(n){r||(m(e.$$.fragment,n),r=!0)},o(n){_(e.$$.fragment,n),r=!1},d(n){W(e,n),n&&h(t)}}}function xn(i){let e,t,r;const n=[i[18]];var l=i[5].unorderedlistitem||i[5].listitem;function s(o){let f={$$slots:{default:[nl]},$$scope:{ctx:o}};for(let a=0;a{W(u,1)}),Y()}l?(e=Ee(l,s(o)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else l&&e.$set(a)},i(o){r||(e&&m(e.$$.fragment,o),r=!0)},o(o){e&&_(e.$$.fragment,o),r=!1},d(o){o&&h(t),e&&W(e,o)}}}function rl(i){let e,t,r=i[6].items,n=[];for(let s=0;s_(n[s],1,1,()=>{n[s]=null});return{c(){for(let s=0;s{W(u,1)}),Y()}l?(e=Ee(l,s(o)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else l&&e.$set(a)},i(o){r||(e&&m(e.$$.fragment,o),r=!0)},o(o){e&&_(e.$$.fragment,o),r=!1},d(o){o&&h(t),e&&W(e,o)}}}function ll(i){let e,t,r=i[6].items,n=[];for(let s=0;s_(n[s],1,1,()=>{n[s]=null});return{c(){for(let s=0;s{W(a,1)}),Y()}n?(e=Ee(n,l(s)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else n&&e.$set(f)},i(s){r||(e&&m(e.$$.fragment,s),r=!0)},o(s){e&&_(e.$$.fragment,s),r=!1},d(s){s&&h(t),e&&W(e,s)}}}function ol(i){let e,t,r=i[2],n=[];for(let s=0;s_(n[s],1,1,()=>{n[s]=null});return{c(){for(let s=0;s{W(a,1)}),Y()}n?(e=Ee(n,l(s)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else n&&e.$set(f)},i(s){r||(e&&m(e.$$.fragment,s),r=!0)},o(s){e&&_(e.$$.fragment,s),r=!1},d(s){s&&h(t),e&&W(e,s)}}}function al(i){let e,t;return e=new Xe({props:{tokens:i[13].tokens,renderers:i[5]}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},p(r,n){const l={};n&8&&(l.tokens=r[13].tokens),n&32&&(l.renderers=r[5]),e.$set(l)},i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function Bn(i){let e,t,r;var n=i[5].tablecell;function l(s){return{props:{header:!1,align:s[6].align[s[15]]||"center",$$slots:{default:[al]},$$scope:{ctx:s}}}}return n&&(e=Ee(n,l(i))),{c(){e&&H(e.$$.fragment),t=q()},l(s){e&&re(e.$$.fragment,s),t=q()},m(s,o){e&&J(e,s,o),O(s,t,o),r=!0},p(s,o){const f={};if(o&64&&(f.align=s[6].align[s[15]]||"center"),o&8388648&&(f.$$scope={dirty:o,ctx:s}),o&32&&n!==(n=s[5].tablecell)){if(e){G();const a=e;_(a.$$.fragment,1,0,()=>{W(a,1)}),Y()}n?(e=Ee(n,l(s)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else n&&e.$set(f)},i(s){r||(e&&m(e.$$.fragment,s),r=!0)},o(s){e&&_(e.$$.fragment,s),r=!1},d(s){s&&h(t),e&&W(e,s)}}}function ul(i){let e,t,r=i[10],n=[];for(let s=0;s_(n[s],1,1,()=>{n[s]=null});return{c(){for(let s=0;s{W(a,1)}),Y()}n?(e=Ee(n,l(s)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else n&&e.$set(f)},i(s){r||(e&&m(e.$$.fragment,s),r=!0)},o(s){e&&_(e.$$.fragment,s),r=!1},d(s){s&&h(t),e&&W(e,s)}}}function cl(i){let e,t,r=i[3],n=[];for(let s=0;s_(n[s],1,1,()=>{n[s]=null});return{c(){for(let s=0;s{W(g,1)}),Y()}s?(e=Ee(s,o(u)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,t.parentNode,t)):e=null}else s&&e.$set(d);const p={};if(c&8388712&&(p.$$scope={dirty:c,ctx:u}),c&32&&f!==(f=u[5].tablebody)){if(r){G();const g=r;_(g.$$.fragment,1,0,()=>{W(g,1)}),Y()}f?(r=Ee(f,a(u)),H(r.$$.fragment),m(r.$$.fragment,1),J(r,n.parentNode,n)):r=null}else f&&r.$set(p)},i(u){l||(e&&m(e.$$.fragment,u),r&&m(r.$$.fragment,u),l=!0)},o(u){e&&_(e.$$.fragment,u),r&&_(r.$$.fragment,u),l=!1},d(u){e&&W(e,u),u&&h(t),u&&h(n),r&&W(r,u)}}}function Hn(i){let e,t;const r=[i[7],{renderers:i[5]}];let n={};for(let l=0;l{s[u]=null}),Y()),~e?(t=s[e],t?t.p(f,a):(t=s[e]=l[e](f),t.c()),m(t,1),t.m(r.parentNode,r)):t=null)},i(f){n||(m(t),n=!0)},o(f){_(t),n=!1},d(f){~e&&s[e].d(f),f&&h(r)}}}function pl(i,e,t){const r=["type","tokens","header","rows","ordered","renderers"];let n=Ce(e,r),{type:l=void 0}=e,{tokens:s=void 0}=e,{header:o=void 0}=e,{rows:f=void 0}=e,{ordered:a=!1}=e,{renderers:u}=e;return Zi(),i.$$set=c=>{e=Pe(Pe({},e),Me(c)),t(6,n=Ce(e,r)),"type"in c&&t(0,l=c.type),"tokens"in c&&t(1,s=c.tokens),"header"in c&&t(2,o=c.header),"rows"in c&&t(3,f=c.rows),"ordered"in c&&t(4,a=c.ordered),"renderers"in c&&t(5,u=c.renderers)},[l,s,o,f,a,u,n]}let Xe=class extends ue{constructor(e){super(),ce(this,e,pl,hl,de,{type:0,tokens:1,header:2,rows:3,ordered:4,renderers:5})}};function Lr(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}let et=Lr();function ml(i){et=i}const zr=/[&<>"']/,gl=new RegExp(zr.source,"g"),Cr=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,_l=new RegExp(Cr.source,"g"),bl={"&":"&","<":"<",">":">",'"':""","'":"'"},Jn=i=>bl[i];function je(i,e){if(e){if(zr.test(i))return i.replace(gl,Jn)}else if(Cr.test(i))return i.replace(_l,Jn);return i}const El=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;function Dr(i){return i.replace(El,(e,t)=>(t=t.toLowerCase(),t==="colon"?":":t.charAt(0)==="#"?t.charAt(1)==="x"?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""))}const yl=/(^|[^\[])\^/g;function be(i,e){i=typeof i=="string"?i:i.source,e=e||"";const t={replace:(r,n)=>(n=n.source||n,n=n.replace(yl,"$1"),i=i.replace(r,n),t),getRegex:()=>new RegExp(i,e)};return t}const kl=/[^\w:]/g,vl=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function Wn(i,e,t){if(i){let r;try{r=decodeURIComponent(Dr(t)).replace(kl,"").toLowerCase()}catch{return null}if(r.indexOf("javascript:")===0||r.indexOf("vbscript:")===0||r.indexOf("data:")===0)return null}e&&!vl.test(t)&&(t=Pl(e,t));try{t=encodeURI(t).replace(/%25/g,"%")}catch{return null}return t}const gt={},wl=/^[^:]+:\/*[^/]*$/,Ol=/^([^:]+:)[\s\S]*$/,Sl=/^([^:]+:\/*[^/]*)[\s\S]*$/;function Pl(i,e){gt[" "+i]||(wl.test(i)?gt[" "+i]=i+"/":gt[" "+i]=kt(i,"/",!0)),i=gt[" "+i];const t=i.indexOf(":")===-1;return e.substring(0,2)==="//"?t?e:i.replace(Ol,"$1")+e:e.charAt(0)==="/"?t?e:i.replace(Sl,"$1")+e:i+e}const Ot={exec:function(){}};function Kn(i,e){const t=i.replace(/\|/g,(l,s,o)=>{let f=!1,a=s;for(;--a>=0&&o[a]==="\\";)f=!f;return f?"|":" |"}),r=t.split(/ \|/);let n=0;if(r[0].trim()||r.shift(),r.length>0&&!r[r.length-1].trim()&&r.pop(),r.length>e)r.splice(e);else for(;r.length1;)e&1&&(t+=i),e>>=1,i+=i;return t+i}function Gn(i,e,t,r){const n=e.href,l=e.title?je(e.title):null,s=i[1].replace(/\\([\[\]])/g,"$1");if(i[0].charAt(0)!=="!"){r.state.inLink=!0;const o={type:"link",raw:t,href:n,title:l,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,o}return{type:"image",raw:t,href:n,title:l,text:je(s)}}function Rl(i,e){const t=i.match(/^(\s+)(?:```)/);if(t===null)return e;const r=t[1];return e.split(` +`).map(n=>{const l=n.match(/^\s+/);if(l===null)return n;const[s]=l;return s.length>=r.length?n.slice(r.length):n}).join(` +`)}class Yt{constructor(e){this.options=e||et}space(e){const t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:"space",raw:t[0]}}code(e){const t=this.rules.block.code.exec(e);if(t){const r=t[0].replace(/^ {1,4}/gm,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?r:kt(r,` +`)}}}fences(e){const t=this.rules.block.fences.exec(e);if(t){const r=t[0],n=Rl(r,t[3]||"");return{type:"code",raw:r,lang:t[2]?t[2].trim().replace(this.rules.inline._escapes,"$1"):t[2],text:n}}}heading(e){const t=this.rules.block.heading.exec(e);if(t){let r=t[2].trim();if(/#$/.test(r)){const n=kt(r,"#");(this.options.pedantic||!n||/ $/.test(n))&&(r=n.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:r,tokens:this.lexer.inline(r)}}}hr(e){const t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:t[0]}}blockquote(e){const t=this.rules.block.blockquote.exec(e);if(t){const r=t[0].replace(/^ *>[ \t]?/gm,""),n=this.lexer.state.top;this.lexer.state.top=!0;const l=this.lexer.blockTokens(r);return this.lexer.state.top=n,{type:"blockquote",raw:t[0],tokens:l,text:r}}}list(e){let t=this.rules.block.list.exec(e);if(t){let r,n,l,s,o,f,a,u,c,d,p,g,A=t[1].trim();const j=A.length>1,k={type:"list",raw:"",ordered:j,start:j?+A.slice(0,-1):"",loose:!1,items:[]};A=j?`\\d{1,9}\\${A.slice(-1)}`:`\\${A}`,this.options.pedantic&&(A=j?A:"[*+-]");const b=new RegExp(`^( {0,3}${A})((?:[ ][^\\n]*)?(?:\\n|$))`);for(;e&&(g=!1,!(!(t=b.exec(e))||this.rules.block.hr.test(e)));){if(r=t[0],e=e.substring(r.length),u=t[2].split(` +`,1)[0].replace(/^\t+/,w=>" ".repeat(3*w.length)),c=e.split(` +`,1)[0],this.options.pedantic?(s=2,p=u.trimLeft()):(s=t[2].search(/[^ ]/),s=s>4?1:s,p=u.slice(s),s+=t[1].length),f=!1,!u&&/^ *$/.test(c)&&(r+=c+` +`,e=e.substring(c.length+1),g=!0),!g){const w=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),N=new RegExp(`^ {0,${Math.min(3,s-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),R=new RegExp(`^ {0,${Math.min(3,s-1)}}(?:\`\`\`|~~~)`),L=new RegExp(`^ {0,${Math.min(3,s-1)}}#`);for(;e&&(d=e.split(` +`,1)[0],c=d,this.options.pedantic&&(c=c.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!(R.test(c)||L.test(c)||w.test(c)||N.test(e)));){if(c.search(/[^ ]/)>=s||!c.trim())p+=` +`+c.slice(s);else{if(f||u.search(/[^ ]/)>=4||R.test(u)||L.test(u)||N.test(u))break;p+=` +`+c}!f&&!c.trim()&&(f=!0),r+=d+` +`,e=e.substring(d.length+1),u=c.slice(s)}}k.loose||(a?k.loose=!0:/\n *\n *$/.test(r)&&(a=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(p),n&&(l=n[0]!=="[ ] ",p=p.replace(/^\[[ xX]\] +/,""))),k.items.push({type:"list_item",raw:r,task:!!n,checked:l,loose:!1,text:p}),k.raw+=r}k.items[k.items.length-1].raw=r.trimRight(),k.items[k.items.length-1].text=p.trimRight(),k.raw=k.raw.trimRight();const E=k.items.length;for(o=0;oR.type==="space"),N=w.length>0&&w.some(R=>/\n.*\n/.test(R.raw));k.loose=N}if(k.loose)for(o=0;o$/,"$1").replace(this.rules.inline._escapes,"$1"):"",l=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline._escapes,"$1"):t[3];return{type:"def",tag:r,raw:t[0],href:n,title:l}}}table(e){const t=this.rules.block.table.exec(e);if(t){const r={type:"table",header:Kn(t[1]).map(n=>({text:n})),align:t[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:t[3]&&t[3].trim()?t[3].replace(/\n[ \t]*$/,"").split(` +`):[]};if(r.header.length===r.align.length){r.raw=t[0];let n=r.align.length,l,s,o,f;for(l=0;l({text:a}));for(n=r.header.length,s=0;s/i.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(t[0]):je(t[0]):t[0]}}link(e){const t=this.rules.inline.link.exec(e);if(t){const r=t[2].trim();if(!this.options.pedantic&&/^$/.test(r))return;const s=kt(r.slice(0,-1),"\\");if((r.length-s.length)%2===0)return}else{const s=Tl(t[2],"()");if(s>-1){const f=(t[0].indexOf("!")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,f).trim(),t[3]=""}}let n=t[2],l="";if(this.options.pedantic){const s=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(n);s&&(n=s[1],l=s[3])}else l=t[3]?t[3].slice(1,-1):"";return n=n.trim(),/^$/.test(r)?n=n.slice(1):n=n.slice(1,-1)),Gn(t,{href:n&&n.replace(this.rules.inline._escapes,"$1"),title:l&&l.replace(this.rules.inline._escapes,"$1")},t[0],this.lexer)}}reflink(e,t){let r;if((r=this.rules.inline.reflink.exec(e))||(r=this.rules.inline.nolink.exec(e))){let n=(r[2]||r[1]).replace(/\s+/g," ");if(n=t[n.toLowerCase()],!n){const l=r[0].charAt(0);return{type:"text",raw:l,text:l}}return Gn(r,n,r[0],this.lexer)}}emStrong(e,t,r=""){let n=this.rules.inline.emStrong.lDelim.exec(e);if(!n||n[3]&&r.match(/[\p{L}\p{N}]/u))return;const l=n[1]||n[2]||"";if(!l||l&&(r===""||this.rules.inline.punctuation.exec(r))){const s=n[0].length-1;let o,f,a=s,u=0;const c=n[0][0]==="*"?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(n=c.exec(t))!=null;){if(o=n[1]||n[2]||n[3]||n[4]||n[5]||n[6],!o)continue;if(f=o.length,n[3]||n[4]){a+=f;continue}else if((n[5]||n[6])&&s%3&&!((s+f)%3)){u+=f;continue}if(a-=f,a>0)continue;f=Math.min(f,f+a+u);const d=e.slice(0,s+n.index+(n[0].length-o.length)+f);if(Math.min(s,f)%2){const g=d.slice(1,-1);return{type:"em",raw:d,text:g,tokens:this.lexer.inlineTokens(g)}}const p=d.slice(2,-2);return{type:"strong",raw:d,text:p,tokens:this.lexer.inlineTokens(p)}}}}codespan(e){const t=this.rules.inline.code.exec(e);if(t){let r=t[2].replace(/\n/g," ");const n=/[^ ]/.test(r),l=/^ /.test(r)&&/ $/.test(r);return n&&l&&(r=r.substring(1,r.length-1)),r=je(r,!0),{type:"codespan",raw:t[0],text:r}}}br(e){const t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){const t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e,t){const r=this.rules.inline.autolink.exec(e);if(r){let n,l;return r[2]==="@"?(n=je(this.options.mangle?t(r[1]):r[1]),l="mailto:"+n):(n=je(r[1]),l=n),{type:"link",raw:r[0],text:n,href:l,tokens:[{type:"text",raw:n,text:n}]}}}url(e,t){let r;if(r=this.rules.inline.url.exec(e)){let n,l;if(r[2]==="@")n=je(this.options.mangle?t(r[0]):r[0]),l="mailto:"+n;else{let s;do s=r[0],r[0]=this.rules.inline._backpedal.exec(r[0])[0];while(s!==r[0]);n=je(r[0]),r[1]==="www."?l="http://"+r[0]:l=r[0]}return{type:"link",raw:r[0],text:n,href:l,tokens:[{type:"text",raw:n,text:n}]}}}inlineText(e,t){const r=this.rules.inline.text.exec(e);if(r){let n;return this.lexer.state.inRawBlock?n=this.options.sanitize?this.options.sanitizer?this.options.sanitizer(r[0]):je(r[0]):r[0]:n=je(this.options.smartypants?t(r[0]):r[0]),{type:"text",raw:r[0],text:n}}}}const Z={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:Ot,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/};Z._label=/(?!\s*\])(?:\\.|[^\[\]\\])+/;Z._title=/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;Z.def=be(Z.def).replace("label",Z._label).replace("title",Z._title).getRegex();Z.bullet=/(?:[*+-]|\d{1,9}[.)])/;Z.listItemStart=be(/^( *)(bull) */).replace("bull",Z.bullet).getRegex();Z.list=be(Z.list).replace(/bull/g,Z.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+Z.def.source+")").getRegex();Z._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul";Z._comment=/|$)/;Z.html=be(Z.html,"i").replace("comment",Z._comment).replace("tag",Z._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();Z.paragraph=be(Z._paragraph).replace("hr",Z.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Z._tag).getRegex();Z.blockquote=be(Z.blockquote).replace("paragraph",Z.paragraph).getRegex();Z.normal={...Z};Z.gfm={...Z.normal,table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"};Z.gfm.table=be(Z.gfm.table).replace("hr",Z.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Z._tag).getRegex();Z.gfm.paragraph=be(Z._paragraph).replace("hr",Z.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",Z.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",Z._tag).getRegex();Z.pedantic={...Z.normal,html:be(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",Z._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:Ot,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:be(Z.normal._paragraph).replace("hr",Z.hr).replace("heading",` *#{1,6} *[^ +]`).replace("lheading",Z.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()};const U={escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:Ot,tag:"^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:Ot,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\?@\\[\\]`^{|}~";U.punctuation=be(U.punctuation).replace(/punctuation/g,U._punctuation).getRegex();U.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;U.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g;U._comment=be(Z._comment).replace("(?:-->|$)","-->").getRegex();U.emStrong.lDelim=be(U.emStrong.lDelim).replace(/punct/g,U._punctuation).getRegex();U.emStrong.rDelimAst=be(U.emStrong.rDelimAst,"g").replace(/punct/g,U._punctuation).getRegex();U.emStrong.rDelimUnd=be(U.emStrong.rDelimUnd,"g").replace(/punct/g,U._punctuation).getRegex();U._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;U._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;U._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;U.autolink=be(U.autolink).replace("scheme",U._scheme).replace("email",U._email).getRegex();U._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;U.tag=be(U.tag).replace("comment",U._comment).replace("attribute",U._attribute).getRegex();U._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;U._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;U._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;U.link=be(U.link).replace("label",U._label).replace("href",U._href).replace("title",U._title).getRegex();U.reflink=be(U.reflink).replace("label",U._label).replace("ref",Z._label).getRegex();U.nolink=be(U.nolink).replace("ref",Z._label).getRegex();U.reflinkSearch=be(U.reflinkSearch,"g").replace("reflink",U.reflink).replace("nolink",U.nolink).getRegex();U.normal={...U};U.pedantic={...U.normal,strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:be(/^!?\[(label)\]\((.*?)\)/).replace("label",U._label).getRegex(),reflink:be(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",U._label).getRegex()};U.gfm={...U.normal,escape:be(U.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\.5&&(r="x"+r.toString(16)),e+="&#"+r+";";return e}class Ze{constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||et,this.options.tokenizer=this.options.tokenizer||new Yt,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};const t={block:Z.normal,inline:U.normal};this.options.pedantic?(t.block=Z.pedantic,t.inline=U.pedantic):this.options.gfm&&(t.block=Z.gfm,this.options.breaks?t.inline=U.breaks:t.inline=U.gfm),this.tokenizer.rules=t}static get rules(){return{block:Z,inline:U}}static lex(e,t){return new Ze(t).lex(e)}static lexInline(e,t){return new Ze(t).inlineTokens(e)}lex(e){e=e.replace(/\r\n|\r/g,` +`),this.blockTokens(e,this.tokens);let t;for(;t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens}blockTokens(e,t=[]){this.options.pedantic?e=e.replace(/\t/g," ").replace(/^ +$/gm,""):e=e.replace(/^( *)(\t+)/gm,(o,f,a)=>f+" ".repeat(a.length));let r,n,l,s;for(;e;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(o=>(r=o.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))){if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length),r.raw.length===1&&t.length>0?t[t.length-1].raw+=` +`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length),n=t[t.length-1],n&&(n.type==="paragraph"||n.type==="text")?(n.raw+=` +`+r.raw,n.text+=` +`+r.text,this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length),n=t[t.length-1],n&&(n.type==="paragraph"||n.type==="text")?(n.raw+=` +`+r.raw,n.text+=` +`+r.raw,this.inlineQueue[this.inlineQueue.length-1].src=n.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(l=e,this.options.extensions&&this.options.extensions.startBlock){let o=1/0;const f=e.slice(1);let a;this.options.extensions.startBlock.forEach(function(u){a=u.call({lexer:this},f),typeof a=="number"&&a>=0&&(o=Math.min(o,a))}),o<1/0&&o>=0&&(l=e.substring(0,o+1))}if(this.state.top&&(r=this.tokenizer.paragraph(l))){n=t[t.length-1],s&&n.type==="paragraph"?(n.raw+=` +`+r.raw,n.text+=` +`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(r),s=l.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length),n=t[t.length-1],n&&n.type==="text"?(n.raw+=` +`+r.raw,n.text+=` +`+r.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=n.text):t.push(r);continue}if(e){const o="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(o);break}else throw new Error(o)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let r,n,l,s=e,o,f,a;if(this.tokens.links){const u=Object.keys(this.tokens.links);if(u.length>0)for(;(o=this.tokenizer.rules.inline.reflinkSearch.exec(s))!=null;)u.includes(o[0].slice(o[0].lastIndexOf("[")+1,-1))&&(s=s.slice(0,o.index)+"["+Qn("a",o[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(o=this.tokenizer.rules.inline.blockSkip.exec(s))!=null;)s=s.slice(0,o.index)+"["+Qn("a",o[0].length-2)+"]"+s.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;(o=this.tokenizer.rules.inline.escapedEmSt.exec(s))!=null;)s=s.slice(0,o.index+o[0].length-2)+"++"+s.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(;e;)if(f||(a=""),f=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(u=>(r=u.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))){if(r=this.tokenizer.escape(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.tag(e)){e=e.substring(r.raw.length),n=t[t.length-1],n&&r.type==="text"&&n.type==="text"?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.link(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length),n=t[t.length-1],n&&r.type==="text"&&n.type==="text"?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(r=this.tokenizer.emStrong(e,s,a)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.codespan(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.br(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.del(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.autolink(e,Yn)){e=e.substring(r.raw.length),t.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(e,Yn))){e=e.substring(r.raw.length),t.push(r);continue}if(l=e,this.options.extensions&&this.options.extensions.startInline){let u=1/0;const c=e.slice(1);let d;this.options.extensions.startInline.forEach(function(p){d=p.call({lexer:this},c),typeof d=="number"&&d>=0&&(u=Math.min(u,d))}),u<1/0&&u>=0&&(l=e.substring(0,u+1))}if(r=this.tokenizer.inlineText(l,Il)){e=e.substring(r.raw.length),r.raw.slice(-1)!=="_"&&(a=r.raw.slice(-1)),f=!0,n=t[t.length-1],n&&n.type==="text"?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(e){const u="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}}class Xt{constructor(e){this.options=e||et}code(e,t,r){const n=(t||"").match(/\S*/)[0];if(this.options.highlight){const l=this.options.highlight(e,n);l!=null&&l!==e&&(r=!0,e=l)}return e=e.replace(/\n$/,"")+` +`,n?'
'+(r?e:je(e,!0))+`
+`:"
"+(r?e:je(e,!0))+`
+`}blockquote(e){return`
+${e}
+`}html(e){return e}heading(e,t,r,n){if(this.options.headerIds){const l=this.options.headerPrefix+n.slug(r);return`${e} +`}return`${e} +`}hr(){return this.options.xhtml?`
+`:`
+`}list(e,t,r){const n=t?"ol":"ul",l=t&&r!==1?' start="'+r+'"':"";return"<"+n+l+`> +`+e+" +`}listitem(e){return`
  • ${e}
  • +`}checkbox(e){return" "}paragraph(e){return`

    ${e}

    +`}table(e,t){return t&&(t=`${t}`),` + +`+e+` +`+t+`
    +`}tablerow(e){return` +${e} +`}tablecell(e,t){const r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+` +`}strong(e){return`${e}`}em(e){return`${e}`}codespan(e){return`${e}`}br(){return this.options.xhtml?"
    ":"
    "}del(e){return`${e}`}link(e,t,r){if(e=Wn(this.options.sanitize,this.options.baseUrl,e),e===null)return r;let n='",n}image(e,t,r){if(e=Wn(this.options.sanitize,this.options.baseUrl,e),e===null)return r;let n=`${r}":">",n}text(e){return e}}class $r{strong(e){return e}em(e){return e}codespan(e){return e}del(e){return e}html(e){return e}text(e){return e}link(e,t,r){return""+r}image(e,t,r){return""+r}br(){return""}}class en{constructor(){this.seen={}}serialize(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/ig,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")}getNextSafeSlug(e,t){let r=e,n=0;if(this.seen.hasOwnProperty(r)){n=this.seen[e];do n++,r=e+"-"+n;while(this.seen.hasOwnProperty(r))}return t||(this.seen[e]=n,this.seen[r]=0),r}slug(e,t={}){const r=this.serialize(e);return this.getNextSafeSlug(r,t.dryrun)}}let ht=class qt{constructor(e){this.options=e||et,this.options.renderer=this.options.renderer||new Xt,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new $r,this.slugger=new en}static parse(e,t){return new qt(t).parse(e)}static parseInline(e,t){return new qt(t).parseInline(e)}parse(e,t=!0){let r="",n,l,s,o,f,a,u,c,d,p,g,A,j,k,b,E,w,N,R;const L=e.length;for(n=0;n0&&b.tokens[0].type==="paragraph"?(b.tokens[0].text=N+" "+b.tokens[0].text,b.tokens[0].tokens&&b.tokens[0].tokens.length>0&&b.tokens[0].tokens[0].type==="text"&&(b.tokens[0].tokens[0].text=N+" "+b.tokens[0].tokens[0].text)):b.tokens.unshift({type:"text",text:N}):k+=N),k+=this.parse(b.tokens,j),d+=this.renderer.listitem(k,w,E);r+=this.renderer.list(d,g,A);continue}case"html":{r+=this.renderer.html(p.text);continue}case"paragraph":{r+=this.renderer.paragraph(this.parseInline(p.tokens));continue}case"text":{for(d=p.tokens?this.parseInline(p.tokens):p.text;n+1{if(r.message+=` +Please report this to https://github.com/markedjs/marked.`,i){const n="

    An error occurred:

    "+je(r.message+"",!0)+"
    ";if(e)return Promise.resolve(n);if(t){t(null,n);return}return n}if(e)return Promise.reject(r);if(t){t(r);return}throw r}}function Mr(i,e){return(t,r,n)=>{typeof r=="function"&&(n=r,r=null);const l={...r};r={...K.defaults,...l};const s=jl(r.silent,r.async,n);if(typeof t>"u"||t===null)return s(new Error("marked(): input parameter is undefined or null"));if(typeof t!="string")return s(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));if(Al(r),r.hooks&&(r.hooks.options=r),n){const o=r.highlight;let f;try{r.hooks&&(t=r.hooks.preprocess(t)),f=i(t,r)}catch(c){return s(c)}const a=function(c){let d;if(!c)try{r.walkTokens&&K.walkTokens(f,r.walkTokens),d=e(f,r),r.hooks&&(d=r.hooks.postprocess(d))}catch(p){c=p}return r.highlight=o,c?s(c):n(null,d)};if(!o||o.length<3||(delete r.highlight,!f.length))return a();let u=0;K.walkTokens(f,function(c){c.type==="code"&&(u++,setTimeout(()=>{o(c.text,c.lang,function(d,p){if(d)return a(d);p!=null&&p!==c.text&&(c.text=p,c.escaped=!0),u--,u===0&&a()})},0))}),u===0&&a();return}if(r.async)return Promise.resolve(r.hooks?r.hooks.preprocess(t):t).then(o=>i(o,r)).then(o=>r.walkTokens?Promise.all(K.walkTokens(o,r.walkTokens)).then(()=>o):o).then(o=>e(o,r)).then(o=>r.hooks?r.hooks.postprocess(o):o).catch(s);try{r.hooks&&(t=r.hooks.preprocess(t));const o=i(t,r);r.walkTokens&&K.walkTokens(o,r.walkTokens);let f=e(o,r);return r.hooks&&(f=r.hooks.postprocess(f)),f}catch(o){return s(o)}}}function K(i,e,t){return Mr(Ze.lex,ht.parse)(i,e,t)}K.options=K.setOptions=function(i){return K.defaults={...K.defaults,...i},ml(K.defaults),K};K.getDefaults=Lr;K.defaults=et;K.use=function(...i){const e=K.defaults.extensions||{renderers:{},childTokens:{}};i.forEach(t=>{const r={...t};if(r.async=K.defaults.async||r.async||!1,t.extensions&&(t.extensions.forEach(n=>{if(!n.name)throw new Error("extension name required");if(n.renderer){const l=e.renderers[n.name];l?e.renderers[n.name]=function(...s){let o=n.renderer.apply(this,s);return o===!1&&(o=l.apply(this,s)),o}:e.renderers[n.name]=n.renderer}if(n.tokenizer){if(!n.level||n.level!=="block"&&n.level!=="inline")throw new Error("extension level must be 'block' or 'inline'");e[n.level]?e[n.level].unshift(n.tokenizer):e[n.level]=[n.tokenizer],n.start&&(n.level==="block"?e.startBlock?e.startBlock.push(n.start):e.startBlock=[n.start]:n.level==="inline"&&(e.startInline?e.startInline.push(n.start):e.startInline=[n.start]))}n.childTokens&&(e.childTokens[n.name]=n.childTokens)}),r.extensions=e),t.renderer){const n=K.defaults.renderer||new Xt;for(const l in t.renderer){const s=n[l];n[l]=(...o)=>{let f=t.renderer[l].apply(n,o);return f===!1&&(f=s.apply(n,o)),f}}r.renderer=n}if(t.tokenizer){const n=K.defaults.tokenizer||new Yt;for(const l in t.tokenizer){const s=n[l];n[l]=(...o)=>{let f=t.tokenizer[l].apply(n,o);return f===!1&&(f=s.apply(n,o)),f}}r.tokenizer=n}if(t.hooks){const n=K.defaults.hooks||new St;for(const l in t.hooks){const s=n[l];St.passThroughHooks.has(l)?n[l]=o=>{if(K.defaults.async)return Promise.resolve(t.hooks[l].call(n,o)).then(a=>s.call(n,a));const f=t.hooks[l].call(n,o);return s.call(n,f)}:n[l]=(...o)=>{let f=t.hooks[l].apply(n,o);return f===!1&&(f=s.apply(n,o)),f}}r.hooks=n}if(t.walkTokens){const n=K.defaults.walkTokens;r.walkTokens=function(l){let s=[];return s.push(t.walkTokens.call(this,l)),n&&(s=s.concat(n.call(this,l))),s}}K.setOptions(r)})};K.walkTokens=function(i,e){let t=[];for(const r of i)switch(t=t.concat(e.call(K,r)),r.type){case"table":{for(const n of r.header)t=t.concat(K.walkTokens(n.tokens,e));for(const n of r.rows)for(const l of n)t=t.concat(K.walkTokens(l.tokens,e));break}case"list":{t=t.concat(K.walkTokens(r.items,e));break}default:K.defaults.extensions&&K.defaults.extensions.childTokens&&K.defaults.extensions.childTokens[r.type]?K.defaults.extensions.childTokens[r.type].forEach(function(n){t=t.concat(K.walkTokens(r[n],e))}):r.tokens&&(t=t.concat(K.walkTokens(r.tokens,e)))}return t};K.parseInline=Mr(Ze.lexInline,ht.parseInline);K.Parser=ht;K.parser=ht.parse;K.Renderer=Xt;K.TextRenderer=$r;K.Lexer=Ze;K.lexer=Ze.lex;K.Tokenizer=Yt;K.Slugger=en;K.Hooks=St;K.parse=K;K.options;K.setOptions;K.use;K.walkTokens;K.parseInline;ht.parse;Ze.lex;const Vr={};function Nl(i){let e;return{c(){e=ge(i[1])},l(t){e=_e(t,i[1])},m(t,r){O(t,e,r)},p(t,r){r&2&&Te(e,t[1])},i:pe,o:pe,d(t){t&&h(e)}}}function Ll(i){let e,t;const r=i[5].default,n=ye(r,i,i[4],null);return{c(){e=M("h6"),n&&n.c(),this.h()},l(l){e=V(l,"H6",{id:!0});var s=$(e);n&&n.l(s),s.forEach(h),this.h()},h(){I(e,"id",i[2])},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,s){n&&n.p&&(!t||s&16)&&ke(n,r,l,l[4],t?we(r,l[4],s,null):ve(l[4]),null),(!t||s&4)&&I(e,"id",l[2])},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function zl(i){let e,t;const r=i[5].default,n=ye(r,i,i[4],null);return{c(){e=M("h5"),n&&n.c(),this.h()},l(l){e=V(l,"H5",{id:!0});var s=$(e);n&&n.l(s),s.forEach(h),this.h()},h(){I(e,"id",i[2])},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,s){n&&n.p&&(!t||s&16)&&ke(n,r,l,l[4],t?we(r,l[4],s,null):ve(l[4]),null),(!t||s&4)&&I(e,"id",l[2])},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Cl(i){let e,t;const r=i[5].default,n=ye(r,i,i[4],null);return{c(){e=M("h4"),n&&n.c(),this.h()},l(l){e=V(l,"H4",{id:!0});var s=$(e);n&&n.l(s),s.forEach(h),this.h()},h(){I(e,"id",i[2])},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,s){n&&n.p&&(!t||s&16)&&ke(n,r,l,l[4],t?we(r,l[4],s,null):ve(l[4]),null),(!t||s&4)&&I(e,"id",l[2])},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Dl(i){let e,t;const r=i[5].default,n=ye(r,i,i[4],null);return{c(){e=M("h3"),n&&n.c(),this.h()},l(l){e=V(l,"H3",{id:!0});var s=$(e);n&&n.l(s),s.forEach(h),this.h()},h(){I(e,"id",i[2])},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,s){n&&n.p&&(!t||s&16)&&ke(n,r,l,l[4],t?we(r,l[4],s,null):ve(l[4]),null),(!t||s&4)&&I(e,"id",l[2])},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function $l(i){let e,t;const r=i[5].default,n=ye(r,i,i[4],null);return{c(){e=M("h2"),n&&n.c(),this.h()},l(l){e=V(l,"H2",{id:!0});var s=$(e);n&&n.l(s),s.forEach(h),this.h()},h(){I(e,"id",i[2])},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,s){n&&n.p&&(!t||s&16)&&ke(n,r,l,l[4],t?we(r,l[4],s,null):ve(l[4]),null),(!t||s&4)&&I(e,"id",l[2])},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Ml(i){let e,t;const r=i[5].default,n=ye(r,i,i[4],null);return{c(){e=M("h1"),n&&n.c(),this.h()},l(l){e=V(l,"H1",{id:!0});var s=$(e);n&&n.l(s),s.forEach(h),this.h()},h(){I(e,"id",i[2])},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,s){n&&n.p&&(!t||s&16)&&ke(n,r,l,l[4],t?we(r,l[4],s,null):ve(l[4]),null),(!t||s&4)&&I(e,"id",l[2])},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Vl(i){let e,t,r,n;const l=[Ml,$l,Dl,Cl,zl,Ll,Nl],s=[];function o(f,a){return f[0]===1?0:f[0]===2?1:f[0]===3?2:f[0]===4?3:f[0]===5?4:f[0]===6?5:6}return e=o(i),t=s[e]=l[e](i),{c(){t.c(),r=q()},l(f){t.l(f),r=q()},m(f,a){s[e].m(f,a),O(f,r,a),n=!0},p(f,[a]){let u=e;e=o(f),e===u?s[e].p(f,a):(G(),_(s[u],1,1,()=>{s[u]=null}),Y(),t=s[e],t?t.p(f,a):(t=s[e]=l[e](f),t.c()),m(t,1),t.m(r.parentNode,r))},i(f){n||(m(t),n=!0)},o(f){_(t),n=!1},d(f){s[e].d(f),f&&h(r)}}}function Ul(i,e,t){let r,{$$slots:n={},$$scope:l}=e,{depth:s}=e,{raw:o}=e,{text:f}=e;const{slug:a,getOptions:u}=Tr(Vr),c=u();return i.$$set=d=>{"depth"in d&&t(0,s=d.depth),"raw"in d&&t(1,o=d.raw),"text"in d&&t(3,f=d.text),"$$scope"in d&&t(4,l=d.$$scope)},i.$$.update=()=>{i.$$.dirty&8&&t(2,r=c.headerIds?c.headerPrefix+a(f):void 0)},[s,o,r,f,l,n]}class xl extends ue{constructor(e){super(),ce(this,e,Ul,Vl,de,{depth:0,raw:1,text:3})}}function ql(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("p"),n&&n.c()},l(l){e=V(l,"P",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Fl(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class Bl extends ue{constructor(e){super(),ce(this,e,Fl,ql,de,{})}}function Zl(i){let e;const t=i[3].default,r=ye(t,i,i[2],null);return{c(){r&&r.c()},l(n){r&&r.l(n)},m(n,l){r&&r.m(n,l),e=!0},p(n,[l]){r&&r.p&&(!e||l&4)&&ke(r,t,n,n[2],e?we(t,n[2],l,null):ve(n[2]),null)},i(n){e||(m(r,n),e=!0)},o(n){_(r,n),e=!1},d(n){r&&r.d(n)}}}function Hl(i,e,t){let{$$slots:r={},$$scope:n}=e,{text:l}=e,{raw:s}=e;return i.$$set=o=>{"text"in o&&t(0,l=o.text),"raw"in o&&t(1,s=o.raw),"$$scope"in o&&t(2,n=o.$$scope)},[l,s,n,r]}class Jl extends ue{constructor(e){super(),ce(this,e,Hl,Zl,de,{text:0,raw:1})}}function Wl(i){let e,t;return{c(){e=M("img"),this.h()},l(r){e=V(r,"IMG",{src:!0,title:!0,alt:!0}),this.h()},h(){fn(e.src,t=i[0])||I(e,"src",t),I(e,"title",i[1]),I(e,"alt",i[2])},m(r,n){O(r,e,n)},p(r,[n]){n&1&&!fn(e.src,t=r[0])&&I(e,"src",t),n&2&&I(e,"title",r[1]),n&4&&I(e,"alt",r[2])},i:pe,o:pe,d(r){r&&h(e)}}}function Kl(i,e,t){let{href:r=""}=e,{title:n=void 0}=e,{text:l=""}=e;return i.$$set=s=>{"href"in s&&t(0,r=s.href),"title"in s&&t(1,n=s.title),"text"in s&&t(2,l=s.text)},[r,n,l]}class Ql extends ue{constructor(e){super(),ce(this,e,Kl,Wl,de,{href:0,title:1,text:2})}}function Gl(i){let e,t;const r=i[3].default,n=ye(r,i,i[2],null);return{c(){e=M("a"),n&&n.c(),this.h()},l(l){e=V(l,"A",{href:!0,title:!0});var s=$(e);n&&n.l(s),s.forEach(h),this.h()},h(){I(e,"href",i[0]),I(e,"title",i[1])},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&4)&&ke(n,r,l,l[2],t?we(r,l[2],s,null):ve(l[2]),null),(!t||s&1)&&I(e,"href",l[0]),(!t||s&2)&&I(e,"title",l[1])},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Yl(i,e,t){let{$$slots:r={},$$scope:n}=e,{href:l=""}=e,{title:s=void 0}=e;return i.$$set=o=>{"href"in o&&t(0,l=o.href),"title"in o&&t(1,s=o.title),"$$scope"in o&&t(2,n=o.$$scope)},[l,s,n,r]}class Xl extends ue{constructor(e){super(),ce(this,e,Yl,Gl,de,{href:0,title:1})}}function es(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("em"),n&&n.c()},l(l){e=V(l,"EM",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function ts(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class ns extends ue{constructor(e){super(),ce(this,e,ts,es,de,{})}}function rs(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("del"),n&&n.c()},l(l){e=V(l,"DEL",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function is(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class ls extends ue{constructor(e){super(),ce(this,e,is,rs,de,{})}}function ss(i){let e,t=i[0].replace(/`/g,"")+"",r;return{c(){e=M("code"),r=ge(t)},l(n){e=V(n,"CODE",{});var l=$(e);r=_e(l,t),l.forEach(h)},m(n,l){O(n,e,l),x(e,r)},p(n,[l]){l&1&&t!==(t=n[0].replace(/`/g,"")+"")&&Te(r,t)},i:pe,o:pe,d(n){n&&h(e)}}}function os(i,e,t){let{raw:r}=e;return i.$$set=n=>{"raw"in n&&t(0,r=n.raw)},[r]}class fs extends ue{constructor(e){super(),ce(this,e,os,ss,de,{raw:0})}}function as(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("strong"),n&&n.c()},l(l){e=V(l,"STRONG",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function us(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class cs extends ue{constructor(e){super(),ce(this,e,us,as,de,{})}}function ds(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("table"),n&&n.c()},l(l){e=V(l,"TABLE",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function hs(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class ps extends ue{constructor(e){super(),ce(this,e,hs,ds,de,{})}}function ms(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("thead"),n&&n.c()},l(l){e=V(l,"THEAD",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function gs(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class _s extends ue{constructor(e){super(),ce(this,e,gs,ms,de,{})}}function bs(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("tbody"),n&&n.c()},l(l){e=V(l,"TBODY",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Es(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class ys extends ue{constructor(e){super(),ce(this,e,Es,bs,de,{})}}function ks(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("tr"),n&&n.c()},l(l){e=V(l,"TR",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function vs(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class ws extends ue{constructor(e){super(),ce(this,e,vs,ks,de,{})}}function Os(i){let e,t;const r=i[3].default,n=ye(r,i,i[2],null);return{c(){e=M("td"),n&&n.c(),this.h()},l(l){e=V(l,"TD",{align:!0});var s=$(e);n&&n.l(s),s.forEach(h),this.h()},h(){I(e,"align",i[1])},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,s){n&&n.p&&(!t||s&4)&&ke(n,r,l,l[2],t?we(r,l[2],s,null):ve(l[2]),null),(!t||s&2)&&I(e,"align",l[1])},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Ss(i){let e,t;const r=i[3].default,n=ye(r,i,i[2],null);return{c(){e=M("th"),n&&n.c(),this.h()},l(l){e=V(l,"TH",{align:!0});var s=$(e);n&&n.l(s),s.forEach(h),this.h()},h(){I(e,"align",i[1])},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,s){n&&n.p&&(!t||s&4)&&ke(n,r,l,l[2],t?we(r,l[2],s,null):ve(l[2]),null),(!t||s&2)&&I(e,"align",l[1])},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Ps(i){let e,t,r,n;const l=[Ss,Os],s=[];function o(f,a){return f[0]?0:1}return e=o(i),t=s[e]=l[e](i),{c(){t.c(),r=q()},l(f){t.l(f),r=q()},m(f,a){s[e].m(f,a),O(f,r,a),n=!0},p(f,[a]){let u=e;e=o(f),e===u?s[e].p(f,a):(G(),_(s[u],1,1,()=>{s[u]=null}),Y(),t=s[e],t?t.p(f,a):(t=s[e]=l[e](f),t.c()),m(t,1),t.m(r.parentNode,r))},i(f){n||(m(t),n=!0)},o(f){_(t),n=!1},d(f){s[e].d(f),f&&h(r)}}}function Ts(i,e,t){let{$$slots:r={},$$scope:n}=e,{header:l}=e,{align:s}=e;return i.$$set=o=>{"header"in o&&t(0,l=o.header),"align"in o&&t(1,s=o.align),"$$scope"in o&&t(2,n=o.$$scope)},[l,s,n,r]}class As extends ue{constructor(e){super(),ce(this,e,Ts,Ps,de,{header:0,align:1})}}function Rs(i){let e,t;const r=i[3].default,n=ye(r,i,i[2],null);return{c(){e=M("ul"),n&&n.c()},l(l){e=V(l,"UL",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,s){n&&n.p&&(!t||s&4)&&ke(n,r,l,l[2],t?we(r,l[2],s,null):ve(l[2]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Is(i){let e,t;const r=i[3].default,n=ye(r,i,i[2],null);return{c(){e=M("ol"),n&&n.c(),this.h()},l(l){e=V(l,"OL",{start:!0});var s=$(e);n&&n.l(s),s.forEach(h),this.h()},h(){I(e,"start",i[1])},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,s){n&&n.p&&(!t||s&4)&&ke(n,r,l,l[2],t?we(r,l[2],s,null):ve(l[2]),null),(!t||s&2)&&I(e,"start",l[1])},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function js(i){let e,t,r,n;const l=[Is,Rs],s=[];function o(f,a){return f[0]?0:1}return e=o(i),t=s[e]=l[e](i),{c(){t.c(),r=q()},l(f){t.l(f),r=q()},m(f,a){s[e].m(f,a),O(f,r,a),n=!0},p(f,[a]){let u=e;e=o(f),e===u?s[e].p(f,a):(G(),_(s[u],1,1,()=>{s[u]=null}),Y(),t=s[e],t?t.p(f,a):(t=s[e]=l[e](f),t.c()),m(t,1),t.m(r.parentNode,r))},i(f){n||(m(t),n=!0)},o(f){_(t),n=!1},d(f){s[e].d(f),f&&h(r)}}}function Ns(i,e,t){let{$$slots:r={},$$scope:n}=e,{ordered:l}=e,{start:s}=e;return i.$$set=o=>{"ordered"in o&&t(0,l=o.ordered),"start"in o&&t(1,s=o.start),"$$scope"in o&&t(2,n=o.$$scope)},[l,s,n,r]}class Ls extends ue{constructor(e){super(),ce(this,e,Ns,js,de,{ordered:0,start:1})}}function zs(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("li"),n&&n.c()},l(l){e=V(l,"LI",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Cs(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class Ds extends ue{constructor(e){super(),ce(this,e,Cs,zs,de,{})}}function $s(i){let e;return{c(){e=M("hr")},l(t){e=V(t,"HR",{})},m(t,r){O(t,e,r)},p:pe,i:pe,o:pe,d(t){t&&h(e)}}}class Ms extends ue{constructor(e){super(),ce(this,e,null,$s,de,{})}}function Vs(i){let e,t;return{c(){e=new ui(!1),t=q(),this.h()},l(r){e=ci(r,!1),t=q(),this.h()},h(){e.a=t},m(r,n){e.m(i[0],r,n),O(r,t,n)},p(r,[n]){n&1&&e.p(r[0])},i:pe,o:pe,d(r){r&&h(t),r&&e.d()}}}function Us(i,e,t){let{text:r}=e;return i.$$set=n=>{"text"in n&&t(0,r=n.text)},[r]}class xs extends ue{constructor(e){super(),ce(this,e,Us,Vs,de,{text:0})}}function qs(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("blockquote"),n&&n.c()},l(l){e=V(l,"BLOCKQUOTE",{});var s=$(e);n&&n.l(s),s.forEach(h)},m(l,s){O(l,e,s),n&&n.m(e,null),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Fs(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class Bs extends ue{constructor(e){super(),ce(this,e,Fs,qs,de,{})}}function Zs(i){let e,t,r;return{c(){e=M("pre"),t=M("code"),r=ge(i[1]),this.h()},l(n){e=V(n,"PRE",{class:!0});var l=$(e);t=V(l,"CODE",{});var s=$(t);r=_e(s,i[1]),s.forEach(h),l.forEach(h),this.h()},h(){I(e,"class",i[0])},m(n,l){O(n,e,l),x(e,t),x(t,r)},p(n,[l]){l&2&&Te(r,n[1]),l&1&&I(e,"class",n[0])},i:pe,o:pe,d(n){n&&h(e)}}}function Hs(i,e,t){let{lang:r}=e,{text:n}=e;return i.$$set=l=>{"lang"in l&&t(0,r=l.lang),"text"in l&&t(1,n=l.text)},[r,n]}class Js extends ue{constructor(e){super(),ce(this,e,Hs,Zs,de,{lang:0,text:1})}}function Ws(i){let e,t;const r=i[1].default,n=ye(r,i,i[0],null);return{c(){e=M("br"),n&&n.c()},l(l){e=V(l,"BR",{}),n&&n.l(l)},m(l,s){O(l,e,s),n&&n.m(l,s),t=!0},p(l,[s]){n&&n.p&&(!t||s&1)&&ke(n,r,l,l[0],t?we(r,l[0],s,null):ve(l[0]),null)},i(l){t||(m(n,l),t=!0)},o(l){_(n,l),t=!1},d(l){l&&h(e),n&&n.d(l)}}}function Ks(i,e,t){let{$$slots:r={},$$scope:n}=e;return i.$$set=l=>{"$$scope"in l&&t(0,n=l.$$scope)},[n,r]}class Qs extends ue{constructor(e){super(),ce(this,e,Ks,Ws,de,{})}}const Gs={heading:xl,paragraph:Bl,text:Jl,image:Ql,link:Xl,em:ns,strong:cs,codespan:fs,del:ls,table:ps,tablehead:_s,tablebody:ys,tablerow:ws,tablecell:As,list:Ls,orderedlistitem:null,unorderedlistitem:null,listitem:Ds,hr:Ms,html:xs,blockquote:Bs,code:Js,br:Qs},Ys={baseUrl:null,breaks:!1,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartLists:!1,smartypants:!1,tokenizer:null,xhtml:!1};function Xs(i){let e,t;return e=new Xe({props:{tokens:i[0],renderers:i[1]}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},p(r,[n]){const l={};n&1&&(l.tokens=r[0]),n&2&&(l.renderers=r[1]),e.$set(l)},i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function eo(i,e,t){let r,n,l,s,{source:o=[]}=e,{renderers:f={}}=e,{options:a={}}=e,{isInline:u=!1}=e;const c=Gt();let d,p,g;return di(Vr,{slug:A=>n?n.slug(A):"",getOptions:()=>l}),Ar(()=>{t(7,g=!0)}),i.$$set=A=>{"source"in A&&t(2,o=A.source),"renderers"in A&&t(3,f=A.renderers),"options"in A&&t(4,a=A.options),"isInline"in A&&t(5,u=A.isInline)},i.$$.update=()=>{i.$$.dirty&4&&t(8,r=Array.isArray(o)),i.$$.dirty&4&&(n=o?new en:void 0),i.$$.dirty&16&&t(9,l={...Ys,...a}),i.$$.dirty&869&&(r?t(0,d=o):(t(6,p=new Ze(l)),t(0,d=u?p.inlineTokens(o):p.lex(o)),c("parsed",{tokens:d}))),i.$$.dirty&8&&t(1,s={...Gs,...f}),i.$$.dirty&385&&g&&!r&&c("parsed",{tokens:d})},[d,s,o,f,a,u,p,g,r,l]}class to extends ue{constructor(e){super(),ce(this,e,eo,Xs,de,{source:2,renderers:3,options:4,isInline:5})}}const no={AdditionalItemsError:"Array at `{{pointer}}` may not have an additional item `{{key}}`",AdditionalPropertiesError:"Additional property `{{property}}` on `{{pointer}}` does not match schema `{{schema}}`",AllOfError:"Value `{{value}}` at `{{pointer}}` does not match schema of `{{allOf}}`",AnyOfError:"Value `{{value}}` at `{{pointer}}` does not match any schema of `{{anyOf}}`",ConstError:"Expected value at `{{pointer}}` to be `{{expected}}`, but value given is `{{value}}`",containsAnyError:"The array at `{{pointer}}` must contain at least one item",ContainsArrayError:"The property at `{{pointer}}` must not be an array",ContainsError:"The array at `{{pointer}}` must contain an element that matches `{{schema}}`",EnumError:"Expected given value `{{value}}` in `{{pointer}}` to be one of `{{values}}`",FormatDateError:"Value `{{value}}` at `{{pointer}}` is not a valid date",FormatDateTimeError:"Value `{{value}}` at `{{pointer}}` is not a valid date-time",FormatEmailError:"Value `{{value}}` at `{{pointer}}` is not a valid email",FormatHostnameError:"Value `{{value}}` at `{{pointer}}` is not a valid hostname",FormatIPV4Error:"Value `{{value}}` at `{{pointer}}` is not a valid IPv4 address",FormatIPV4LeadingZeroError:"IPv4 addresses starting with zero are invalid, since they are interpreted as octals",FormatIPV6Error:"Value `{{value}}` at `{{pointer}}` is not a valid IPv6 address",FormatIPV6LeadingZeroError:"IPv6 addresses starting with zero are invalid, since they are interpreted as octals",FormatJSONPointerError:"Value `{{value}}` at `{{pointer}}` is not a valid json-pointer",FormatRegExError:"Value `{{value}}` at `{{pointer}}` is not a valid regular expression",FormatTimeError:"Value `{{value}}` at `{{pointer}}` is not a valid time",FormatURIError:"Value `{{value}}` at `{{pointer}}` is not a valid uri",FormatURIReferenceError:"Value `{{value}}` at `{{pointer}}` is not a valid uri-reference",FormatURITemplateError:"Value `{{value}}` at `{{pointer}}` is not a valid uri-template",FormatURLError:"Value `{{value}}` at `{{pointer}}` is not a valid url",InvalidDataError:"No value may be specified in `{{pointer}}`",InvalidPropertyNameError:"Invalid property name `{{property}}` at `{{pointer}}`",MaximumError:"Value in `{{pointer}}` is `{{length}}`, but should be `{{maximum}}` at maximum",MaxItemsError:"Too many items in `{{pointer}}`, should be `{{maximum}}` at most, but got `{{length}}`",MaxLengthError:"Value `{{pointer}}` should have a maximum length of `{{maxLength}}`, but got `{{length}}`.",MaxPropertiesError:"Too many properties in `{{pointer}}`, should be `{{maximum}}` at most, but got `{{length}}`",MinimumError:"Value in `{{pointer}}` is `{{length}}`, but should be `{{minimum}}` at minimum",MinItemsError:"Too few items in `{{pointer}}`, should be at least `{{minimum}}`, but got `{{length}}`",MinItemsOneError:"At least one item is required in `{{pointer}}`",MinLengthError:"Value `{{pointer}}` should have a minimum length of `{{minLength}}`, but got `{{length}}`.",MinLengthOneError:"A value is required in `{{pointer}}`",MinPropertiesError:"Too few properties in `{{pointer}}`, should be at least `{{minimum}}`, but got `{{length}}`",MissingDependencyError:"The required propery '{{missingProperty}}' in `{{pointer}}` is missing",MissingOneOfPropertyError:"Value at `{{pointer}}` property: `{{property}}`",MultipleOfError:"Expected `{{value}}` in `{{pointer}}` to be multiple of `{{multipleOf}}`",MultipleOneOfError:"Value `{{value}}` should not match multiple schemas in oneOf `{{matches}}`",NoAdditionalPropertiesError:"Additional property `{{property}}` in `{{pointer}}` is not allowed",NotError:"Value `{{value}}` at pointer should not match schema `{{not}}`",OneOfError:"Value `{{value}}` in `{{pointer}}` does not match any given oneof schema",OneOfPropertyError:"Failed finding a matching oneOfProperty schema in `{{pointer}}` where `{{property}}` matches `{{value}}`",PatternError:"Value in `{{pointer}}` should match `{{description}}`, but received `{{received}}`",PatternPropertiesError:"Property `{{key}}` does not match any patterns in `{{pointer}}`. Valid patterns are: {{patterns}}",RequiredPropertyError:"The required property `{{key}}` is missing at `{{pointer}}`",TypeError:"Expected `{{value}}` ({{received}}) in `{{pointer}}` to be of type `{{expected}}`",UndefinedValueError:"Value must not be undefined in `{{pointer}}`",UniqueItemsError:"Expected unique items in {{pointer}}: duplicate value `{{value}}` found at {{itemPointer}} and {{duplicatePointer}}",UnknownPropertyError:"Could not find a valid schema for property `{{pointer}}` within object",ValueNotEmptyError:"A value for `{{property}}` is required at `{{pointer}}`"};function ro(i,e={}){return i.replace(/\{\{\w+\}\}/g,t=>e[t.replace(/[{}]/g,"")])}function io(i,e,t=i){const r=no[i]||t;return ro(r,e)}function lo(i){return i.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function so(i,e){return{type:"error",name:i,code:lo(i),message:io(i,e),data:e}}function B(i){return so.bind(null,i)}const oo=Object.prototype.toString;function ae(i){const e=oo.call(i).match(/\s([^\]]+)\]/).pop().toLowerCase();return e==="file"?"object":e}function Re(i){return(i==null?void 0:i.type)==="error"}function fo(i){return i instanceof Promise}function Pt(i){return Re(i)||fo(i)}function at(i,e=[]){for(let t=0;t0)s.push(...d);else return u}return i.errors.oneOfPropertyError({property:o,value:f,pointer:r,errors:s})}const n=[],l=[];for(let s=0;s0?l.push(...f):n.push(o)}return n.length===1?n[0]:n.length>1?i.errors.multipleOneOfError({value:e,pointer:r,matches:n}):i.errors.oneOfError({value:JSON.stringify(e),pointer:r,oneOf:t.oneOf,errors:l})}const tn=i=>JSON.parse(JSON.stringify(i));var uo=function(e){return co(e)&&!ho(e)};function co(i){return!!i&&typeof i=="object"}function ho(i){var e=Object.prototype.toString.call(i);return e==="[object RegExp]"||e==="[object Date]"||go(i)}var po=typeof Symbol=="function"&&Symbol.for,mo=po?Symbol.for("react.element"):60103;function go(i){return i.$$typeof===mo}function _o(i){return Array.isArray(i)?[]:{}}function ut(i,e){return e.clone!==!1&&e.isMergeableObject(i)?rt(_o(i),i,e):i}function bo(i,e,t){return i.concat(e).map(function(r){return ut(r,t)})}function Eo(i,e){if(!e.customMerge)return rt;var t=e.customMerge(i);return typeof t=="function"?t:rt}function yo(i){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(i).filter(function(e){return Object.propertyIsEnumerable.call(i,e)}):[]}function Xn(i){return Object.keys(i).concat(yo(i))}function Ur(i,e){try{return e in i}catch{return!1}}function ko(i,e){return Ur(i,e)&&!(Object.hasOwnProperty.call(i,e)&&Object.propertyIsEnumerable.call(i,e))}function vo(i,e,t){var r={};return t.isMergeableObject(i)&&Xn(i).forEach(function(n){r[n]=ut(i[n],t)}),Xn(e).forEach(function(n){ko(i,n)||(Ur(i,n)&&t.isMergeableObject(e[n])?r[n]=Eo(n,t)(i[n],e[n],t):r[n]=ut(e[n],t))}),r}function rt(i,e,t){t=t||{},t.arrayMerge=t.arrayMerge||bo,t.isMergeableObject=t.isMergeableObject||uo,t.cloneUnlessOtherwiseSpecified=ut;var r=Array.isArray(e),n=Array.isArray(i),l=r===n;return l?r?t.arrayMerge(i,e,t):vo(i,e,t):ut(e,t)}rt.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(r,n){return rt(r,n,t)},{})};var wo=rt,Oo=wo;const xr=It(Oo),So=(i,e)=>e,ct=(i,e)=>xr(i,e,{arrayMerge:So}),Po=(i,e)=>{const t=i.concat(e);return t.filter((r,n)=>t.indexOf(r)===n)},To=(i,e)=>xr(i,e,{arrayMerge:Po});function Ft(i,e,t){var r;const n={...(r=i.resolveRef(e))!==null&&r!==void 0?r:{}};if(n.if&&(n.then||n.else)){const l=i.isValid(t,n.if);if(l&&n.then)return Ft(i,n.then,t);if(!l&&n.else)return Ft(i,n.else,t);delete n.if,delete n.then,delete n.else}return n}function Ao(i,e,t=i.rootSchema,r="#"){let n=tn(t);for(let l=0;l0)l.push(...c);else return a}return i.errors.oneOfPropertyError({property:s,value:o,pointer:r,errors:l})}const n=[];for(let l=0;l1?i.errors.multipleOneOfError({matches:n,data:e,pointer:r}):i.errors.oneOfError({value:JSON.stringify(e),pointer:r,oneOf:t.oneOf})}function Io(i,e){return i==null||i.$ref==null?i:i.getRoot?i.getRoot().getRef(i):e.getRef(i)}function jo(i,e){if(i==null||i.$ref==null)return i;const t=e.getRef(i),r=Object.assign({},t,i);return delete r.$ref,Object.defineProperty(r,"__ref",{enumerable:!1,value:i.__ref}),Object.defineProperty(r,"getRoot",{enumerable:!1,value:i.getRoot}),r}var qr={exports:{}};(function(i,e){(function(t,r){i.exports=r()})(typeof self<"u"?self:Bi,()=>(()=>{var t={d:(v,z)=>{for(var y in z)t.o(z,y)&&!t.o(v,y)&&Object.defineProperty(v,y,{enumerable:!0,get:z[y]})},o:(v,z)=>Object.prototype.hasOwnProperty.call(v,z),r:v=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(v,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(v,"__esModule",{value:!0})}},r={};function n(v){return v==="#"||v===""||Array.isArray(v)&&v.length===0||!1}t.r(r),t.d(r,{default:()=>le,get:()=>d,isRoot:()=>n,join:()=>te,remove:()=>N,removeUndefinedItems:()=>w,set:()=>k,split:()=>c,splitLast:()=>ie});const l=/~1/g,s=/~0/g,o=/\/+/g,f=/(^[#/]*|\/+$)/g;function a(v){return v.replace(l,"/").replace(s,"~")}function u(v){return a(decodeURIComponent(v))}function c(v){if(v==null||typeof v!="string"||n(v))return Array.isArray(v)?v:[];const z=v.indexOf("#")>=0?u:a,y=(v=(v=v.replace(o,"/")).replace(f,"")).split("/");for(let T=0,F=y.length;T0&&z[0]=="prototype"}function k(v,z,y){if(z==null)return v;const T=c(z);if(T.length===0)return v;v==null&&(v=g.test(T[0])?[]:{});let F,ee,ne=v;for(;T.length>1;)F=T.shift(),ee=g.test(T[0]),j(F,T)||(ne=E(ne,F,ee));return F=T.pop(),b(ne,F,y),v}function b(v,z,y){let T;const F=z.match(A);z==="[]"&&Array.isArray(v)?v.push(y):F?(T=F.pop(),v[T]=y):v[z]=y}function E(v,z,y){if(v[z]!=null)return v[z];const T=y?[]:{};return b(v,z,T),T}function w(v){let z=0,y=0;for(;z+y0?null:{type:null,text:t[0],rest:i.substr(t[0].length),start:0,end:t[0].length-1,fullText:t[0],errors:[],children:[],parent:null}:null}ze.readToken=Bt;function Zr(i){return i.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}ze.escapeRegExp=Zr;function Hr(i){i.rest="",i.children&&i.children.forEach(e=>Hr(e))}function Jr(i,e){i.start+=e,i.end+=e,i.children&&i.children.forEach(t=>Jr(t,i.start))}function Wr(i,e){e.errors&&e.errors.length&&e.errors.forEach(t=>i.push(t)),e.children&&e.children.forEach(t=>Wr(i,t))}function Ge(i){let e=tr.exec(i),t=nr.exec(i),r=e&&e[0]||"",n=t&&t[0]||"",l={raw:i,name:i.replace(tr,"").replace(nr,""),isOptional:r=="?"||r=="*",allowRepetition:r=="+"||r=="*",atLeastOne:r=="+",lookupPositive:n=="&",lookupNegative:n=="!",pinned:n=="@",lookup:!1,isLiteral:!1};return l.isLiteral=l.name[0]=="'"||l.name[0]=='"',l.lookup=l.lookupNegative||l.lookupPositive,l}ze.parseRuleName=Ge;function Kr(i,e){let t=Ge(i);return e.cachedRules[t.name]||null}ze.findRuleByName=Kr;function Zt(i,e){if(i.children){let t=i.children.filter(r=>r.type&&e.test(r.type));for(let r=0;rZt(r,e))}}const $o=["EOF"];class Qr{constructor(e,t){this.grammarRules=e,this.options=t,this.cachedRules={},this.debug=t?t.debug===!0:!1;let r=[],n=[];if(e.forEach(l=>{let s=Ge(l.name);if(s.name in this.cachedRules){r.push("Duplicated rule "+s.name);return}else this.cachedRules[s.name]=l;if(!l.bnf||!l.bnf.length){let o="Missing rule content, rule: "+l.name;r.indexOf(o)==-1&&r.push(o)}else l.bnf.forEach(o=>{if(typeof o[0]=="string"&&Ge(o[0]).name==l.name){let a="Left recursion is not allowed, rule: "+l.name;r.indexOf(a)==-1&&r.push(a)}o.forEach(f=>{if(typeof f=="string"){let a=Ge(f);!a.isLiteral&&n.indexOf(a.name)==-1&&$o.indexOf(a.name)==-1&&n.push(a.name)}})});_t==l.name&&(l.implicitWs=!1),l.implicitWs&&n.indexOf(_t)==-1&&n.push(_t),l.recover&&n.indexOf(l.recover)==-1&&n.push(l.recover)}),n.forEach(l=>{l in this.cachedRules||r.push("Missing rule "+l)}),r.length)throw new Error(r.join(` +`))}getAST(e,t){t||(t=this.grammarRules.filter(n=>!n.fragment&&n.name.indexOf("%")!=0)[0].name);let r=this.parse(e,t);if(r){Wr(r.errors,r),Jr(r,0),Zt(r,/^%/),(!this.options||!this.options.keepUpperRules)&&Zt(r,er);let n=r.rest;n&&new bt.TokenError(`Unexpected end of input: +`+n,r),Hr(r),r.rest=n}return r}emitSource(){return"CANNOT EMIT SOURCE FROM BASE Parser"}parse(e,t,r=0){let n=null,l=Ge(t),s,o=this.debug&&!er.test(l.name);o&&console.log(new Array(r).join("│ ")+"Trying to get "+t+" from "+JSON.stringify(e.split(` +`)[0]));let f=l.name,a=Kr(l.name,this);if(l.name=="EOF"){if(e.length)return null;if(e.length==0)return{type:"EOF",text:"",rest:"",start:0,end:0,fullText:"",errors:[],children:[],parent:null}}try{if(!a&&l.isLiteral){let u=l.name.trim();if(u.startsWith('"')?u=JSON.parse(u):u.startsWith("'")&&(u=u.replace(/^'(.+)'$/,"$1").replace(/\\'/g,"'")),u==="")return{type:"%%EMPTY%%",text:"",rest:e,start:0,end:0,fullText:"",errors:[],children:[],parent:null};s=new RegExp(Zr(u)),f=null}}catch(u){return u instanceof ReferenceError&&console.error(u),null}if(s){let u=Bt(e,s);if(u)return u.type=f,u}else{let u=a.bnf;u instanceof Array&&u.forEach(c=>{if(n)return;let d=null,p={type:l.name,text:"",children:[],end:0,errors:[],fullText:"",parent:null,start:0,rest:e};a.fragment&&(p.fragment=!0);let g=e,A=0,j=c.length>0,k=!1;for(let b=0;b{R.start+=A,R.end+=A,R.parent=p,p.children.push(R)}):(w.parent=p,p.children.push(w))),E.lookup&&(w.lookup=!0),o&&console.log(new Array(r+1).join("│ ")+"└─ "+w.type+" "+JSON.stringify(w.text)),!E.lookup&&!w.lookup&&(p.text=p.text+w.text,p.end=p.text.length,g=g.substr(w.text.length),A+=w.text.length),p.rest=g}while(w&&E.allowRepetition&&g.length&&!w.lookup)}else{let E=Bt(g,c[b]);if(!E)return;o&&console.log(new Array(r+1).join("│ ")+"└> "+JSON.stringify(E.text)+c[b].source),k=!0,E.start+=A,E.end+=A,p.text=p.text+E.text,p.end=p.text.length,g=g.substr(E.text.length),A+=E.text.length,p.rest=g}k&&(n=p,o&&console.log(new Array(r).join("│ ")+"├<─┴< PUSHING "+n.type+" "+JSON.stringify(n.text)))}),n&&a.simplifyWhenOneChildren&&n.children.length==1&&(n=n.children[0])}return n||o&&console.log(t+" NOT RESOLVED FROM "+e),n}parseRecovery(e,t,r){if(e.recover&&t.length){let n=this.debug;n&&console.log(new Array(r+1).join("│ ")+"Trying to recover until token "+e.recover+" from "+JSON.stringify(t.split(` +`)[0]+t.split(` +`)[1]));let l={type:"SyntaxError",text:"",children:[],end:0,errors:[],fullText:"",parent:null,start:0,rest:""},s;do if(s=this.parse(t,e.recover,r+1),s){new bt.TokenError('Unexpected input: "'+l.text+`" Expecting: ${e.name}`,l);break}else l.text=l.text+t[0],l.end=l.text.length,t=t.substr(1);while(!s&&t.length>0);if(l.text.length>0&&s)return n&&console.log(new Array(r+1).join("│ ")+"Recovered text: "+JSON.stringify(l.text)),l}return null}}ze.Parser=Qr;ze.default=Qr;Object.defineProperty(Br,"__esModule",{value:!0});const st=ze;var Ht;(function(i){i.RULES=[{name:"Grammar",bnf:[["RULE_S*","%Atomic*","EOF"]]},{name:"%Atomic",bnf:[["Production","RULE_S*"]],fragment:!0},{name:"Production",bnf:[["NCName","RULE_S*",'"::="',"RULE_WHITESPACE*","Choice","RULE_WHITESPACE*","RULE_EOL+","RULE_S*"]]},{name:"NCName",bnf:[[/[a-zA-Z][a-zA-Z_0-9]*/]]},{name:"Choice",bnf:[["SequenceOrDifference","%_Choice_1*"]],fragment:!0},{name:"%_Choice_1",bnf:[["RULE_WHITESPACE*",'"|"',"RULE_WHITESPACE*","SequenceOrDifference"]],fragment:!0},{name:"SequenceOrDifference",bnf:[["Item","RULE_WHITESPACE*","%_Item_1?"]]},{name:"%_Item_1",bnf:[["Minus","Item"],["Item*"]],fragment:!0},{name:"Minus",bnf:[['"-"']]},{name:"Item",bnf:[["RULE_WHITESPACE*","%Primary","PrimaryDecoration?"]],fragment:!0},{name:"PrimaryDecoration",bnf:[['"?"'],['"*"'],['"+"']]},{name:"DecorationName",bnf:[['"ebnf://"',/[^\x5D#]+/]]},{name:"%Primary",bnf:[["NCName"],["StringLiteral"],["CharCode"],["CharClass"],["SubItem"]],fragment:!0},{name:"SubItem",bnf:[['"("',"RULE_WHITESPACE*","Choice","RULE_WHITESPACE*",'")"']]},{name:"StringLiteral",bnf:[[`'"'`,/[^"]*/,`'"'`],[`"'"`,/[^']*/,`"'"`]],pinned:1},{name:"CharCode",bnf:[['"#x"',/[0-9a-zA-Z]+/]]},{name:"CharClass",bnf:[["'['","'^'?","%RULE_CharClass_1+",'"]"']]},{name:"%RULE_CharClass_1",bnf:[["CharCodeRange"],["CharRange"],["CharCode"],["RULE_Char"]],fragment:!0},{name:"RULE_Char",bnf:[[/\x09/],[/\x0A/],[/\x0D/],[/[\x20-\x5c]/],[/[\x5e-\uD7FF]/],[/[\uE000-\uFFFD]/]]},{name:"CharRange",bnf:[["RULE_Char",'"-"',"RULE_Char"]]},{name:"CharCodeRange",bnf:[["CharCode",'"-"',"CharCode"]]},{name:"RULE_WHITESPACE",bnf:[["%RULE_WHITESPACE_CHAR*"],["Comment","RULE_WHITESPACE*"]]},{name:"RULE_S",bnf:[["RULE_WHITESPACE","RULE_S*"],["RULE_EOL","RULE_S*"]]},{name:"%RULE_WHITESPACE_CHAR",bnf:[[/\x09/],[/\x20/]],fragment:!0},{name:"Comment",bnf:[['"/*"',"%RULE_Comment_Body*",'"*/"']]},{name:"%RULE_Comment_Body",bnf:[['!"*/"',/[^*]/]],fragment:!0},{name:"RULE_EOL",bnf:[[/\x0D/,/\x0A/],[/\x0A/],[/\x0D/]]},{name:"Link",bnf:[["'['","Url","']'"]]},{name:"Url",bnf:[[/[^\x5D:/?#]/,'"://"',/[^\x5D#]+/,"%Url1?"]]},{name:"%Url1",bnf:[['"#"',"NCName"]],fragment:!0}],i.defaultParser=new st.Parser(i.RULES,{debug:!1});const e=/^(!|&)/,t=/(\?|\+|\*)$/,r=/^%/;function n(k,b){if(typeof k=="string"){if(e.test(k))return"";if(r.test(k)){let w=t.exec(k),N=w?w[0]+" ":"";return l(k,b)?o(k,b)+N:"("+o(k,b)+")"+N}return k}else return k.source.replace(/\\(?:x|u)([a-zA-Z0-9]+)/g,"#x$1").replace(/\[\\(?:x|u)([a-zA-Z0-9]+)-\\(?:x|u)([a-zA-Z0-9]+)\]/g,"[#x$1-#x$2]")}function l(k,b){let E=st.findRuleByName(k,b);return E&&E.bnf.length==1&&E.bnf[0].length==1&&(E.bnf[0][0]instanceof RegExp||E.bnf[0][0][0]=='"'||E.bnf[0][0][0]=="'")}function s(k,b){return k.map(E=>n(E,b)).join(" ")}function o(k,b){let E=st.findRuleByName(k,b);return E?E.bnf.map(w=>s(w,b)).join(" | "):"RULE_NOT_FOUND {"+k+"}"}function f(k){let b=[];return k.grammarRules.forEach(E=>{if(!/^%/.test(E.name)){let w=E.recover?" /* { recoverUntil="+E.recover+" } */":"";b.push(E.name+" ::= "+o(E.name,k)+w)}}),b.join(` +`)}i.emit=f;let a=0;function u(k,b){throw console.log("reberia restar "+b+" a "+k),new Error("Difference not supported yet")}function c(k){return new RegExp(k.replace(/#x([a-zA-Z0-9]{4})/g,"\\u$1").replace(/#x([a-zA-Z0-9]{3})/g,"\\u0$1").replace(/#x([a-zA-Z0-9]{2})/g,"\\x$1").replace(/#x([a-zA-Z0-9]{1})/g,"\\x0$1"))}function d(k,b,E){let w=null,N=[];return b.children.forEach((R,L)=>{R.type=="Minus"&&u(w,R);let fe=b.children[L+1];fe=fe&&fe.type=="PrimaryDecoration"&&fe.text||"";let Q="";switch(R.type){case"SubItem":let te="%"+(E+a++);p(k,R,te),N.push(Q+te+fe);break;case"NCName":case"StringLiteral":N.push(Q+R.text+fe);break;case"CharCode":case"CharClass":if(fe||Q){let ie={name:"%"+(E+a++),bnf:[[c(R.text)]]};k.push(ie),N.push(Q+ie.name+fe)}else N.push(c(R.text));break;case"PrimaryDecoration":break;default:throw new Error(" HOW SHOULD I PARSE THIS? "+R.type+" -> "+JSON.stringify(R.text))}w=R}),N}function p(k,b,E){let w=b.children.filter(L=>L.type=="SequenceOrDifference").map(L=>d(k,L,E)),N={name:E,bnf:w},R=null;w.forEach(L=>{R=R||L.recover,delete L.recover}),E.indexOf("%")==0&&(N.fragment=!0),R&&(N.recover=R),k.push(N)}function g(k,b=i.defaultParser){let E=b.getAST(k);if(!E)throw new Error("Could not parse "+k);if(E.errors&&E.errors.length)throw E.errors[0];let w=[];return E.children.filter(N=>N.type=="Production").map(N=>{let R=N.children.filter(L=>L.type=="NCName")[0].text;p(w,N,R)}),w}i.getRules=g;function A(k,b=i.defaultParser){return g(k.join(""),b)}i.Transform=A;class j extends st.Parser{constructor(b,E){const w=E&&E.debugRulesParser===!0?new st.Parser(i.RULES,{debug:!0}):i.defaultParser;super(g(b,w),E)}emitSource(){return f(this)}}i.Parser=j})(Ht||(Ht={}));var Mo=Br.default=Ht;const Vo="[^?/{}*,()#]+",Uo=` +root ::= ("#" recursion | recursion | (query | pattern) recursion* | "#" SEP? | SEP) +recursion ::= (SEP query | pattern)* + +query ::= (ESC escaped ESC | property | all | any | regex) typecheck? lookahead? +property ::= ${Vo} +regex ::= "{" [^}]+ "}" +SEP ::= "/" +all ::= "**" +any ::= "*" + +typecheck ::= "?:" ("value" | "boolean" | "string" | "number" | "object" | "array") +lookahead ::= "?" expression ((andExpr | orExpr) expression)* +andExpr ::= S? "&&" S? +orExpr ::= S? "||" S? + +expression ::= (exprProperty | ESC escaped ESC) ((isnot | is) (exprProperty | regex | ESC escaped ESC))* +exprProperty ::= [a-zA-Z0-9-_ $]+ +escaped ::= [^"]+ +is ::= ":" +isnot ::= ":!" +ESC ::= '"' + +pattern ::= S? "(" (SEP query | pattern (orPattern? pattern)*)* ")" quantifier? S? lookahead? +quantifier ::= "+" | "*" | [0-9]+ +orPattern ::= S? "," S? + +S ::= [ ]* +`,xo=new Mo.Parser(Uo),qo=i=>xo.getAST(i),Le=0,it=3,Tt=(i,e)=>`${i}/${e}`,Gr=Object.prototype.toString,Fo=/Object|Array/,Jt=i=>Fo.test(Gr.call(i)),Bo=i=>Gr.call(i).match(/\s([^\]]+)\]/).pop().toLowerCase();function Yr(i){return new RegExp(i.text.replace(/(^{|}$)/g,""))}function Zo(i,e){Array.isArray(i)?i.forEach(e):Object.prototype.toString.call(i)==="[object Object]"&&Object.keys(i).forEach(function(t){e(i[t],t,i)})}function rr(i){return Array.isArray(i)?i.map(function(e,t){return`${t}`}):Object.prototype.toString.call(i)==="[object Object]"?Object.keys(i):[]}const Qe={mem:[],get(i,e){const t=i[Le][e];if(!Qe.mem.includes(t))return Jt(t)&&Qe.mem.push(t),[t,e,i[Le],Tt(i[it],e)]},reset(){Qe.mem.length=0}},Wt={any(i,e){const t=e[Le];return rr(t).map(r=>[t[r],r,t,Tt(e[it],r)])},all(i,e){const t=[e];return Zo(e[Le],(r,n)=>{const l=Qe.get(e,n);l&&t.push(...Wt.all(i,l))}),t},regex(i,e){const t=Yr(i),r=e[Le];return rr(r).filter(n=>t.test(n)).map(n=>[r[n],n,r,Tt(e[it],n)])}},At={escaped:(i,e)=>At.property(i,e),property:(i,e)=>{const t=i.text;if(e[Le]&&e[Le][t]!==void 0)return[e[Le][t],t,e[Le],Tt(e[it],t)]},typecheck:(i,e)=>{const t=i.text.replace(/^\?:/,"");if(t==="value")return Jt(e[Le])?void 0:e;if(Bo(e[Le])===t)return e},lookahead:(i,e)=>{let t=!0,r=!1;return i.children.forEach(n=>{if(n.type==="expression"){const l=At.expression(n,e)!==void 0;t=r===!0?t||l:t&&l}else r=n.type==="orExpr"}),t?e:void 0},expression:(i,e)=>{const t=i.children[0].text,r=i.children[1],n=i.children[2],l=e[Le];if(Jt(l)!==!1)return Ho(l[t],r,n)?e:void 0}};function Ho(i,e,t){if(e===void 0)return i!==void 0;let r;const n=`${i}`;return t.type==="regex"?r=Yr(t).test(n):r=n===t.text,e.type==="isnot"&&(r=r===!1&&i!==void 0),r}function Jo(i,e,t,r){const n=[];for(let l=0,s=e.length;l{if(Wt[n.type])r=Jo(Wt[n.type],r,n,t);else if(At[n.type])r=Wo(At[n.type],r,n,t);else throw new Error(`Unknown filter ${n.type}`)}),r}function Qo(i,e,t){const r=[];let n=i;return e.children.forEach(l=>{if(l.type==="orPattern"){r.push(...n),n=i;return}n=rn(n,l,t)}),r.push(...n),r}function Go(i){if(i==null)return 1;if(i==="*"||i==="+")return 1/0;const e=parseInt(i);return isNaN(e)?1:e}function Yo(i,e,t){const r=[],n=e.children.find(f=>f.type==="quantifier"),l=Go(n&&n.text);let s=i;n&&n.text==="*"&&r.push(...s);let o=0;for(;s.length>0&&or=rn(r,n,t)),r}function rn(i,e,t){let r;return e.type==="query"?r=Ko(i,e,t):e.type==="pattern"?r=Yo(i,e,t):r=Xo(i,e,t),Qe.reset(),Qe.mem.push(i),r}function ef(i,e){return Qe.reset(),Qe.mem.push(i),rn([[i,null,null,"#"]],e)}const ir={value:i=>i.map(e=>e[Le]),pointer:i=>i.map(e=>e[it]),all:i=>i,map:i=>{const e={};return i.forEach(t=>e[t[it]]=t[Le]),e}};var Ye;(function(i){i.POINTER="pointer",i.VALUE="value",i.ALL="all",i.MAP="map"})(Ye||(Ye={}));mt.POINTER=Ye.POINTER;mt.VALUE=Ye.VALUE;mt.ALL=Ye.ALL;mt.MAP=Ye.MAP;function mt(i,e,t=Ye.VALUE){if(e==null)return[];e=e.replace(/(\/$)/g,""),e===""&&(e="#");const r=qo(e);if(r==null)throw new Error(`empty ast for '${e}'`);if(r.rest!=="")throw new Error(`Failed parsing queryString from: '${r.rest}'`);const n=ef(i,r);return typeof t=="function"?n.map(l=>t(...l)):ir[t]?ir[t](n):n}var Rt;(function(i){i.REPLACE_ITEMS="replace",i.INSERT_ITEMS="insert"})(Rt||(Rt={}));Rt.REPLACE_ITEMS;Rt.INSERT_ITEMS;const xe={$ref:{type:!1},allOf:{type:!1,definitions:["allOf/*"]},anyOf:{type:!1,definitions:["anyOf/*"]},array:{type:!0,definitions:["allOf/*","anyOf/*","oneOf/*","not","items","items/*","additionalItems"],validationKeywords:["minItems","maxItems","uniqueItems"],keywords:["items","additionalItems","minItems","maxItems","uniqueItems"]},boolean:{type:!0},enum:{type:!1},integer:{type:!0,definitions:["allOf/*","anyOf/*","oneOf/*","not"],validationKeywords:["minimum","maximum","multipleOf"]},not:{type:!1,definitions:["not"]},number:{type:!0,definitions:["allOf/*","anyOf/*","oneOf/*","not"],validationKeywords:["minimum","maximum","multipleOf"]},null:{type:!0},object:{type:!0,definitions:["allOf/*","anyOf/*","oneOf/*","not","properties/*","additionalProperties","patternProperties/*","dependencies/*"],validationKeywords:["minProperties","maxProperties","required"],keywords:["properties","additionalProperties","patternProperties","dependencies","minProperties","maxProperties","required"]},oneOf:{type:!1,definitions:["oneOf/*"]},string:{type:!0,definitions:["allOf/*","anyOf/*","oneOf/*","not"],validationKeywords:["minLength","maxLength","pattern"]}},tf=i=>Object.prototype.toString.call(i)==="[object Object]",nf=Object.keys(xe).filter(i=>xe[i].type===!1),lr=Object.prototype.hasOwnProperty;function sr(i){if(tf(i)===!1)return;if(i.enum)return"enum";if(xe[i.type]||Array.isArray(i.type))return i.type;const e=nf.filter(t=>i[t]);if(e.length===1)return e[0];if(e.length===0){for(let t=0,r=xe.object.keywords.length;tObject.prototype.toString.call(i)==="[object Object]";function lf(i){const e=[],t=sr(i);if(t==null)return e;let r;if(Array.isArray(t)){r={};for(let n=0,l=t.length;n{mt(i,n,(l,s,o,f)=>{rf(l)&&sr(l)&&e.push({pointer:dt.join(dt.split(f),!1),def:l})})}),e}const sf=i=>Object.prototype.toString.call(i)==="[object Object]";function of(i,e){if(this.callback(i,e)===!0)return;lf(i).forEach(r=>this.nextTypeDefs(r.def,dt.join(e,r.pointer,!1)))}function Et(i,e,t,r="definitions"){const n=e[r];Object.keys(n).forEach(l=>{if(n[l]===!1||sf(n[l])){i.nextTypeDefs(n[l],dt.join(t,r,l,!1));return}})}function Xr(i,e,t="#"){const r={callback:e,nextTypeDefs:of};r.nextTypeDefs(i,t),i.definitions!=null&&(r.callback=(n,l)=>{e(n,l),n.definitions!=null&&Et(r,n,l)},Et(r,i,t)),i.$defs!=null&&(r.callback=(n,l)=>{e(n,l),n.definitions!=null&&Et(r,n,l)},Et(r,i,t,"$defs"))}const ff=/(#|\/)+$/,yt=/#$/,af=/^[^:]+:\/\/[^/]+\//,uf=/\/[^/]*$/,cf=/#.*$/;function or(i,e){return i==null&&e==null?"#":e==null?i.replace(yt,""):i==null?e.replace(yt,""):e[0]==="#"?`${i.replace(cf,"")}${e.replace(ff,"")}`:af.test(e)?e.replace(yt,""):`${i.replace(uf,"")}/${e.replace(yt,"")}`}const ot=/(#|\/)+$/g,df=["",null,"#"];function hf(i){if(df.includes(i))return[];if(i=i.replace(ot,""),i.indexOf("#")===-1)return[i.replace(ot,"")];if(i.indexOf("#")===0)return[i.replace(ot,"")];const e=i.split("#");return e[0]=e[0].replace(ot,""),e[1]=`#${e[1].replace(ot,"")}`,e}const pf=/(#|\/)+$/g,mf=i=>ae(i)==="object";function We(i,e,t){if(mf(t)&&(t=t.__ref||t.$ref),t==null)return e;let r;const n=t.replace(pf,"");if(i.remotes[n])return r=i.remotes[n],r&&r.$ref?We(i,e,r.$ref):r;if(i.ids[t])return r=tt.get(e,i.ids[t]),r&&r.$ref?We(i,e,r.$ref):r;const l=hf(t);if(l.length===0)return e;if(l.length===1){if(t=l[0],i.remotes[t])return r=i.remotes[t],We(i,e,r.$ref);if(i.ids[t])return r=tt.get(e,i.ids[t]),r&&r.$ref?We(i,e,r.$ref):r}if(l.length===2){const s=l[0];if(t=l[1],i.remotes[s])return i.remotes[s].getRef?i.remotes[s].getRef(t):We(i,i.remotes[s],t);if(i.ids[s])return We(i,tt.get(e,i.ids[s]),t)}return r=tt.get(e,i.ids[t]||t),r&&r.$ref?We(i,e,r.$ref):r}const fr="__compiled",ar="__ref",gf="getRef",_f="getRoot",bf=/(#|\/)+$/g;function Ef(i,e,t=e,r=!1){if(e===!0||e===!1||e===void 0||e[fr]!==void 0)return e;const n={ids:{},remotes:i.remotes},l=JSON.stringify(e),s=JSON.parse(l);if(Object.defineProperty(s,fr,{enumerable:!1,value:!0}),Object.defineProperty(s,gf,{enumerable:!1,value:We.bind(null,n,s)}),r===!1&&l.includes("$ref")===!1)return s;s!==t&&Object.defineProperty(s,"$defs",{enumerable:!0,value:Object.assign({},t.definitions,t.$defs,s.definitions,s.$defs)});const o={},f=()=>s;return Xr(s,(a,u)=>{var c;if(a.$id){if(a.$id.startsWith("http")&&/(allOf|anyOf|oneOf)\/\d+$/.test(u)){const j=u.replace(/\/(allOf|anyOf|oneOf)\/\d+$/,""),k=tt.get(s,j);a.$id=(c=k.$id)!==null&&c!==void 0?c:a.$id}n.ids[a.$id.replace(bf,"")]=u}u=`#${u}`.replace(/##+/,"#");const d=u.replace(/\/[^/]+$/,""),p=u.replace(/\/[^/]+\/[^/]+$/,""),g=o[d]||o[p],A=or(g,a.$id);o[u]=A,n.ids[A]==null&&(n.ids[A]=u),a.$ref&&!a[ar]&&(Object.defineProperty(a,ar,{enumerable:!1,value:or(A,a.$ref)}),Object.defineProperty(a,_f,{enumerable:!1,value:f}))}),s}function yf(i,e,t,r=i.rootSchema,n="#"){r=i.resolveRef(r),t(r,e,n);const l=ae(e);l==="object"?Object.keys(e).forEach(s=>{const o=i.step(s,r,e,n),f=e[s];i.each(f,t,o,`${n}/${s}`)}):l==="array"&&e.forEach((s,o)=>{const f=i.step(o,r,e,n);i.each(s,t,f,`${n}/${o}`)})}const he={additionalItemsError:B("AdditionalItemsError"),additionalPropertiesError:B("AdditionalPropertiesError"),anyOfError:B("AnyOfError"),allOfError:B("AllOfError"),constError:B("ConstError"),containsError:B("ContainsError"),containsArrayError:B("ContainsArrayError"),containsAnyError:B("ContainsAnyError"),enumError:B("EnumError"),formatURLError:B("FormatURLError"),formatURIError:B("FormatURIError"),formatURIReferenceError:B("FormatURIReferenceError"),formatURITemplateError:B("FormatURITemplateError"),formatDateError:B("FormatDateaError"),formatDateTimeError:B("FormatDateTimeError"),formatEmailError:B("FormatEmailError"),formatHostnameError:B("FormatHostnameError"),formatIPV4Error:B("FormatIPV4Error"),formatIPV4LeadingZeroError:B("FormatIPV4LeadingZeroError"),formatIPV6Error:B("FormatIPV6Error"),formatIPV6LeadingZeroError:B("FormatIPV6LeadingZeroError"),formatJSONPointerError:B("FormatJSONPointerError"),formatRegExError:B("FormatRegExError"),formatTimeError:B("FormatTimeError"),invalidSchemaError:B("InvalidSchemaError"),invalidDataError:B("InvalidDataError"),invalidTypeError:B("InvalidTypeError"),invalidPropertyNameError:B("InvalidPropertyNameError"),maximumError:B("MaximumError"),maxItemsError:B("MaxItemsError"),maxLengthError:B("MaxLengthError"),maxPropertiesError:B("MaxPropertiesError"),minimumError:B("MinimumError"),minItemsError:B("MinItemsError"),minItemsOneError:B("MinItemsOneError"),minLengthError:B("MinLengthError"),minLengthOneError:B("MinLengthOneError"),minPropertiesError:B("MinPropertiesError"),missingDependencyError:B("MissingDependencyError"),missingOneOfPropertyError:B("MissingOneOfPropertyError"),multipleOfError:B("MultipleOfError"),multipleOneOfError:B("MultipleOneOfError"),noAdditionalPropertiesError:B("NoAdditionalPropertiesError"),notError:B("NotError"),oneOfError:B("OneOfError"),oneOfPropertyError:B("OneOfPropertyError"),patternError:B("PatternError"),patternPropertiesError:B("PatternPropertiesError"),requiredPropertyError:B("RequiredPropertyError"),typeError:B("TypeError"),undefinedValueError:B("UndefinedValueError"),uniqueItemsError:B("UniqueItemsError"),unknownPropertyError:B("UnknownPropertyError"),valueNotEmptyError:B("ValueNotEmptyError")};var ei={exports:{}};(function(i){(function(e){e.exports.is_uri=r,e.exports.is_http_uri=n,e.exports.is_https_uri=l,e.exports.is_web_uri=s,e.exports.isUri=r,e.exports.isHttpUri=n,e.exports.isHttpsUri=l,e.exports.isWebUri=s;var t=function(o){var f=o.match(/(?:([^:\/?#]+):)?(?:\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/);return f};function r(o){if(o&&!/[^a-z0-9\:\/\?\#\[\]\@\!\$\&\'\(\)\*\+\,\;\=\.\-\_\~\%]/i.test(o)&&!/%[^0-9a-f]/i.test(o)&&!/%[0-9a-f](:?[^0-9a-f]|$)/i.test(o)){var f=[],a="",u="",c="",d="",p="",g="";if(f=t(o),a=f[1],u=f[2],c=f[3],d=f[4],p=f[5],!!(a&&a.length&&c.length>=0)){if(u&&u.length){if(!(c.length===0||/^\//.test(c)))return}else if(/^\/\//.test(c))return;if(/^[a-z][a-z0-9\+\-\.]*$/.test(a.toLowerCase()))return g+=a+":",u&&u.length&&(g+="//"+u),g+=c,d&&d.length&&(g+="?"+d),p&&p.length&&(g+="#"+p),g}}}function n(o,f){if(r(o)){var a=[],u="",c="",d="",p="",g="",A="",j="";if(a=t(o),u=a[1],c=a[2],d=a[3],g=a[4],A=a[5],!!u){if(f){if(u.toLowerCase()!="https")return}else if(u.toLowerCase()!="http")return;if(c)return/:(\d+)$/.test(c)&&(p=c.match(/:(\d+)$/)[0],c=c.replace(/:\d+$/,"")),j+=u+":",j+="//"+c,p&&(j+=p),j+=d,g&&g.length&&(j+="?"+g),A&&A.length&&(j+="#"+A),j}}}function l(o){return n(o,!0)}function s(o){return n(o)||l(o)}})(i)})(ei);var kf=ei.exports;const ur=It(kf),vf=new RegExp("^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\\.[0-9]+)?(([Zz])|([\\+|\\-]([01][0-9]|2[0-3]):[0-5][0-9]))$"),wf=/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,Of=/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,Sf=/^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$/,Pf=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,Tf=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,Af=[0,31,28,31,30,31,30,31,31,30,31,30,31],Rf=/^(?:\/(?:[^~/]|~0|~1)*)*$/,If=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,jf=/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,Nf=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,Lf={date:(i,e,t,r)=>{if(typeof t!="string")return;const n=t.match(Pf);if(!n)return he.formatDateTimeError({value:t,pointer:r});const l=+n[1],s=+n[2],o=+n[3],f=l%4===0&&(l%100!==0||l%400===0);if(!(s>=1&&s<=12&&o>=1&&o<=(s==2&&f?29:Af[s])))return he.formatDateError({value:t,pointer:r})},"date-time":(i,e,t,r)=>{if(typeof t=="string")return t===""||vf.test(t)?new Date(t).toString()==="Invalid Date"?he.formatDateTimeError({value:t,pointer:r}):void 0:he.formatDateTimeError({value:t,pointer:r})},email:(i,e,t,r)=>{if(typeof t!="string")return;if(t[0]==='"')return he.formatEmailError({value:t,pointer:r});const[n,l,...s]=t.split("@");if(!n||!l||s.length!==0||n.length>64||l.length>253)return he.formatEmailError({value:t,pointer:r});if(n[0]==="."||n.endsWith(".")||n.includes(".."))return he.formatEmailError({value:t,pointer:r});if(!/^[a-z0-9.-]+$/i.test(l)||!/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+$/i.test(n))return he.formatEmailError({value:t,pointer:r});if(!l.split(".").every(o=>/^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$/i.test(o)))return he.formatEmailError({value:t,pointer:r})},hostname:(i,e,t,r)=>{if(typeof t=="string"&&!(t===""||Sf.test(t)))return he.formatHostnameError({value:t,pointer:r})},ipv4:(i,e,t,r)=>{if(!(typeof t!="string"||t==="")){if(t&&t[0]==="0")return he.formatIPV4LeadingZeroError({value:t,pointer:r});if(!(t.length<=15&&wf.test(t)))return he.formatIPV4Error({value:t,pointer:r})}},ipv6:(i,e,t,r)=>{if(!(typeof t!="string"||t==="")){if(t&&t[0]==="0")return he.formatIPV6LeadingZeroError({value:t,pointer:r});if(!(t.length<=45&&Of.test(t)))return he.formatIPV6Error({value:t,pointer:r})}},"json-pointer":(i,e,t,r)=>{if(!(typeof t!="string"||t==="")&&!Rf.test(t))return he.formatJSONPointerError({value:t,pointer:r})},"relative-json-pointer":(i,e,t,r)=>{if(!(typeof t!="string"||t==="")&&!If.test(t))return he.formatJSONPointerError({value:t,pointer:r})},regex:(i,e,t,r)=>{if(typeof t=="string"&&/\\Z$/.test(t)===!1){try{new RegExp(t);return}catch{}return he.formatRegExError({value:t,pointer:r})}if(!(typeof t=="object"||typeof t=="number"||Array.isArray(t)))return he.formatRegExError({value:t,pointer:r})},time:(i,e,t,r)=>{if(typeof t!="string")return;const n=t.match(Tf);if(!n)return he.formatDateTimeError({value:t,pointer:r});const l=+n[1],s=+n[2],o=+n[3],f=!!n[5];if(!((l<=23&&s<=59&&o<=59||l==23&&s==59&&o==60)&&f))return he.formatTimeError({value:t,pointer:r})},uri:(i,e,t,r)=>{if(!(typeof t!="string"||t==="")&&!ur.isUri(t))return he.formatURIError({value:t,pointer:r})},"uri-reference":(i,e,t,r)=>{if(!(typeof t!="string"||t==="")&&!jf.test(t))return he.formatURIReferenceError({value:t,pointer:r})},"uri-template":(i,e,t,r)=>{if(!(typeof t!="string"||t==="")&&!Nf.test(t))return he.formatURITemplateError({value:t,pointer:r})},url:(i,e,t,r)=>{if(!(t===""||ur.isWebUri(t)))return he.formatURLError({value:t,pointer:r})}};function zf(i){switch(ae(i)){case"string":case"array":return i.length===0;case"null":case"undefined":return!0;case"object":return Object.keys(i).length===0;default:return!1}}const Cf={addOptionalProps:!0,removeInvalidData:!1};let qe;function Vt(i,e){const{$ref:t}=i;return t==null?!0:(qe[e]==null||qe[e][t]==null?0:qe[e][t])0){if(Vt(e.anyOf[0],`${r}/anyOf/0`)){const l=Ut(i,e.anyOf[0],`${r}/anyOf/0`);n=ct(n,l),n.pointer=e.anyOf[0].$ref||n.pointer}delete n.anyOf}if(Array.isArray(e.allOf)){for(let l=0,s=e.allOf.length;li&&typeof i=="object";function Ue(i,e,t,r,n){if(t==null)throw new Error(`getTemplate: missing schema for data: ${JSON.stringify(e)}`);if(r==null)throw new Error("Missing pointer");let l=ti(i,t,e,r);if(!cr(l))return;if(r=l.pointer,l!=null&&l.const)return l.const;if(Array.isArray(l.oneOf))if(zf(e)){const a=l.oneOf[0].type||l.type||l.const&&typeof l.const||ae(e);l={...l.oneOf[0],type:a}}else{const a=nn(i,e,l);if(Re(a)){if(e!=null&&n.removeInvalidData!==!0)return e;l=l.oneOf[0],e=void 0}else l=a}if(!cr(l)||l.type==null)return;const s=Array.isArray(l.type)?$f(l.type,e,l.default):l.type,o=ae(e);return e!=null&&o!==s&&!(o==="number"&&s==="integer")&&(e=Df(s,e)),dr[s]==null?n.removeInvalidData?void 0:e:dr[s](i,l,e,r,n)}function $f(i,e,t){if(e==null){if(t!=null){const n=ae(t);if(i.includes(n))return n}return i[0]}const r=ae(e);return i.includes(r)?r:i[0]}const dr={null:(i,e,t)=>ft(e,t,null),string:(i,e,t)=>ft(e,t,""),number:(i,e,t)=>ft(e,t,0),integer:(i,e,t)=>ft(e,t,0),boolean:(i,e,t)=>ft(e,t,!1),object:(i,e,t,r,n)=>{var l;const s=e.default===void 0?{}:e.default,o={},f=(l=e.required)!==null&&l!==void 0?l:[];if(e.properties&&Object.keys(e.properties).forEach(a=>{const u=t==null||t[a]==null?s[a]:t[a],c=f.includes(a);(u!=null||c||n.addOptionalProps)&&(o[a]=Ue(i,u,e.properties[a],`${r}/properties/${a}`,n))}),e.dependencies&&Object.keys(e.dependencies).forEach(a=>{if(o[a]===void 0)return;const u=e.dependencies[a];if(Array.isArray(u)){u.forEach(d=>{o[d]=Ue(i,o[d],e.properties[d],`${r}/properties/${d}`,n)});return}if(ae(u)!=="object")return;const c=Ue(i,t,{...u,type:"object"},`${r}/dependencies/${a}`,n);c&&!Re(c)&&Object.assign(o,c)}),t&&Object.keys(t).forEach(a=>o[a]==null&&(o[a]=t[a])),e.if&&(e.then||e.else)){const a=i.isValid(o,e.if);if(a&&e.then){const u=i.getTemplate(o,{type:"object",...e.then},n);Object.assign(o,u)}else if(!a&&e.else){const u=i.getTemplate(o,{type:"object",...e.else},n);Object.assign(o,u)}}return o},array:(i,e,t,r,n)=>{var l,s,o;const f=e.default===void 0?[]:e.default;e.minItems=e.minItems||0;const a=t||[];if(e.items==null)return a;if(Array.isArray(e.items)){for(let c=0,d=Math.max((l=e.minItems)!==null&&l!==void 0?l:0,(o=(s=e.items)===null||s===void 0?void 0:s.length)!==null&&o!==void 0?o:0);c0){const c=Math.max(e.minItems,a.length);for(let d=0;d(qe={mi:{}},Ue(i,e,t,"#",r));function Vf(i,e,t=i.rootSchema,r="#"){return i.validate(e,t,r).length===0}function Kt(i,e){const t=typeof i;if(t!==typeof e)return!1;if(Array.isArray(i)){if(!Array.isArray(e))return!1;const r=i.length;if(r!==e.length)return!1;for(let n=0;n=55296&&n<=56319&&t!(i[e]===void 0||!Uf.call(i,e)),xf={additionalProperties:(i,e,t,r)=>{if(e.additionalProperties===!0||e.additionalProperties==null||ae(e.patternProperties)==="object"&&e.additionalProperties===!1)return;const n=[];let l=Object.keys(t).filter(o=>pt.propertyBlacklist.includes(o)===!1);const s=Object.keys(e.properties||{});if(ae(e.patternProperties)==="object"){const o=Object.keys(e.patternProperties).map(f=>new RegExp(f));l=l.filter(f=>{for(let a=0;a{if(Array.isArray(e.allOf)===!1)return;const n=[];return e.allOf.forEach(l=>{n.push(...i.validate(t,l,r))}),n},anyOf:(i,e,t,r)=>{if(Array.isArray(e.anyOf)!==!1){for(let n=0;n{if(ae(e.dependencies)!=="object")return;const n=[];return Object.keys(t).forEach(l=>{if(e.dependencies[l]===void 0||e.dependencies[l]===!0)return;if(e.dependencies[l]===!1){n.push(i.errors.missingDependencyError({pointer:r}));return}let s;const o=ae(e.dependencies[l]);if(o==="array")s=e.dependencies[l].filter(f=>t[f]===void 0).map(f=>i.errors.missingDependencyError({missingProperty:f,pointer:r}));else if(o==="object")s=i.validate(t,e.dependencies[l],r);else throw new Error(`Invalid dependency definition for ${r}/${l}. Must be list or schema`);n.push(...s)}),n.length>0?n:void 0},enum:(i,e,t,r)=>{const n=ae(t);if(n==="object"||n==="array"){const l=JSON.stringify(t);for(let s=0;s{if(i.validateFormat[e.format])return i.validateFormat[e.format](i,e,t,r)},items:(i,e,t,r)=>{if(e.items===!1)return Array.isArray(t)&&t.length===0?void 0:i.errors.invalidDataError({pointer:r,value:t});const n=[];for(let l=0;l{if(!isNaN(e.maximum)){if(e.maximum&&e.maximum{if(!isNaN(e.maxItems)&&e.maxItems{if(isNaN(e.maxLength))return;const n=hr(t).length;if(e.maxLength{const n=Object.keys(t).length;if(isNaN(e.maxProperties)===!1&&e.maxProperties{if(isNaN(e.minLength))return;const n=hr(t).length;if(e.minLength>n)return e.minLength===1?i.errors.minLengthOneError({minLength:e.minLength,length:n,pointer:r}):i.errors.minLengthError({minLength:e.minLength,length:n,pointer:r})},minimum:(i,e,t,r)=>{if(!isNaN(e.minimum)){if(e.minimum>t)return i.errors.minimumError({minimum:e.minimum,length:t,pointer:r});if(e.exclusiveMinimum===!0&&e.minimum===t)return i.errors.minimumError({minimum:e.minimum,length:t,pointer:r})}},minItems:(i,e,t,r)=>{if(!isNaN(e.minItems)&&e.minItems>t.length)return e.minItems===1?i.errors.minItemsOneError({minItems:e.minItems,length:t.length,pointer:r}):i.errors.minItemsError({minItems:e.minItems,length:t.length,pointer:r})},minProperties:(i,e,t,r)=>{if(isNaN(e.minProperties))return;const n=Object.keys(t).length;if(e.minProperties>n)return i.errors.minPropertiesError({minProperties:e.minProperties,length:n,pointer:r})},multipleOf:(i,e,t,r)=>{if(!isNaN(e.multipleOf)&&t*xt%(e.multipleOf*xt)/xt!==0)return i.errors.multipleOfError({multipleOf:e.multipleOf,value:t,pointer:r})},not:(i,e,t,r)=>{const n=[];return i.validate(t,e.not,r).length===0&&n.push(i.errors.notError({value:t,not:e.not,pointer:r})),n},oneOf:(i,e,t,r)=>{if(Array.isArray(e.oneOf)!==!1&&(e=i.resolveOneOf(t,e,r),Re(e)))return e},pattern:(i,e,t,r)=>{if(new RegExp(e.pattern,"u").test(t)===!1)return i.errors.patternError({pattern:e.pattern,description:e.patternExample||e.pattern,received:t,pointer:r})},patternProperties:(i,e,t,r)=>{const n=e.properties||{},l=e.patternProperties;if(ae(l)!=="object")return;const s=[],o=Object.keys(t),f=Object.keys(l).map(a=>({regex:new RegExp(a),patternSchema:l[a]}));return o.forEach(a=>{let u=!1;for(let c=0,d=f.length;c0&&s.push(...p)}n[a]||u===!1&&e.additionalProperties===!1&&s.push(i.errors.patternPropertiesError({key:a,pointer:r,patterns:Object.keys(l).join(",")}))}),s},properties:(i,e,t,r)=>{const n=[],l=Object.keys(e.properties||{});for(let s=0;s{const n=[],l=Object.keys(e.properties||{});for(let s=0;s{if(Array.isArray(e.required)!==!1)return e.required.map(n=>{if(!pr(t,n))return i.errors.requiredPropertyError({key:n,pointer:r})})},requiredNotEmpty:(i,e,t,r)=>{if(Array.isArray(e.required)!==!1)return e.required.map(n=>{if(t[n]==null||t[n]==="")return i.errors.valueNotEmptyError({property:n,pointer:`${r}/${n}`})})},uniqueItems:(i,e,t,r)=>{if((Array.isArray(t)&&e.uniqueItems)===!1)return;const n=[];return t.forEach((l,s)=>{for(let o=s+1;o{if(e.contains===!1)return i.errors.containsArrayError({pointer:r,value:t});if(e.contains===!0)return Array.isArray(t)&&t.length===0?i.errors.containsAnyError({pointer:r}):void 0;if(ae(e.contains)==="object"){for(let n=0;n{if(!isNaN(e.exclusiveMaximum)&&e.exclusiveMaximum<=t)return i.errors.maximumError({maximum:e.exclusiveMaximum,length:t,pointer:r})},exclusiveMinimum:(i,e,t,r)=>{if(!isNaN(e.exclusiveMinimum)&&e.exclusiveMinimum>=t)return i.errors.minimumError({minimum:e.exclusiveMinimum,length:t,pointer:r})},if:(i,e,t,r)=>{if(e.if==null)return;const n=i.validate(t,e.if,r);if(n.length===0&&e.then)return i.validate(t,e.then,r);if(n.length!==0&&e.else)return i.validate(t,e.else,r)},maximum:(i,e,t,r)=>{if(!isNaN(e.maximum)&&e.maximum&&e.maximum{if(!isNaN(e.minimum)&&e.minimum>t)return i.errors.minimumError({minimum:e.minimum,length:t,pointer:r})},patternProperties:(i,e,t,r)=>{const n=e.properties||{},l=e.patternProperties;if(ae(l)!=="object")return;const s=[],o=Object.keys(t),f=Object.keys(l).map(a=>({regex:new RegExp(a),patternSchema:l[a]}));return o.forEach(a=>{let u=!1;for(let c=0,d=f.length;c0&&s.push(...p)}n[a]||u===!1&&e.additionalProperties===!1&&s.push(i.errors.patternPropertiesError({key:a,pointer:r,patterns:Object.keys(l).join(",")}))}),s},propertyNames:(i,e,t,r)=>{if(e.propertyNames===!1)return Object.keys(t).length===0?void 0:i.errors.invalidPropertyNameError({property:Object.keys(t),pointer:r,value:t});if(e.propertyNames===!0||ae(e.propertyNames)!=="object")return;const n=[],l=Object.keys(t),s={...e.propertyNames,type:"string"};return l.forEach(o=>{const f=i.validate(o,s,`${r}/${o}`);f.length>0&&n.push(i.errors.invalidPropertyNameError({property:o,pointer:r,validationError:f[0],value:t[o]}))}),n}};function Ff(i,e,t=i.rootSchema,r="#"){let n=!1,l=tn(t);for(let s=0;se.properties[t]=Ke(i[t]))),e.type==="array"&&i.length===1?e.items=Ke(i[0]):e.type==="array"&&(e.items=i.map(Ke)),e}function Bf(i,e,t=i.rootSchema){const r=i.step(e,t,{},"#");return Re(r)?r.code==="one-of-error"?r.data.oneOf.map(n=>i.resolveRef(n)):r:[r]}const mr={array:(i,e,t,r,n)=>{const l=ae(t.items);if(l==="object")return Array.isArray(t.items.oneOf)?i.resolveOneOf(r[e],t.items,n):Array.isArray(t.items.anyOf)?i.resolveAnyOf(r[e],t.items,n):Array.isArray(t.items.allOf)?i.resolveAllOf(r[e],t.items,n):i.resolveRef(t.items);if(l==="array"){if(t.items[e]===!0)return Ke(r[e]);if(t.items[e]===!1)return he.invalidDataError({key:e,value:r[e],pointer:n});if(t.items[e])return i.resolveRef(t.items[e]);if(t.additionalItems===!1)return he.additionalItemsError({key:e,value:r[e],pointer:n});if(t.additionalItems===!0||t.additionalItems===void 0)return Ke(r[e]);if(ae(t.additionalItems)==="object")return t.additionalItems;throw new Error(`Invalid schema ${JSON.stringify(t,null,4)} for ${JSON.stringify(r,null,4)}`)}return t.additionalItems!==!1&&r[e]?Ke(r[e]):new Error(`Invalid array schema for ${e} at ${n}`)},object:(i,e,t,r,n)=>{if(Array.isArray(t.oneOf)){const o=i.resolveOneOf(r,t,n);if(t=ct(t,o),Re(t))return t}if(Array.isArray(t.anyOf)&&(t=i.resolveAnyOf(r,t,n),Re(t))||Array.isArray(t.allOf)&&(t=i.resolveAllOf(r,t,n),Re(t)))return t;let l;if(t.properties&&t.properties[e]!==void 0){if(l=i.resolveRef(t.properties[e]),Re(l))return l;if(l&&Array.isArray(l.oneOf)){let o=i.resolveOneOf(r[e],l,`${n}/${e}`);const f=l.oneOf.findIndex(a=>a===o);return o.variableSchema=!0,o.oneOfIndex=f,o.oneOfSchema=l,o}if(l)return l}const{dependencies:s}=t;if(ae(s)==="object"){const o=Object.keys(s).filter(f=>ae(s[f])==="object");for(let f=0,a=o.length;fi.typeKeywords.array.filter(n=>e&&e[n]!=null).map(n=>i.validateKeyword[n](i,e,t,r)),object:(i,e,t,r)=>i.typeKeywords.object.filter(n=>e&&e[n]!=null).map(n=>i.validateKeyword[n](i,e,t,r)),string:(i,e,t,r)=>i.typeKeywords.string.filter(n=>e&&e[n]!=null).map(n=>i.validateKeyword[n](i,e,t,r)),integer:(i,e,t,r)=>i.typeKeywords.number.filter(n=>e&&e[n]!=null).map(n=>i.validateKeyword[n](i,e,t,r)),number:(i,e,t,r)=>i.typeKeywords.number.filter(n=>e&&e[n]!=null).map(n=>i.validateKeyword[n](i,e,t,r)),boolean:(i,e,t,r)=>i.typeKeywords.boolean.filter(n=>e&&e[n]!=null).map(n=>i.validateKeyword[n](i,e,t,r)),null:(i,e,t,r)=>i.typeKeywords.null.filter(n=>e&&e[n]!=null).map(n=>i.validateKeyword[n](i,e,t,r))};var Hf=function i(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var r,n,l;if(Array.isArray(e)){if(r=e.length,r!=t.length)return!1;for(n=r;n--!==0;)if(!i(e[n],t[n]))return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();if(l=Object.keys(e),r=l.length,r!==Object.keys(t).length)return!1;for(n=r;n--!==0;)if(!Object.prototype.hasOwnProperty.call(t,l[n]))return!1;for(n=r;n--!==0;){var s=l[n];if(!i(e[s],t[s]))return!1}return!0}return e!==e&&t!==t};const Jf=It(Hf);function Wf(i,e){const t=ae(i);return t==="number"&&(e==="integer"||Array.isArray(e)&&e.includes("integer"))?Number.isInteger(i)||isNaN(i)?"integer":"number":t}function Kf(i,e,t=i.rootSchema,r="#"){if(t=i.resolveRef(t),ae(t)==="boolean")return t?[]:[i.errors.invalidDataError({value:e,pointer:r})];if(Re(t))return[t];if(t.const!==void 0)return Jf(t.const,e)?[]:[i.errors.constError({value:e,expected:t.const,pointer:r})];const n=Wf(e,t.type),l=t.type||n;return n!==l&&(!Array.isArray(l)||!l.includes(n))?[i.errors.typeError({received:n,expected:l,value:e,pointer:r})]:i.validateType[n]==null?[i.errors.invalidTypeError({receivedType:n,pointer:r})]:at(i.validateType[n](i,t,e,r)).filter(Pt)}const ni={typeKeywords:{array:["allOf","anyOf","contains","enum","if","items","maxItems","minItems","not","oneOf","uniqueItems"],boolean:["allOf","anyOf","enum","not","oneOf"],object:["additionalProperties","allOf","anyOf","dependencies","enum","format","if","maxProperties","minProperties","not","oneOf","patternProperties","properties","propertyNames","required"],string:["allOf","anyOf","enum","format","if","maxLength","minLength","not","oneOf","pattern"],number:["allOf","anyOf","enum","exclusiveMaximum","exclusiveMinimum","format","if","maximum","minimum","multipleOf","not","oneOf"],null:["allOf","anyOf","enum","format","not","oneOf"]},validateKeyword:qf,validateType:Zf,validateFormat:Lf,errors:he,addRemoteSchema:Co,compileSchema:Ef,createSchemaOf:Ke,each:yf,eachSchema:Xr,getChildSchemaSelection:Bf,getSchema:Lo,getTemplate:Mf,isValid:Vf,resolveAllOf:Ao,resolveAnyOf:Ff,resolveOneOf:ao,resolveRef:Io,step:vt,validate:Kf};class Qf extends zo{constructor(e,t={}){super(ct(ni,t),e)}}({...ni});function gr(i,e,t){const r=i.slice();return r[11]=e[t],r[12]=e,r[13]=t,r}function _r(i){let e,t,r=i[13]+1+"",n,l,s,o,f,a,u,c,d,p,g;function A(b){i[8](b,i[13])}let j={path:i[1]+"/"+i[13],schema:i[3],rootValue:i[2],validationErrors:i[4],customComponents:i[5],required:!0};i[0][i[13]]!==void 0&&(j.value=i[0][i[13]]),o=new ln({props:j}),De.push(()=>Ve(o,"value",A));function k(){return i[9](i[13])}return{c(){e=M("div"),t=M("div"),n=ge(r),l=se(),s=M("div"),H(o.$$.fragment),a=se(),u=M("button"),c=ge("remove"),this.h()},l(b){e=V(b,"DIV",{class:!0});var E=$(e);t=V(E,"DIV",{class:!0});var w=$(t);n=_e(w,r),w.forEach(h),l=oe(E),s=V(E,"DIV",{class:!0});var N=$(s);re(o.$$.fragment,N),a=oe(N),u=V(N,"BUTTON",{class:!0});var R=$(u);c=_e(R,"remove"),R.forEach(h),N.forEach(h),E.forEach(h),this.h()},h(){I(t,"class","w-8 shrink-0 text-lg"),I(u,"class","bg-slate-600 p-2 text-white hover:bg-slate-400"),I(s,"class","flex w-full grow flex-col"),I(e,"class","mb-4 flex w-full flex-row")},m(b,E){O(b,e,E),x(e,t),x(t,n),x(e,l),x(e,s),J(o,s,null),x(s,a),x(s,u),x(u,c),d=!0,p||(g=me(u,"click",k),p=!0)},p(b,E){i=b;const w={};E&2&&(w.path=i[1]+"/"+i[13]),E&8&&(w.schema=i[3]),E&4&&(w.rootValue=i[2]),E&16&&(w.validationErrors=i[4]),E&32&&(w.customComponents=i[5]),!f&&E&1&&(f=!0,w.value=i[0][i[13]],Je(()=>f=!1)),o.$set(w)},i(b){d||(m(o.$$.fragment,b),d=!0)},o(b){_(o.$$.fragment,b),d=!1},d(b){b&&h(e),W(o),p=!1,g()}}}function Gf(i){let e,t,r=i[7].title+"",n,l,s,o,f,a,u,c,d,p=i[0]||[],g=[];for(let j=0;j_(g[j],1,1,()=>{g[j]=null});return{c(){e=M("div"),t=M("span"),n=ge(r),l=se();for(let j=0;j0),I(e,"class","bx--form-item flex flex-col")},m(j,k){O(j,e,k),x(e,t),x(t,n),x(e,l);for(let b=0;b0)},i(j){if(!u){for(let k=0;k{s.splice(g,1),t(0,s)},p=()=>{t(0,s=[...s||[],n])};return i.$$set=g=>{"path"in g&&t(1,l=g.path),"value"in g&&t(0,s=g.value),"rootValue"in g&&t(2,o=g.rootValue),"schema"in g&&t(3,f=g.schema),"validationErrors"in g&&t(4,a=g.validationErrors),"customComponents"in g&&t(5,u=g.customComponents)},i.$$.update=()=>{i.$$.dirty&11&&t(7,r=f.getSchema(l,s)),i.$$.dirty&11&&t(6,n=f.getTemplate(void 0,f.getSchema(l+"/0",s)))},[s,l,o,f,a,u,n,r,c,d,p]}class Xf extends ue{constructor(e){super(),ce(this,e,Yf,Gf,de,{path:1,value:0,rootValue:2,schema:3,validationErrors:4,customComponents:5})}}function br(i,e,t){const r=i.slice();return r[23]=e[t],r[24]=e,r[25]=t,r}function Er(i,e,t){const r=i.slice();return r[20]=e[t],r}function yr(i){let e,t,r,n;const l=[fa,oa,sa,la,ia,ra,na,ta,ea],s=[];function o(f,a){return f[8][f[2]]?0:f[10].type=="error"?1:f[10].enum?2:f[10].type=="string"?3:f[10].type=="number"?4:f[10].type=="boolean"?5:f[10].type=="array"?6:f[10].type=="object"?7:8}return e=o(i),t=s[e]=l[e](i),{c(){t.c(),r=q()},l(f){t.l(f),r=q()},m(f,a){s[e].m(f,a),O(f,r,a),n=!0},p(f,a){let u=e;e=o(f),e===u?s[e].p(f,a):(G(),_(s[u],1,1,()=>{s[u]=null}),Y(),t=s[e],t?t.p(f,a):(t=s[e]=l[e](f),t.c()),m(t,1),t.m(r.parentNode,r))},i(f){n||(m(t),n=!0)},o(f){_(t),n=!1},d(f){s[e].d(f),f&&h(r)}}}function ea(i){let e,t=JSON.stringify(i[10])+"",r;return{c(){e=ge("Unknown property: "),r=ge(t)},l(n){e=_e(n,"Unknown property: "),r=_e(n,t)},m(n,l){O(n,e,l),O(n,r,l)},p(n,l){l&1024&&t!==(t=JSON.stringify(n[10])+"")&&Te(r,t)},i:pe,o:pe,d(n){n&&h(e),n&&h(r)}}}function ta(i){let e,t,r,n=i[10].description&&i[6]&&kr(i),l=Object.keys(i[10].properties??{}),s=[];for(let f=0;f_(s[f],1,1,()=>{s[f]=null});return{c(){n&&n.c(),e=se();for(let f=0;f{n=null}),Y()),a&1463){l=Object.keys(f[10].properties??{});let u;for(u=0;uVe(e,"value",n)),{c(){H(e.$$.fragment)},l(s){re(e.$$.fragment,s)},m(s,o){J(e,s,o),r=!0},p(s,o){const f={};o&4&&(f.path=s[2]),o&2&&(f.schema=s[1]),o&128&&(f.validationErrors=s[7]),o&256&&(f.customComponents=s[8]),o&16&&(f.rootValue=s[4]),!t&&o&1&&(t=!0,f.value=s[0],Je(()=>t=!1)),e.$set(f)},i(s){r||(m(e.$$.fragment,s),r=!0)},o(s){_(e.$$.fragment,s),r=!1},d(s){W(e,s)}}}function ra(i){let e,t,r,n,l,s=i[10].description+"",o,f;function a(c){i[17](c)}let u={labelA:"False",labelB:"True",labelText:i[12]};return i[0]!==void 0&&(u.toggled=i[0]),t=new hi({props:u}),De.push(()=>Ve(t,"toggled",a)),{c(){e=M("div"),H(t.$$.fragment),n=se(),l=M("span"),o=ge(s),this.h()},l(c){e=V(c,"DIV",{});var d=$(e);re(t.$$.fragment,d),n=oe(d),l=V(d,"SPAN",{class:!0});var p=$(l);o=_e(p,s),p.forEach(h),d.forEach(h),this.h()},h(){I(l,"class","bx--form__helper-text")},m(c,d){O(c,e,d),J(t,e,null),x(e,n),x(e,l),x(l,o),f=!0},p(c,d){const p={};d&4096&&(p.labelText=c[12]),!r&&d&1&&(r=!0,p.toggled=c[0],Je(()=>r=!1)),t.$set(p),(!f||d&1024)&&s!==(s=c[10].description+"")&&Te(o,s)},i(c){f||(m(t.$$.fragment,c),f=!0)},o(c){_(t.$$.fragment,c),f=!1},d(c){c&&h(e),W(t)}}}function ia(i){let e,t,r;function n(s){i[16](s)}let l={name:i[2],helperText:i[10].description,label:i[12],invalid:!i[0]&&i[3]};return i[0]!==void 0&&(l.value=i[0]),e=new Li({props:l}),De.push(()=>Ve(e,"value",n)),{c(){H(e.$$.fragment)},l(s){re(e.$$.fragment,s)},m(s,o){J(e,s,o),r=!0},p(s,o){const f={};o&4&&(f.name=s[2]),o&1024&&(f.helperText=s[10].description),o&4096&&(f.label=s[12]),o&9&&(f.invalid=!s[0]&&s[3]),!t&&o&1&&(t=!0,f.value=s[0],Je(()=>t=!1)),e.$set(f)},i(s){r||(m(e.$$.fragment,s),r=!0)},o(s){_(e.$$.fragment,s),r=!1},d(s){W(e,s)}}}function la(i){let e,t,r;function n(s){i[15](s)}let l={name:i[2],helperText:i[10].description,labelText:i[12],invalid:!!i[9].length,invalidText:i[11],placeholder:i[3]?"":"(optional)"};return i[0]!==void 0&&(l.value=i[0]),e=new Fi({props:l}),De.push(()=>Ve(e,"value",n)),{c(){H(e.$$.fragment)},l(s){re(e.$$.fragment,s)},m(s,o){J(e,s,o),r=!0},p(s,o){const f={};o&4&&(f.name=s[2]),o&1024&&(f.helperText=s[10].description),o&4096&&(f.labelText=s[12]),o&512&&(f.invalid=!!s[9].length),o&2048&&(f.invalidText=s[11]),o&8&&(f.placeholder=s[3]?"":"(optional)"),!t&&o&1&&(t=!0,f.value=s[0],Je(()=>t=!1)),e.$set(f)},i(s){r||(m(e.$$.fragment,s),r=!0)},o(s){_(e.$$.fragment,s),r=!1},d(s){W(e,s)}}}function sa(i){let e,t,r;function n(s){i[14](s)}let l={name:i[2],helperText:i[10].description,labelText:i[12],$$slots:{default:[aa]},$$scope:{ctx:i}};return i[0]!==void 0&&(l.selected=i[0]),e=new pi({props:l}),De.push(()=>Ve(e,"selected",n)),{c(){H(e.$$.fragment)},l(s){re(e.$$.fragment,s)},m(s,o){J(e,s,o),r=!0},p(s,o){const f={};o&4&&(f.name=s[2]),o&1024&&(f.helperText=s[10].description),o&4096&&(f.labelText=s[12]),o&67109896&&(f.$$scope={dirty:o,ctx:s}),!t&&o&1&&(t=!0,f.selected=s[0],Je(()=>t=!1)),e.$set(f)},i(s){r||(m(e.$$.fragment,s),r=!0)},o(s){_(e.$$.fragment,s),r=!1},d(s){W(e,s)}}}function oa(i){let e,t=i[10].message+"",r;return{c(){e=M("div"),r=ge(t),this.h()},l(n){e=V(n,"DIV",{class:!0});var l=$(e);r=_e(l,t),l.forEach(h),this.h()},h(){I(e,"class","text-red-600")},m(n,l){O(n,e,l),x(e,r)},p(n,l){l&1024&&t!==(t=n[10].message+"")&&Te(r,t)},i:pe,o:pe,d(n){n&&h(e)}}}function fa(i){let e,t,r,n;function l(f){i[13](f)}var s=i[8][i[2]];function o(f){let a={rootValue:f[4],invalid:!!f[9].length,invalidText:f[11]};return f[0]!==void 0&&(a.value=f[0]),{props:a}}return s&&(e=Ee(s,o(i)),De.push(()=>Ve(e,"value",l))),{c(){e&&H(e.$$.fragment),r=q()},l(f){e&&re(e.$$.fragment,f),r=q()},m(f,a){e&&J(e,f,a),O(f,r,a),n=!0},p(f,a){const u={};if(a&16&&(u.rootValue=f[4]),a&512&&(u.invalid=!!f[9].length),a&2048&&(u.invalidText=f[11]),!t&&a&1&&(t=!0,u.value=f[0],Je(()=>t=!1)),a&260&&s!==(s=f[8][f[2]])){if(e){G();const c=e;_(c.$$.fragment,1,0,()=>{W(c,1)}),Y()}s?(e=Ee(s,o(f)),De.push(()=>Ve(e,"value",l)),H(e.$$.fragment),m(e.$$.fragment,1),J(e,r.parentNode,r)):e=null}else s&&e.$set(u)},i(f){n||(e&&m(e.$$.fragment,f),n=!0)},o(f){e&&_(e.$$.fragment,f),n=!1},d(f){f&&h(r),e&&W(e,f)}}}function kr(i){let e,t,r;return t=new to({props:{source:i[10].description}}),{c(){e=M("div"),H(t.$$.fragment),this.h()},l(n){e=V(n,"DIV",{class:!0});var l=$(e);re(t.$$.fragment,l),l.forEach(h),this.h()},h(){I(e,"class","description mb-4")},m(n,l){O(n,e,l),J(t,e,null),r=!0},p(n,l){const s={};l&1024&&(s.source=n[10].description),t.$set(s)},i(n){r||(m(t.$$.fragment,n),r=!0)},o(n){_(t.$$.fragment,n),r=!1},d(n){n&&h(e),W(t)}}}function vr(i){var s;let e,t,r;function n(o){i[19](o,i[23])}let l={path:i[2]+"/"+i[23],schema:i[1],hiddenProperties:i[5],validationErrors:i[7],customComponents:i[8],rootValue:i[4],required:(s=i[10].required)==null?void 0:s.includes(i[23])};return i[0][i[23]]!==void 0&&(l.value=i[0][i[23]]),e=new ln({props:l}),De.push(()=>Ve(e,"value",n)),{c(){H(e.$$.fragment)},l(o){re(e.$$.fragment,o)},m(o,f){J(e,o,f),r=!0},p(o,f){var u;i=o;const a={};f&1028&&(a.path=i[2]+"/"+i[23]),f&2&&(a.schema=i[1]),f&32&&(a.hiddenProperties=i[5]),f&128&&(a.validationErrors=i[7]),f&256&&(a.customComponents=i[8]),f&16&&(a.rootValue=i[4]),f&1024&&(a.required=(u=i[10].required)==null?void 0:u.includes(i[23])),!t&&f&1025&&(t=!0,a.value=i[0][i[23]],Je(()=>t=!1)),e.$set(a)},i(o){r||(m(e.$$.fragment,o),r=!0)},o(o){_(e.$$.fragment,o),r=!1},d(o){W(e,o)}}}function wr(i){let e,t;return e=new Rr({props:{value:void 0,text:"None"}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},p:pe,i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function Or(i){let e,t;return e=new Rr({props:{value:i[20]}}),{c(){H(e.$$.fragment)},l(r){re(e.$$.fragment,r)},m(r,n){J(e,r,n),t=!0},p(r,n){const l={};n&1024&&(l.value=r[20]),e.$set(l)},i(r){t||(m(e.$$.fragment,r),t=!0)},o(r){_(e.$$.fragment,r),t=!1},d(r){W(e,r)}}}function aa(i){let e,t,r,n=!i[3]&&wr(),l=i[10].enum,s=[];for(let f=0;f_(s[f],1,1,()=>{s[f]=null});return{c(){n&&n.c(),e=se();for(let f=0;f{n=null}),Y()):n?(n.p(f,a),a&8&&m(n,1)):(n=wr(),n.c(),m(n,1),n.m(e.parentNode,e)),a&1024){l=f[10].enum;let u;for(u=0;u{n=null}),Y())},i(s){r||(m(n),r=!0)},o(s){_(n),r=!1},d(s){n&&n.d(s),s&&h(t)}}}function ca(i,e,t){let r,n,l,{schema:s}=e,{path:o=""}=e,{required:f=!1}=e,{value:a}=e,{rootValue:u}=e,{hiddenProperties:c=[]}=e,{showDescription:d=!0}=e,{validationErrors:p=[]}=e,{customComponents:g}=e,A="";function j(L){a=L,t(0,a)}function k(L){a=L,t(0,a)}function b(L){a=L,t(0,a)}function E(L){a=L,t(0,a)}function w(L){a=L,t(0,a)}function N(L){a=L,t(0,a)}function R(L,fe){i.$$.not_equal(a[fe],L)&&(a[fe]=L,t(0,a))}return i.$$set=L=>{"schema"in L&&t(1,s=L.schema),"path"in L&&t(2,o=L.path),"required"in L&&t(3,f=L.required),"value"in L&&t(0,a=L.value),"rootValue"in L&&t(4,u=L.rootValue),"hiddenProperties"in L&&t(5,c=L.hiddenProperties),"showDescription"in L&&t(6,d=L.showDescription),"validationErrors"in L&&t(7,p=L.validationErrors),"customComponents"in L&&t(8,g=L.customComponents)},i.$$.update=()=>{i.$$.dirty&1&&a===""&&t(0,a=void 0),i.$$.dirty&7&&t(10,r=s.getSchema(o,a)),i.$$.dirty&1032&&t(12,n=r.title?`${r.title} ${f?"*":""}`:""),i.$$.dirty&132&&t(9,l=p.filter(L=>{var fe,Q,te;return`${(fe=L==null?void 0:L.data)==null?void 0:fe.pointer}${(Q=L==null?void 0:L.data)!=null&&Q.key?"/"+((te=L==null?void 0:L.data)==null?void 0:te.key):""}`.replaceAll("#","")==o})),i.$$.dirty&512&&(l.length==0?t(11,A=""):l[0].code==="min-length-one-error"||l[0].code==="required-property-error"?t(11,A="Value is required"):t(11,A=l[0].message))},[a,s,o,f,u,c,d,p,g,l,r,A,n,j,k,b,E,w,N,R]}class ln extends ue{constructor(e){super(),ce(this,e,ca,ua,de,{schema:1,path:2,required:3,value:0,rootValue:4,hiddenProperties:5,showDescription:6,validationErrors:7,customComponents:8})}}function Sr(i){let e,t,r;function n(s){i[7](s)}let l={schema:i[5],hiddenProperties:i[2],showDescription:i[3],validationErrors:i[1],customComponents:i[4],rootValue:i[0]};return i[0]!==void 0&&(l.value=i[0]),e=new ln({props:l}),De.push(()=>Ve(e,"value",n)),{c(){H(e.$$.fragment)},l(s){re(e.$$.fragment,s)},m(s,o){J(e,s,o),r=!0},p(s,o){const f={};o&32&&(f.schema=s[5]),o&4&&(f.hiddenProperties=s[2]),o&8&&(f.showDescription=s[3]),o&2&&(f.validationErrors=s[1]),o&16&&(f.customComponents=s[4]),o&1&&(f.rootValue=s[0]),!t&&o&1&&(t=!0,f.value=s[0],Je(()=>t=!1)),e.$set(f)},i(s){r||(m(e.$$.fragment,s),r=!0)},o(s){_(e.$$.fragment,s),r=!1},d(s){W(e,s)}}}function da(i){let e,t,r=i[5]&&Sr(i);return{c(){r&&r.c(),e=q()},l(n){r&&r.l(n),e=q()},m(n,l){r&&r.m(n,l),O(n,e,l),t=!0},p(n,[l]){n[5]?r?(r.p(n,l),l&32&&m(r,1)):(r=Sr(n),r.c(),m(r,1),r.m(e.parentNode,e)):r&&(G(),_(r,1,1,()=>{r=null}),Y())},i(n){t||(m(r),t=!0)},o(n){_(r),t=!1},d(n){r&&r.d(n),n&&h(e)}}}function ha(i,e,t){let r,{schema:n}=e,{value:l={}}=e,{hiddenProperties:s=[]}=e,{validationErrors:o=[]}=e,{showDescription:f=!0}=e,{customComponents:a={}}=e;function u(d){t(0,l=d.getTemplate(l,void 0,{addOptionalProps:!1}))}function c(d){l=d,t(0,l)}return i.$$set=d=>{"schema"in d&&t(6,n=d.schema),"value"in d&&t(0,l=d.value),"hiddenProperties"in d&&t(2,s=d.hiddenProperties),"validationErrors"in d&&t(1,o=d.validationErrors),"showDescription"in d&&t(3,f=d.showDescription),"customComponents"in d&&t(4,a=d.customComponents)},i.$$.update=()=>{i.$$.dirty&64&&t(5,r=typeof n=="object"?new Qf(n):null),i.$$.dirty&32&&r&&u(r),i.$$.dirty&33&&t(1,o=r?r.validate(l):[])},[l,o,s,f,a,r,n,c]}class ya extends ue{constructor(e){super(),ce(this,e,ha,da,de,{schema:6,value:0,hiddenProperties:2,validationErrors:1,showDescription:3,customComponents:4})}}export{ya as J,to as S,Fi as T,It as a,Bi as c,ba as g}; diff --git a/web/blueprint/build/_app/immutable/chunks/Modal.67c6d9e8.js b/web/blueprint/build/_app/immutable/chunks/Modal.67c6d9e8.js new file mode 100644 index 0000000000000000000000000000000000000000..a77c60e2076dac87f84306b3ce154fdd1dd14e2d --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/Modal.67c6d9e8.js @@ -0,0 +1,6 @@ +import{o as tl,a6 as nl,S as al,i as il,s as ol,G as be,E as me,k as P,a as j,l as V,m as N,c as R,h as E,n as h,H as _,I as ve,b as L,J as z,K as A,g as k,v as w,d as D,f as x,L as _e,M as he,N as ge,O as rl,P as sl,D as Oe,C as fl,R as ul,j as dl,F as Ce,a1 as cl,y as te,z as ne,A as ae,B as ie,q as oe,r as re,u as se,Q as le,w as ce,e as Ee,a0 as bl}from"./index.224851d7.js";import{c as pe,B as ye}from"./taskMonitoringStore.8317b9f1.js";import{w as Pe}from"./index.fd964a74.js";const ke=new Set,Ve=Pe(0),De=()=>Ve.set([...ke].filter(t=>nl(t)).length),ml=t=>tl(()=>{ke.add(t);const e=t.subscribe(De);return()=>{e(),ke.delete(t),De()}});Ve.subscribe(t=>{typeof document<"u"&&document.body.classList.toggle("bx--body--with-modal-open",t>0)});function Ie(t,e,l){const n=t.slice();return n[55]=e[l],n}const _l=t=>({}),Se=t=>({}),hl=t=>({}),Te=t=>({});function Me(t){let e,l,n,o,s;return l=new pe({props:{size:20,class:"bx--modal-close__icon","aria-hidden":"true"}}),{c(){e=P("button"),te(l.$$.fragment),this.h()},l(a){e=V(a,"BUTTON",{type:!0,"aria-label":!0});var f=N(e);ne(l.$$.fragment,f),f.forEach(E),this.h()},h(){h(e,"type","button"),h(e,"aria-label",t[8]),_(e,"bx--modal-close",!0)},m(a,f){L(a,e,f),ae(l,e,null),t[37](e),n=!0,o||(s=A(e,"click",t[38]),o=!0)},p(a,f){(!n||f[0]&256)&&h(e,"aria-label",a[8])},i(a){n||(k(l.$$.fragment,a),n=!0)},o(a){D(l.$$.fragment,a),n=!1},d(a){a&&E(e),ie(l),t[37](null),o=!1,s()}}}function Le(t){let e,l;const n=t[31].label,o=be(n,t,t[50],Te),s=o||gl(t);return{c(){e=P("h2"),s&&s.c(),this.h()},l(a){e=V(a,"H2",{id:!0});var f=N(e);s&&s.l(f),f.forEach(E),this.h()},h(){h(e,"id",t[25]),_(e,"bx--modal-header__label",!0)},m(a,f){L(a,e,f),s&&s.m(e,null),l=!0},p(a,f){o?o.p&&(!l||f[1]&524288)&&_e(o,n,a,a[50],l?ge(n,a[50],f,hl):he(a[50]),Te):s&&s.p&&(!l||f[0]&128)&&s.p(a,l?f:[-1,-1]),(!l||f[0]&33554432)&&h(e,"id",a[25])},i(a){l||(k(s,a),l=!0)},o(a){D(s,a),l=!1},d(a){a&&E(e),s&&s.d(a)}}}function gl(t){let e;return{c(){e=oe(t[7])},l(l){e=re(l,t[7])},m(l,n){L(l,e,n)},p(l,n){n[0]&128&&se(e,l[7])},d(l){l&&E(e)}}}function kl(t){let e;return{c(){e=oe(t[6])},l(l){e=re(l,t[6])},m(l,n){L(l,e,n)},p(l,n){n[0]&64&&se(e,l[6])},d(l){l&&E(e)}}}function Fe(t){let e,l,n,o,s;return l=new pe({props:{size:20,class:"bx--modal-close__icon","aria-hidden":"true"}}),{c(){e=P("button"),te(l.$$.fragment),this.h()},l(a){e=V(a,"BUTTON",{type:!0,"aria-label":!0});var f=N(e);ne(l.$$.fragment,f),f.forEach(E),this.h()},h(){h(e,"type","button"),h(e,"aria-label",t[8]),_(e,"bx--modal-close",!0)},m(a,f){L(a,e,f),ae(l,e,null),t[39](e),n=!0,o||(s=A(e,"click",t[40]),o=!0)},p(a,f){(!n||f[0]&256)&&h(e,"aria-label",a[8])},i(a){n||(k(l.$$.fragment,a),n=!0)},o(a){D(l.$$.fragment,a),n=!1},d(a){a&&E(e),ie(l),t[39](null),o=!1,s()}}}function He(t){let e;return{c(){e=P("div"),this.h()},l(l){e=V(l,"DIV",{}),N(e).forEach(E),this.h()},h(){_(e,"bx--modal-content--overflow-indicator",!0)},m(l,n){L(l,e,n)},d(l){l&&E(e)}}}function ze(t){let e,l,n,o,s,a;const f=[Bl,yl],d=[];function c(b,g){return b[16].length>0?0:b[15]?1:-1}return~(l=c(t))&&(n=d[l]=f[l](t)),s=new ye({props:{kind:t[3]?"danger":"primary",disabled:t[12],icon:t[13],$$slots:{default:[Cl]},$$scope:{ctx:t}}}),s.$on("click",t[43]),{c(){e=P("div"),n&&n.c(),o=j(),te(s.$$.fragment),this.h()},l(b){e=V(b,"DIV",{});var g=N(e);n&&n.l(g),o=R(g),ne(s.$$.fragment,g),g.forEach(E),this.h()},h(){_(e,"bx--modal-footer",!0),_(e,"bx--modal-footer--three-button",t[16].length===2)},m(b,g){L(b,e,g),~l&&d[l].m(e,null),z(e,o),ae(s,e,null),a=!0},p(b,g){let H=l;l=c(b),l===H?~l&&d[l].p(b,g):(n&&(w(),D(d[H],1,1,()=>{d[H]=null}),x()),~l?(n=d[l],n?n.p(b,g):(n=d[l]=f[l](b),n.c()),k(n,1),n.m(e,o)):n=null);const v={};g[0]&8&&(v.kind=b[3]?"danger":"primary"),g[0]&4096&&(v.disabled=b[12]),g[0]&8192&&(v.icon=b[13]),g[0]&2048|g[1]&524288&&(v.$$scope={dirty:g,ctx:b}),s.$set(v),(!a||g[0]&65536)&&_(e,"bx--modal-footer--three-button",b[16].length===2)},i(b){a||(k(n),k(s.$$.fragment,b),a=!0)},o(b){D(n),D(s.$$.fragment,b),a=!1},d(b){b&&E(e),~l&&d[l].d(),ie(s)}}}function yl(t){let e,l;return e=new ye({props:{kind:"secondary",$$slots:{default:[vl]},$$scope:{ctx:t}}}),e.$on("click",t[42]),{c(){te(e.$$.fragment)},l(n){ne(e.$$.fragment,n)},m(n,o){ae(e,n,o),l=!0},p(n,o){const s={};o[0]&32768|o[1]&524288&&(s.$$scope={dirty:o,ctx:n}),e.$set(s)},i(n){l||(k(e.$$.fragment,n),l=!0)},o(n){D(e.$$.fragment,n),l=!1},d(n){ie(e,n)}}}function Bl(t){let e,l,n=t[16],o=[];for(let a=0;aD(o[a],1,1,()=>{o[a]=null});return{c(){for(let a=0;a{O=null}),x()),r[7]?C?(C.p(r,u),u[0]&128&&k(C,1)):(C=Le(r),C.c(),k(C,1),C.m(n,s)):C&&(w(),D(C,1,1,()=>{C=null}),x()),U?U.p&&(!m||u[1]&524288)&&_e(U,Z,r,r[50],m?ge(Z,r[50],u,_l):he(r[50]),Se):S&&S.p&&(!m||u[0]&64)&&S.p(r,m?u:[-1,-1]),(!m||u[0]&16777216)&&h(a,"id",r[24]),r[5]?y&&(w(),D(y,1,1,()=>{y=null}),x()):y?(y.p(r,u),u[0]&32&&k(y,1)):(y=Fe(r),y.c(),k(y,1),y.m(n,null)),T&&T.p&&(!m||u[1]&524288)&&_e(T,W,r,r[50],m?ge(W,r[50],u,null):he(r[50]),null),(!m||u[0]&8388608)&&h(c,"id",r[23]),(!m||u[0]&1024&&b!==(b=r[10]?"0":void 0))&&h(c,"tabindex",b),(!m||u[0]&1024&&g!==(g=r[10]?"region":void 0))&&h(c,"role",g),(!m||u[0]&4195328&&H!==(H=r[10]?r[22]:void 0))&&h(c,"aria-label",H),(!m||u[0]&50331776&&v!==(v=r[7]?r[25]:r[24]))&&h(c,"aria-labelledby",v),(!m||u[0]&512)&&_(c,"bx--modal-content--with-form",r[9]),(!m||u[0]&1024)&&_(c,"bx--modal-scroll-content",r[10]),r[10]?I||(I=He(),I.c(),I.m(l,G)):I&&(I.d(1),I=null),r[5]?B&&(w(),D(B,1,1,()=>{B=null}),x()):B?(B.p(r,u),u[0]&32&&k(B,1)):(B=ze(r),B.c(),k(B,1),B.m(l,null)),(!m||u[0]&48&&J!==(J=r[4]?r[5]?"alert":"alertdialog":"dialog"))&&h(l,"role",J),(!m||u[0]&8388656&&K!==(K=r[4]&&!r[5]?r[23]:void 0))&&h(l,"aria-describedby",K),(!m||u[0]&4194304)&&h(l,"aria-label",r[22]),(!m||u[0]&4)&&_(l,"bx--modal-container--xs",r[2]==="xs"),(!m||u[0]&4)&&_(l,"bx--modal-container--sm",r[2]==="sm"),(!m||u[0]&4)&&_(l,"bx--modal-container--lg",r[2]==="lg"),ve(e,p=rl(q,[{role:"presentation"},(!m||u[0]&262144)&&{id:r[18]},u[0]&268435456&&r[28]])),_(e,"bx--modal",!0),_(e,"bx--modal-tall",!r[5]),_(e,"is-visible",r[0]),_(e,"bx--modal--danger",r[3])},i(r){m||(k(O),k(C),k(S,r),k(y),k(T,r),k(B),m=!0)},o(r){D(O),D(C),D(S,r),D(y),D(T,r),D(B),m=!1},d(r){r&&E(e),O&&O.d(),C&&C.d(),S&&S.d(r),y&&y.d(),T&&T.d(r),I&&I.d(),B&&B.d(),t[44](null),t[46](null),Q=!1,sl($)}}}function Dl(t,e,l){let n,o,s,a;const f=["size","open","danger","alert","passiveModal","modalHeading","modalLabel","modalAriaLabel","iconDescription","hasForm","hasScrollingContent","primaryButtonText","primaryButtonDisabled","primaryButtonIcon","shouldSubmitOnEnter","secondaryButtonText","secondaryButtons","selectorPrimaryFocus","preventCloseOnClickOutside","id","ref"];let d=Oe(e,f),c,{$$slots:b={},$$scope:g}=e,{size:H=void 0}=e,{open:v=!1}=e,{danger:Y=!1}=e,{alert:G=!1}=e,{passiveModal:J=!1}=e,{modalHeading:K=void 0}=e,{modalLabel:m=void 0}=e,{modalAriaLabel:Q=void 0}=e,{iconDescription:$="Close the modal"}=e,{hasForm:O=!1}=e,{hasScrollingContent:C=!1}=e,{primaryButtonText:Z=""}=e,{primaryButtonDisabled:U=!1}=e,{primaryButtonIcon:S=void 0}=e,{shouldSubmitOnEnter:y=!0}=e,{secondaryButtonText:W=""}=e,{secondaryButtons:T=[]}=e,{selectorPrimaryFocus:I="[data-modal-primary-focus]"}=e,{preventCloseOnClickOutside:B=!1}=e,{id:q="ccs-"+Math.random().toString(36)}=e,{ref:p=null}=e;const r=fl();let u=null,M=null,F=!1,X=!1;function fe(i){((i||M).querySelector(I)||u).focus()}const ue=Pe(v);ul(t,ue,i=>l(52,c=i)),ml(ue),dl(()=>{F?v||(F=!1,r("close")):v&&(F=!0,fe(),r("open"))});function Ne(i){le.call(this,t,i)}function qe(i){le.call(this,t,i)}function Ke(i){le.call(this,t,i)}function Ue(i){le.call(this,t,i)}function je(i){le.call(this,t,i)}function Re(i){ce[i?"unshift":"push"](()=>{u=i,l(19,u)})}const Ge=()=>{l(0,v=!1)};function Je(i){ce[i?"unshift":"push"](()=>{u=i,l(19,u)})}const Qe=()=>{l(0,v=!1)},We=i=>{r("click:button--secondary",{text:i.text})},Xe=()=>{r("click:button--secondary",{text:W})},Ye=()=>{r("submit"),r("click:button--primary")};function Ze(i){ce[i?"unshift":"push"](()=>{M=i,l(20,M)})}const we=()=>{l(21,X=!0)};function xe(i){ce[i?"unshift":"push"](()=>{p=i,l(1,p)})}const $e=i=>{if(v)if(i.key==="Escape")l(0,v=!1);else if(i.key==="Tab"){const Be=` + a[href], area[href], input:not([disabled]):not([tabindex='-1']), + button:not([disabled]):not([tabindex='-1']),select:not([disabled]):not([tabindex='-1']), + textarea:not([disabled]):not([tabindex='-1']), + iframe, object, embed, *[tabindex]:not([tabindex='-1']):not([disabled]), *[contenteditable=true] +`,de=Array.from(p.querySelectorAll(Be));let ee=de.indexOf(document.activeElement);ee===-1&&i.shiftKey&&(ee=0),ee+=de.length+(i.shiftKey?-1:1),ee%=de.length,de[ee].focus(),i.preventDefault()}else y&&i.key==="Enter"&&!U&&(r("submit"),r("click:button--primary"))},el=()=>{!X&&!B&&l(0,v=!1),l(21,X=!1)},ll=i=>{i.propertyName==="transform"&&r("transitionend",{open:v})};return t.$$set=i=>{l(54,e=me(me({},e),Ce(i))),l(28,d=Oe(e,f)),"size"in i&&l(2,H=i.size),"open"in i&&l(0,v=i.open),"danger"in i&&l(3,Y=i.danger),"alert"in i&&l(4,G=i.alert),"passiveModal"in i&&l(5,J=i.passiveModal),"modalHeading"in i&&l(6,K=i.modalHeading),"modalLabel"in i&&l(7,m=i.modalLabel),"modalAriaLabel"in i&&l(29,Q=i.modalAriaLabel),"iconDescription"in i&&l(8,$=i.iconDescription),"hasForm"in i&&l(9,O=i.hasForm),"hasScrollingContent"in i&&l(10,C=i.hasScrollingContent),"primaryButtonText"in i&&l(11,Z=i.primaryButtonText),"primaryButtonDisabled"in i&&l(12,U=i.primaryButtonDisabled),"primaryButtonIcon"in i&&l(13,S=i.primaryButtonIcon),"shouldSubmitOnEnter"in i&&l(14,y=i.shouldSubmitOnEnter),"secondaryButtonText"in i&&l(15,W=i.secondaryButtonText),"secondaryButtons"in i&&l(16,T=i.secondaryButtons),"selectorPrimaryFocus"in i&&l(30,I=i.selectorPrimaryFocus),"preventCloseOnClickOutside"in i&&l(17,B=i.preventCloseOnClickOutside),"id"in i&&l(18,q=i.id),"ref"in i&&l(1,p=i.ref),"$$scope"in i&&l(50,g=i.$$scope)},t.$$.update=()=>{t.$$.dirty[0]&1&&cl(ue,c=v,c),t.$$.dirty[0]&262144&&l(25,n=`bx--modal-header__label--modal-${q}`),t.$$.dirty[0]&262144&&l(24,o=`bx--modal-header__heading--modal-${q}`),t.$$.dirty[0]&262144&&l(23,s=`bx--modal-body--${q}`),l(22,a=m||e["aria-label"]||Q||K)},e=Ce(e),[v,p,H,Y,G,J,K,m,$,O,C,Z,U,S,y,W,T,B,q,u,M,X,a,s,o,n,r,ue,d,Q,I,b,Ne,qe,Ke,Ue,je,Re,Ge,Je,Qe,We,Xe,Ye,Ze,we,xe,$e,el,ll,g]}class Il extends al{constructor(e){super(),il(this,e,Dl,El,ol,{size:2,open:0,danger:3,alert:4,passiveModal:5,modalHeading:6,modalLabel:7,modalAriaLabel:29,iconDescription:8,hasForm:9,hasScrollingContent:10,primaryButtonText:11,primaryButtonDisabled:12,primaryButtonIcon:13,shouldSubmitOnEnter:14,secondaryButtonText:15,secondaryButtons:16,selectorPrimaryFocus:30,preventCloseOnClickOutside:17,id:18,ref:1},null,[-1,-1])}}const Ll=Il;export{Ll as M,ml as t}; diff --git a/web/blueprint/build/_app/immutable/chunks/NotificationIcon.9209ca8c.js b/web/blueprint/build/_app/immutable/chunks/NotificationIcon.9209ca8c.js new file mode 100644 index 0000000000000000000000000000000000000000..0b63ac53ee5f5051ab2b8ba7d8bdaf57d4970510 --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/NotificationIcon.9209ca8c.js @@ -0,0 +1 @@ +import{S as R,i as q,s as y,x as T,E as d,k as G,y as B,l as L,m as _,z as V,h,I as S,H as M,b as H,A as D,K as E,v as J,d as Z,B as C,f as K,g as F,O as P,P as X,D as w,F as z,Q as p,a2 as b,a3 as v,n as g,a4 as N,J as A,$ as I,q as Q,r as U,u as j,e as Y}from"./index.224851d7.js";import{c as x,E as $,C as tt,W as et,d as it}from"./taskMonitoringStore.8317b9f1.js";function nt(l){let t,e,o,i,f;var a=l[1];function n(r){return{props:{size:20,title:r[2],class:(r[0]==="toast"&&"bx--toast-notification__close-icon")+" "+(r[0]==="inline"&&"bx--inline-notification__close-icon")}}}a&&(e=T(a,n(l)));let s=[{type:"button"},{"aria-label":l[3]},{title:l[3]},l[4]],c={};for(let r=0;r{C(u,1)}),K()}a?(e=T(a,n(r)),B(e.$$.fragment),F(e.$$.fragment,1),D(e,t,null)):e=null}else a&&e.$set(k);S(t,c=P(s,[{type:"button"},(!o||m&8)&&{"aria-label":r[3]},(!o||m&8)&&{title:r[3]},m&16&&r[4]])),M(t,"bx--toast-notification__close-button",r[0]==="toast"),M(t,"bx--inline-notification__close-button",r[0]==="inline")},i(r){o||(e&&F(e.$$.fragment,r),o=!0)},o(r){e&&Z(e.$$.fragment,r),o=!1},d(r){r&&h(t),e&&C(e),i=!1,X(f)}}}function ot(l,t,e){const o=["notificationType","icon","title","iconDescription"];let i=w(t,o),{notificationType:f="toast"}=t,{icon:a=x}=t,{title:n=void 0}=t,{iconDescription:s="Close icon"}=t;function c(u){p.call(this,l,u)}function r(u){p.call(this,l,u)}function m(u){p.call(this,l,u)}function k(u){p.call(this,l,u)}return l.$$set=u=>{t=d(d({},t),z(u)),e(4,i=w(t,o)),"notificationType"in u&&e(0,f=u.notificationType),"icon"in u&&e(1,a=u.icon),"title"in u&&e(2,n=u.title),"iconDescription"in u&&e(3,s=u.iconDescription)},[f,a,n,s,i,c,r,m,k]}class lt extends R{constructor(t){super(),q(this,t,ot,nt,y,{notificationType:0,icon:1,title:2,iconDescription:3})}}const wt=lt;function W(l){let t,e;return{c(){t=b("title"),e=Q(l[1])},l(o){t=v(o,"title",{});var i=_(t);e=U(i,l[1]),i.forEach(h)},m(o,i){H(o,t,i),A(t,e)},p(o,i){i&2&&j(e,o[1])},d(o){o&&h(t)}}}function at(l){let t,e,o,i=l[1]&&W(l),f=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:l[0]},{height:l[0]},l[2],l[3]],a={};for(let n=0;n{e(5,t=d(d({},t),z(c))),e(3,a=w(t,f)),"size"in c&&e(0,n=c.size),"title"in c&&e(1,s=c.title)},l.$$.update=()=>{e(4,o=t["aria-label"]||t["aria-labelledby"]||s),e(2,i={"aria-hidden":o?void 0:!0,role:o?"img":void 0,focusable:Number(t.tabindex)===0?!0:void 0})},t=z(t),[n,s,i,a,o]}class rt extends R{constructor(t){super(),q(this,t,st,at,y,{size:0,title:1})}}const ft=rt;function O(l){let t,e;return{c(){t=b("title"),e=Q(l[1])},l(o){t=v(o,"title",{});var i=_(t);e=U(i,l[1]),i.forEach(h)},m(o,i){H(o,t,i),A(t,e)},p(o,i){i&2&&j(e,o[1])},d(o){o&&h(t)}}}function ct(l){let t,e,o,i=l[1]&&O(l),f=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:l[0]},{height:l[0]},l[2],l[3]],a={};for(let n=0;n{e(5,t=d(d({},t),z(c))),e(3,a=w(t,f)),"size"in c&&e(0,n=c.size),"title"in c&&e(1,s=c.title)},l.$$.update=()=>{e(4,o=t["aria-label"]||t["aria-labelledby"]||s),e(2,i={"aria-hidden":o?void 0:!0,role:o?"img":void 0,focusable:Number(t.tabindex)===0?!0:void 0})},t=z(t),[n,s,i,a,o]}class ht extends R{constructor(t){super(),q(this,t,ut,ct,y,{size:0,title:1})}}const mt=ht;function _t(l){let t,e,o;var i=l[3][l[0]];function f(a){return{props:{size:20,title:a[2],class:(a[1]==="toast"&&"bx--toast-notification__icon")+" "+(a[1]==="inline"&&"bx--inline-notification__icon")}}}return i&&(t=T(i,f(l))),{c(){t&&B(t.$$.fragment),e=Y()},l(a){t&&V(t.$$.fragment,a),e=Y()},m(a,n){t&&D(t,a,n),H(a,e,n),o=!0},p(a,[n]){const s={};if(n&4&&(s.title=a[2]),n&2&&(s.class=(a[1]==="toast"&&"bx--toast-notification__icon")+" "+(a[1]==="inline"&&"bx--inline-notification__icon")),n&1&&i!==(i=a[3][a[0]])){if(t){J();const c=t;Z(c.$$.fragment,1,0,()=>{C(c,1)}),K()}i?(t=T(i,f(a)),B(t.$$.fragment),F(t.$$.fragment,1),D(t,e.parentNode,e)):t=null}else i&&t.$set(s)},i(a){o||(t&&F(t.$$.fragment,a),o=!0)},o(a){t&&Z(t.$$.fragment,a),o=!1},d(a){a&&h(e),t&&C(t,a)}}}function dt(l,t,e){let{kind:o="error"}=t,{notificationType:i="toast"}=t,{iconDescription:f}=t;const a={error:$,"info-square":mt,info:ft,success:tt,warning:et,"warning-alt":it};return l.$$set=n=>{"kind"in n&&e(0,o=n.kind),"notificationType"in n&&e(1,i=n.notificationType),"iconDescription"in n&&e(2,f=n.iconDescription)},[o,i,f,a]}class gt extends R{constructor(t){super(),q(this,t,dt,_t,y,{kind:0,notificationType:1,iconDescription:2})}}const At=gt;export{At as N,wt as a}; diff --git a/web/blueprint/build/_app/immutable/chunks/Toggle.b9cf6836.js b/web/blueprint/build/_app/immutable/chunks/Toggle.b9cf6836.js new file mode 100644 index 0000000000000000000000000000000000000000..2aa34ba427b36a57ec17f836b01d4a3b9b0879e3 --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/Toggle.b9cf6836.js @@ -0,0 +1 @@ +import{S as ve,i as ke,s as Te,E as Q,a2 as Le,a3 as Ae,m as M,h as E,n as v,a4 as Be,b as R,J as N,O as Se,$ as me,D as x,F as se,q as X,r as Z,u as w,k as F,a as H,l as W,c as J,H as m,I as ce,g as C,v as le,d as O,f as ie,C as Ke,R as _e,T as nl,j as fl,G as te,L as ae,M as ne,N as fe,y as ue,e as ge,z as de,A as re,K as U,B as oe,P as Ve,Q as G,w as Ie,ad as De,o as sl}from"./index.224851d7.js";import{w as he}from"./index.fd964a74.js";import{W as Qe,d as ul}from"./taskMonitoringStore.8317b9f1.js";function ze(i){let e,l;return{c(){e=Le("title"),l=X(i[1])},l(t){e=Ae(t,"title",{});var a=M(e);l=Z(a,i[1]),a.forEach(E)},m(t,a){R(t,e,a),N(e,l)},p(t,a){a&2&&w(l,t[1])},d(t){t&&E(e)}}}function dl(i){let e,l,t=i[1]&&ze(i),a=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:i[0]},{height:i[0]},i[2],i[3]],o={};for(let n=0;n{l(5,e=Q(Q({},e),se(I))),l(3,n=x(e,o)),"size"in I&&l(0,f=I.size),"title"in I&&l(1,b=I.title)},i.$$.update=()=>{l(4,t=e["aria-label"]||e["aria-labelledby"]||b),l(2,a={"aria-hidden":t?void 0:!0,role:t?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=se(e),[f,b,a,n,t]}class ol extends ve{constructor(e){super(),ke(this,e,rl,dl,Te,{size:0,title:1})}}const Xe=ol,bl=i=>({}),qe=i=>({});function Ne(i){let e,l;const t=i[26].labelText,a=te(t,i,i[25],qe),o=a||_l(i);return{c(){e=F("label"),o&&o.c(),this.h()},l(n){e=W(n,"LABEL",{for:!0});var f=M(e);o&&o.l(f),f.forEach(E),this.h()},h(){v(e,"for",i[5]),m(e,"bx--label",!0),m(e,"bx--visually-hidden",i[14]),m(e,"bx--label--disabled",i[4])},m(n,f){R(n,e,f),o&&o.m(e,null),l=!0},p(n,f){a?a.p&&(!l||f[0]&33554432)&&ae(a,t,n,n[25],l?fe(t,n[25],f,bl):ne(n[25]),qe):o&&o.p&&(!l||f[0]&8192)&&o.p(n,l?f:[-1,-1]),(!l||f[0]&32)&&v(e,"for",n[5]),(!l||f[0]&16384)&&m(e,"bx--visually-hidden",n[14]),(!l||f[0]&16)&&m(e,"bx--label--disabled",n[4])},i(n){l||(C(o,n),l=!0)},o(n){O(o,n),l=!1},d(n){n&&E(e),o&&o.d(n)}}}function _l(i){let e;return{c(){e=X(i[13])},l(l){e=Z(l,i[13])},m(l,t){R(l,e,t)},p(l,t){t[0]&8192&&w(e,l[13])},d(l){l&&E(e)}}}function Ce(i){let e,l,t,a,o,n,f,b,I,D,c,L,A,k,z,P,Y;const j=i[26].default,B=te(j,i,i[25],null);I=new Xe({props:{class:"bx--select__arrow"}});let S=i[7]&&Pe(),T=i[7]&&Me(i),_=i[11]&&Oe(i);return{c(){e=F("div"),l=F("div"),t=F("select"),B&&B.c(),b=H(),ue(I.$$.fragment),D=H(),S&&S.c(),L=H(),T&&T.c(),A=H(),_&&_.c(),k=ge(),this.h()},l(r){e=W(r,"DIV",{});var g=M(e);l=W(g,"DIV",{"data-invalid":!0});var V=M(l);t=W(V,"SELECT",{"aria-describedby":!0,"aria-invalid":!0,id:!0,name:!0});var u=M(t);B&&B.l(u),u.forEach(E),b=J(V),de(I.$$.fragment,V),D=J(V),S&&S.l(V),V.forEach(E),L=J(g),T&&T.l(g),g.forEach(E),A=J(r),_&&_.l(r),k=ge(),this.h()},h(){v(t,"aria-describedby",a=i[7]?i[16]:void 0),v(t,"aria-invalid",o=i[7]||void 0),t.disabled=n=i[4]||void 0,t.required=f=i[15]||void 0,v(t,"id",i[5]),v(t,"name",i[6]),m(t,"bx--select-input",!0),m(t,"bx--select-input--sm",i[1]==="sm"),m(t,"bx--select-input--xl",i[1]==="xl"),v(l,"data-invalid",c=i[7]||void 0),m(l,"bx--select-input__wrapper",!0),m(e,"bx--select-input--inline__wrapper",!0)},m(r,g){R(r,e,g),N(e,l),N(l,t),B&&B.m(t,null),i[35](t),N(l,b),re(I,l,null),N(l,D),S&&S.m(l,null),N(e,L),T&&T.m(e,null),R(r,A,g),_&&_.m(r,g),R(r,k,g),z=!0,P||(Y=[U(t,"change",i[21]),U(t,"change",i[31]),U(t,"input",i[32]),U(t,"focus",i[33]),U(t,"blur",i[34])],P=!0)},p(r,g){B&&B.p&&(!z||g[0]&33554432)&&ae(B,j,r,r[25],z?fe(j,r[25],g,null):ne(r[25]),null),(!z||g[0]&65664&&a!==(a=r[7]?r[16]:void 0))&&v(t,"aria-describedby",a),(!z||g[0]&128&&o!==(o=r[7]||void 0))&&v(t,"aria-invalid",o),(!z||g[0]&16&&n!==(n=r[4]||void 0))&&(t.disabled=n),(!z||g[0]&32768&&f!==(f=r[15]||void 0))&&(t.required=f),(!z||g[0]&32)&&v(t,"id",r[5]),(!z||g[0]&64)&&v(t,"name",r[6]),(!z||g[0]&2)&&m(t,"bx--select-input--sm",r[1]==="sm"),(!z||g[0]&2)&&m(t,"bx--select-input--xl",r[1]==="xl"),r[7]?S?g[0]&128&&C(S,1):(S=Pe(),S.c(),C(S,1),S.m(l,null)):S&&(le(),O(S,1,1,()=>{S=null}),ie()),(!z||g[0]&128&&c!==(c=r[7]||void 0))&&v(l,"data-invalid",c),r[7]?T?T.p(r,g):(T=Me(r),T.c(),T.m(e,null)):T&&(T.d(1),T=null),r[11]?_?_.p(r,g):(_=Oe(r),_.c(),_.m(k.parentNode,k)):_&&(_.d(1),_=null)},i(r){z||(C(B,r),C(I.$$.fragment,r),C(S),z=!0)},o(r){O(B,r),O(I.$$.fragment,r),O(S),z=!1},d(r){r&&E(e),B&&B.d(r),i[35](null),oe(I),S&&S.d(),T&&T.d(),r&&E(A),_&&_.d(r),r&&E(k),P=!1,Ve(Y)}}}function Pe(i){let e,l;return e=new Qe({props:{class:"bx--select__invalid-icon"}}),{c(){ue(e.$$.fragment)},l(t){de(e.$$.fragment,t)},m(t,a){re(e,t,a),l=!0},i(t){l||(C(e.$$.fragment,t),l=!0)},o(t){O(e.$$.fragment,t),l=!1},d(t){oe(e,t)}}}function Me(i){let e,l;return{c(){e=F("div"),l=X(i[8]),this.h()},l(t){e=W(t,"DIV",{id:!0});var a=M(e);l=Z(a,i[8]),a.forEach(E),this.h()},h(){v(e,"id",i[16]),m(e,"bx--form-requirement",!0)},m(t,a){R(t,e,a),N(e,l)},p(t,a){a[0]&256&&w(l,t[8]),a[0]&65536&&v(e,"id",t[16])},d(t){t&&E(e)}}}function Oe(i){let e,l;return{c(){e=F("div"),l=X(i[11]),this.h()},l(t){e=W(t,"DIV",{});var a=M(e);l=Z(a,i[11]),a.forEach(E),this.h()},h(){m(e,"bx--form__helper-text",!0),m(e,"bx--form__helper-text--disabled",i[4])},m(t,a){R(t,e,a),N(e,l)},p(t,a){a[0]&2048&&w(l,t[11]),a[0]&16&&m(e,"bx--form__helper-text--disabled",t[4])},d(t){t&&E(e)}}}function Re(i){let e,l,t,a,o,n,f,b,I,D,c,L,A,k,z,P,Y,j;const B=i[26].default,S=te(B,i,i[25],null);b=new Xe({props:{class:"bx--select__arrow"}});let T=i[7]&&Fe(),_=!i[7]&&i[9]&&We(),r=!i[7]&&i[11]&&Ue(i),g=i[7]&&Ye(i),V=!i[7]&&i[9]&&je(i);return{c(){e=F("div"),l=F("select"),S&&S.c(),f=H(),ue(b.$$.fragment),I=H(),T&&T.c(),D=H(),_&&_.c(),L=H(),r&&r.c(),A=H(),g&&g.c(),k=H(),V&&V.c(),z=ge(),this.h()},l(u){e=W(u,"DIV",{"data-invalid":!0});var s=M(e);l=W(s,"SELECT",{id:!0,name:!0,"aria-describedby":!0,"aria-invalid":!0});var h=M(l);S&&S.l(h),h.forEach(E),f=J(s),de(b.$$.fragment,s),I=J(s),T&&T.l(s),D=J(s),_&&_.l(s),s.forEach(E),L=J(u),r&&r.l(u),A=J(u),g&&g.l(u),k=J(u),V&&V.l(u),z=ge(),this.h()},h(){v(l,"id",i[5]),v(l,"name",i[6]),v(l,"aria-describedby",t=i[7]?i[16]:void 0),l.disabled=a=i[4]||void 0,l.required=o=i[15]||void 0,v(l,"aria-invalid",n=i[7]||void 0),m(l,"bx--select-input",!0),m(l,"bx--select-input--sm",i[1]==="sm"),m(l,"bx--select-input--xl",i[1]==="xl"),v(e,"data-invalid",c=i[7]||void 0),m(e,"bx--select-input__wrapper",!0)},m(u,s){R(u,e,s),N(e,l),S&&S.m(l,null),i[36](l),N(e,f),re(b,e,null),N(e,I),T&&T.m(e,null),N(e,D),_&&_.m(e,null),R(u,L,s),r&&r.m(u,s),R(u,A,s),g&&g.m(u,s),R(u,k,s),V&&V.m(u,s),R(u,z,s),P=!0,Y||(j=[U(l,"change",i[21]),U(l,"change",i[27]),U(l,"input",i[28]),U(l,"focus",i[29]),U(l,"blur",i[30])],Y=!0)},p(u,s){S&&S.p&&(!P||s[0]&33554432)&&ae(S,B,u,u[25],P?fe(B,u[25],s,null):ne(u[25]),null),(!P||s[0]&32)&&v(l,"id",u[5]),(!P||s[0]&64)&&v(l,"name",u[6]),(!P||s[0]&65664&&t!==(t=u[7]?u[16]:void 0))&&v(l,"aria-describedby",t),(!P||s[0]&16&&a!==(a=u[4]||void 0))&&(l.disabled=a),(!P||s[0]&32768&&o!==(o=u[15]||void 0))&&(l.required=o),(!P||s[0]&128&&n!==(n=u[7]||void 0))&&v(l,"aria-invalid",n),(!P||s[0]&2)&&m(l,"bx--select-input--sm",u[1]==="sm"),(!P||s[0]&2)&&m(l,"bx--select-input--xl",u[1]==="xl"),u[7]?T?s[0]&128&&C(T,1):(T=Fe(),T.c(),C(T,1),T.m(e,D)):T&&(le(),O(T,1,1,()=>{T=null}),ie()),!u[7]&&u[9]?_?s[0]&640&&C(_,1):(_=We(),_.c(),C(_,1),_.m(e,null)):_&&(le(),O(_,1,1,()=>{_=null}),ie()),(!P||s[0]&128&&c!==(c=u[7]||void 0))&&v(e,"data-invalid",c),!u[7]&&u[11]?r?r.p(u,s):(r=Ue(u),r.c(),r.m(A.parentNode,A)):r&&(r.d(1),r=null),u[7]?g?g.p(u,s):(g=Ye(u),g.c(),g.m(k.parentNode,k)):g&&(g.d(1),g=null),!u[7]&&u[9]?V?V.p(u,s):(V=je(u),V.c(),V.m(z.parentNode,z)):V&&(V.d(1),V=null)},i(u){P||(C(S,u),C(b.$$.fragment,u),C(T),C(_),P=!0)},o(u){O(S,u),O(b.$$.fragment,u),O(T),O(_),P=!1},d(u){u&&E(e),S&&S.d(u),i[36](null),oe(b),T&&T.d(),_&&_.d(),u&&E(L),r&&r.d(u),u&&E(A),g&&g.d(u),u&&E(k),V&&V.d(u),u&&E(z),Y=!1,Ve(j)}}}function Fe(i){let e,l;return e=new Qe({props:{class:"bx--select__invalid-icon"}}),{c(){ue(e.$$.fragment)},l(t){de(e.$$.fragment,t)},m(t,a){re(e,t,a),l=!0},i(t){l||(C(e.$$.fragment,t),l=!0)},o(t){O(e.$$.fragment,t),l=!1},d(t){oe(e,t)}}}function We(i){let e,l;return e=new ul({props:{class:"bx--select__invalid-icon bx--select__invalid-icon--warning"}}),{c(){ue(e.$$.fragment)},l(t){de(e.$$.fragment,t)},m(t,a){re(e,t,a),l=!0},i(t){l||(C(e.$$.fragment,t),l=!0)},o(t){O(e.$$.fragment,t),l=!1},d(t){oe(e,t)}}}function Ue(i){let e,l;return{c(){e=F("div"),l=X(i[11]),this.h()},l(t){e=W(t,"DIV",{});var a=M(e);l=Z(a,i[11]),a.forEach(E),this.h()},h(){m(e,"bx--form__helper-text",!0),m(e,"bx--form__helper-text--disabled",i[4])},m(t,a){R(t,e,a),N(e,l)},p(t,a){a[0]&2048&&w(l,t[11]),a[0]&16&&m(e,"bx--form__helper-text--disabled",t[4])},d(t){t&&E(e)}}}function Ye(i){let e,l;return{c(){e=F("div"),l=X(i[8]),this.h()},l(t){e=W(t,"DIV",{id:!0});var a=M(e);l=Z(a,i[8]),a.forEach(E),this.h()},h(){v(e,"id",i[16]),m(e,"bx--form-requirement",!0)},m(t,a){R(t,e,a),N(e,l)},p(t,a){a[0]&256&&w(l,t[8]),a[0]&65536&&v(e,"id",t[16])},d(t){t&&E(e)}}}function je(i){let e,l;return{c(){e=F("div"),l=X(i[10]),this.h()},l(t){e=W(t,"DIV",{id:!0});var a=M(e);l=Z(a,i[10]),a.forEach(E),this.h()},h(){v(e,"id",i[16]),m(e,"bx--form-requirement",!0)},m(t,a){R(t,e,a),N(e,l)},p(t,a){a[0]&1024&&w(l,t[10]),a[0]&65536&&v(e,"id",t[16])},d(t){t&&E(e)}}}function hl(i){let e,l,t,a,o,n=!i[12]&&Ne(i),f=i[2]&&Ce(i),b=!i[2]&&Re(i),I=[i[22]],D={};for(let c=0;c{n=null}),ie()):n?(n.p(c,L),L[0]&4096&&C(n,1)):(n=Ne(c),n.c(),C(n,1),n.m(l,t)),c[2]?f?(f.p(c,L),L[0]&4&&C(f,1)):(f=Ce(c),f.c(),C(f,1),f.m(l,a)):f&&(le(),O(f,1,1,()=>{f=null}),ie()),c[2]?b&&(le(),O(b,1,1,()=>{b=null}),ie()):b?(b.p(c,L),L[0]&4&&C(b,1)):(b=Re(c),b.c(),C(b,1),b.m(l,null)),(!o||L[0]&4)&&m(l,"bx--select--inline",c[2]),(!o||L[0]&8)&&m(l,"bx--select--light",c[3]),(!o||L[0]&128)&&m(l,"bx--select--invalid",c[7]),(!o||L[0]&16)&&m(l,"bx--select--disabled",c[4]),(!o||L[0]&512)&&m(l,"bx--select--warning",c[9]),ce(e,D=Se(I,[L[0]&4194304&&c[22]])),m(e,"bx--form-item",!0)},i(c){o||(C(n),C(f),C(b),o=!0)},o(c){O(n),O(f),O(b),o=!1},d(c){c&&E(e),n&&n.d(),f&&f.d(),b&&b.d()}}}function ml(i,e,l){let t;const a=["selected","size","inline","light","disabled","id","name","invalid","invalidText","warn","warnText","helperText","noLabel","labelText","hideLabel","ref","required"];let o=x(e,a),n,f,b,I,{$$slots:D={},$$scope:c}=e,{selected:L=void 0}=e,{size:A=void 0}=e,{inline:k=!1}=e,{light:z=!1}=e,{disabled:P=!1}=e,{id:Y="ccs-"+Math.random().toString(36)}=e,{name:j=void 0}=e,{invalid:B=!1}=e,{invalidText:S=""}=e,{warn:T=!1}=e,{warnText:_=""}=e,{helperText:r=""}=e,{noLabel:g=!1}=e,{labelText:V=""}=e,{hideLabel:u=!1}=e,{ref:s=null}=e,{required:h=!1}=e;const q=Ke(),K=he(L);_e(i,K,d=>l(38,f=d));const $=he(null);_e(i,$,d=>l(40,I=d));const p=he(null);_e(i,p,d=>l(24,n=d));const ee=he({});_e(i,ee,d=>l(39,b=d)),nl("Select",{selectedValue:K,setDefaultValue:(d,y)=>{n===null?($.set(d),p.set(y)):I===d&&K.set(y),ee.update(al=>({...al,[y]:typeof y}))}});const be=({target:d})=>{let y=d.value;b[y]==="number"&&(y=Number(y)),K.set(y)};let Ee;fl(()=>{l(23,L=f),Ee!==void 0&&L!==Ee&&q("update",f),Ee=L});function Ze(d){G.call(this,i,d)}function we(d){G.call(this,i,d)}function ye(d){G.call(this,i,d)}function pe(d){G.call(this,i,d)}function xe(d){G.call(this,i,d)}function $e(d){G.call(this,i,d)}function el(d){G.call(this,i,d)}function ll(d){G.call(this,i,d)}function il(d){Ie[d?"unshift":"push"](()=>{s=d,l(0,s)})}function tl(d){Ie[d?"unshift":"push"](()=>{s=d,l(0,s)})}return i.$$set=d=>{e=Q(Q({},e),se(d)),l(22,o=x(e,a)),"selected"in d&&l(23,L=d.selected),"size"in d&&l(1,A=d.size),"inline"in d&&l(2,k=d.inline),"light"in d&&l(3,z=d.light),"disabled"in d&&l(4,P=d.disabled),"id"in d&&l(5,Y=d.id),"name"in d&&l(6,j=d.name),"invalid"in d&&l(7,B=d.invalid),"invalidText"in d&&l(8,S=d.invalidText),"warn"in d&&l(9,T=d.warn),"warnText"in d&&l(10,_=d.warnText),"helperText"in d&&l(11,r=d.helperText),"noLabel"in d&&l(12,g=d.noLabel),"labelText"in d&&l(13,V=d.labelText),"hideLabel"in d&&l(14,u=d.hideLabel),"ref"in d&&l(0,s=d.ref),"required"in d&&l(15,h=d.required),"$$scope"in d&&l(25,c=d.$$scope)},i.$$.update=()=>{i.$$.dirty[0]&32&&l(16,t=`error-${Y}`),i.$$.dirty[0]&25165824&&K.set(L??n)},[s,A,k,z,P,Y,j,B,S,T,_,r,g,V,u,h,t,K,$,p,ee,be,o,L,n,c,D,Ze,we,ye,pe,xe,$e,el,ll,il,tl]}class cl extends ve{constructor(e){super(),ke(this,e,ml,hl,Te,{selected:23,size:1,inline:2,light:3,disabled:4,id:5,name:6,invalid:7,invalidText:8,warn:9,warnText:10,helperText:11,noLabel:12,labelText:13,hideLabel:14,ref:0,required:15},null,[-1,-1])}}const Cl=cl;function gl(i){let e,l=(i[1]||i[0])+"",t,a,o;return{c(){e=F("option"),t=X(l),this.h()},l(n){e=W(n,"OPTION",{class:!0,style:!0});var f=M(e);t=Z(f,l),f.forEach(E),this.h()},h(){e.__value=i[0],e.value=e.__value,e.disabled=i[3],e.hidden=i[2],e.selected=i[4],v(e,"class",a=i[5].class),v(e,"style",o=i[5].style),m(e,"bx--select-option",!0)},m(n,f){R(n,e,f),N(e,t)},p(n,[f]){f&3&&l!==(l=(n[1]||n[0])+"")&&w(t,l),f&1&&(e.__value=n[0],e.value=e.__value),f&8&&(e.disabled=n[3]),f&4&&(e.hidden=n[2]),f&16&&(e.selected=n[4]),f&32&&a!==(a=n[5].class)&&v(e,"class",a),f&32&&o!==(o=n[5].style)&&v(e,"style",o),f&32&&m(e,"bx--select-option",!0)},i:me,o:me,d(n){n&&E(e)}}}function vl(i,e,l){const t=["value","text","hidden","disabled"];let a=x(e,t),{value:o=""}=e,{text:n=""}=e,{hidden:f=!1}=e,{disabled:b=!1}=e;const I="ccs-"+Math.random().toString(36),D=De("Select")||De("TimePickerSelect");let c=!1;const L=D.selectedValue.subscribe(A=>{l(4,c=A===o)});return sl(()=>()=>L()),i.$$set=A=>{e=Q(Q({},e),se(A)),l(5,a=x(e,t)),"value"in A&&l(0,o=A.value),"text"in A&&l(1,n=A.text),"hidden"in A&&l(2,f=A.hidden),"disabled"in A&&l(3,b=A.disabled)},i.$$.update=()=>{var A;i.$$.dirty&1&&((A=D==null?void 0:D.setDefaultValue)==null||A.call(D,I,o))},[o,n,f,b,c,a]}class kl extends ve{constructor(e){super(),ke(this,e,vl,gl,Te,{value:0,text:1,hidden:2,disabled:3})}}const Pl=kl,Tl=i=>({}),Ge=i=>({}),El=i=>({}),He=i=>({}),Ll=i=>({}),Je=i=>({});function Al(i){let e;return{c(){e=X(i[5])},l(l){e=Z(l,i[5])},m(l,t){R(l,e,t)},p(l,t){t&32&&w(e,l[5])},d(l){l&&E(e)}}}function Sl(i){let e;return{c(){e=X(i[3])},l(l){e=Z(l,i[3])},m(l,t){R(l,e,t)},p(l,t){t&8&&w(e,l[3])},d(l){l&&E(e)}}}function Vl(i){let e;return{c(){e=X(i[4])},l(l){e=Z(l,i[4])},m(l,t){R(l,e,t)},p(l,t){t&16&&w(e,l[4])},d(l){l&&E(e)}}}function Bl(i){let e,l,t,a,o,n,f,b,I,D,c,L,A,k,z,P;const Y=i[12].labelText,j=te(Y,i,i[11],Je),B=j||Al(i),S=i[12].labelA,T=te(S,i,i[11],He),_=T||Sl(i),r=i[12].labelB,g=te(r,i,i[11],Ge),V=g||Vl(i);let u=[i[9],{style:A=i[9].style+"; user-select: none"}],s={};for(let h=0;h{l(0,b=!b)},u=s=>{(s.key===" "||s.key==="Enter")&&(s.preventDefault(),l(0,b=!b))};return i.$$set=s=>{l(10,e=Q(Q({},e),se(s))),l(9,a=x(e,t)),"size"in s&&l(1,f=s.size),"toggled"in s&&l(0,b=s.toggled),"disabled"in s&&l(2,I=s.disabled),"labelA"in s&&l(3,D=s.labelA),"labelB"in s&&l(4,c=s.labelB),"labelText"in s&&l(5,L=s.labelText),"hideLabel"in s&&l(6,A=s.hideLabel),"id"in s&&l(7,k=s.id),"name"in s&&l(8,z=s.name),"$$scope"in s&&l(11,n=s.$$scope)},i.$$.update=()=>{i.$$.dirty&1&&P("toggle",{toggled:b})},e=se(e),[b,f,I,D,c,L,A,k,z,a,e,n,o,Y,j,B,S,T,_,r,g,V,u]}class Dl extends ve{constructor(e){super(),ke(this,e,Il,Bl,Te,{size:1,toggled:0,disabled:2,labelA:3,labelB:4,labelText:5,hideLabel:6,id:7,name:8})}}const Ml=Dl;export{Xe as C,Cl as S,Ml as T,Pl as a}; diff --git a/web/blueprint/build/_app/immutable/chunks/TrashCan.e59ed4ef.js b/web/blueprint/build/_app/immutable/chunks/TrashCan.e59ed4ef.js new file mode 100644 index 0000000000000000000000000000000000000000..cde142a40e1bc12ae3e2c2fb4a70abde5ac9a7b0 --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/TrashCan.e59ed4ef.js @@ -0,0 +1 @@ +import{S as V,i as p,s as E,E as m,a2 as f,a3 as o,m as _,h as u,n as c,a4 as v,b as M,J as g,O as C,$ as b,D as w,F as z,q as A,r as B,u as R}from"./index.224851d7.js";function H(r){let e,i;return{c(){e=f("title"),i=A(r[1])},l(s){e=o(s,"title",{});var t=_(e);i=B(t,r[1]),t.forEach(u)},m(s,t){M(s,e,t),g(e,i)},p(s,t){t&2&&R(i,s[1])},d(s){s&&u(e)}}}function k(r){let e,i,s,t=r[1]&&H(r),h=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:r[0]},{height:r[0]},r[2],r[3]],n={};for(let a=0;a{i(5,e=m(m({},e),z(d))),i(3,n=w(e,h)),"size"in d&&i(0,a=d.size),"title"in d&&i(1,l=d.title)},r.$$.update=()=>{i(4,s=e["aria-label"]||e["aria-labelledby"]||l),i(2,t={"aria-hidden":s?void 0:!0,role:s?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=z(e),[a,l,t,n,s]}class S extends V{constructor(e){super(),p(this,e,q,k,E,{size:0,title:1})}}export{S as T}; diff --git a/web/blueprint/build/_app/immutable/chunks/index.224851d7.js b/web/blueprint/build/_app/immutable/chunks/index.224851d7.js new file mode 100644 index 0000000000000000000000000000000000000000..11d6f1e00bf050c6bef3433d35461bb56589741f --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/index.224851d7.js @@ -0,0 +1,4 @@ +function k(){}const vt=t=>t;function Et(t,e){for(const n in e)t[n]=e[n];return t}function ot(t){return t()}function tt(){return Object.create(null)}function T(t){t.forEach(ot)}function G(t){return typeof t=="function"}function te(t,e){return t!=t?e==e:t!==e||t&&typeof t=="object"||typeof t=="function"}let z;function ee(t,e){return z||(z=document.createElement("a")),z.href=e,t===z.href}function kt(t){return Object.keys(t).length===0}function ct(t,...e){if(t==null)return k;const n=t.subscribe(...e);return n.unsubscribe?()=>n.unsubscribe():n}function ne(t){let e;return ct(t,n=>e=n)(),e}function ie(t,e,n){t.$$.on_destroy.push(ct(e,n))}function se(t,e,n,i){if(t){const s=lt(t,e,n,i);return t[0](s)}}function lt(t,e,n,i){return t[1]&&i?Et(n.ctx.slice(),t[1](i(e))):n.ctx}function re(t,e,n,i){if(t[2]&&i){const s=t[2](i(n));if(e.dirty===void 0)return s;if(typeof s=="object"){const l=[],r=Math.max(e.dirty.length,s.length);for(let o=0;o32){const e=[],n=t.ctx.length/32;for(let i=0;iwindow.performance.now():()=>Date.now(),Y=at?t=>requestAnimationFrame(t):k;const S=new Set;function ut(t){S.forEach(e=>{e.c(t)||(S.delete(e),e.f())}),S.size!==0&&Y(ut)}function Nt(t){let e;return S.size===0&&Y(ut),{promise:new Promise(n=>{S.add(e={c:t,f:n})}),abort(){S.delete(e)}}}const _e=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;let I=!1;function At(){I=!0}function Mt(){I=!1}function St(t,e,n,i){for(;t>1);n(s)<=i?t=s+1:e=s}return t}function Ct(t){if(t.hydrate_init)return;t.hydrate_init=!0;let e=t.childNodes;if(t.nodeName==="HEAD"){const c=[];for(let a=0;a0&&e[n[s]].claim_order<=a?s+1:St(1,s,h=>e[n[h]].claim_order,a))-1;i[c]=n[f]+1;const d=f+1;n[d]=c,s=Math.max(d,s)}const l=[],r=[];let o=e.length-1;for(let c=n[s]+1;c!=0;c=i[c-1]){for(l.push(e[c-1]);o>=c;o--)r.push(e[o]);o--}for(;o>=0;o--)r.push(e[o]);l.reverse(),r.sort((c,a)=>c.claim_order-a.claim_order);for(let c=0,a=0;c=l[a].claim_order;)a++;const f=at.removeEventListener(e,n,i)}function ye(t){return function(e){return e.preventDefault(),t.call(this,e)}}function ge(t){return function(e){return e.stopPropagation(),t.call(this,e)}}function ht(t,e,n){n==null?t.removeAttribute(e):t.getAttribute(e)!==n&&t.setAttribute(e,n)}const Ot=["width","height"];function we(t,e){const n=Object.getOwnPropertyDescriptors(t.__proto__);for(const i in e)e[i]==null?t.removeAttribute(i):i==="style"?t.style.cssText=e[i]:i==="__value"?t.value=t[i]=e[i]:n[i]&&n[i].set&&Ot.indexOf(i)===-1?t[i]=e[i]:ht(t,i,e[i])}function be(t,e){for(const n in e)ht(t,n,e[n])}function zt(t){return Array.from(t.childNodes)}function mt(t){t.claim_info===void 0&&(t.claim_info={last_index:0,total_claimed:0})}function pt(t,e,n,i,s=!1){mt(t);const l=(()=>{for(let r=t.claim_info.last_index;r=0;r--){const o=t[r];if(e(o)){const c=n(o);return c===void 0?t.splice(r,1):t[r]=c,s?c===void 0&&t.claim_info.last_index--:t.claim_info.last_index=r,o}}return i()})();return l.claim_order=t.claim_info.total_claimed,t.claim_info.total_claimed+=1,l}function yt(t,e,n,i){return pt(t,s=>s.nodeName===e,s=>{const l=[];for(let r=0;rs.removeAttribute(r))},()=>i(e))}function $e(t,e,n){return yt(t,e,n,U)}function xe(t,e,n){return yt(t,e,n,_t)}function Rt(t,e){return pt(t,n=>n.nodeType===3,n=>{const i=""+e;if(n.data.startsWith(i)){if(n.data.length!==i.length)return n.splitText(i.length)}else n.data=i},()=>Z(e),!0)}function ve(t){return Rt(t," ")}function nt(t,e,n){for(let i=n;i{r.source===i.contentWindow&&e()})):(i.src="about:blank",i.onload=()=>{l=et(i.contentWindow,"resize",e),e()}),ft(t,i),()=>{(s||l&&i.contentWindow)&&l(),j(i)}}function Se(t,e,n){t.classList[n?"add":"remove"](e)}function gt(t,e,{bubbles:n=!1,cancelable:i=!1}={}){const s=document.createEvent("CustomEvent");return s.initCustomEvent(t,n,i,e),s}function Ce(t,e){const n=[];let i=0;for(const s of e.childNodes)if(s.nodeType===8){const l=s.textContent.trim();l===`HEAD_${t}_END`?(i-=1,n.push(s)):l===`HEAD_${t}_START`&&(i+=1,n.push(s))}else i>0&&n.push(s);return n}class Bt{constructor(e=!1){this.is_svg=!1,this.is_svg=e,this.e=this.n=null}c(e){this.h(e)}m(e,n,i=null){this.e||(this.is_svg?this.e=_t(n.nodeName):this.e=U(n.nodeType===11?"TEMPLATE":n.nodeName),this.t=n.tagName!=="TEMPLATE"?n:n.content,this.c(e)),this.i(i)}h(e){this.e.innerHTML=e,this.n=Array.from(this.e.nodeName==="TEMPLATE"?this.e.content.childNodes:this.e.childNodes)}i(e){for(let n=0;n>>0}function Ft(t,e){const n={stylesheet:jt(e),rules:{}};return B.set(t,n),n}function st(t,e,n,i,s,l,r,o=0){const c=16.666/i;let a=`{ +`;for(let y=0;y<=1;y+=c){const g=e+(n-e)*l(y);a+=y*100+`%{${r(g,1-g)}} +`}const f=a+`100% {${r(n,1-n)}} +}`,d=`__svelte_${Wt(f)}_${o}`,h=dt(t),{stylesheet:u,rules:_}=B.get(h)||Ft(h,t);_[d]||(_[d]=!0,u.insertRule(`@keyframes ${d} ${f}`,u.cssRules.length));const p=t.style.animation||"";return t.style.animation=`${p?`${p}, `:""}${d} ${i}ms linear ${s}ms 1 both`,W+=1,d}function Gt(t,e){const n=(t.style.animation||"").split(", "),i=n.filter(e?l=>l.indexOf(e)<0:l=>l.indexOf("__svelte")===-1),s=n.length-i.length;s&&(t.style.animation=i.join(", "),W-=s,W||It())}function It(){Y(()=>{W||(B.forEach(t=>{const{ownerNode:e}=t.stylesheet;e&&j(e)}),B.clear())})}let L;function P(t){L=t}function x(){if(!L)throw new Error("Function called outside component initialization");return L}function De(t){x().$$.before_update.push(t)}function Pe(t){x().$$.on_mount.push(t)}function Le(t){x().$$.after_update.push(t)}function He(t){x().$$.on_destroy.push(t)}function Oe(){const t=x();return(e,n,{cancelable:i=!1}={})=>{const s=t.$$.callbacks[e];if(s){const l=gt(e,n,{cancelable:i});return s.slice().forEach(r=>{r.call(t,l)}),!l.defaultPrevented}return!0}}function ze(t,e){return x().$$.context.set(t,e),e}function Re(t){return x().$$.context.get(t)}function qe(t){return x().$$.context.has(t)}function Be(t,e){const n=t.$$.callbacks[e.type];n&&n.slice().forEach(i=>i.call(this,e))}const M=[],rt=[];let C=[];const V=[],wt=Promise.resolve();let X=!1;function bt(){X||(X=!0,wt.then($t))}function We(){return bt(),wt}function F(t){C.push(t)}function Fe(t){V.push(t)}const K=new Set;let A=0;function $t(){if(A!==0)return;const t=L;do{try{for(;At.indexOf(i)===-1?e.push(i):n.push(i)),n.forEach(i=>i()),C=e}let D;function Kt(){return D||(D=Promise.resolve(),D.then(()=>{D=null})),D}function Q(t,e,n){t.dispatchEvent(gt(`${e?"intro":"outro"}${n}`))}const q=new Set;let $;function Ge(){$={r:0,c:[],p:$}}function Ie(){$.r||T($.c),$=$.p}function xt(t,e){t&&t.i&&(q.delete(t),t.i(e))}function Qt(t,e,n,i){if(t&&t.o){if(q.has(t))return;q.add(t),$.c.push(()=>{q.delete(t),i&&(n&&t.d(1),i())}),t.o(e)}else i&&i()}const Vt={duration:0};function Ue(t,e,n,i){const s={direction:"both"};let l=e(t,n,s),r=i?0:1,o=null,c=null,a=null;function f(){a&&Gt(t,a)}function d(u,_){const p=u.b-r;return _*=Math.abs(p),{a:r,b:u.b,d:p,duration:_,start:u.start,end:u.start+_,group:u.group}}function h(u){const{delay:_=0,duration:p=300,easing:y=vt,tick:g=k,css:v}=l||Vt,N={start:Tt()+_,b:u};u||(N.group=$,$.r+=1),o||c?c=N:(v&&(f(),a=st(t,r,u,p,_,y,v)),u&&g(0,1),o=d(N,p),F(()=>Q(t,u,"start")),Nt(E=>{if(c&&E>c.start&&(o=d(c,p),c=null,Q(t,o.b,"start"),v&&(f(),a=st(t,r,o.b,o.duration,0,y,l.css))),o){if(E>=o.end)g(r=o.b,1-r),Q(t,o.b,"end"),c||(o.b?f():--o.group.r||T(o.group.c)),o=null;else if(E>=o.start){const H=E-o.start;r=o.a+o.d*y(H/o.duration),g(r,1-r)}}return!!(o||c)}))}return{run(u){G(l)?Kt().then(()=>{l=l(s),h(u)}):h(u)},end(){f(),o=c=null}}}function Je(t,e){t.d(1),e.delete(t.key)}function Ke(t,e){Qt(t,1,1,()=>{e.delete(t.key)})}function Qe(t,e,n,i,s,l,r,o,c,a,f,d){let h=t.length,u=l.length,_=h;const p={};for(;_--;)p[t[_].key]=_;const y=[],g=new Map,v=new Map,N=[];for(_=u;_--;){const m=d(s,l,_),w=n(m);let b=r.get(w);b?i&&N.push(()=>b.p(m,e)):(b=a(w,m),b.c()),g.set(w,y[_]=b),w in p&&v.set(w,Math.abs(_-p[w]))}const E=new Set,H=new Set;function J(m){xt(m,1),m.m(o,f),r.set(m.key,m),f=m.first,u--}for(;h&&u;){const m=y[u-1],w=t[h-1],b=m.key,O=w.key;m===w?(f=m.first,h--,u--):g.has(O)?!r.has(b)||E.has(b)?J(m):H.has(O)?h--:v.get(b)>v.get(O)?(H.add(b),J(m)):(E.add(O),h--):(c(w,r),h--)}for(;h--;){const m=t[h];g.has(m.key)||c(m,r)}for(;u;)J(y[u-1]);return T(N),y}function Ve(t,e){const n={},i={},s={$$scope:1};let l=t.length;for(;l--;){const r=t[l],o=e[l];if(o){for(const c in r)c in o||(i[c]=1);for(const c in o)s[c]||(n[c]=o[c],s[c]=1);t[l]=o}else for(const c in r)s[c]=1}for(const r in i)r in n||(n[r]=void 0);return n}function Xe(t){return typeof t=="object"&&t!==null?t:{}}function Ye(t,e,n){const i=t.$$.props[e];i!==void 0&&(t.$$.bound[i]=n,n(t.$$.ctx[i]))}function Ze(t){t&&t.c()}function tn(t,e){t&&t.l(e)}function Xt(t,e,n,i){const{fragment:s,after_update:l}=t.$$;s&&s.m(e,n),i||F(()=>{const r=t.$$.on_mount.map(ot).filter(G);t.$$.on_destroy?t.$$.on_destroy.push(...r):T(r),t.$$.on_mount=[]}),l.forEach(F)}function Yt(t,e){const n=t.$$;n.fragment!==null&&(Jt(n.after_update),T(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function Zt(t,e){t.$$.dirty[0]===-1&&(M.push(t),bt(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<{const _=u.length?u[0]:h;return a.ctx&&s(a.ctx[d],a.ctx[d]=_)&&(!a.skip_bound&&a.bound[d]&&a.bound[d](_),f&&Zt(t,d)),h}):[],a.update(),f=!0,T(a.before_update),a.fragment=i?i(a.ctx):!1,e.target){if(e.hydrate){At();const d=zt(e.target);a.fragment&&a.fragment.l(d),d.forEach(j)}else a.fragment&&a.fragment.c();e.intro&&xt(t.$$.fragment),Xt(t,e.target,e.anchor,e.customElement),Mt(),$t()}P(c)}class nn{$destroy(){Yt(this,1),this.$destroy=k}$on(e,n){if(!G(n))return k;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(n),()=>{const s=i.indexOf(n);s!==-1&&i.splice(s,1)}}$set(e){this.$$set&&!kt(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}export{k as $,Xt as A,Yt as B,Oe as C,ae as D,Et as E,le as F,se as G,Se as H,we as I,Pt as J,et as K,oe as L,ce as M,re as N,Ve as O,T as P,Be as Q,ie as R,nn as S,ze as T,Ye as U,Fe as V,Xe as W,Qe as X,Ke as Y,He as Z,ge as _,me as a,he as a0,fe as a1,_t as a2,xe as a3,be as a4,ct as a5,ne as a6,Je as a7,ue as a8,Ne as a9,it as aa,Ce as ab,Ee as ac,Re as ad,vt as ae,ye as af,F as ag,Me as ah,de as ai,G as aj,Ue as ak,Te as al,_e as am,qe as an,De as ao,ee as ap,Ht as b,ve as c,Qt as d,pe as e,Ie as f,xt as g,j as h,en as i,Le as j,U as k,$e as l,zt as m,ht as n,Pe as o,Ae as p,Z as q,Rt as r,te as s,We as t,ke as u,Ge as v,rt as w,je as x,Ze as y,tn as z}; diff --git a/web/blueprint/build/_app/immutable/chunks/index.fd964a74.js b/web/blueprint/build/_app/immutable/chunks/index.fd964a74.js new file mode 100644 index 0000000000000000000000000000000000000000..dbf884f776d4e960bbdfe6c112d829075d62c2bd --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/index.fd964a74.js @@ -0,0 +1 @@ +import{$ as f,s as y,a5 as m,P as q,aj as w}from"./index.224851d7.js";const o=[];function z(e,u){return{subscribe:A(e,u).subscribe}}function A(e,u=f){let r;const n=new Set;function a(t){if(y(e,t)&&(e=t,r)){const i=!o.length;for(const s of n)s[1](),o.push(s,e);if(i){for(let s=0;s{n.delete(s),n.size===0&&r&&(r(),r=null)}}return{set:a,update:l,subscribe:b}}function x(e,u,r){const n=!Array.isArray(e),a=n?[e]:e,l=u.length<2;return z(r,b=>{let t=!1;const i=[];let s=0,d=f;const g=()=>{if(s)return;d();const c=u(n?i[0]:i,b);l?b(c):d=w(c)?c:f},_=a.map((c,p)=>m(c,h=>{i[p]=h,s&=~(1<{s|=1<a)}function r(a){n=!1,t.set(a)}function l(a){let s;return t.subscribe(i=>{(s===void 0||n&&i!==s)&&a(s=i)})}return{notify:o,set:r,subscribe:l}}function E(){const{set:e,subscribe:t}=u(!1);let n;async function o(){clearTimeout(n);try{const r=await fetch(`${m}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!r.ok)return!1;const a=(await r.json()).version!==w;return a&&(e(!0),clearTimeout(n)),a}catch{return!1}}return{subscribe:t,check:o}}function A(e,t){return e.origin!==location.origin||!e.pathname.startsWith(t)}let b;function L(e){b=e.client}function N(e){return(...t)=>b[e](...t)}const P={url:_({}),page:_({}),navigating:u(null),updated:E()};export{I,f as P,y as S,T as a,U as b,j as c,x as d,k as e,O as f,S as g,L as h,A as i,N as j,P as s}; diff --git a/web/blueprint/build/_app/immutable/chunks/taskMonitoringStore.8317b9f1.js b/web/blueprint/build/_app/immutable/chunks/taskMonitoringStore.8317b9f1.js new file mode 100644 index 0000000000000000000000000000000000000000..b17314a37bf394f55f85a678b0bea594be63ef69 --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/taskMonitoringStore.8317b9f1.js @@ -0,0 +1 @@ +var st=(i,e,t)=>{if(!e.has(i))throw TypeError("Cannot "+t)};var R=(i,e,t)=>(st(i,e,"read from private field"),t?t.call(i):e.get(i)),X=(i,e,t)=>{if(e.has(i))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(i):e.set(i,t)},H=(i,e,t,s)=>(st(i,e,"write to private field"),s?s.call(i,t):e.set(i,t),t);import{S as ue,i as le,s as oe,e as Pe,b as I,$ as L,h as g,D as B,E as A,F as K,Q as F,k as me,l as ye,m as P,I as te,H as E,K as j,O as J,P as ke,q as se,r as ie,J as D,v as Le,d as Z,f as Ke,g as V,ad as Rt,a8 as Xt,w as it,G as He,x as Me,a as St,y as ve,c as wt,z as xe,A as ge,L as Ge,M as We,N as Ze,B as Oe,W as $t,u as ce,a2 as k,a3 as q,n as Q,a4 as Y,T as es}from"./index.224851d7.js";import{r as de,d as Et,w as Pt}from"./index.fd964a74.js";function ts(i){let e,t,s,r=[i[2]],n={};for(let u=0;u{e=A(A({},e),K(f)),t(2,r=B(e,s)),"href"in f&&t(0,n=f.href),"size"in f&&t(1,u=f.size)},[n,u,r,a,l,o,h,y,b,d,c]}class ns extends ue{constructor(e){super(),le(this,e,rs,is,oe,{href:0,size:1})}}const as=ns,us=i=>({props:i[0]&512}),rt=i=>({props:i[9]});function ls(i){let e,t,s,r,n,u,a=i[8]&&nt(i);const l=i[19].default,o=He(l,i,i[18],null);var h=i[2];function y(c){return{props:{"aria-hidden":"true",class:"bx--btn__icon",style:c[8]?"margin-left: 0":void 0,"aria-label":c[3]}}}h&&(s=Me(h,y(i)));let b=[i[9]],d={};for(let c=0;c{Oe(O,1)}),Ke()}h?(s=Me(h,y(c)),ve(s.$$.fragment),V(s.$$.fragment,1),ge(s,e,null)):s=null}else h&&s.$set(p);te(e,d=J(b,[f[0]&512&&c[9]]))},i(c){r||(V(o,c),s&&V(s.$$.fragment,c),r=!0)},o(c){Z(o,c),s&&Z(s.$$.fragment,c),r=!1},d(c){c&&g(e),a&&a.d(),o&&o.d(c),s&&Oe(s),i[33](null),n=!1,ke(u)}}}function os(i){let e,t,s,r,n,u,a=i[8]&&at(i);const l=i[19].default,o=He(l,i,i[18],null);var h=i[2];function y(c){return{props:{"aria-hidden":"true",class:"bx--btn__icon","aria-label":c[3]}}}h&&(s=Me(h,y(i)));let b=[i[9]],d={};for(let c=0;c{Oe(O,1)}),Ke()}h?(s=Me(h,y(c)),ve(s.$$.fragment),V(s.$$.fragment,1),ge(s,e,null)):s=null}else h&&s.$set(p);te(e,d=J(b,[f[0]&512&&c[9]]))},i(c){r||(V(o,c),s&&V(s.$$.fragment,c),r=!0)},o(c){Z(o,c),s&&Z(s.$$.fragment,c),r=!1},d(c){c&&g(e),a&&a.d(),o&&o.d(c),s&&Oe(s),i[32](null),n=!1,ke(u)}}}function cs(i){let e;const t=i[19].default,s=He(t,i,i[18],rt);return{c(){s&&s.c()},l(r){s&&s.l(r)},m(r,n){s&&s.m(r,n),e=!0},p(r,n){s&&s.p&&(!e||n[0]&262656)&&Ge(s,t,r,r[18],e?Ze(t,r[18],n,us):We(r[18]),rt)},i(r){e||(V(s,r),e=!0)},o(r){Z(s,r),e=!1},d(r){s&&s.d(r)}}}function hs(i){let e,t;const s=[{href:i[7]},{size:i[1]},i[10],{style:i[8]&&"width: 3rem;"}];let r={};for(let n=0;n{u[h]=null}),Ke(),t=u[e],t?t.p(l,o):(t=u[e]=n[e](l),t.c()),V(t,1),t.m(s.parentNode,s))},i(l){r||(V(t),r=!0)},o(l){Z(t),r=!1},d(l){u[e].d(l),l&&g(s)}}}function ds(i,e,t){let s,r;const n=["kind","size","expressive","isSelected","icon","iconDescription","tooltipAlignment","tooltipPosition","as","skeleton","disabled","href","tabindex","type","ref"];let u=B(e,n),{$$slots:a={},$$scope:l}=e;const o=Xt(a);let{kind:h="primary"}=e,{size:y="default"}=e,{expressive:b=!1}=e,{isSelected:d=!1}=e,{icon:c=void 0}=e,{iconDescription:f=void 0}=e,{tooltipAlignment:p="center"}=e,{tooltipPosition:O="bottom"}=e,{as:T=!1}=e,{skeleton:S=!1}=e,{disabled:w=!1}=e,{href:U=void 0}=e,{tabindex:C="0"}=e,{type:_="button"}=e,{ref:v=null}=e;const z=Rt("ComposedModal");function re(m){F.call(this,i,m)}function be(m){F.call(this,i,m)}function tt(m){F.call(this,i,m)}function De(m){F.call(this,i,m)}function Lt(m){F.call(this,i,m)}function Kt(m){F.call(this,i,m)}function Ht(m){F.call(this,i,m)}function xt(m){F.call(this,i,m)}function Gt(m){F.call(this,i,m)}function Wt(m){F.call(this,i,m)}function Zt(m){F.call(this,i,m)}function Vt(m){F.call(this,i,m)}function Yt(m){it[m?"unshift":"push"](()=>{v=m,t(0,v)})}function Jt(m){it[m?"unshift":"push"](()=>{v=m,t(0,v)})}return i.$$set=m=>{e=A(A({},e),K(m)),t(10,u=B(e,n)),"kind"in m&&t(11,h=m.kind),"size"in m&&t(1,y=m.size),"expressive"in m&&t(12,b=m.expressive),"isSelected"in m&&t(13,d=m.isSelected),"icon"in m&&t(2,c=m.icon),"iconDescription"in m&&t(3,f=m.iconDescription),"tooltipAlignment"in m&&t(14,p=m.tooltipAlignment),"tooltipPosition"in m&&t(15,O=m.tooltipPosition),"as"in m&&t(4,T=m.as),"skeleton"in m&&t(5,S=m.skeleton),"disabled"in m&&t(6,w=m.disabled),"href"in m&&t(7,U=m.href),"tabindex"in m&&t(16,C=m.tabindex),"type"in m&&t(17,_=m.type),"ref"in m&&t(0,v=m.ref),"$$scope"in m&&t(18,l=m.$$scope)},i.$$.update=()=>{i.$$.dirty[0]&1&&z&&v&&z.declareRef(v),i.$$.dirty[0]&4&&t(8,s=c&&!o.default),t(9,r={type:U&&!w?void 0:_,tabindex:C,disabled:w===!0?!0:void 0,href:U,"aria-pressed":s&&h==="ghost"&&!U?d:void 0,...u,class:["bx--btn",b&&"bx--btn--expressive",(y==="small"&&!b||y==="sm"&&!b||y==="small"&&!b)&&"bx--btn--sm",y==="field"&&!b||y==="md"&&!b&&"bx--btn--md",y==="field"&&"bx--btn--field",y==="small"&&"bx--btn--sm",y==="lg"&&"bx--btn--lg",y==="xl"&&"bx--btn--xl",h&&`bx--btn--${h}`,w&&"bx--btn--disabled",s&&"bx--btn--icon-only",s&&"bx--tooltip__trigger",s&&"bx--tooltip--a11y",s&&O&&`bx--btn--icon-only--${O}`,s&&p&&`bx--tooltip--align-${p}`,s&&d&&h==="ghost"&&"bx--btn--selected",u.class].filter(Boolean).join(" ")})},[v,y,c,f,T,S,w,U,s,r,u,h,b,d,p,O,C,_,l,a,re,be,tt,De,Lt,Kt,Ht,xt,Gt,Wt,Zt,Vt,Yt,Jt]}class ms extends ue{constructor(e){super(),le(this,e,ds,fs,oe,{kind:11,size:1,expressive:12,isSelected:13,icon:2,iconDescription:3,tooltipAlignment:14,tooltipPosition:15,as:4,skeleton:5,disabled:6,href:7,tabindex:16,type:17,ref:0},null,[-1,-1])}}const Oi=ms;function ut(i){let e,t;return{c(){e=k("title"),t=se(i[1])},l(s){e=q(s,"title",{});var r=P(e);t=ie(r,i[1]),r.forEach(g)},m(s,r){I(s,e,r),D(e,t)},p(s,r){r&2&&ce(t,s[1])},d(s){s&&g(e)}}}function ys(i){let e,t,s,r=i[1]&&ut(i),n=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:i[0]},{height:i[0]},i[2],i[3]],u={};for(let a=0;a{t(5,e=A(A({},e),K(o))),t(3,u=B(e,n)),"size"in o&&t(0,a=o.size),"title"in o&&t(1,l=o.title)},i.$$.update=()=>{t(4,s=e["aria-label"]||e["aria-labelledby"]||l),t(2,r={"aria-hidden":s?void 0:!0,role:s?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=K(e),[a,l,r,u,s]}class ps extends ue{constructor(e){super(),le(this,e,bs,ys,oe,{size:0,title:1})}}const _i=ps;function lt(i){let e,t;return{c(){e=k("title"),t=se(i[1])},l(s){e=q(s,"title",{});var r=P(e);t=ie(r,i[1]),r.forEach(g)},m(s,r){I(s,e,r),D(e,t)},p(s,r){r&2&&ce(t,s[1])},d(s){s&&g(e)}}}function vs(i){let e,t,s,r,n=i[1]&<(i),u=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:i[0]},{height:i[0]},i[2],i[3]],a={};for(let l=0;l{t(5,e=A(A({},e),K(o))),t(3,u=B(e,n)),"size"in o&&t(0,a=o.size),"title"in o&&t(1,l=o.title)},i.$$.update=()=>{t(4,s=e["aria-label"]||e["aria-labelledby"]||l),t(2,r={"aria-hidden":s?void 0:!0,role:s?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=K(e),[a,l,r,u,s]}class Os extends ue{constructor(e){super(),le(this,e,gs,vs,oe,{size:0,title:1})}}const Ci=Os;function ot(i){let e,t;return{c(){e=k("title"),t=se(i[1])},l(s){e=q(s,"title",{});var r=P(e);t=ie(r,i[1]),r.forEach(g)},m(s,r){I(s,e,r),D(e,t)},p(s,r){r&2&&ce(t,s[1])},d(s){s&&g(e)}}}function _s(i){let e,t,s=i[1]&&ot(i),r=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:i[0]},{height:i[0]},i[2],i[3]],n={};for(let u=0;u{t(5,e=A(A({},e),K(o))),t(3,u=B(e,n)),"size"in o&&t(0,a=o.size),"title"in o&&t(1,l=o.title)},i.$$.update=()=>{t(4,s=e["aria-label"]||e["aria-labelledby"]||l),t(2,r={"aria-hidden":s?void 0:!0,role:s?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=K(e),[a,l,r,u,s]}class Rs extends ue{constructor(e){super(),le(this,e,Cs,_s,oe,{size:0,title:1})}}const Ri=Rs;function ct(i){let e,t;return{c(){e=k("title"),t=se(i[1])},l(s){e=q(s,"title",{});var r=P(e);t=ie(r,i[1]),r.forEach(g)},m(s,r){I(s,e,r),D(e,t)},p(s,r){r&2&&ce(t,s[1])},d(s){s&&g(e)}}}function Ss(i){let e,t,s,r=i[1]&&ct(i),n=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:i[0]},{height:i[0]},i[2],i[3]],u={};for(let a=0;a{t(5,e=A(A({},e),K(o))),t(3,u=B(e,n)),"size"in o&&t(0,a=o.size),"title"in o&&t(1,l=o.title)},i.$$.update=()=>{t(4,s=e["aria-label"]||e["aria-labelledby"]||l),t(2,r={"aria-hidden":s?void 0:!0,role:s?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=K(e),[a,l,r,u,s]}class Es extends ue{constructor(e){super(),le(this,e,ws,Ss,oe,{size:0,title:1})}}const Si=Es;function ht(i){let e,t;return{c(){e=k("title"),t=se(i[1])},l(s){e=q(s,"title",{});var r=P(e);t=ie(r,i[1]),r.forEach(g)},m(s,r){I(s,e,r),D(e,t)},p(s,r){r&2&&ce(t,s[1])},d(s){s&&g(e)}}}function Ps(i){let e,t,s,r=i[1]&&ht(i),n=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:i[0]},{height:i[0]},i[2],i[3]],u={};for(let a=0;a{t(5,e=A(A({},e),K(o))),t(3,u=B(e,n)),"size"in o&&t(0,a=o.size),"title"in o&&t(1,l=o.title)},i.$$.update=()=>{t(4,s=e["aria-label"]||e["aria-labelledby"]||l),t(2,r={"aria-hidden":s?void 0:!0,role:s?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=K(e),[a,l,r,u,s]}class As extends ue{constructor(e){super(),le(this,e,Ms,Ps,oe,{size:0,title:1})}}const wi=As;class ft extends Error{constructor(e,t,s){super(s),this.name="ApiError",this.url=t.url,this.status=t.status,this.statusText=t.statusText,this.body=t.body,this.request=e}}class Fs extends Error{constructor(e){super(e),this.name="CancelError"}get isCancelled(){return!0}}var G,W,x,ee,ae,Ce,fe;class Qs{constructor(e){X(this,G,void 0);X(this,W,void 0);X(this,x,void 0);X(this,ee,void 0);X(this,ae,void 0);X(this,Ce,void 0);X(this,fe,void 0);H(this,G,!1),H(this,W,!1),H(this,x,!1),H(this,ee,[]),H(this,ae,new Promise((t,s)=>{H(this,Ce,t),H(this,fe,s);const r=a=>{var l;R(this,G)||R(this,W)||R(this,x)||(H(this,G,!0),(l=R(this,Ce))==null||l.call(this,a))},n=a=>{var l;R(this,G)||R(this,W)||R(this,x)||(H(this,W,!0),(l=R(this,fe))==null||l.call(this,a))},u=a=>{R(this,G)||R(this,W)||R(this,x)||R(this,ee).push(a)};return Object.defineProperty(u,"isResolved",{get:()=>R(this,G)}),Object.defineProperty(u,"isRejected",{get:()=>R(this,W)}),Object.defineProperty(u,"isCancelled",{get:()=>R(this,x)}),e(r,n,u)}))}get[Symbol.toStringTag](){return"Cancellable Promise"}then(e,t){return R(this,ae).then(e,t)}catch(e){return R(this,ae).catch(e)}finally(e){return R(this,ae).finally(e)}cancel(){var e;if(!(R(this,G)||R(this,W)||R(this,x))){if(H(this,x,!0),R(this,ee).length)try{for(const t of R(this,ee))t()}catch(t){console.warn("Cancellation threw an error",t);return}R(this,ee).length=0,(e=R(this,fe))==null||e.call(this,new Fs("Request aborted"))}}get isCancelled(){return R(this,x)}}G=new WeakMap,W=new WeakMap,x=new WeakMap,ee=new WeakMap,ae=new WeakMap,Ce=new WeakMap,fe=new WeakMap;const ks={BASE:"",VERSION:"0.1.0",WITH_CREDENTIALS:!1,CREDENTIALS:"include",TOKEN:void 0,USERNAME:void 0,PASSWORD:void 0,HEADERS:void 0,ENCODE_PATH:void 0},Ve=i=>i!=null,Re=i=>typeof i=="string",Te=i=>Re(i)&&i!=="",Ye=i=>typeof i=="object"&&typeof i.type=="string"&&typeof i.stream=="function"&&typeof i.arrayBuffer=="function"&&typeof i.constructor=="function"&&typeof i.constructor.name=="string"&&/^(Blob|File)$/.test(i.constructor.name)&&/^(Blob|File)$/.test(i[Symbol.toStringTag]),Mt=i=>i instanceof FormData,qs=i=>{try{return btoa(i)}catch{return Buffer.from(i).toString("base64")}},Ds=i=>{const e=[],t=(r,n)=>{e.push(`${encodeURIComponent(r)}=${encodeURIComponent(String(n))}`)},s=(r,n)=>{Ve(n)&&(Array.isArray(n)?n.forEach(u=>{s(r,u)}):typeof n=="object"?Object.entries(n).forEach(([u,a])=>{s(`${r}[${u}]`,a)}):t(r,n))};return Object.entries(i).forEach(([r,n])=>{s(r,n)}),e.length>0?`?${e.join("&")}`:""},Ts=(i,e)=>{const t=i.ENCODE_PATH||encodeURI,s=e.url.replace("{api-version}",i.VERSION).replace(/{(.*?)}/g,(n,u)=>{var a;return(a=e.path)!=null&&a.hasOwnProperty(u)?t(String(e.path[u])):n}),r=`${i.BASE}${s}`;return e.query?`${r}${Ds(e.query)}`:r},Is=i=>{if(i.formData){const e=new FormData,t=(s,r)=>{Re(r)||Ye(r)?e.append(s,r):e.append(s,JSON.stringify(r))};return Object.entries(i.formData).filter(([s,r])=>Ve(r)).forEach(([s,r])=>{Array.isArray(r)?r.forEach(n=>t(s,n)):t(s,r)}),e}},we=async(i,e)=>typeof e=="function"?e(i):e,Us=async(i,e)=>{const t=await we(e,i.TOKEN),s=await we(e,i.USERNAME),r=await we(e,i.PASSWORD),n=await we(e,i.HEADERS),u=Object.entries({Accept:"application/json",...n,...e.headers}).filter(([a,l])=>Ve(l)).reduce((a,[l,o])=>({...a,[l]:String(o)}),{});if(Te(t)&&(u.Authorization=`Bearer ${t}`),Te(s)&&Te(r)){const a=qs(`${s}:${r}`);u.Authorization=`Basic ${a}`}return e.body&&(e.mediaType?u["Content-Type"]=e.mediaType:Ye(e.body)?u["Content-Type"]=e.body.type||"application/octet-stream":Re(e.body)?u["Content-Type"]="text/plain":Mt(e.body)||(u["Content-Type"]="application/json")),new Headers(u)},zs=i=>{var e;if(i.body!==void 0)return(e=i.mediaType)!=null&&e.includes("/json")?JSON.stringify(i.body):Re(i.body)||Ye(i.body)||Mt(i.body)?i.body:JSON.stringify(i.body)},js=async(i,e,t,s,r,n,u)=>{const a=new AbortController,l={headers:n,body:s??r,method:e.method,signal:a.signal};return i.WITH_CREDENTIALS&&(l.credentials=i.CREDENTIALS),u(()=>a.abort()),await fetch(t,l)},Bs=(i,e)=>{if(e){const t=i.headers.get(e);if(Re(t))return t}},Ns=async i=>{if(i.status!==204)try{const e=i.headers.get("Content-Type");if(e)return["application/json","application/problem+json"].some(r=>e.toLowerCase().startsWith(r))?await i.json():await i.text()}catch(e){console.error(e)}},Ls=(i,e)=>{const s={400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error",502:"Bad Gateway",503:"Service Unavailable",...i.errors}[e.status];if(s)throw new ft(i,e,s);if(!e.ok)throw new ft(i,e,"Generic Error")},Ks=(i,e)=>new Qs(async(t,s,r)=>{try{const n=Ts(i,e),u=Is(e),a=zs(e),l=await Us(i,e);if(!r.isCancelled){const o=await js(i,e,n,a,u,l,r),h=await Ns(o),y=Bs(o,e.responseHeader),b={url:n,ok:o.ok,status:o.status,statusText:o.statusText,body:y??h};Ls(e,b),t(b.body)}}catch(n){s(n)}});class Hs{static getTaskManifest(){return Ks(ks,{method:"GET",url:"/api/v1/tasks/"})}}class he{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){const t={listener:e};return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}const _e=typeof window>"u"||"Deno"in window;function N(){}function xs(i,e){return typeof i=="function"?i(e):i}function Ie(i){return typeof i=="number"&&i>=0&&i!==1/0}function dt(i,e){return i.filter(t=>!e.includes(t))}function Gs(i,e,t){const s=i.slice(0);return s[e]=t,s}function At(i,e){return Math.max(i+(e||0)-Date.now(),0)}function pe(i,e,t){return Se(i)?typeof e=="function"?{...t,queryKey:i,queryFn:e}:{...e,queryKey:i}:i}function Ws(i,e,t){return Se(i)?typeof e=="function"?{...t,mutationKey:i,mutationFn:e}:{...e,mutationKey:i}:typeof i=="function"?{...e,mutationFn:i}:{...i}}function $(i,e,t){return Se(i)?[{...e,queryKey:i},t]:[i||{},e]}function mt(i,e){const{type:t="all",exact:s,fetchStatus:r,predicate:n,queryKey:u,stale:a}=i;if(Se(u)){if(s){if(e.queryHash!==Je(u,e.options))return!1}else if(!Ae(e.queryKey,u))return!1}if(t!=="all"){const l=e.isActive();if(t==="active"&&!l||t==="inactive"&&l)return!1}return!(typeof a=="boolean"&&e.isStale()!==a||typeof r<"u"&&r!==e.state.fetchStatus||n&&!n(e))}function yt(i,e){const{exact:t,fetching:s,predicate:r,mutationKey:n}=i;if(Se(n)){if(!e.options.mutationKey)return!1;if(t){if(ne(e.options.mutationKey)!==ne(n))return!1}else if(!Ae(e.options.mutationKey,n))return!1}return!(typeof s=="boolean"&&e.state.status==="loading"!==s||r&&!r(e))}function Je(i,e){return((e==null?void 0:e.queryKeyHashFn)||ne)(i)}function ne(i){return JSON.stringify(i,(e,t)=>ze(t)?Object.keys(t).sort().reduce((s,r)=>(s[r]=t[r],s),{}):t)}function Ae(i,e){return Ft(i,e)}function Ft(i,e){return i===e?!0:typeof i!=typeof e?!1:i&&e&&typeof i=="object"&&typeof e=="object"?!Object.keys(e).some(t=>!Ft(i[t],e[t])):!1}function Qt(i,e){if(i===e)return i;const t=bt(i)&&bt(e);if(t||ze(i)&&ze(e)){const s=t?i.length:Object.keys(i).length,r=t?e:Object.keys(e),n=r.length,u=t?[]:{};let a=0;for(let l=0;l"u")return!0;const t=e.prototype;return!(!pt(t)||!t.hasOwnProperty("isPrototypeOf"))}function pt(i){return Object.prototype.toString.call(i)==="[object Object]"}function Se(i){return Array.isArray(i)}function kt(i){return new Promise(e=>{setTimeout(e,i)})}function vt(i){kt(0).then(i)}function Zs(){if(typeof AbortController=="function")return new AbortController}function je(i,e,t){return t.isDataEqual!=null&&t.isDataEqual(i,e)?i:typeof t.structuralSharing=="function"?t.structuralSharing(i,e):t.structuralSharing!==!1?Qt(i,e):e}class Vs extends he{constructor(){super(),this.setup=e=>{if(!_e&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),window.addEventListener("focus",t,!1),()=>{window.removeEventListener("visibilitychange",t),window.removeEventListener("focus",t)}}}}onSubscribe(){this.cleanup||this.setEventListener(this.setup)}onUnsubscribe(){if(!this.hasListeners()){var e;(e=this.cleanup)==null||e.call(this),this.cleanup=void 0}}setEventListener(e){var t;this.setup=e,(t=this.cleanup)==null||t.call(this),this.cleanup=e(s=>{typeof s=="boolean"?this.setFocused(s):this.onFocus()})}setFocused(e){this.focused=e,e&&this.onFocus()}onFocus(){this.listeners.forEach(({listener:e})=>{e()})}isFocused(){return typeof this.focused=="boolean"?this.focused:typeof document>"u"?!0:[void 0,"visible","prerender"].includes(document.visibilityState)}}const Fe=new Vs,gt=["online","offline"];class Ys extends he{constructor(){super(),this.setup=e=>{if(!_e&&window.addEventListener){const t=()=>e();return gt.forEach(s=>{window.addEventListener(s,t,!1)}),()=>{gt.forEach(s=>{window.removeEventListener(s,t)})}}}}onSubscribe(){this.cleanup||this.setEventListener(this.setup)}onUnsubscribe(){if(!this.hasListeners()){var e;(e=this.cleanup)==null||e.call(this),this.cleanup=void 0}}setEventListener(e){var t;this.setup=e,(t=this.cleanup)==null||t.call(this),this.cleanup=e(s=>{typeof s=="boolean"?this.setOnline(s):this.onOnline()})}setOnline(e){this.online=e,e&&this.onOnline()}onOnline(){this.listeners.forEach(({listener:e})=>{e()})}isOnline(){return typeof this.online=="boolean"?this.online:typeof navigator>"u"||typeof navigator.onLine>"u"?!0:navigator.onLine}}const Qe=new Ys;function Js(i){return Math.min(1e3*2**i,3e4)}function qe(i){return(i??"online")==="online"?Qe.isOnline():!0}class qt{constructor(e){this.revert=e==null?void 0:e.revert,this.silent=e==null?void 0:e.silent}}function Ee(i){return i instanceof qt}function Dt(i){let e=!1,t=0,s=!1,r,n,u;const a=new Promise((p,O)=>{n=p,u=O}),l=p=>{s||(d(new qt(p)),i.abort==null||i.abort())},o=()=>{e=!0},h=()=>{e=!1},y=()=>!Fe.isFocused()||i.networkMode!=="always"&&!Qe.isOnline(),b=p=>{s||(s=!0,i.onSuccess==null||i.onSuccess(p),r==null||r(),n(p))},d=p=>{s||(s=!0,i.onError==null||i.onError(p),r==null||r(),u(p))},c=()=>new Promise(p=>{r=O=>{const T=s||!y();return T&&p(O),T},i.onPause==null||i.onPause()}).then(()=>{r=void 0,s||i.onContinue==null||i.onContinue()}),f=()=>{if(s)return;let p;try{p=i.fn()}catch(O){p=Promise.reject(O)}Promise.resolve(p).then(b).catch(O=>{var T,S;if(s)return;const w=(T=i.retry)!=null?T:3,U=(S=i.retryDelay)!=null?S:Js,C=typeof U=="function"?U(t,O):U,_=w===!0||typeof w=="number"&&t{if(y())return c()}).then(()=>{e?d(O):f()})})};return qe(i.networkMode)?f():c().then(f),{promise:a,cancel:l,continue:()=>(r==null?void 0:r())?a:Promise.resolve(),cancelRetry:o,continueRetry:h}}const Xe=console;function Xs(){let i=[],e=0,t=h=>{h()},s=h=>{h()};const r=h=>{let y;e++;try{y=h()}finally{e--,e||a()}return y},n=h=>{e?i.push(h):vt(()=>{t(h)})},u=h=>(...y)=>{n(()=>{h(...y)})},a=()=>{const h=i;i=[],h.length&&vt(()=>{s(()=>{h.forEach(y=>{t(y)})})})};return{batch:r,batchCalls:u,schedule:n,setNotifyFunction:h=>{t=h},setBatchNotifyFunction:h=>{s=h}}}const M=Xs();class Tt{destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),Ie(this.cacheTime)&&(this.gcTimeout=setTimeout(()=>{this.optionalRemove()},this.cacheTime))}updateCacheTime(e){this.cacheTime=Math.max(this.cacheTime||0,e??(_e?1/0:5*60*1e3))}clearGcTimeout(){this.gcTimeout&&(clearTimeout(this.gcTimeout),this.gcTimeout=void 0)}}class $s extends Tt{constructor(e){super(),this.abortSignalConsumed=!1,this.defaultOptions=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.cache=e.cache,this.logger=e.logger||Xe,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.initialState=e.state||ei(this.options),this.state=this.initialState,this.scheduleGc()}get meta(){return this.options.meta}setOptions(e){this.options={...this.defaultOptions,...e},this.updateCacheTime(this.options.cacheTime)}optionalRemove(){!this.observers.length&&this.state.fetchStatus==="idle"&&this.cache.remove(this)}setData(e,t){const s=je(this.state.data,e,this.options);return this.dispatch({data:s,type:"success",dataUpdatedAt:t==null?void 0:t.updatedAt,manual:t==null?void 0:t.manual}),s}setState(e,t){this.dispatch({type:"setState",state:e,setStateOptions:t})}cancel(e){var t;const s=this.promise;return(t=this.retryer)==null||t.cancel(e),s?s.then(N).catch(N):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.initialState)}isActive(){return this.observers.some(e=>e.options.enabled!==!1)}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||this.observers.some(e=>e.getCurrentResult().isStale)}isStaleByTime(e=0){return this.state.isInvalidated||!this.state.dataUpdatedAt||!At(this.state.dataUpdatedAt,e)}onFocus(){var e;const t=this.observers.find(s=>s.shouldFetchOnWindowFocus());t&&t.refetch({cancelRefetch:!1}),(e=this.retryer)==null||e.continue()}onOnline(){var e;const t=this.observers.find(s=>s.shouldFetchOnReconnect());t&&t.refetch({cancelRefetch:!1}),(e=this.retryer)==null||e.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.cache.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.retryer&&(this.abortSignalConsumed?this.retryer.cancel({revert:!0}):this.retryer.cancelRetry()),this.scheduleGc()),this.cache.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.dispatch({type:"invalidate"})}fetch(e,t){var s,r;if(this.state.fetchStatus!=="idle"){if(this.state.dataUpdatedAt&&t!=null&&t.cancelRefetch)this.cancel({silent:!0});else if(this.promise){var n;return(n=this.retryer)==null||n.continueRetry(),this.promise}}if(e&&this.setOptions(e),!this.options.queryFn){const d=this.observers.find(c=>c.options.queryFn);d&&this.setOptions(d.options)}Array.isArray(this.options.queryKey);const u=Zs(),a={queryKey:this.queryKey,pageParam:void 0,meta:this.meta},l=d=>{Object.defineProperty(d,"signal",{enumerable:!0,get:()=>{if(u)return this.abortSignalConsumed=!0,u.signal}})};l(a);const o=()=>this.options.queryFn?(this.abortSignalConsumed=!1,this.options.queryFn(a)):Promise.reject("Missing queryFn"),h={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:o};if(l(h),(s=this.options.behavior)==null||s.onFetch(h),this.revertState=this.state,this.state.fetchStatus==="idle"||this.state.fetchMeta!==((r=h.fetchOptions)==null?void 0:r.meta)){var y;this.dispatch({type:"fetch",meta:(y=h.fetchOptions)==null?void 0:y.meta})}const b=d=>{if(Ee(d)&&d.silent||this.dispatch({type:"error",error:d}),!Ee(d)){var c,f,p,O;(c=(f=this.cache.config).onError)==null||c.call(f,d,this),(p=(O=this.cache.config).onSettled)==null||p.call(O,this.state.data,d,this)}this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.retryer=Dt({fn:h.fetchFn,abort:u==null?void 0:u.abort.bind(u),onSuccess:d=>{var c,f,p,O;if(typeof d>"u"){b(new Error(this.queryHash+" data is undefined"));return}this.setData(d),(c=(f=this.cache.config).onSuccess)==null||c.call(f,d,this),(p=(O=this.cache.config).onSettled)==null||p.call(O,d,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1},onError:b,onFail:(d,c)=>{this.dispatch({type:"failed",failureCount:d,error:c})},onPause:()=>{this.dispatch({type:"pause"})},onContinue:()=>{this.dispatch({type:"continue"})},retry:h.options.retry,retryDelay:h.options.retryDelay,networkMode:h.options.networkMode}),this.promise=this.retryer.promise,this.promise}dispatch(e){const t=s=>{var r,n;switch(e.type){case"failed":return{...s,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...s,fetchStatus:"paused"};case"continue":return{...s,fetchStatus:"fetching"};case"fetch":return{...s,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:(r=e.meta)!=null?r:null,fetchStatus:qe(this.options.networkMode)?"fetching":"paused",...!s.dataUpdatedAt&&{error:null,status:"loading"}};case"success":return{...s,data:e.data,dataUpdateCount:s.dataUpdateCount+1,dataUpdatedAt:(n=e.dataUpdatedAt)!=null?n:Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const u=e.error;return Ee(u)&&u.revert&&this.revertState?{...this.revertState}:{...s,error:u,errorUpdateCount:s.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:s.fetchFailureCount+1,fetchFailureReason:u,fetchStatus:"idle",status:"error"};case"invalidate":return{...s,isInvalidated:!0};case"setState":return{...s,...e.state}}};this.state=t(this.state),M.batch(()=>{this.observers.forEach(s=>{s.onQueryUpdate(e)}),this.cache.notify({query:this,type:"updated",action:e})})}}function ei(i){const e=typeof i.initialData=="function"?i.initialData():i.initialData,t=typeof e<"u",s=t?typeof i.initialDataUpdatedAt=="function"?i.initialDataUpdatedAt():i.initialDataUpdatedAt:0;return{data:e,dataUpdateCount:0,dataUpdatedAt:t?s??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:t?"success":"loading",fetchStatus:"idle"}}class ti extends he{constructor(e){super(),this.config=e||{},this.queries=[],this.queriesMap={}}build(e,t,s){var r;const n=t.queryKey,u=(r=t.queryHash)!=null?r:Je(n,t);let a=this.get(u);return a||(a=new $s({cache:this,logger:e.getLogger(),queryKey:n,queryHash:u,options:e.defaultQueryOptions(t),state:s,defaultOptions:e.getQueryDefaults(n)}),this.add(a)),a}add(e){this.queriesMap[e.queryHash]||(this.queriesMap[e.queryHash]=e,this.queries.push(e),this.notify({type:"added",query:e}))}remove(e){const t=this.queriesMap[e.queryHash];t&&(e.destroy(),this.queries=this.queries.filter(s=>s!==e),t===e&&delete this.queriesMap[e.queryHash],this.notify({type:"removed",query:e}))}clear(){M.batch(()=>{this.queries.forEach(e=>{this.remove(e)})})}get(e){return this.queriesMap[e]}getAll(){return this.queries}find(e,t){const[s]=$(e,t);return typeof s.exact>"u"&&(s.exact=!0),this.queries.find(r=>mt(s,r))}findAll(e,t){const[s]=$(e,t);return Object.keys(s).length>0?this.queries.filter(r=>mt(s,r)):this.queries}notify(e){M.batch(()=>{this.listeners.forEach(({listener:t})=>{t(e)})})}onFocus(){M.batch(()=>{this.queries.forEach(e=>{e.onFocus()})})}onOnline(){M.batch(()=>{this.queries.forEach(e=>{e.onOnline()})})}}class si extends Tt{constructor(e){super(),this.defaultOptions=e.defaultOptions,this.mutationId=e.mutationId,this.mutationCache=e.mutationCache,this.logger=e.logger||Xe,this.observers=[],this.state=e.state||It(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options={...this.defaultOptions,...e},this.updateCacheTime(this.options.cacheTime)}get meta(){return this.options.meta}setState(e){this.dispatch({type:"setState",state:e})}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.mutationCache.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.observers=this.observers.filter(t=>t!==e),this.scheduleGc(),this.mutationCache.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.observers.length||(this.state.status==="loading"?this.scheduleGc():this.mutationCache.remove(this))}continue(){var e,t;return(e=(t=this.retryer)==null?void 0:t.continue())!=null?e:this.execute()}async execute(){const e=()=>{var _;return this.retryer=Dt({fn:()=>this.options.mutationFn?this.options.mutationFn(this.state.variables):Promise.reject("No mutationFn found"),onFail:(v,z)=>{this.dispatch({type:"failed",failureCount:v,error:z})},onPause:()=>{this.dispatch({type:"pause"})},onContinue:()=>{this.dispatch({type:"continue"})},retry:(_=this.options.retry)!=null?_:0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode}),this.retryer.promise},t=this.state.status==="loading";try{var s,r,n,u,a,l,o,h;if(!t){var y,b,d,c;this.dispatch({type:"loading",variables:this.options.variables}),await((y=(b=this.mutationCache.config).onMutate)==null?void 0:y.call(b,this.state.variables,this));const v=await((d=(c=this.options).onMutate)==null?void 0:d.call(c,this.state.variables));v!==this.state.context&&this.dispatch({type:"loading",context:v,variables:this.state.variables})}const _=await e();return await((s=(r=this.mutationCache.config).onSuccess)==null?void 0:s.call(r,_,this.state.variables,this.state.context,this)),await((n=(u=this.options).onSuccess)==null?void 0:n.call(u,_,this.state.variables,this.state.context)),await((a=(l=this.mutationCache.config).onSettled)==null?void 0:a.call(l,_,null,this.state.variables,this.state.context,this)),await((o=(h=this.options).onSettled)==null?void 0:o.call(h,_,null,this.state.variables,this.state.context)),this.dispatch({type:"success",data:_}),_}catch(_){try{var f,p,O,T,S,w,U,C;throw await((f=(p=this.mutationCache.config).onError)==null?void 0:f.call(p,_,this.state.variables,this.state.context,this)),await((O=(T=this.options).onError)==null?void 0:O.call(T,_,this.state.variables,this.state.context)),await((S=(w=this.mutationCache.config).onSettled)==null?void 0:S.call(w,void 0,_,this.state.variables,this.state.context,this)),await((U=(C=this.options).onSettled)==null?void 0:U.call(C,void 0,_,this.state.variables,this.state.context)),_}finally{this.dispatch({type:"error",error:_})}}}dispatch(e){const t=s=>{switch(e.type){case"failed":return{...s,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...s,isPaused:!0};case"continue":return{...s,isPaused:!1};case"loading":return{...s,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!qe(this.options.networkMode),status:"loading",variables:e.variables};case"success":return{...s,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...s,data:void 0,error:e.error,failureCount:s.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"};case"setState":return{...s,...e.state}}};this.state=t(this.state),M.batch(()=>{this.observers.forEach(s=>{s.onMutationUpdate(e)}),this.mutationCache.notify({mutation:this,type:"updated",action:e})})}}function It(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0}}class ii extends he{constructor(e){super(),this.config=e||{},this.mutations=[],this.mutationId=0}build(e,t,s){const r=new si({mutationCache:this,logger:e.getLogger(),mutationId:++this.mutationId,options:e.defaultMutationOptions(t),state:s,defaultOptions:t.mutationKey?e.getMutationDefaults(t.mutationKey):void 0});return this.add(r),r}add(e){this.mutations.push(e),this.notify({type:"added",mutation:e})}remove(e){this.mutations=this.mutations.filter(t=>t!==e),this.notify({type:"removed",mutation:e})}clear(){M.batch(()=>{this.mutations.forEach(e=>{this.remove(e)})})}getAll(){return this.mutations}find(e){return typeof e.exact>"u"&&(e.exact=!0),this.mutations.find(t=>yt(e,t))}findAll(e){return this.mutations.filter(t=>yt(e,t))}notify(e){M.batch(()=>{this.listeners.forEach(({listener:t})=>{t(e)})})}resumePausedMutations(){var e;return this.resuming=((e=this.resuming)!=null?e:Promise.resolve()).then(()=>{const t=this.mutations.filter(s=>s.state.isPaused);return M.batch(()=>t.reduce((s,r)=>s.then(()=>r.continue().catch(N)),Promise.resolve()))}).then(()=>{this.resuming=void 0}),this.resuming}}function ri(){return{onFetch:i=>{i.fetchFn=()=>{var e,t,s,r,n,u;const a=(e=i.fetchOptions)==null||(t=e.meta)==null?void 0:t.refetchPage,l=(s=i.fetchOptions)==null||(r=s.meta)==null?void 0:r.fetchMore,o=l==null?void 0:l.pageParam,h=(l==null?void 0:l.direction)==="forward",y=(l==null?void 0:l.direction)==="backward",b=((n=i.state.data)==null?void 0:n.pages)||[],d=((u=i.state.data)==null?void 0:u.pageParams)||[];let c=d,f=!1;const p=C=>{Object.defineProperty(C,"signal",{enumerable:!0,get:()=>{var _;if((_=i.signal)!=null&&_.aborted)f=!0;else{var v;(v=i.signal)==null||v.addEventListener("abort",()=>{f=!0})}return i.signal}})},O=i.options.queryFn||(()=>Promise.reject("Missing queryFn")),T=(C,_,v,z)=>(c=z?[_,...c]:[...c,_],z?[v,...C]:[...C,v]),S=(C,_,v,z)=>{if(f)return Promise.reject("Cancelled");if(typeof v>"u"&&!_&&C.length)return Promise.resolve(C);const re={queryKey:i.queryKey,pageParam:v,meta:i.options.meta};p(re);const be=O(re);return Promise.resolve(be).then(De=>T(C,v,De,z))};let w;if(!b.length)w=S([]);else if(h){const C=typeof o<"u",_=C?o:Be(i.options,b);w=S(b,C,_)}else if(y){const C=typeof o<"u",_=C?o:Ut(i.options,b);w=S(b,C,_,!0)}else{c=[];const C=typeof i.options.getNextPageParam>"u";w=(a&&b[0]?a(b[0],0,b):!0)?S([],C,d[0]):Promise.resolve(T([],d[0],b[0]));for(let v=1;v{if(a&&b[v]?a(b[v],v,b):!0){const be=C?d[v]:Be(i.options,z);return S(z,C,be)}return Promise.resolve(T(z,d[v],b[v]))})}return w.then(C=>({pages:C,pageParams:c}))}}}}function Be(i,e){return i.getNextPageParam==null?void 0:i.getNextPageParam(e[e.length-1],e)}function Ut(i,e){return i.getPreviousPageParam==null?void 0:i.getPreviousPageParam(e[0],e)}function Ei(i,e){if(i.getNextPageParam&&Array.isArray(e)){const t=Be(i,e);return typeof t<"u"&&t!==null&&t!==!1}}function Pi(i,e){if(i.getPreviousPageParam&&Array.isArray(e)){const t=Ut(i,e);return typeof t<"u"&&t!==null&&t!==!1}}class ni{constructor(e={}){this.queryCache=e.queryCache||new ti,this.mutationCache=e.mutationCache||new ii,this.logger=e.logger||Xe,this.defaultOptions=e.defaultOptions||{},this.queryDefaults=[],this.mutationDefaults=[],this.mountCount=0}mount(){this.mountCount++,this.mountCount===1&&(this.unsubscribeFocus=Fe.subscribe(()=>{Fe.isFocused()&&(this.resumePausedMutations(),this.queryCache.onFocus())}),this.unsubscribeOnline=Qe.subscribe(()=>{Qe.isOnline()&&(this.resumePausedMutations(),this.queryCache.onOnline())}))}unmount(){var e,t;this.mountCount--,this.mountCount===0&&((e=this.unsubscribeFocus)==null||e.call(this),this.unsubscribeFocus=void 0,(t=this.unsubscribeOnline)==null||t.call(this),this.unsubscribeOnline=void 0)}isFetching(e,t){const[s]=$(e,t);return s.fetchStatus="fetching",this.queryCache.findAll(s).length}isMutating(e){return this.mutationCache.findAll({...e,fetching:!0}).length}getQueryData(e,t){var s;return(s=this.queryCache.find(e,t))==null?void 0:s.state.data}ensureQueryData(e,t,s){const r=pe(e,t,s),n=this.getQueryData(r.queryKey);return n?Promise.resolve(n):this.fetchQuery(r)}getQueriesData(e){return this.getQueryCache().findAll(e).map(({queryKey:t,state:s})=>{const r=s.data;return[t,r]})}setQueryData(e,t,s){const r=this.queryCache.find(e),n=r==null?void 0:r.state.data,u=xs(t,n);if(typeof u>"u")return;const a=pe(e),l=this.defaultQueryOptions(a);return this.queryCache.build(this,l).setData(u,{...s,manual:!0})}setQueriesData(e,t,s){return M.batch(()=>this.getQueryCache().findAll(e).map(({queryKey:r})=>[r,this.setQueryData(r,t,s)]))}getQueryState(e,t){var s;return(s=this.queryCache.find(e,t))==null?void 0:s.state}removeQueries(e,t){const[s]=$(e,t),r=this.queryCache;M.batch(()=>{r.findAll(s).forEach(n=>{r.remove(n)})})}resetQueries(e,t,s){const[r,n]=$(e,t,s),u=this.queryCache,a={type:"active",...r};return M.batch(()=>(u.findAll(r).forEach(l=>{l.reset()}),this.refetchQueries(a,n)))}cancelQueries(e,t,s){const[r,n={}]=$(e,t,s);typeof n.revert>"u"&&(n.revert=!0);const u=M.batch(()=>this.queryCache.findAll(r).map(a=>a.cancel(n)));return Promise.all(u).then(N).catch(N)}invalidateQueries(e,t,s){const[r,n]=$(e,t,s);return M.batch(()=>{var u,a;if(this.queryCache.findAll(r).forEach(o=>{o.invalidate()}),r.refetchType==="none")return Promise.resolve();const l={...r,type:(u=(a=r.refetchType)!=null?a:r.type)!=null?u:"active"};return this.refetchQueries(l,n)})}refetchQueries(e,t,s){const[r,n]=$(e,t,s),u=M.batch(()=>this.queryCache.findAll(r).filter(l=>!l.isDisabled()).map(l=>{var o;return l.fetch(void 0,{...n,cancelRefetch:(o=n==null?void 0:n.cancelRefetch)!=null?o:!0,meta:{refetchPage:r.refetchPage}})}));let a=Promise.all(u).then(N);return n!=null&&n.throwOnError||(a=a.catch(N)),a}fetchQuery(e,t,s){const r=pe(e,t,s),n=this.defaultQueryOptions(r);typeof n.retry>"u"&&(n.retry=!1);const u=this.queryCache.build(this,n);return u.isStaleByTime(n.staleTime)?u.fetch(n):Promise.resolve(u.state.data)}prefetchQuery(e,t,s){return this.fetchQuery(e,t,s).then(N).catch(N)}fetchInfiniteQuery(e,t,s){const r=pe(e,t,s);return r.behavior=ri(),this.fetchQuery(r)}prefetchInfiniteQuery(e,t,s){return this.fetchInfiniteQuery(e,t,s).then(N).catch(N)}resumePausedMutations(){return this.mutationCache.resumePausedMutations()}getQueryCache(){return this.queryCache}getMutationCache(){return this.mutationCache}getLogger(){return this.logger}getDefaultOptions(){return this.defaultOptions}setDefaultOptions(e){this.defaultOptions=e}setQueryDefaults(e,t){const s=this.queryDefaults.find(r=>ne(e)===ne(r.queryKey));s?s.defaultOptions=t:this.queryDefaults.push({queryKey:e,defaultOptions:t})}getQueryDefaults(e){if(!e)return;const t=this.queryDefaults.find(s=>Ae(e,s.queryKey));return t==null?void 0:t.defaultOptions}setMutationDefaults(e,t){const s=this.mutationDefaults.find(r=>ne(e)===ne(r.mutationKey));s?s.defaultOptions=t:this.mutationDefaults.push({mutationKey:e,defaultOptions:t})}getMutationDefaults(e){if(!e)return;const t=this.mutationDefaults.find(s=>Ae(e,s.mutationKey));return t==null?void 0:t.defaultOptions}defaultQueryOptions(e){if(e!=null&&e._defaulted)return e;const t={...this.defaultOptions.queries,...this.getQueryDefaults(e==null?void 0:e.queryKey),...e,_defaulted:!0};return!t.queryHash&&t.queryKey&&(t.queryHash=Je(t.queryKey,t)),typeof t.refetchOnReconnect>"u"&&(t.refetchOnReconnect=t.networkMode!=="always"),typeof t.useErrorBoundary>"u"&&(t.useErrorBoundary=!!t.suspense),t}defaultMutationOptions(e){return e!=null&&e._defaulted?e:{...this.defaultOptions.mutations,...this.getMutationDefaults(e==null?void 0:e.mutationKey),...e,_defaulted:!0}}clear(){this.queryCache.clear(),this.mutationCache.clear()}}class zt extends he{constructor(e,t){super(),this.client=e,this.options=t,this.trackedProps=new Set,this.selectError=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.remove=this.remove.bind(this),this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.currentQuery.addObserver(this),Ot(this.currentQuery,this.options)&&this.executeFetch(),this.updateTimers())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return Ne(this.currentQuery,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return Ne(this.currentQuery,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.clearStaleTimeout(),this.clearRefetchInterval(),this.currentQuery.removeObserver(this)}setOptions(e,t){const s=this.options,r=this.currentQuery;if(this.options=this.client.defaultQueryOptions(e),Ue(s,this.options)||this.client.getQueryCache().notify({type:"observerOptionsUpdated",query:this.currentQuery,observer:this}),typeof this.options.enabled<"u"&&typeof this.options.enabled!="boolean")throw new Error("Expected enabled to be a boolean");this.options.queryKey||(this.options.queryKey=s.queryKey),this.updateQuery();const n=this.hasListeners();n&&_t(this.currentQuery,r,this.options,s)&&this.executeFetch(),this.updateResult(t),n&&(this.currentQuery!==r||this.options.enabled!==s.enabled||this.options.staleTime!==s.staleTime)&&this.updateStaleTimeout();const u=this.computeRefetchInterval();n&&(this.currentQuery!==r||this.options.enabled!==s.enabled||u!==this.currentRefetchInterval)&&this.updateRefetchInterval(u)}getOptimisticResult(e){const t=this.client.getQueryCache().build(this.client,e);return this.createResult(t,e)}getCurrentResult(){return this.currentResult}trackResult(e){const t={};return Object.keys(e).forEach(s=>{Object.defineProperty(t,s,{configurable:!1,enumerable:!0,get:()=>(this.trackedProps.add(s),e[s])})}),t}getCurrentQuery(){return this.currentQuery}remove(){this.client.getQueryCache().remove(this.currentQuery)}refetch({refetchPage:e,...t}={}){return this.fetch({...t,meta:{refetchPage:e}})}fetchOptimistic(e){const t=this.client.defaultQueryOptions(e),s=this.client.getQueryCache().build(this.client,t);return s.isFetchingOptimistic=!0,s.fetch().then(()=>this.createResult(s,t))}fetch(e){var t;return this.executeFetch({...e,cancelRefetch:(t=e.cancelRefetch)!=null?t:!0}).then(()=>(this.updateResult(),this.currentResult))}executeFetch(e){this.updateQuery();let t=this.currentQuery.fetch(this.options,e);return e!=null&&e.throwOnError||(t=t.catch(N)),t}updateStaleTimeout(){if(this.clearStaleTimeout(),_e||this.currentResult.isStale||!Ie(this.options.staleTime))return;const t=At(this.currentResult.dataUpdatedAt,this.options.staleTime)+1;this.staleTimeoutId=setTimeout(()=>{this.currentResult.isStale||this.updateResult()},t)}computeRefetchInterval(){var e;return typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.currentResult.data,this.currentQuery):(e=this.options.refetchInterval)!=null?e:!1}updateRefetchInterval(e){this.clearRefetchInterval(),this.currentRefetchInterval=e,!(_e||this.options.enabled===!1||!Ie(this.currentRefetchInterval)||this.currentRefetchInterval===0)&&(this.refetchIntervalId=setInterval(()=>{(this.options.refetchIntervalInBackground||Fe.isFocused())&&this.executeFetch()},this.currentRefetchInterval))}updateTimers(){this.updateStaleTimeout(),this.updateRefetchInterval(this.computeRefetchInterval())}clearStaleTimeout(){this.staleTimeoutId&&(clearTimeout(this.staleTimeoutId),this.staleTimeoutId=void 0)}clearRefetchInterval(){this.refetchIntervalId&&(clearInterval(this.refetchIntervalId),this.refetchIntervalId=void 0)}createResult(e,t){const s=this.currentQuery,r=this.options,n=this.currentResult,u=this.currentResultState,a=this.currentResultOptions,l=e!==s,o=l?e.state:this.currentQueryInitialState,h=l?this.currentResult:this.previousQueryResult,{state:y}=e;let{dataUpdatedAt:b,error:d,errorUpdatedAt:c,fetchStatus:f,status:p}=y,O=!1,T=!1,S;if(t._optimisticResults){const v=this.hasListeners(),z=!v&&Ot(e,t),re=v&&_t(e,s,t,r);(z||re)&&(f=qe(e.options.networkMode)?"fetching":"paused",b||(p="loading")),t._optimisticResults==="isRestoring"&&(f="idle")}if(t.keepPreviousData&&!y.dataUpdatedAt&&h!=null&&h.isSuccess&&p!=="error")S=h.data,b=h.dataUpdatedAt,p=h.status,O=!0;else if(t.select&&typeof y.data<"u")if(n&&y.data===(u==null?void 0:u.data)&&t.select===this.selectFn)S=this.selectResult;else try{this.selectFn=t.select,S=t.select(y.data),S=je(n==null?void 0:n.data,S,t),this.selectResult=S,this.selectError=null}catch(v){this.selectError=v}else S=y.data;if(typeof t.placeholderData<"u"&&typeof S>"u"&&p==="loading"){let v;if(n!=null&&n.isPlaceholderData&&t.placeholderData===(a==null?void 0:a.placeholderData))v=n.data;else if(v=typeof t.placeholderData=="function"?t.placeholderData():t.placeholderData,t.select&&typeof v<"u")try{v=t.select(v),this.selectError=null}catch(z){this.selectError=z}typeof v<"u"&&(p="success",S=je(n==null?void 0:n.data,v,t),T=!0)}this.selectError&&(d=this.selectError,S=this.selectResult,c=Date.now(),p="error");const w=f==="fetching",U=p==="loading",C=p==="error";return{status:p,fetchStatus:f,isLoading:U,isSuccess:p==="success",isError:C,isInitialLoading:U&&w,data:S,dataUpdatedAt:b,error:d,errorUpdatedAt:c,failureCount:y.fetchFailureCount,failureReason:y.fetchFailureReason,errorUpdateCount:y.errorUpdateCount,isFetched:y.dataUpdateCount>0||y.errorUpdateCount>0,isFetchedAfterMount:y.dataUpdateCount>o.dataUpdateCount||y.errorUpdateCount>o.errorUpdateCount,isFetching:w,isRefetching:w&&!U,isLoadingError:C&&y.dataUpdatedAt===0,isPaused:f==="paused",isPlaceholderData:T,isPreviousData:O,isRefetchError:C&&y.dataUpdatedAt!==0,isStale:$e(e,t),refetch:this.refetch,remove:this.remove}}updateResult(e){const t=this.currentResult,s=this.createResult(this.currentQuery,this.options);if(this.currentResultState=this.currentQuery.state,this.currentResultOptions=this.options,Ue(s,t))return;this.currentResult=s;const r={cache:!0},n=()=>{if(!t)return!0;const{notifyOnChangeProps:u}=this.options;if(u==="all"||!u&&!this.trackedProps.size)return!0;const a=new Set(u??this.trackedProps);return this.options.useErrorBoundary&&a.add("error"),Object.keys(this.currentResult).some(l=>{const o=l;return this.currentResult[o]!==t[o]&&a.has(o)})};(e==null?void 0:e.listeners)!==!1&&n()&&(r.listeners=!0),this.notify({...r,...e})}updateQuery(){const e=this.client.getQueryCache().build(this.client,this.options);if(e===this.currentQuery)return;const t=this.currentQuery;this.currentQuery=e,this.currentQueryInitialState=e.state,this.previousQueryResult=this.currentResult,this.hasListeners()&&(t==null||t.removeObserver(this),e.addObserver(this))}onQueryUpdate(e){const t={};e.type==="success"?t.onSuccess=!e.manual:e.type==="error"&&!Ee(e.error)&&(t.onError=!0),this.updateResult(t),this.hasListeners()&&this.updateTimers()}notify(e){M.batch(()=>{if(e.onSuccess){var t,s,r,n;(t=(s=this.options).onSuccess)==null||t.call(s,this.currentResult.data),(r=(n=this.options).onSettled)==null||r.call(n,this.currentResult.data,null)}else if(e.onError){var u,a,l,o;(u=(a=this.options).onError)==null||u.call(a,this.currentResult.error),(l=(o=this.options).onSettled)==null||l.call(o,void 0,this.currentResult.error)}e.listeners&&this.listeners.forEach(({listener:h})=>{h(this.currentResult)}),e.cache&&this.client.getQueryCache().notify({query:this.currentQuery,type:"observerResultsUpdated"})})}}function ai(i,e){return e.enabled!==!1&&!i.state.dataUpdatedAt&&!(i.state.status==="error"&&e.retryOnMount===!1)}function Ot(i,e){return ai(i,e)||i.state.dataUpdatedAt>0&&Ne(i,e,e.refetchOnMount)}function Ne(i,e,t){if(e.enabled!==!1){const s=typeof t=="function"?t(i):t;return s==="always"||s!==!1&&$e(i,e)}return!1}function _t(i,e,t,s){return t.enabled!==!1&&(i!==e||s.enabled===!1)&&(!t.suspense||i.state.status!=="error")&&$e(i,t)}function $e(i,e){return i.isStaleByTime(e.staleTime)}class ui extends he{constructor(e,t){super(),this.client=e,this.queries=[],this.result=[],this.observers=[],this.observersMap={},t&&this.setQueries(t)}onSubscribe(){this.listeners.size===1&&this.observers.forEach(e=>{e.subscribe(t=>{this.onUpdate(e,t)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.observers.forEach(e=>{e.destroy()})}setQueries(e,t){this.queries=e,M.batch(()=>{const s=this.observers,r=this.findMatchingObservers(this.queries);r.forEach(o=>o.observer.setOptions(o.defaultedQueryOptions,t));const n=r.map(o=>o.observer),u=Object.fromEntries(n.map(o=>[o.options.queryHash,o])),a=n.map(o=>o.getCurrentResult()),l=n.some((o,h)=>o!==s[h]);s.length===n.length&&!l||(this.observers=n,this.observersMap=u,this.result=a,this.hasListeners()&&(dt(s,n).forEach(o=>{o.destroy()}),dt(n,s).forEach(o=>{o.subscribe(h=>{this.onUpdate(o,h)})}),this.notify()))})}getCurrentResult(){return this.result}getQueries(){return this.observers.map(e=>e.getCurrentQuery())}getObservers(){return this.observers}getOptimisticResult(e){return this.findMatchingObservers(e).map(t=>t.observer.getOptimisticResult(t.defaultedQueryOptions))}findMatchingObservers(e){const t=this.observers,s=new Map(t.map(d=>[d.options.queryHash,d])),r=e.map(d=>this.client.defaultQueryOptions(d)),n=r.flatMap(d=>{const c=s.get(d.queryHash);return c!=null?[{defaultedQueryOptions:d,observer:c}]:[]}),u=new Set(n.map(d=>d.defaultedQueryOptions.queryHash)),a=r.filter(d=>!u.has(d.queryHash)),l=new Set(n.map(d=>d.observer)),o=t.filter(d=>!l.has(d)),h=d=>{const c=this.client.defaultQueryOptions(d),f=this.observersMap[c.queryHash];return f??new zt(this.client,c)},y=a.map((d,c)=>{if(d.keepPreviousData){const f=o[c];if(f!==void 0)return{defaultedQueryOptions:d,observer:f}}return{defaultedQueryOptions:d,observer:h(d)}}),b=(d,c)=>r.indexOf(d.defaultedQueryOptions)-r.indexOf(c.defaultedQueryOptions);return n.concat(y).sort(b)}onUpdate(e,t){const s=this.observers.indexOf(e);s!==-1&&(this.result=Gs(this.result,s,t),this.notify())}notify(){M.batch(()=>{this.listeners.forEach(({listener:e})=>{e(this.result)})})}}class li extends he{constructor(e,t){super(),this.client=e,this.setOptions(t),this.bindMethods(),this.updateResult()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){var t;const s=this.options;this.options=this.client.defaultMutationOptions(e),Ue(s,this.options)||this.client.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.currentMutation,observer:this}),(t=this.currentMutation)==null||t.setOptions(this.options)}onUnsubscribe(){if(!this.hasListeners()){var e;(e=this.currentMutation)==null||e.removeObserver(this)}}onMutationUpdate(e){this.updateResult();const t={listeners:!0};e.type==="success"?t.onSuccess=!0:e.type==="error"&&(t.onError=!0),this.notify(t)}getCurrentResult(){return this.currentResult}reset(){this.currentMutation=void 0,this.updateResult(),this.notify({listeners:!0})}mutate(e,t){return this.mutateOptions=t,this.currentMutation&&this.currentMutation.removeObserver(this),this.currentMutation=this.client.getMutationCache().build(this.client,{...this.options,variables:typeof e<"u"?e:this.options.variables}),this.currentMutation.addObserver(this),this.currentMutation.execute()}updateResult(){const e=this.currentMutation?this.currentMutation.state:It(),t={...e,isLoading:e.status==="loading",isSuccess:e.status==="success",isError:e.status==="error",isIdle:e.status==="idle",mutate:this.mutate,reset:this.reset};this.currentResult=t}notify(e){M.batch(()=>{if(this.mutateOptions&&this.hasListeners()){if(e.onSuccess){var t,s,r,n;(t=(s=this.mutateOptions).onSuccess)==null||t.call(s,this.currentResult.data,this.currentResult.variables,this.currentResult.context),(r=(n=this.mutateOptions).onSettled)==null||r.call(n,this.currentResult.data,null,this.currentResult.variables,this.currentResult.context)}else if(e.onError){var u,a,l,o;(u=(a=this.mutateOptions).onError)==null||u.call(a,this.currentResult.error,this.currentResult.variables,this.currentResult.context),(l=(o=this.mutateOptions).onSettled)==null||l.call(o,void 0,this.currentResult.error,this.currentResult.variables,this.currentResult.context)}}e.listeners&&this.listeners.forEach(({listener:h})=>{h(this.currentResult)})})}}const jt="$$_queryClient",oi=()=>{const i=Rt(jt);if(!i)throw new Error("No QueryClient was found in Svelte context. Did you forget to wrap your component with QueryClientProvider?");return i},Mi=i=>{es(jt,i)};function et(){return oi()}function ci(i,e){const t=et(),s=t.defaultQueryOptions(i);s._optimisticResults="optimistic";let r=new e(t,s);s.onError&&(s.onError=M.batchCalls(s.onError)),s.onSuccess&&(s.onSuccess=M.batchCalls(s.onSuccess)),s.onSettled&&(s.onSettled=M.batchCalls(s.onSettled)),de(r).subscribe(a=>{r=a,r.setOptions(s,{listeners:!1})});const n=de(r.getCurrentResult(),a=>r.subscribe(M.batchCalls(a))),{subscribe:u}=Et(n,a=>(a=r.getOptimisticResult(s),s.notifyOnChangeProps?a:r.trackResult(a)));return{subscribe:u}}function hi(i,e,t){const s=pe(i,e,t);return ci(s,zt)}function fi(i){const e=et();function t(u){return u.map(a=>{const l=e.defaultQueryOptions(a);return l._optimisticResults="optimistic",l})}const s=t(i);let r=new ui(e,s);de(r).subscribe(u=>{r=u,r.setQueries(s,{listeners:!1})});const{subscribe:n}=de(r.getOptimisticResult(s),u=>r.subscribe(M.batchCalls(u)));return{subscribe:n}}function di(i,e,t){const s=Ws(i,e,t),r=et();let n=new li(r,s),u;de(n).subscribe(o=>{n=o,u=(h,y)=>{n.mutate(h,y).catch(mi)},n.setOptions(s)});const a=de(n.getCurrentResult(),o=>n.subscribe(M.batchCalls(h=>o(h)))),{subscribe:l}=Et(a,o=>({...o,mutate:u,mutateAsync:o.mutate}));return{subscribe:l}}function mi(){}const Bt=(i,e,...t)=>[...i,e,...t];function yi(i,e,t={}){return e=Array.isArray(e)?e:[e],(...s)=>hi({queryKey:Bt(e,i.name,...s),queryFn:()=>i(...s),...t})}function Ai(i,e,t=[]){return e=Array.isArray(e)?e:[e],s=>{const r=s.map(n=>({queryKey:Bt(e,i.name,...n),queryFn:()=>i(...n),...t}));return fi(r)}}function Fi(i,e={}){return()=>di({mutationFn:t=>i(...t),...e})}const bi="tasks",Qi=yi(Hs.getTaskManifest,bi,{staleTime:3e3,refetchInterval:3e3,refetchIntervalInBackground:!1,refetchOnWindowFocus:!0}),Ct=Pt([]),ki=new ni({defaultOptions:{queries:{refetchOnWindowFocus:!1,staleTime:1/0,retry:!1,onError:i=>{var e;console.error((e=i.body)==null?void 0:e.detail),Ct.update(t=>[...t,i])}},mutations:{onError:i=>{var e;console.error((e=i.body)==null?void 0:e.detail),Ct.update(t=>[...t,i])}}}}),Nt=Pt({taskCallbacks:new Map});function qi(i,e){Nt.update(t=>(t.taskCallbacks.set(i,e),t))}function Di(i){Nt.update(e=>{var t;for(const s of e.taskCallbacks.keys()){const r=i.tasks[s];((r==null?void 0:r.status)=="error"||r.status==="completed")&&((t=e.taskCallbacks.get(s))==null||t(r),e.taskCallbacks.delete(s))}return e})}export{Oi as B,Si as C,wi as E,ks as O,ni as Q,bi as T,_i as W,ki as a,Ct as b,Ri as c,Ci as d,yi as e,Fi as f,hi as g,zt as h,ri as i,Ei as j,Pi as k,ci as l,Ai as m,Di as o,pe as p,Qi as q,Ks as r,Mi as s,qi as w}; diff --git a/web/blueprint/build/_app/immutable/chunks/urlHashStore.b3058edb.js b/web/blueprint/build/_app/immutable/chunks/urlHashStore.b3058edb.js new file mode 100644 index 0000000000000000000000000000000000000000..3bcaa4b695ce22d9f059207843027376d01984ca --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/urlHashStore.b3058edb.js @@ -0,0 +1 @@ +import{S as G,i as K,s as Q,e as F,b as I,$ as J,h as b,D as M,E as H,F as T,k as O,q as S,a as R,a2 as p,l as D,m as y,r as V,c as j,a3 as L,n,H as c,I as q,J as m,u as C,O as z}from"./index.224851d7.js";import{w as U}from"./index.fd964a74.js";function W(l){let e,i,s,u,t,d,g,v,_,f=l[0]&&N(l),r=[{"aria-atomic":"true"},{"aria-labelledby":l[4]},{"aria-live":_=l[1]?"assertive":"off"},l[6]],k={};for(let o=0;o{e=H(H({},e),T(r)),i(6,t=M(e,u)),"small"in r&&i(0,d=r.small),"active"in r&&i(1,g=r.active),"withOverlay"in r&&i(2,v=r.withOverlay),"description"in r&&i(3,_=r.description),"id"in r&&i(4,f=r.id)},l.$$.update=()=>{l.$$.dirty&1&&i(5,s=d?"42":"44")},[d,g,v,_,f,s,t]}class x extends G{constructor(e){super(),K(this,e,Z,Y,Q,{small:0,active:1,withOverlay:2,description:3,id:4})}}const ae=x,{subscribe:$,update:ee}=U({hash:"",onHashChange(l,e){const i=this.hash.replace(/^#!/,"").match(l);i!=null&&e(i.groups||{})}}),re={subscribe:$,set(l){ee(e=>(e.hash=l,e))}};export{ae as L,re as u}; diff --git a/web/blueprint/build/_app/immutable/chunks/utils.2fa053fd.js b/web/blueprint/build/_app/immutable/chunks/utils.2fa053fd.js new file mode 100644 index 0000000000000000000000000000000000000000..6725c822d755ee1a9f56f5e9ec59414b4d606389 --- /dev/null +++ b/web/blueprint/build/_app/immutable/chunks/utils.2fa053fd.js @@ -0,0 +1 @@ +import{S as he,i as _e,s as me,e as B,b as R,$ as H,h as P,D as Y,E as N,F as pe,Q as y,k as V,l as x,m as G,I as F,H as v,K as S,O as te,P as ae,a0 as ge,p as J}from"./index.224851d7.js";import{r as h,O as _,h as ye,i as W,j as Se,k as be,p as ve,l as Ee,e as g,f as j,a as b,m as Pe,T as we,w as Te}from"./taskMonitoringStore.8317b9f1.js";function X(t,e,a){const s=t.slice();return s[2]=e[a].width,s}function Ae(t){let e,a,s,n,r=[t[4],{style:a="width: "+t[2]+";"+t[4].style}],o={};for(let l=0;l{e=N(N({},e),pe(c)),a(4,l=Y(e,o)),"lines"in c&&a(5,i=c.lines),"heading"in c&&a(0,d=c.heading),"paragraph"in c&&a(1,u=c.paragraph),"width"in c&&a(2,p=c.width)},t.$$.update=()=>{if(t.$$.dirty&4&&a(7,n=parseInt(p,10)),t.$$.dirty&4&&a(6,r=p.includes("px")),t.$$.dirty&238&&u)for(let c=0;ce.includes(".")?`"${e}"`:e).join(".")}function Ce(t){return t.dtype&&!["embedding","binary","string_span"].includes(t.dtype)}function Ke(t){return t.dtype&&!["embedding","binary"].includes(t.dtype)}function w(t){var a;return Array.isArray(t)?t:((a=t.match(/(?:"[^"]*"|[^.])+(?:\.+$)?/g))==null?void 0:a.map(s=>s.replace(/"/g,"")))||[]}function Ne(t,e){if(!t||!e||(t=w(t),e=w(e),t.length!==e.length))return!1;for(let a=0;aa.path.length>0)}function Ye(t){return t==null?[]:T(t).filter(e=>e.dtype!=null)}function Je(t,e){return e==null?[]:(e?T(e):[]).filter(s=>s.dtype==t)}function O(t){let e;if(Array.isArray(t))e=[...t,...t.flatMap(O)];else{const{[E]:a,[A]:s,[M]:n,...r}=t,o=Object.values(r||{});e=[];for(const l of o)if(Array.isArray(l)){e=[...e,l];for(const i of l)e=[...e,i,...O(i)]}else e=[...e,l,...O(l)]}return e}function We(t,e){return T(t).find(s=>K(s.path,e))}function Xe(t,e){return O(t).filter(s=>K(e,ne.path(s)))}function $(t,e,a=!1){return Ie(e)&&(a=!0),e===t?a:e.fields!=null?Object.values(e.fields).some(s=>$(t,s,a)):e.repeated_field!=null?$(t,e.repeated_field,a):!1}function Ie(t){return t.signal!=null}const ne={path:t=>{if(!t)return;const e=t[A];if(e==null)throw Error(`Item does not have a path defined: ${JSON.stringify(t)}`);return e},value:(t,e)=>{if(t)return t[E]},field:t=>{if(t)return t[M]},dtype:t=>{const e=ne.field(t);return e==null?void 0:e.dtype}};function q(t,e){const{fields:a,repeated_field:s,...n}=t,r={...n,path:[]};if(a!=null){r.fields={};for(const[o,l]of Object.entries(a)){const i=q(l,[...e,o]);i.path=[...e,o],r.fields[o]=i}}if(s!=null){const o=q(s,[...e,I]);o.path=[...e,I],r.repeated_field=o}return r}function L(t,e,a){const s=e.find(r=>K(r.path,a));let n={};if(Array.isArray(t))return n=t.map((r,o)=>L(r,e,[...a,o.toString()])),n[E]=null,n[A]=a,n[M]=s,n;if(t!=null&&typeof t=="object"){const{[E]:r,...o}=t;n=Object.entries(o).reduce((l,[i,d])=>(l[i]=L(d,e,[...a,i]),l),{}),n[E]=r}else n[E]=t;return n[A]=a,n[M]=s,n}class Re extends ye{constructor(e,a){super(e,a)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e,a){super.setOptions({...e,behavior:W()},a)}getOptimisticResult(e){return e.behavior=W(),super.getOptimisticResult(e)}fetchNextPage({pageParam:e,...a}={}){return this.fetch({...a,meta:{fetchMore:{direction:"forward",pageParam:e}}})}fetchPreviousPage({pageParam:e,...a}={}){return this.fetch({...a,meta:{fetchMore:{direction:"backward",pageParam:e}}})}createResult(e,a){var s,n,r,o,l,i;const{state:d}=e,u=super.createResult(e,a),{isFetching:p,isRefetching:Q}=u,k=p&&((s=d.fetchMeta)==null||(n=s.fetchMore)==null?void 0:n.direction)==="forward",D=p&&((r=d.fetchMeta)==null||(o=r.fetchMore)==null?void 0:o.direction)==="backward";return{...u,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:Se(a,(l=d.data)==null?void 0:l.pages),hasPreviousPage:be(a,(i=d.data)==null?void 0:i.pages),isFetchingNextPage:k,isFetchingPreviousPage:D,isRefetching:Q&&!k&&!D}}}function je(t,e,a){const s=ve(t,e,a);return Ee(s,Re)}const f="datasets",ee=20,Ze=g(m.getDatasets,f),$e=g(m.getManifest,f,{}),et=g(m.getManifest,f,{select:t=>se(t.dataset_manifest.data_schema)}),tt=g(C.getSources,f),at=g(C.getSourceSchema,f,{select:t=>t}),st=j(C.load),rt=j(m.computeSignal,{onSuccess:t=>{b.invalidateQueries([we]),Te(t.task_id,()=>{b.invalidateQueries([f,"getManifest"]),b.invalidateQueries([f,"selectRowsSchema"]),b.invalidateQueries([f,"selectRows"])})}}),nt=j(m.deleteDataset,{onSuccess:()=>{b.invalidateQueries([f])}}),it=j(m.deleteSignal,{onSuccess:()=>{b.invalidateQueries([f,"getManifest"]),b.invalidateQueries([f,"selectRowsSchema"]),b.invalidateQueries([f,"selectRows"])}}),ot=g(m.getStats,f),lt=Pe(m.getStats,f);g(function(e,a,s,n){return m.selectRows(e,a,s).then(r=>({rows:r.rows.map(o=>re(o,n)),total_num_rows:r.total_num_rows}))},f);const ct=g(m.selectRowsSchema,f,{select:t=>({schema:se(t.data_schema),...t})}),ut=g(m.selectGroups,f),dt=(t,e,a,s)=>je({queryKey:[f,"selectRows",t,e,a],queryFn:({pageParam:n=0})=>m.selectRows(t,e,{...a,limit:a.limit||ee,offset:n*(a.limit||ee)}),select:n=>({...n,pages:n.pages.map(r=>({rows:r.rows.map(o=>re(o,s)),total_num_rows:r.total_num_rows}))}),getNextPageParam:(n,r)=>r.length,enabled:!!s});function ft(t){return t!=null}function ht(t,e){return`/concepts#!/${t}/${e}`}function _t(t,e){return`/datasets#!/${t}/${e}`}export{Ke as A,ot as B,ut as C,lt as D,ct as E,f as F,Ue as G,He as H,xe as I,tt as J,st as K,ne as L,at as M,I as P,Le as S,Ve as U,E as V,_t as a,T as b,ht as c,nt as d,w as e,Ye as f,Je as g,We as h,K as i,Be as j,ze as k,Xe as l,O as m,ft as n,Ie as o,Ne as p,Ze as q,rt as r,Ge as s,$e as t,et as u,Fe as v,dt as w,it as x,$ as y,Ce as z}; diff --git a/web/blueprint/build/_app/immutable/entry/app.0ed2c1ef.js b/web/blueprint/build/_app/immutable/entry/app.0ed2c1ef.js new file mode 100644 index 0000000000000000000000000000000000000000..d8b37e3ef7c9839e4ddc99061a502409b9615dc3 --- /dev/null +++ b/web/blueprint/build/_app/immutable/entry/app.0ed2c1ef.js @@ -0,0 +1 @@ +import{S as C,i as q,s as U,a as j,e as h,c as z,b as w,d as p,f as P,g as d,h as g,j as W,o as F,k as G,l as H,m as J,n as A,p as m,q as K,r as M,u as Q,v as y,w as D,x as E,y as v,z as I,A as R,B as L}from"../chunks/index.224851d7.js";const X="modulepreload",Y=function(a,e){return new URL(a,e).href},O={},k=function(e,n,i){if(!n||n.length===0)return e();const s=document.getElementsByTagName("link");return Promise.all(n.map(f=>{if(f=Y(f,i),f in O)return;O[f]=!0;const t=f.endsWith(".css"),r=t?'[rel="stylesheet"]':"";if(!!i)for(let l=s.length-1;l>=0;l--){const u=s[l];if(u.href===f&&(!t||u.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${r}`))return;const o=document.createElement("link");if(o.rel=t?"stylesheet":X,t||(o.as="script",o.crossOrigin=""),o.href=f,document.head.appendChild(o),t)return new Promise((l,u)=>{o.addEventListener("load",l),o.addEventListener("error",()=>u(new Error(`Unable to preload CSS for ${f}`)))})})).then(()=>e())},ie={};function Z(a){let e,n,i;var s=a[1][0];function f(t){return{props:{data:t[3],form:t[2]}}}return s&&(e=E(s,f(a)),a[12](e)),{c(){e&&v(e.$$.fragment),n=h()},l(t){e&&I(e.$$.fragment,t),n=h()},m(t,r){e&&R(e,t,r),w(t,n,r),i=!0},p(t,r){const _={};if(r&8&&(_.data=t[3]),r&4&&(_.form=t[2]),r&2&&s!==(s=t[1][0])){if(e){y();const o=e;p(o.$$.fragment,1,0,()=>{L(o,1)}),P()}s?(e=E(s,f(t)),t[12](e),v(e.$$.fragment),d(e.$$.fragment,1),R(e,n.parentNode,n)):e=null}else s&&e.$set(_)},i(t){i||(e&&d(e.$$.fragment,t),i=!0)},o(t){e&&p(e.$$.fragment,t),i=!1},d(t){a[12](null),t&&g(n),e&&L(e,t)}}}function $(a){let e,n,i;var s=a[1][0];function f(t){return{props:{data:t[3],$$slots:{default:[x]},$$scope:{ctx:t}}}}return s&&(e=E(s,f(a)),a[11](e)),{c(){e&&v(e.$$.fragment),n=h()},l(t){e&&I(e.$$.fragment,t),n=h()},m(t,r){e&&R(e,t,r),w(t,n,r),i=!0},p(t,r){const _={};if(r&8&&(_.data=t[3]),r&8215&&(_.$$scope={dirty:r,ctx:t}),r&2&&s!==(s=t[1][0])){if(e){y();const o=e;p(o.$$.fragment,1,0,()=>{L(o,1)}),P()}s?(e=E(s,f(t)),t[11](e),v(e.$$.fragment),d(e.$$.fragment,1),R(e,n.parentNode,n)):e=null}else s&&e.$set(_)},i(t){i||(e&&d(e.$$.fragment,t),i=!0)},o(t){e&&p(e.$$.fragment,t),i=!1},d(t){a[11](null),t&&g(n),e&&L(e,t)}}}function x(a){let e,n,i;var s=a[1][1];function f(t){return{props:{data:t[4],form:t[2]}}}return s&&(e=E(s,f(a)),a[10](e)),{c(){e&&v(e.$$.fragment),n=h()},l(t){e&&I(e.$$.fragment,t),n=h()},m(t,r){e&&R(e,t,r),w(t,n,r),i=!0},p(t,r){const _={};if(r&16&&(_.data=t[4]),r&4&&(_.form=t[2]),r&2&&s!==(s=t[1][1])){if(e){y();const o=e;p(o.$$.fragment,1,0,()=>{L(o,1)}),P()}s?(e=E(s,f(t)),t[10](e),v(e.$$.fragment),d(e.$$.fragment,1),R(e,n.parentNode,n)):e=null}else s&&e.$set(_)},i(t){i||(e&&d(e.$$.fragment,t),i=!0)},o(t){e&&p(e.$$.fragment,t),i=!1},d(t){a[10](null),t&&g(n),e&&L(e,t)}}}function T(a){let e,n=a[6]&&V(a);return{c(){e=G("div"),n&&n.c(),this.h()},l(i){e=H(i,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var s=J(e);n&&n.l(s),s.forEach(g),this.h()},h(){A(e,"id","svelte-announcer"),A(e,"aria-live","assertive"),A(e,"aria-atomic","true"),m(e,"position","absolute"),m(e,"left","0"),m(e,"top","0"),m(e,"clip","rect(0 0 0 0)"),m(e,"clip-path","inset(50%)"),m(e,"overflow","hidden"),m(e,"white-space","nowrap"),m(e,"width","1px"),m(e,"height","1px")},m(i,s){w(i,e,s),n&&n.m(e,null)},p(i,s){i[6]?n?n.p(i,s):(n=V(i),n.c(),n.m(e,null)):n&&(n.d(1),n=null)},d(i){i&&g(e),n&&n.d()}}}function V(a){let e;return{c(){e=K(a[7])},l(n){e=M(n,a[7])},m(n,i){w(n,e,i)},p(n,i){i&128&&Q(e,n[7])},d(n){n&&g(e)}}}function ee(a){let e,n,i,s,f;const t=[$,Z],r=[];function _(l,u){return l[1][1]?0:1}e=_(a),n=r[e]=t[e](a);let o=a[5]&&T(a);return{c(){n.c(),i=j(),o&&o.c(),s=h()},l(l){n.l(l),i=z(l),o&&o.l(l),s=h()},m(l,u){r[e].m(l,u),w(l,i,u),o&&o.m(l,u),w(l,s,u),f=!0},p(l,[u]){let b=e;e=_(l),e===b?r[e].p(l,u):(y(),p(r[b],1,1,()=>{r[b]=null}),P(),n=r[e],n?n.p(l,u):(n=r[e]=t[e](l),n.c()),d(n,1),n.m(i.parentNode,i)),l[5]?o?o.p(l,u):(o=T(l),o.c(),o.m(s.parentNode,s)):o&&(o.d(1),o=null)},i(l){f||(d(n),f=!0)},o(l){p(n),f=!1},d(l){r[e].d(l),l&&g(i),o&&o.d(l),l&&g(s)}}}function te(a,e,n){let{stores:i}=e,{page:s}=e,{constructors:f}=e,{components:t=[]}=e,{form:r}=e,{data_0:_=null}=e,{data_1:o=null}=e;W(i.page.notify);let l=!1,u=!1,b=null;F(()=>{const c=i.page.subscribe(()=>{l&&(n(6,u=!0),n(7,b=document.title||"untitled page"))});return n(5,l=!0),c});function N(c){D[c?"unshift":"push"](()=>{t[1]=c,n(0,t)})}function S(c){D[c?"unshift":"push"](()=>{t[0]=c,n(0,t)})}function B(c){D[c?"unshift":"push"](()=>{t[0]=c,n(0,t)})}return a.$$set=c=>{"stores"in c&&n(8,i=c.stores),"page"in c&&n(9,s=c.page),"constructors"in c&&n(1,f=c.constructors),"components"in c&&n(0,t=c.components),"form"in c&&n(2,r=c.form),"data_0"in c&&n(3,_=c.data_0),"data_1"in c&&n(4,o=c.data_1)},a.$$.update=()=>{a.$$.dirty&768&&i.page.set(s)},[t,f,r,_,o,l,u,b,i,s,N,S,B]}class se extends C{constructor(e){super(),q(this,e,te,ee,U,{stores:8,page:9,constructors:1,components:0,form:2,data_0:3,data_1:4})}}const re=[()=>k(()=>import("../nodes/0.4e494f60.js"),["../nodes/0.4e494f60.js","../chunks/index.224851d7.js","../chunks/Modal.67c6d9e8.js","../chunks/taskMonitoringStore.8317b9f1.js","../chunks/index.fd964a74.js","../chunks/Checkmark.b39b03df.js","../chunks/urlHashStore.b3058edb.js","../chunks/Toggle.b9cf6836.js","../chunks/NotificationIcon.9209ca8c.js","../assets/0.5f010142.css"],import.meta.url),()=>k(()=>import("../nodes/1.d02cbd87.js"),["../nodes/1.d02cbd87.js","../chunks/index.224851d7.js","../chunks/singletons.0ccee753.js","../chunks/index.fd964a74.js"],import.meta.url),()=>k(()=>import("../nodes/2.e3dcc6bf.js"),["../nodes/2.e3dcc6bf.js","../chunks/index.224851d7.js","../chunks/navigation.6c9a524e.js","../chunks/singletons.0ccee753.js","../chunks/index.fd964a74.js","../chunks/utils.2fa053fd.js","../chunks/taskMonitoringStore.8317b9f1.js","../chunks/InProgress.26146721.js","../chunks/TrashCan.e59ed4ef.js","../chunks/Modal.67c6d9e8.js","../chunks/InlineNotification.91d7c257.js","../chunks/NotificationIcon.9209ca8c.js"],import.meta.url),()=>k(()=>import("../nodes/3.d9dd4803.js"),["../nodes/3.d9dd4803.js","../chunks/index.224851d7.js","../chunks/navigation.6c9a524e.js","../chunks/singletons.0ccee753.js","../chunks/index.fd964a74.js","../chunks/Commands.7700196d.js","../chunks/taskMonitoringStore.8317b9f1.js","../chunks/utils.2fa053fd.js","../chunks/Modal.67c6d9e8.js","../chunks/JSONSchemaForm.cab38fde.js","../chunks/Toggle.b9cf6836.js","../assets/JSONSchemaForm.6952875e.css","../chunks/urlHashStore.b3058edb.js","../assets/Commands.bc67c1e9.css","../chunks/TrashCan.e59ed4ef.js","../chunks/InProgress.26146721.js"],import.meta.url),()=>k(()=>import("../nodes/4.cfdecd09.js"),["../nodes/4.cfdecd09.js","../chunks/index.224851d7.js","../chunks/urlHashStore.b3058edb.js","../chunks/index.fd964a74.js","../chunks/Commands.7700196d.js","../chunks/taskMonitoringStore.8317b9f1.js","../chunks/utils.2fa053fd.js","../chunks/Modal.67c6d9e8.js","../chunks/JSONSchemaForm.cab38fde.js","../chunks/Toggle.b9cf6836.js","../assets/JSONSchemaForm.6952875e.css","../assets/Commands.bc67c1e9.css","../chunks/Checkmark.b39b03df.js","../chunks/ComboBox.1a71e223.js","../chunks/InlineNotification.91d7c257.js","../chunks/NotificationIcon.9209ca8c.js","../chunks/InProgress.26146721.js","../assets/4.77bdd972.css"],import.meta.url),()=>k(()=>import("../nodes/5.e562ff0a.js"),["../nodes/5.e562ff0a.js","../chunks/index.224851d7.js","../chunks/navigation.6c9a524e.js","../chunks/singletons.0ccee753.js","../chunks/index.fd964a74.js","../chunks/JSONSchemaForm.cab38fde.js","../chunks/Toggle.b9cf6836.js","../chunks/taskMonitoringStore.8317b9f1.js","../assets/JSONSchemaForm.6952875e.css","../chunks/ComboBox.1a71e223.js","../chunks/utils.2fa053fd.js","../chunks/InlineNotification.91d7c257.js","../chunks/NotificationIcon.9209ca8c.js","../assets/5.2a87a76f.css"],import.meta.url)],oe=[],ae={"/":[2],"/concepts":[3],"/datasets":[4],"/datasets/new":[5]},le={handleError:({error:a})=>{console.error(a)}};export{ae as dictionary,le as hooks,ie as matchers,re as nodes,se as root,oe as server_loads}; diff --git a/web/blueprint/build/_app/immutable/entry/start.a1657a4f.js b/web/blueprint/build/_app/immutable/entry/start.a1657a4f.js new file mode 100644 index 0000000000000000000000000000000000000000..89e514799f63d21c0627041d42a249bf8cba0d21 --- /dev/null +++ b/web/blueprint/build/_app/immutable/entry/start.a1657a4f.js @@ -0,0 +1,3 @@ +import{o as De,t as ye}from"../chunks/index.224851d7.js";import{S as He,a as Je,I as V,g as Ce,f as Ve,b as we,c as le,s as M,d as Q,i as _e,e as J,P as qe,h as We}from"../chunks/singletons.0ccee753.js";function Xe(t,o){return t==="/"||o==="ignore"?t:o==="never"?t.endsWith("/")?t.slice(0,-1):t:o==="always"&&!t.endsWith("/")?t+"/":t}function Ze(t){return t.split("%25").map(decodeURI).join("%25")}function Qe(t){for(const o in t)t[o]=decodeURIComponent(t[o]);return t}const et=["href","pathname","search","searchParams","toString","toJSON"];function tt(t,o){const u=new URL(t);for(const i of et)Object.defineProperty(u,i,{get(){return o(),t[i]},enumerable:!0,configurable:!0});return nt(u),u}function nt(t){Object.defineProperty(t,"hash",{get(){throw new Error("Cannot access event.url.hash. Consider using `$page.url.hash` inside a component instead")}})}const at="/__data.json";function rt(t){return t.replace(/\/$/,"")+at}function Ke(t){try{return JSON.parse(sessionStorage[t])}catch{}}function Fe(t,o){const u=JSON.stringify(o);try{sessionStorage[t]=u}catch{}}function ot(...t){let o=5381;for(const u of t)if(typeof u=="string"){let i=u.length;for(;i;)o=o*33^u.charCodeAt(--i)}else if(ArrayBuffer.isView(u)){const i=new Uint8Array(u.buffer,u.byteOffset,u.byteLength);let d=i.length;for(;d;)o=o*33^i[--d]}else throw new TypeError("value must be a string or TypedArray");return(o>>>0).toString(36)}const fe=window.fetch;window.fetch=(t,o)=>((t instanceof Request?t.method:(o==null?void 0:o.method)||"GET")!=="GET"&&te.delete(Se(t)),fe(t,o));const te=new Map;function it(t,o){const u=Se(t,o),i=document.querySelector(u);if(i!=null&&i.textContent){const{body:d,...f}=JSON.parse(i.textContent),S=i.getAttribute("data-ttl");return S&&te.set(u,{body:d,init:f,ttl:1e3*Number(S)}),Promise.resolve(new Response(d,f))}return fe(t,o)}function st(t,o,u){if(te.size>0){const i=Se(t,u),d=te.get(i);if(d){if(performance.now(){const d=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(i);if(d)return o.push({name:d[1],matcher:d[2],optional:!1,rest:!0,chained:!0}),"(?:/(.*))?";const f=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(i);if(f)return o.push({name:f[1],matcher:f[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!i)return;const S=i.split(/\[(.+?)\](?!\])/);return"/"+S.map((b,w)=>{if(w%2){if(b.startsWith("x+"))return be(String.fromCharCode(parseInt(b.slice(2),16)));if(b.startsWith("u+"))return be(String.fromCharCode(...b.slice(2).split("-").map(P=>parseInt(P,16))));const p=ct.exec(b);if(!p)throw new Error(`Invalid param: ${b}. Params and matcher names can only have underscores and alphanumeric characters.`);const[,D,x,k,N]=p;return o.push({name:k,matcher:N,optional:!!D,rest:!!x,chained:x?w===1&&S[0]==="":!1}),x?"(.*?)":D?"([^/]*)?":"([^/]+?)"}return be(b)}).join("")}).join("")}/?$`),params:o}}function ft(t){return!/^\([^)]+\)$/.test(t)}function ut(t){return t.slice(1).split("/").filter(ft)}function dt(t,o,u){const i={},d=t.slice(1);let f=0;for(let S=0;Sw).join("/"),f=0;continue}if(b===void 0){l.rest&&(i[l.name]="");continue}if(!l.matcher||u[l.matcher](b)){i[l.name]=b;const w=o[S+1],p=d[S+1];w&&!w.rest&&w.optional&&p&&l.chained&&(f=0);continue}if(l.optional&&l.chained){f++;continue}return}if(!f)return i}function be(t){return t.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function pt({nodes:t,server_loads:o,dictionary:u,matchers:i}){const d=new Set(o);return Object.entries(u).map(([l,[b,w,p]])=>{const{pattern:D,params:x}=lt(l),k={id:l,exec:N=>{const P=D.exec(N);if(P)return dt(P,x,i)},errors:[1,...p||[]].map(N=>t[N]),layouts:[0,...w||[]].map(S),leaf:f(b)};return k.errors.length=k.layouts.length=Math.max(k.errors.length,k.layouts.length),k});function f(l){const b=l<0;return b&&(l=~l),[b,t[l]]}function S(l){return l===void 0?l:[d.has(l),t[l]]}}class ee{constructor(o,u){this.status=o,typeof u=="string"?this.body={message:u}:u?this.body=u:this.body={message:`Error: ${o}`}}toString(){return JSON.stringify(this.body)}}class Me{constructor(o,u){this.status=o,this.location=u}}async function ht(t){var o;for(const u in t)if(typeof((o=t[u])==null?void 0:o.then)=="function")return Object.fromEntries(await Promise.all(Object.entries(t).map(async([i,d])=>[i,await d])));return t}const gt=-1,mt=-2,yt=-3,wt=-4,_t=-5,bt=-6;function vt(t,o){if(typeof t=="number")return d(t,!0);if(!Array.isArray(t)||t.length===0)throw new Error("Invalid input");const u=t,i=Array(u.length);function d(f,S=!1){if(f===gt)return;if(f===yt)return NaN;if(f===wt)return 1/0;if(f===_t)return-1/0;if(f===bt)return-0;if(S)throw new Error("Invalid input");if(f in i)return i[f];const l=u[f];if(!l||typeof l!="object")i[f]=l;else if(Array.isArray(l))if(typeof l[0]=="string"){const b=l[0],w=o==null?void 0:o[b];if(w)return i[f]=w(d(l[1]));switch(b){case"Date":i[f]=new Date(l[1]);break;case"Set":const p=new Set;i[f]=p;for(let k=1;ko!=null)}const kt="x-sveltekit-invalidated",K=Ke(He)??{},Z=Ke(Je)??{};function ve(t){K[t]=Q()}function Rt(t,o){var $e;const u=pt(t),i=t.nodes[0],d=t.nodes[1];i(),d();const f=document.documentElement,S=[],l=[];let b=null;const w={before_navigate:[],after_navigate:[]};let p={branch:[],error:null,url:null},D=!1,x=!1,k=!0,N=!1,P=!1,z=!1,B=!1,q,j=($e=history.state)==null?void 0:$e[V];j||(j=Date.now(),history.replaceState({...history.state,[V]:j},"",location.href));const ue=K[j];ue&&(history.scrollRestoration="manual",scrollTo(ue.x,ue.y));let F,ne,ae;async function ke(){ae=ae||Promise.resolve(),await ae,ae=null;const e=new URL(location.href),n=W(e,!0);b=null;const r=ne={},a=n&&await he(n);if(r===ne&&a){if(a.type==="redirect")return re(new URL(a.location,e).href,{},[e.pathname],r);a.props.page!==void 0&&(F=a.props.page),q.$set(a.props)}}function Re(e){l.some(n=>n==null?void 0:n.snapshot)&&(Z[e]=l.map(n=>{var r;return(r=n==null?void 0:n.snapshot)==null?void 0:r.capture()}))}function Ae(e){var n;(n=Z[e])==null||n.forEach((r,a)=>{var s,c;(c=(s=l[a])==null?void 0:s.snapshot)==null||c.restore(r)})}function Ie(){ve(j),Fe(He,K),Re(j),Fe(Je,Z)}async function re(e,{noScroll:n=!1,replaceState:r=!1,keepFocus:a=!1,state:s={},invalidateAll:c=!1},g,m){return typeof e=="string"&&(e=new URL(e,Ce(document))),ce({url:e,scroll:n?Q():null,keepfocus:a,redirect_chain:g,details:{state:s,replaceState:r},nav_token:m,accepted:()=>{c&&(B=!0)},blocked:()=>{},type:"goto"})}async function Le(e){return b={id:e.id,promise:he(e).then(n=>(n.type==="loaded"&&n.state.error&&(b=null),n))},b.promise}async function oe(...e){const r=u.filter(a=>e.some(s=>a.exec(s))).map(a=>Promise.all([...a.layouts,a.leaf].map(s=>s==null?void 0:s[1]())));await Promise.all(r)}function Oe(e){var a;p=e.state;const n=document.querySelector("style[data-sveltekit]");n&&n.remove(),F=e.props.page,q=new t.root({target:o,props:{...e.props,stores:M,components:l},hydrate:!0}),Ae(j);const r={from:null,to:{params:p.params,route:{id:((a=p.route)==null?void 0:a.id)??null},url:new URL(location.href)},willUnload:!1,type:"enter"};w.after_navigate.forEach(s=>s(r)),x=!0}async function Y({url:e,params:n,branch:r,status:a,error:s,route:c,form:g}){let m="never";for(const _ of r)(_==null?void 0:_.slash)!==void 0&&(m=_.slash);e.pathname=Xe(e.pathname,m),e.search=e.search;const v={type:"loaded",state:{url:e,params:n,branch:r,error:s,route:c},props:{constructors:St(r).map(_=>_.node.component)}};g!==void 0&&(v.props.form=g);let y={},R=!F,A=0;for(let _=0;_(m.params.add(U),h[U])}),data:(c==null?void 0:c.data)??null,url:tt(r,()=>{m.url=!0}),async fetch(h,U){let $;h instanceof Request?($=h.url,U={body:h.method==="GET"||h.method==="HEAD"?void 0:await h.blob(),cache:h.cache,credentials:h.credentials,headers:h.headers,integrity:h.integrity,keepalive:h.keepalive,method:h.method,mode:h.mode,redirect:h.redirect,referrer:h.referrer,referrerPolicy:h.referrerPolicy,signal:h.signal,...U}):$=h;const C=new URL($,r);return O(C.href),C.origin===r.origin&&($=C.href.slice(r.origin.length)),x?st($,C.href,U):it($,U)},setHeaders:()=>{},depends:O,parent(){return m.parent=!0,n()}};g=await v.universal.load.call(null,_)??null,g=g?await ht(g):null}return{node:v,loader:e,server:c,universal:(R=v.universal)!=null&&R.load?{type:"data",data:g,uses:m}:null,data:g??(c==null?void 0:c.data)??null,slash:((A=v.universal)==null?void 0:A.trailingSlash)??(c==null?void 0:c.slash)}}function Pe(e,n,r,a,s){if(B)return!0;if(!a)return!1;if(a.parent&&e||a.route&&n||a.url&&r)return!0;for(const c of a.params)if(s[c]!==p.params[c])return!0;for(const c of a.dependencies)if(S.some(g=>g(new URL(c))))return!0;return!1}function pe(e,n){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?n??null:null}async function he({id:e,invalidating:n,url:r,params:a,route:s}){if((b==null?void 0:b.id)===e)return b.promise;const{errors:c,layouts:g,leaf:m}=s,v=[...g,m];c.forEach(E=>E==null?void 0:E().catch(()=>{})),v.forEach(E=>E==null?void 0:E[1]().catch(()=>{}));let y=null;const R=p.url?e!==p.url.pathname+p.url.search:!1,A=p.route?s.id!==p.route.id:!1;let O=!1;const _=v.map((E,L)=>{var H;const I=p.branch[L],T=!!(E!=null&&E[0])&&((I==null?void 0:I.loader)!==E[1]||Pe(O,A,R,(H=I.server)==null?void 0:H.uses,a));return T&&(O=!0),T});if(_.some(Boolean)){try{y=await Be(r,_)}catch(E){return ie({status:E instanceof ee?E.status:500,error:await X(E,{url:r,params:a,route:{id:s.id}}),url:r,route:s})}if(y.type==="redirect")return y}const h=y==null?void 0:y.nodes;let U=!1;const $=v.map(async(E,L)=>{var ge;if(!E)return;const I=p.branch[L],T=h==null?void 0:h[L];if((!T||T.type==="skip")&&E[1]===(I==null?void 0:I.loader)&&!Pe(U,A,R,(ge=I.universal)==null?void 0:ge.uses,a))return I;if(U=!0,(T==null?void 0:T.type)==="error")throw T;return de({loader:E[1],url:r,params:a,route:s,parent:async()=>{var Te;const je={};for(let me=0;me{});const C=[];for(let E=0;EPromise.resolve({}),server_data_node:pe(c)}),v={node:await d(),loader:d,universal:null,server:null,data:null};return await Y({url:r,params:s,branch:[m,v],status:e,error:n,route:null})}function W(e,n){if(_e(e,J))return;const r=se(e);for(const a of u){const s=a.exec(r);if(s)return{id:e.pathname+e.search,invalidating:n,route:a,params:Qe(s),url:e}}}function se(e){return Ze(e.pathname.slice(J.length)||"/")}function xe({url:e,type:n,intent:r,delta:a}){var m,v;let s=!1;const c={from:{params:p.params,route:{id:((m=p.route)==null?void 0:m.id)??null},url:p.url},to:{params:(r==null?void 0:r.params)??null,route:{id:((v=r==null?void 0:r.route)==null?void 0:v.id)??null},url:e},willUnload:!r,type:n};a!==void 0&&(c.delta=a);const g={...c,cancel:()=>{s=!0}};return P||w.before_navigate.forEach(y=>y(g)),s?null:c}async function ce({url:e,scroll:n,keepfocus:r,redirect_chain:a,details:s,type:c,delta:g,nav_token:m={},accepted:v,blocked:y}){var $,C,E;const R=W(e,!1),A=xe({url:e,type:c,delta:g,intent:R});if(!A){y();return}const O=j;v(),P=!0,x&&M.navigating.set(A),ne=m;let _=R&&await he(R);if(!_){if(_e(e,J))return await G(e);_=await Ne(e,{id:null},await X(new Error(`Not found: ${e.pathname}`),{url:e,params:{},route:{id:null}}),404)}if(e=(R==null?void 0:R.url)||e,ne!==m)return!1;if(_.type==="redirect")if(a.length>10||a.includes(e.pathname))_=await ie({status:500,error:await X(new Error("Redirect loop"),{url:e,params:{},route:{id:null}}),url:e,route:{id:null}});else return re(new URL(_.location,e).href,{},[...a,e.pathname],m),!1;else(($=_.props.page)==null?void 0:$.status)>=400&&await M.updated.check()&&await G(e);if(S.length=0,B=!1,N=!0,ve(O),Re(O),(C=_.props.page)!=null&&C.url&&_.props.page.url.pathname!==e.pathname&&(e.pathname=(E=_.props.page)==null?void 0:E.url.pathname),s){const L=s.replaceState?0:1;if(s.state[V]=j+=L,history[s.replaceState?"replaceState":"pushState"](s.state,"",e),!s.replaceState){let I=j+1;for(;Z[I]||K[I];)delete Z[I],delete K[I],I+=1}}b=null,x?(p=_.state,_.props.page&&(_.props.page.url=e),q.$set(_.props)):Oe(_);const{activeElement:h}=document;if(await ye(),k){const L=e.hash&&document.getElementById(decodeURIComponent(e.hash.slice(1)));n?scrollTo(n.x,n.y):L?L.scrollIntoView():scrollTo(0,0)}const U=document.activeElement!==h&&document.activeElement!==document.body;!r&&!U&&Ee(),k=!0,_.props.page&&(F=_.props.page),P=!1,c==="popstate"&&Ae(j),w.after_navigate.forEach(L=>L(A)),M.navigating.set(null),N=!1}async function Ne(e,n,r,a){return e.origin===location.origin&&e.pathname===location.pathname&&!D?await ie({status:a,error:r,url:e,route:n}):await G(e)}function G(e){return location.href=e.href,new Promise(()=>{})}function Ye(){let e;f.addEventListener("mousemove",c=>{const g=c.target;clearTimeout(e),e=setTimeout(()=>{a(g,2)},20)});function n(c){a(c.composedPath()[0],1)}f.addEventListener("mousedown",n),f.addEventListener("touchstart",n,{passive:!0});const r=new IntersectionObserver(c=>{for(const g of c)g.isIntersecting&&(oe(se(new URL(g.target.href))),r.unobserve(g.target))},{threshold:0});function a(c,g){const m=Ve(c,f);if(!m)return;const{url:v,external:y,download:R}=we(m,J);if(y||R)return;const A=le(m);if(!A.reload)if(g<=A.preload_data){const O=W(v,!1);O&&Le(O)}else g<=A.preload_code&&oe(se(v))}function s(){r.disconnect();for(const c of f.querySelectorAll("a")){const{url:g,external:m,download:v}=we(c,J);if(m||v)continue;const y=le(c);y.reload||(y.preload_code===qe.viewport&&r.observe(c),y.preload_code===qe.eager&&oe(se(g)))}}w.after_navigate.push(s),s()}function X(e,n){return e instanceof ee?e.body:t.hooks.handleError({error:e,event:n})??{message:n.route.id!=null?"Internal Error":"Not Found"}}return{after_navigate:e=>{De(()=>(w.after_navigate.push(e),()=>{const n=w.after_navigate.indexOf(e);w.after_navigate.splice(n,1)}))},before_navigate:e=>{De(()=>(w.before_navigate.push(e),()=>{const n=w.before_navigate.indexOf(e);w.before_navigate.splice(n,1)}))},disable_scroll_handling:()=>{(N||!x)&&(k=!1)},goto:(e,n={})=>re(e,n,[]),invalidate:e=>{if(typeof e=="function")S.push(e);else{const{href:n}=new URL(e,location.href);S.push(r=>r.href===n)}return ke()},invalidate_all:()=>(B=!0,ke()),preload_data:async e=>{const n=new URL(e,Ce(document)),r=W(n,!1);if(!r)throw new Error(`Attempted to preload a URL that does not belong to this app: ${n}`);await Le(r)},preload_code:oe,apply_action:async e=>{if(e.type==="error"){const n=new URL(location.href),{branch:r,route:a}=p;if(!a)return;const s=await Ue(p.branch.length,r,a.errors);if(s){const c=await Y({url:n,params:p.params,branch:r.slice(0,s.idx).concat(s.node),status:e.status??500,error:e.error,route:a});p=c.state,q.$set(c.props),ye().then(Ee)}}else e.type==="redirect"?re(e.location,{invalidateAll:!0},[]):(q.$set({form:null,page:{...F,form:e.data,status:e.status}}),await ye(),q.$set({form:e.data}),e.type==="success"&&Ee())},_start_router:()=>{var e;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{var a;let r=!1;if(Ie(),!P){const s={from:{params:p.params,route:{id:((a=p.route)==null?void 0:a.id)??null},url:p.url},to:null,willUnload:!0,type:"leave",cancel:()=>r=!0};w.before_navigate.forEach(c=>c(s))}r?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Ie()}),(e=navigator.connection)!=null&&e.saveData||Ye(),f.addEventListener("click",n=>{var A;if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const r=Ve(n.composedPath()[0],f);if(!r)return;const{url:a,external:s,target:c,download:g}=we(r,J);if(!a)return;if(c==="_parent"||c==="_top"){if(window.parent!==window)return}else if(c&&c!=="_self")return;const m=le(r);if(!(r instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||g)return;if(s||m.reload){xe({url:a,type:"link"})?P=!0:n.preventDefault();return}const[y,R]=a.href.split("#");if(R!==void 0&&y===location.href.split("#")[0]){if(p.url.hash===a.hash){n.preventDefault(),(A=r.ownerDocument.getElementById(R))==null||A.scrollIntoView();return}if(z=!0,ve(j),p.url=a,M.page.set({...F,url:a}),M.page.notify(),!m.replace_state)return;z=!1,n.preventDefault()}ce({url:a,scroll:m.noscroll?Q():null,keepfocus:m.keep_focus??!1,redirect_chain:[],details:{state:{},replaceState:m.replace_state??a.href===location.href},accepted:()=>n.preventDefault(),blocked:()=>n.preventDefault(),type:"link"})}),f.addEventListener("submit",n=>{if(n.defaultPrevented)return;const r=HTMLFormElement.prototype.cloneNode.call(n.target),a=n.submitter;if(((a==null?void 0:a.formMethod)||r.method)!=="get")return;const c=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||r.action);if(_e(c,J))return;const g=n.target,{keep_focus:m,noscroll:v,reload:y,replace_state:R}=le(g);if(y)return;n.preventDefault(),n.stopPropagation();const A=new FormData(g),O=a==null?void 0:a.getAttribute("name");O&&A.append(O,(a==null?void 0:a.getAttribute("value"))??""),c.search=new URLSearchParams(A).toString(),ce({url:c,scroll:v?Q():null,keepfocus:m??!1,redirect_chain:[],details:{state:{},replaceState:R??c.href===location.href},nav_token:{},accepted:()=>{},blocked:()=>{},type:"form"})}),addEventListener("popstate",async n=>{var r;if((r=n.state)!=null&&r[V]){if(n.state[V]===j)return;const a=K[n.state[V]];if(p.url.href.split("#")[0]===location.href.split("#")[0]){K[j]=Q(),j=n.state[V],scrollTo(a.x,a.y);return}const s=n.state[V]-j;await ce({url:new URL(location.href),scroll:a,keepfocus:!1,redirect_chain:[],details:null,accepted:()=>{j=n.state[V]},blocked:()=>{history.go(-s)},type:"popstate",delta:s})}}),addEventListener("hashchange",()=>{z&&(z=!1,history.replaceState({...history.state,[V]:++j},"",location.href))});for(const n of document.querySelectorAll("link"))n.rel==="icon"&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&M.navigating.set(null)})},_hydrate:async({status:e=200,error:n,node_ids:r,params:a,route:s,data:c,form:g})=>{D=!0;const m=new URL(location.href);({params:a={},route:s={id:null}}=W(m,!1)||{});let v;try{const y=r.map(async(O,_)=>{const h=c[_];return h!=null&&h.uses&&(h.uses=Ge(h.uses)),de({loader:t.nodes[O],url:m,params:a,route:s,parent:async()=>{const U={};for(let $=0;$<_;$+=1)Object.assign(U,(await y[$]).data);return U},server_data_node:pe(h)})}),R=await Promise.all(y),A=u.find(({id:O})=>O===s.id);if(A){const O=A.layouts;for(let _=0;_d?"1":"0").join(""));const i=await fe(u.href);if(!i.ok)throw new ee(i.status,await i.json());return new Promise(async d=>{var p;const f=new Map,S=i.body.getReader(),l=new TextDecoder;function b(D){return vt(D,{Promise:x=>new Promise((k,N)=>{f.set(x,{fulfil:k,reject:N})})})}let w="";for(;;){const{done:D,value:x}=await S.read();if(D&&!w)break;for(w+=!x&&w?` +`:l.decode(x);;){const k=w.indexOf(` +`);if(k===-1)break;const N=JSON.parse(w.slice(0,k));if(w=w.slice(k+1),N.type==="redirect")return d(N);if(N.type==="data")(p=N.nodes)==null||p.forEach(P=>{(P==null?void 0:P.type)==="data"&&(P.uses=Ge(P.uses),P.data=b(P.data))}),d(N);else if(N.type==="chunk"){const{id:P,data:z,error:B}=N,q=f.get(P);f.delete(P),B?q.reject(b(B)):q.fulfil(b(z))}}}})}function Ge(t){return{dependencies:new Set((t==null?void 0:t.dependencies)??[]),params:new Set((t==null?void 0:t.params)??[]),parent:!!(t!=null&&t.parent),route:!!(t!=null&&t.route),url:!!(t!=null&&t.url)}}function Ee(){const t=document.querySelector("[autofocus]");if(t)t.focus();else{const o=document.body,u=o.getAttribute("tabindex");o.tabIndex=-1,o.focus({preventScroll:!0,focusVisible:!1}),u!==null?o.setAttribute("tabindex",u):o.removeAttribute("tabindex");const i=getSelection();if(i&&i.type!=="None"){const d=[];for(let f=0;f{if(i.rangeCount===d.length){for(let f=0;f{const a=localStorage.getItem(l);if(a!=null)try{t(0,n=JSON.parse(a))}catch{t(0,n=a)}else u(),i("save")}),it(()=>{o!==n&&(u(),i("update",{prevValue:o,value:n})),o=n}),s.$$set=a=>{"key"in a&&t(1,l=a.key),"value"in a&&t(0,n=a.value)},[n,l,r,nt]}class Lt extends ie{constructor(e){super(),oe(this,e,Vt,null,ae,{key:1,value:0,clearItem:2,clearAll:3})}get clearItem(){return this.$$.ctx[2]}get clearAll(){return nt}}const Ot=Lt,Bt=s=>({}),Pe=s=>({}),Nt=s=>({}),Ae=s=>({}),qt=s=>({}),Me=s=>({});function We(s){let e,t,l,n,r,i,o,u,a,m,c,g,f,p,E;t=new Dt({props:{kind:s[0],iconDescription:s[6]}});const w=s[15].title,S=te(w,s,s[14],Me),d=S||Pt(s),D=s[15].subtitle,O=te(D,s,s[14],Ae),$=O||At(s),N=s[15].caption,Z=te(N,s,s[14],Pe),X=Z||Mt(s),Y=s[15].default,I=te(Y,s,s[14],null);let V=!s[8]&&ze(s),pe=[{role:s[2]},{kind:s[0]},s[12],{style:g=""+((s[9]&&"width: 100%;")+s[12].style)}],R={};for(let _=0;_{V=null}),fe()):V?(V.p(_,C),C&256&&v(V,1)):(V=ze(_),V.c(),v(V,1),V.m(e,null)),ee(e,R=de(pe,[(!f||C&4)&&{role:_[2]},(!f||C&1)&&{kind:_[0]},C&4096&&_[12],(!f||C&4608&&g!==(g=""+((_[9]&&"width: 100%;")+_[12].style)))&&{style:g}])),h(e,"bx--toast-notification",!0),h(e,"bx--toast-notification--low-contrast",_[1]),h(e,"bx--toast-notification--error",_[0]==="error"),h(e,"bx--toast-notification--info",_[0]==="info"),h(e,"bx--toast-notification--info-square",_[0]==="info-square"),h(e,"bx--toast-notification--success",_[0]==="success"),h(e,"bx--toast-notification--warning",_[0]==="warning"),h(e,"bx--toast-notification--warning-alt",_[0]==="warning-alt")},i(_){f||(v(t.$$.fragment,_),v(d,_),v($,_),v(X,_),v(I,_),v(V),f=!0)},o(_){k(t.$$.fragment,_),k(d,_),k($,_),k(X,_),k(I,_),k(V),f=!1},d(_){_&&b(e),A(t),d&&d.d(_),$&&$.d(_),X&&X.d(_),I&&I.d(_),V&&V.d(),p=!1,ge(E)}}}function Pt(s){let e;return{c(){e=U(s[3])},l(t){e=G(t,s[3])},m(t,l){T(t,e,l)},p(t,l){l&8&&x(e,t[3])},d(t){t&&b(e)}}}function At(s){let e;return{c(){e=U(s[4])},l(t){e=G(t,s[4])},m(t,l){T(t,e,l)},p(t,l){l&16&&x(e,t[4])},d(t){t&&b(e)}}}function Mt(s){let e;return{c(){e=U(s[5])},l(t){e=G(t,s[5])},m(t,l){T(t,e,l)},p(t,l){l&32&&x(e,t[5])},d(t){t&&b(e)}}}function ze(s){let e,t;return e=new It({props:{iconDescription:s[7]}}),e.$on("click",s[11]),{c(){q(e.$$.fragment)},l(l){M(e.$$.fragment,l)},m(l,n){P(e,l,n),t=!0},p(l,n){const r={};n&128&&(r.iconDescription=l[7]),e.$set(r)},i(l){t||(v(e.$$.fragment,l),t=!0)},o(l){k(e.$$.fragment,l),t=!1},d(l){A(e,l)}}}function Wt(s){let e,t,l=s[10]&&We(s);return{c(){l&&l.c(),e=me()},l(n){l&&l.l(n),e=me()},m(n,r){l&&l.m(n,r),T(n,e,r),t=!0},p(n,[r]){n[10]?l?(l.p(n,r),r&1024&&v(l,1)):(l=We(n),l.c(),v(l,1),l.m(e.parentNode,e)):l&&(ue(),k(l,1,1,()=>{l=null}),fe())},i(n){t||(v(l),t=!0)},o(n){k(l),t=!1},d(n){l&&l.d(n),n&&b(e)}}}function zt(s,e,t){const l=["kind","lowContrast","timeout","role","title","subtitle","caption","statusIconDescription","closeButtonDescription","hideCloseButton","fullWidth"];let n=ne(e,l),{$$slots:r={},$$scope:i}=e,{kind:o="error"}=e,{lowContrast:u=!1}=e,{timeout:a=0}=e,{role:m="alert"}=e,{title:c=""}=e,{subtitle:g=""}=e,{caption:f=""}=e,{statusIconDescription:p=o+" icon"}=e,{closeButtonDescription:E="Close notification"}=e,{hideCloseButton:w=!1}=e,{fullWidth:S=!1}=e;const d=$e();let D=!0,O;function $(I){d("close",{timeout:I===!0},{cancelable:!0})&&t(10,D=!1)}De(()=>(a&&(O=setTimeout(()=>$(!0),a)),()=>{clearTimeout(O)}));function N(I){y.call(this,s,I)}function Z(I){y.call(this,s,I)}function X(I){y.call(this,s,I)}function Y(I){y.call(this,s,I)}return s.$$set=I=>{e=F(F({},e),he(I)),t(12,n=ne(e,l)),"kind"in I&&t(0,o=I.kind),"lowContrast"in I&&t(1,u=I.lowContrast),"timeout"in I&&t(13,a=I.timeout),"role"in I&&t(2,m=I.role),"title"in I&&t(3,c=I.title),"subtitle"in I&&t(4,g=I.subtitle),"caption"in I&&t(5,f=I.caption),"statusIconDescription"in I&&t(6,p=I.statusIconDescription),"closeButtonDescription"in I&&t(7,E=I.closeButtonDescription),"hideCloseButton"in I&&t(8,w=I.hideCloseButton),"fullWidth"in I&&t(9,S=I.fullWidth),"$$scope"in I&&t(14,i=I.$$scope)},[o,u,m,c,g,f,p,E,w,S,D,$,n,a,i,r,N,Z,X,Y]}class jt extends ie{constructor(e){super(),oe(this,e,zt,Wt,ae,{kind:0,lowContrast:1,timeout:13,role:2,title:3,subtitle:4,caption:5,statusIconDescription:6,closeButtonDescription:7,hideCloseButton:8,fullWidth:9})}}const Jt=jt;function Ht(s){let e,t,l,n,r,i;const o=s[11].default,u=te(o,s,s[10],null);let a=[s[9],{style:l=s[9].style+"; "+(s[6]&&"position: relative")}],m={};for(let c=0;c{o&&(E.contains(d.target)||(p("click:outside",{target:d.target}),u&&t(0,o=!1)))};function S(d){Ve[d?"unshift":"push"](()=>{E=d,t(7,E)})}return s.$$set=d=>{e=F(F({},e),he(d)),t(9,n=ne(e,l)),"open"in d&&t(0,o=d.open),"closeOnOutsideClick"in d&&t(1,u=d.closeOnOutsideClick),"caret"in d&&t(2,a=d.caret),"align"in d&&t(3,m=d.align),"light"in d&&t(4,c=d.light),"highContrast"in d&&t(5,g=d.highContrast),"relative"in d&&t(6,f=d.relative),"$$scope"in d&&t(10,i=d.$$scope)},[o,u,a,m,c,g,f,E,p,n,i,r,w,S]}class Ut extends ie{constructor(e){super(),oe(this,e,Kt,Ht,ae,{open:0,closeOnOutsideClick:1,caret:2,align:3,light:4,highContrast:5,relative:6})}}const Gt=Ut,Qt=s=>({}),je=s=>({});function Rt(s){let e;return{c(){e=U(s[4])},l(t){e=G(t,s[4])},m(t,l){T(t,e,l)},p(t,l){l&16&&x(e,t[4])},d(t){t&&b(e)}}}function Je(s){let e,t,l;var n=s[10][s[2]];function r(i){return{props:{class:"bx--progress-bar__status-icon"}}}return n&&(e=Ne(n,r())),{c(){e&&q(e.$$.fragment),t=me()},l(i){e&&M(e.$$.fragment,i),t=me()},m(i,o){e&&P(e,i,o),T(i,t,o),l=!0},p(i,o){if(o&4&&n!==(n=i[10][i[2]])){if(e){ue();const u=e;k(u.$$.fragment,1,0,()=>{A(u,1)}),fe()}n?(e=Ne(n,r()),q(e.$$.fragment),v(e.$$.fragment,1),P(e,t.parentNode,t)):e=null}},i(i){l||(e&&v(e.$$.fragment,i),l=!0)},o(i){e&&k(e.$$.fragment,i),l=!1},d(i){i&&b(t),e&&A(e,i)}}}function He(s){let e,t;return{c(){e=z("div"),t=U(s[6]),this.h()},l(l){e=j(l,"DIV",{id:!0});var n=J(e);t=G(n,s[6]),n.forEach(b),this.h()},h(){W(e,"id",s[11]),h(e,"bx--progress-bar__helper-text",!0)},m(l,n){T(l,e,n),L(e,t)},p(l,n){n&64&&x(t,l[6])},d(l){l&&b(e)}}}function yt(s){let e,t,l,n,r,i,o,u,a,m,c,g,f;const p=s[15].labelText,E=te(p,s,s[14],je),w=E||Rt(s);let S=(s[2]==="error"||s[2]==="finished")&&Je(s),d=s[6]&&He(s),D=[s[12]],O={};for(let $=0;${S=null}),fe()),(!f||N&128)&&W(t,"for",$[7]),(!f||N&32)&&h(t,"bx--visually-hidden",$[5]),N&261&&we(i,"transform",$[2]==="active"&&`scaleX(${$[8]/$[0]})`),(!f||N&128)&&W(r,"id",$[7]),(!f||N&4&&o!==(o=$[2]==="active"))&&W(r,"aria-busy",o),(!f||N&512&&u!==(u=$[9]?void 0:0))&&W(r,"aria-valuemin",u),(!f||N&513&&a!==(a=$[9]?void 0:$[0]))&&W(r,"aria-valuemax",a),(!f||N&768&&m!==(m=$[9]?void 0:$[8]))&&W(r,"aria-valuenow",m),(!f||N&64&&c!==(c=$[6]?$[11]:null))&&W(r,"aria-describedby",c),$[6]?d?d.p($,N):(d=He($),d.c(),d.m(e,null)):d&&(d.d(1),d=null),ee(e,O=de(D,[N&4096&&$[12]])),h(e,"bx--progress-bar",!0),h(e,"bx--progress-bar--indeterminate",$[9]),h(e,"bx--progress-bar--big",$[3]==="md"),h(e,"bx--progress-bar--small",$[3]==="sm"),h(e,"bx--progress-bar--inline",$[1]==="inline"),h(e,"bx--progress-bar--indented",$[1]==="indented"),h(e,"bx--progress-bar--error",$[2]==="error"),h(e,"bx--progress-bar--finished",$[2]==="finished")},i($){f||(v(w,$),v(S),f=!0)},o($){k(w,$),k(S),f=!1},d($){$&&b(e),w&&w.d($),S&&S.d(),d&&d.d()}}}function Ft(s,e,t){let l;const n=["value","max","kind","status","size","labelText","hideLabel","helperText","id"];let r=ne(e,n),{$$slots:i={},$$scope:o}=e,{value:u=void 0}=e,{max:a=100}=e,{kind:m="default"}=e,{status:c="active"}=e,{size:g="md"}=e,{labelText:f=""}=e,{hideLabel:p=!1}=e,{helperText:E=""}=e,{id:w="ccs-"+Math.random().toString(36)}=e;const S={error:_t,finished:ht};let d="ccs-"+Math.random().toString(36),D;return s.$$set=O=>{e=F(F({},e),he(O)),t(12,r=ne(e,n)),"value"in O&&t(13,u=O.value),"max"in O&&t(0,a=O.max),"kind"in O&&t(1,m=O.kind),"status"in O&&t(2,c=O.status),"size"in O&&t(3,g=O.size),"labelText"in O&&t(4,f=O.labelText),"hideLabel"in O&&t(5,p=O.hideLabel),"helperText"in O&&t(6,E=O.helperText),"id"in O&&t(7,w=O.id),"$$scope"in O&&t(14,o=O.$$scope)},s.$$.update=()=>{s.$$.dirty&8196&&t(9,l=u===void 0&&c==="active"),s.$$.dirty&8197&&(c==="error"||u<0?t(8,D=0):u>a?t(8,D=a):t(8,D=u))},[a,m,c,g,f,p,E,w,D,l,S,d,r,u,o,i]}class Xt extends ie{constructor(e){super(),oe(this,e,Ft,yt,ae,{value:13,max:0,kind:1,status:2,size:3,labelText:4,hideLabel:5,helperText:6,id:7})}}const Yt=Xt;function Zt(s){let e,t,l,n;const r=s[8].default,i=te(r,s,s[7],null);let o=[{role:"table"},s[4]],u={};for(let a=0;at(6,r=d)),ot("StructuredListWrapper",{selectedValue:f,update:d=>{f.set(d)}});function p(d){y.call(this,s,d)}function E(d){y.call(this,s,d)}function w(d){y.call(this,s,d)}function S(d){y.call(this,s,d)}return s.$$set=d=>{e=F(F({},e),he(d)),t(4,n=ne(e,l)),"selected"in d&&t(5,u=d.selected),"condensed"in d&&t(0,a=d.condensed),"flush"in d&&t(1,m=d.flush),"selection"in d&&t(2,c=d.selection),"$$scope"in d&&t(7,o=d.$$scope)},s.$$.update=()=>{s.$$.dirty&64&&t(5,u=r),s.$$.dirty&64&&g("change",r)},[a,m,c,f,n,u,r,o,i,p,E,w,S]}class el extends ie{constructor(e){super(),oe(this,e,xt,Zt,ae,{selected:5,condensed:0,flush:1,selection:2})}}const tl=el;function ll(s){let e,t,l,n;const r=s[2].default,i=te(r,s,s[1],null);let o=[{role:"rowgroup"},s[0]],u={};for(let a=0;a{e=F(F({},e),he(c)),t(0,n=ne(e,l)),"$$scope"in c&&t(1,i=c.$$scope)},[n,i,r,o,u,a,m]}class rl extends ie{constructor(e){super(),oe(this,e,sl,ll,ae,{})}}const nl=rl;function il(s){let e,t,l,n,r;const i=s[4].default,o=te(i,s,s[3],null);let u=[{role:t=s[0]?"columnheader":"cell"},s[2]],a={};for(let m=0;m{e=F(F({},e),he(f)),t(2,n=ne(e,l)),"head"in f&&t(0,o=f.head),"noWrap"in f&&t(1,u=f.noWrap),"$$scope"in f&&t(3,i=f.$$scope)},[o,u,n,i,r,a,m,c,g]}class al extends ie{constructor(e){super(),oe(this,e,ol,il,ae,{head:0,noWrap:1})}}const ce=al;function ul(s){let e,t,l,n;const r=s[5].default,i=te(r,s,s[4],null);let o=[{role:"row"},s[3]],u={};for(let a=0;a{i[m]=null}),fe(),t=i[e],t?t.p(u,a):(t=i[e]=r[e](u),t.c()),v(t,1),t.m(l.parentNode,l))},i(u){n||(v(t),n=!0)},o(u){k(t),n=!1},d(u){i[e].d(u),u&&b(l)}}}function ml(s,e,t){const l=["head","label","tabindex"];let n=ne(e,l),{$$slots:r={},$$scope:i}=e,{head:o=!1}=e,{label:u=!1}=e,{tabindex:a="0"}=e;function m(D){y.call(this,s,D)}function c(D){y.call(this,s,D)}function g(D){y.call(this,s,D)}function f(D){y.call(this,s,D)}function p(D){y.call(this,s,D)}function E(D){y.call(this,s,D)}function w(D){y.call(this,s,D)}function S(D){y.call(this,s,D)}function d(D){y.call(this,s,D)}return s.$$set=D=>{e=F(F({},e),he(D)),t(3,n=ne(e,l)),"head"in D&&t(0,o=D.head),"label"in D&&t(1,u=D.label),"tabindex"in D&&t(2,a=D.tabindex),"$$scope"in D&&t(4,i=D.$$scope)},[o,u,a,n,i,r,m,c,g,f,p,E,w,S,d]}class dl extends ie{constructor(e){super(),oe(this,e,ml,cl,ae,{head:0,label:1,tabindex:2})}}const be=dl,_l=s=>({theme:s&1}),Ke=s=>({theme:s[0]});function Ue(s,e,t){const l=s.slice();return l[0]=e[t],l}function Ge(s){let e,t,l;function n(i){s[9](i)}let r={key:s[2]};return s[0]!==void 0&&(r.value=s[0]),e=new Ot({props:r}),Ve.push(()=>xe(e,"value",n)),{c(){q(e.$$.fragment)},l(i){M(e.$$.fragment,i)},m(i,o){P(e,i,o),l=!0},p(i,o){const u={};o&4&&(u.key=i[2]),!t&&o&1&&(t=!0,u.value=i[0],et(()=>t=!1)),e.$set(u)},i(i){l||(v(e.$$.fragment,i),l=!0)},o(i){k(e.$$.fragment,i),l=!1},d(i){A(e,i)}}}function hl(s){let e,t,l;const n=[s[5]];function r(o){s[11](o)}let i={$$slots:{default:[bl]},$$scope:{ctx:s}};for(let o=0;oxe(e,"selected",r)),{c(){q(e.$$.fragment)},l(o){M(e.$$.fragment,o)},m(o,u){P(e,o,u),l=!0},p(o,u){const a=u&32?de(n,[tt(o[5])]):{};u&4128&&(a.$$scope={dirty:u,ctx:o}),!t&&u&1&&(t=!0,a.selected=o[0],et(()=>t=!1)),e.$set(a)},i(o){l||(v(e.$$.fragment,o),l=!0)},o(o){k(e.$$.fragment,o),l=!1},d(o){A(e,o)}}}function gl(s){let e,t;const l=[s[4],{toggled:s[0]===s[4].themes[1]}];let n={};for(let r=0;ro[0];for(let o=0;o{i=null}),fe());let p=t;t=a(g),t===p?~t&&u[t].p(g,f):(l&&(ue(),k(u[p],1,1,()=>{u[p]=null}),fe()),~t?(l=u[t],l?l.p(g,f):(l=u[t]=o[t](g),l.c()),v(l,1),l.m(n.parentNode,n)):l=null),c&&c.p&&(!r||f&4097)&&le(c,m,g,g[12],r?re(m,g[12],f,_l):se(g[12]),Ke)},i(g){r||(v(i),v(l),v(c,g),r=!0)},o(g){k(i),k(l),k(c,g),r=!1},d(g){i&&i.d(g),g&&b(e),~t&&u[t].d(g),g&&b(n),c&&c.d(g)}}}function vl(s,e,t){let{$$slots:l={},$$scope:n}=e,{theme:r="white"}=e,{tokens:i={}}=e,{persist:o=!1}=e,{persistKey:u="theme"}=e,{render:a=void 0}=e,{toggle:m={themes:["white","g100"],labelA:"",labelB:"",labelText:"Dark mode",hideLabel:!1}}=e;const c={white:"White",g10:"Gray 10",g80:"Gray 80",g90:"Gray 90",g100:"Gray 100"},g=Object.keys(c);let{select:f={themes:g,labelText:"Themes",hideLabel:!1}}=e;const p=$e();function E(d){r=d,t(0,r)}const w=({detail:d})=>{t(0,r=d.toggled?m.themes[1]:m.themes[0])};function S(d){r=d,t(0,r)}return s.$$set=d=>{"theme"in d&&t(0,r=d.theme),"tokens"in d&&t(7,i=d.tokens),"persist"in d&&t(1,o=d.persist),"persistKey"in d&&t(2,u=d.persistKey),"render"in d&&t(3,a=d.render),"toggle"in d&&t(4,m=d.toggle),"select"in d&&t(5,f=d.select),"$$scope"in d&&t(12,n=d.$$scope)},s.$$.update=()=>{s.$$.dirty&129&&typeof window<"u"&&(Object.entries(i).forEach(([d,D])=>{document.documentElement.style.setProperty(`--cds-${d}`,D)}),r in c?(document.documentElement.setAttribute("theme",r),p("update",{theme:r})):console.warn(`[Theme.svelte] invalid theme "${r}". Value must be one of: ${JSON.stringify(Object.keys(c))}`))},[r,o,u,a,m,f,c,i,l,E,w,S,n]}class kl extends ie{constructor(e){super(),oe(this,e,vl,pl,ae,{theme:0,tokens:7,persist:1,persistKey:2,render:3,toggle:4,select:5})}}const $l=kl;function El(s){let e;return{c(){e=U("message")},l(t){e=G(t,"message")},m(t,l){T(t,e,l)},d(t){t&&b(e)}}}function Tl(s){let e=s[0].message+"",t;return{c(){t=U(e)},l(l){t=G(l,e)},m(l,n){T(l,t,n)},p(l,n){n&1&&e!==(e=l[0].message+"")&&x(t,e)},d(l){l&&b(t)}}}function wl(s){let e,t,l,n;return e=new ce({props:{$$slots:{default:[El]},$$scope:{ctx:s}}}),l=new ce({props:{$$slots:{default:[Tl]},$$scope:{ctx:s}}}),{c(){q(e.$$.fragment),t=H(),q(l.$$.fragment)},l(r){M(e.$$.fragment,r),t=K(r),M(l.$$.fragment,r)},m(r,i){P(e,r,i),T(r,t,i),P(l,r,i),n=!0},p(r,i){const o={};i&2&&(o.$$scope={dirty:i,ctx:r}),e.$set(o);const u={};i&3&&(u.$$scope={dirty:i,ctx:r}),l.$set(u)},i(r){n||(v(e.$$.fragment,r),v(l.$$.fragment,r),n=!0)},o(r){k(e.$$.fragment,r),k(l.$$.fragment,r),n=!1},d(r){A(e,r),r&&b(t),A(l,r)}}}function Dl(s){let e;return{c(){e=U("url")},l(t){e=G(t,"url")},m(t,l){T(t,e,l)},d(t){t&&b(e)}}}function Il(s){let e=s[0].request.method+"",t,l,n=s[0].request.url+"",r;return{c(){t=U(e),l=H(),r=U(n)},l(i){t=G(i,e),l=K(i),r=G(i,n)},m(i,o){T(i,t,o),T(i,l,o),T(i,r,o)},p(i,o){o&1&&e!==(e=i[0].request.method+"")&&x(t,e),o&1&&n!==(n=i[0].request.url+"")&&x(r,n)},d(i){i&&b(t),i&&b(l),i&&b(r)}}}function Cl(s){let e,t,l,n;return e=new ce({props:{$$slots:{default:[Dl]},$$scope:{ctx:s}}}),l=new ce({props:{$$slots:{default:[Il]},$$scope:{ctx:s}}}),{c(){q(e.$$.fragment),t=H(),q(l.$$.fragment)},l(r){M(e.$$.fragment,r),t=K(r),M(l.$$.fragment,r)},m(r,i){P(e,r,i),T(r,t,i),P(l,r,i),n=!0},p(r,i){const o={};i&2&&(o.$$scope={dirty:i,ctx:r}),e.$set(o);const u={};i&3&&(u.$$scope={dirty:i,ctx:r}),l.$set(u)},i(r){n||(v(e.$$.fragment,r),v(l.$$.fragment,r),n=!0)},o(r){k(e.$$.fragment,r),k(l.$$.fragment,r),n=!1},d(r){A(e,r),r&&b(t),A(l,r)}}}function Sl(s){let e;return{c(){e=U("status")},l(t){e=G(t,"status")},m(t,l){T(t,e,l)},d(t){t&&b(e)}}}function Vl(s){let e=s[0].status+"",t,l,n=s[0].statusText+"",r;return{c(){t=U(e),l=H(),r=U(n)},l(i){t=G(i,e),l=K(i),r=G(i,n)},m(i,o){T(i,t,o),T(i,l,o),T(i,r,o)},p(i,o){o&1&&e!==(e=i[0].status+"")&&x(t,e),o&1&&n!==(n=i[0].statusText+"")&&x(r,n)},d(i){i&&b(t),i&&b(l),i&&b(r)}}}function Ll(s){let e,t,l,n;return e=new ce({props:{$$slots:{default:[Sl]},$$scope:{ctx:s}}}),l=new ce({props:{$$slots:{default:[Vl]},$$scope:{ctx:s}}}),{c(){q(e.$$.fragment),t=H(),q(l.$$.fragment)},l(r){M(e.$$.fragment,r),t=K(r),M(l.$$.fragment,r)},m(r,i){P(e,r,i),T(r,t,i),P(l,r,i),n=!0},p(r,i){const o={};i&2&&(o.$$scope={dirty:i,ctx:r}),e.$set(o);const u={};i&3&&(u.$$scope={dirty:i,ctx:r}),l.$set(u)},i(r){n||(v(e.$$.fragment,r),v(l.$$.fragment,r),n=!0)},o(r){k(e.$$.fragment,r),k(l.$$.fragment,r),n=!1},d(r){A(e,r),r&&b(t),A(l,r)}}}function Ol(s){let e;return{c(){e=U("path")},l(t){e=G(t,"path")},m(t,l){T(t,e,l)},d(t){t&&b(e)}}}function Bl(s){let e=JSON.stringify(s[0].request.path,null,2)+"",t;return{c(){t=U(e)},l(l){t=G(l,e)},m(l,n){T(l,t,n)},p(l,n){n&1&&e!==(e=JSON.stringify(l[0].request.path,null,2)+"")&&x(t,e)},d(l){l&&b(t)}}}function Nl(s){let e,t,l,n;return e=new ce({props:{$$slots:{default:[Ol]},$$scope:{ctx:s}}}),l=new ce({props:{class:"whitespace-pre",$$slots:{default:[Bl]},$$scope:{ctx:s}}}),{c(){q(e.$$.fragment),t=H(),q(l.$$.fragment)},l(r){M(e.$$.fragment,r),t=K(r),M(l.$$.fragment,r)},m(r,i){P(e,r,i),T(r,t,i),P(l,r,i),n=!0},p(r,i){const o={};i&2&&(o.$$scope={dirty:i,ctx:r}),e.$set(o);const u={};i&3&&(u.$$scope={dirty:i,ctx:r}),l.$set(u)},i(r){n||(v(e.$$.fragment,r),v(l.$$.fragment,r),n=!0)},o(r){k(e.$$.fragment,r),k(l.$$.fragment,r),n=!1},d(r){A(e,r),r&&b(t),A(l,r)}}}function ql(s){let e;return{c(){e=U("body")},l(t){e=G(t,"body")},m(t,l){T(t,e,l)},d(t){t&&b(e)}}}function Pl(s){let e=JSON.stringify(s[0].request.body,null,2)+"",t;return{c(){t=U(e)},l(l){t=G(l,e)},m(l,n){T(l,t,n)},p(l,n){n&1&&e!==(e=JSON.stringify(l[0].request.body,null,2)+"")&&x(t,e)},d(l){l&&b(t)}}}function Al(s){let e,t,l,n;return e=new ce({props:{$$slots:{default:[ql]},$$scope:{ctx:s}}}),l=new ce({props:{class:"whitespace-pre",$$slots:{default:[Pl]},$$scope:{ctx:s}}}),{c(){q(e.$$.fragment),t=H(),q(l.$$.fragment)},l(r){M(e.$$.fragment,r),t=K(r),M(l.$$.fragment,r)},m(r,i){P(e,r,i),T(r,t,i),P(l,r,i),n=!0},p(r,i){const o={};i&2&&(o.$$scope={dirty:i,ctx:r}),e.$set(o);const u={};i&3&&(u.$$scope={dirty:i,ctx:r}),l.$set(u)},i(r){n||(v(e.$$.fragment,r),v(l.$$.fragment,r),n=!0)},o(r){k(e.$$.fragment,r),k(l.$$.fragment,r),n=!1},d(r){A(e,r),r&&b(t),A(l,r)}}}function Ml(s){let e;return{c(){e=U("details")},l(t){e=G(t,"details")},m(t,l){T(t,e,l)},d(t){t&&b(e)}}}function Wl(s){let e=s[0].body.detail+"",t;return{c(){t=U(e)},l(l){t=G(l,e)},m(l,n){T(l,t,n)},p(l,n){n&1&&e!==(e=l[0].body.detail+"")&&x(t,e)},d(l){l&&b(t)}}}function zl(s){let e,t,l,n;return e=new ce({props:{$$slots:{default:[Ml]},$$scope:{ctx:s}}}),l=new ce({props:{class:"whitespace-break-spaces",$$slots:{default:[Wl]},$$scope:{ctx:s}}}),{c(){q(e.$$.fragment),t=H(),q(l.$$.fragment)},l(r){M(e.$$.fragment,r),t=K(r),M(l.$$.fragment,r)},m(r,i){P(e,r,i),T(r,t,i),P(l,r,i),n=!0},p(r,i){const o={};i&2&&(o.$$scope={dirty:i,ctx:r}),e.$set(o);const u={};i&3&&(u.$$scope={dirty:i,ctx:r}),l.$set(u)},i(r){n||(v(e.$$.fragment,r),v(l.$$.fragment,r),n=!0)},o(r){k(e.$$.fragment,r),k(l.$$.fragment,r),n=!1},d(r){A(e,r),r&&b(t),A(l,r)}}}function jl(s){let e,t,l,n,r,i,o,u,a,m,c,g;return e=new be({props:{$$slots:{default:[wl]},$$scope:{ctx:s}}}),l=new be({props:{$$slots:{default:[Cl]},$$scope:{ctx:s}}}),r=new be({props:{$$slots:{default:[Ll]},$$scope:{ctx:s}}}),o=new be({props:{$$slots:{default:[Nl]},$$scope:{ctx:s}}}),a=new be({props:{$$slots:{default:[Al]},$$scope:{ctx:s}}}),c=new be({props:{$$slots:{default:[zl]},$$scope:{ctx:s}}}),{c(){q(e.$$.fragment),t=H(),q(l.$$.fragment),n=H(),q(r.$$.fragment),i=H(),q(o.$$.fragment),u=H(),q(a.$$.fragment),m=H(),q(c.$$.fragment)},l(f){M(e.$$.fragment,f),t=K(f),M(l.$$.fragment,f),n=K(f),M(r.$$.fragment,f),i=K(f),M(o.$$.fragment,f),u=K(f),M(a.$$.fragment,f),m=K(f),M(c.$$.fragment,f)},m(f,p){P(e,f,p),T(f,t,p),P(l,f,p),T(f,n,p),P(r,f,p),T(f,i,p),P(o,f,p),T(f,u,p),P(a,f,p),T(f,m,p),P(c,f,p),g=!0},p(f,p){const E={};p&3&&(E.$$scope={dirty:p,ctx:f}),e.$set(E);const w={};p&3&&(w.$$scope={dirty:p,ctx:f}),l.$set(w);const S={};p&3&&(S.$$scope={dirty:p,ctx:f}),r.$set(S);const d={};p&3&&(d.$$scope={dirty:p,ctx:f}),o.$set(d);const D={};p&3&&(D.$$scope={dirty:p,ctx:f}),a.$set(D);const O={};p&3&&(O.$$scope={dirty:p,ctx:f}),c.$set(O)},i(f){g||(v(e.$$.fragment,f),v(l.$$.fragment,f),v(r.$$.fragment,f),v(o.$$.fragment,f),v(a.$$.fragment,f),v(c.$$.fragment,f),g=!0)},o(f){k(e.$$.fragment,f),k(l.$$.fragment,f),k(r.$$.fragment,f),k(o.$$.fragment,f),k(a.$$.fragment,f),k(c.$$.fragment,f),g=!1},d(f){A(e,f),f&&b(t),A(l,f),f&&b(n),A(r,f),f&&b(i),A(o,f),f&&b(u),A(a,f),f&&b(m),A(c,f)}}}function Jl(s){let e,t;return e=new nl({props:{$$slots:{default:[jl]},$$scope:{ctx:s}}}),{c(){q(e.$$.fragment)},l(l){M(e.$$.fragment,l)},m(l,n){P(e,l,n),t=!0},p(l,n){const r={};n&3&&(r.$$scope={dirty:n,ctx:l}),e.$set(r)},i(l){t||(v(e.$$.fragment,l),t=!0)},o(l){k(e.$$.fragment,l),t=!1},d(l){A(e,l)}}}function Hl(s){let e,t;return e=new tl({props:{$$slots:{default:[Jl]},$$scope:{ctx:s}}}),{c(){q(e.$$.fragment)},l(l){M(e.$$.fragment,l)},m(l,n){P(e,l,n),t=!0},p(l,n){const r={};n&3&&(r.$$scope={dirty:n,ctx:l}),e.$set(r)},i(l){t||(v(e.$$.fragment,l),t=!0)},o(l){k(e.$$.fragment,l),t=!1},d(l){A(e,l)}}}function Kl(s){let e,t;return e=new mt({props:{passiveModal:!0,open:!!s[0],modalHeading:s[0].name,$$slots:{default:[Hl]},$$scope:{ctx:s}}}),{c(){q(e.$$.fragment)},l(l){M(e.$$.fragment,l)},m(l,n){P(e,l,n),t=!0},p(l,[n]){const r={};n&1&&(r.open=!!l[0]),n&1&&(r.modalHeading=l[0].name),n&3&&(r.$$scope={dirty:n,ctx:l}),e.$set(r)},i(l){t||(v(e.$$.fragment,l),t=!0)},o(l){k(e.$$.fragment,l),t=!1},d(l){A(e,l)}}}function Ul(s,e,t){let{error:l}=e;return s.$$set=n=>{"error"in n&&t(0,l=n.error)},[l]}class Gl extends ie{constructor(e){super(),oe(this,e,Ul,Kl,ae,{error:0})}}function Ql(s){let e;const t=s[2].default,l=te(t,s,s[1],null);return{c(){l&&l.c()},l(n){l&&l.l(n)},m(n,r){l&&l.m(n,r),e=!0},p(n,[r]){l&&l.p&&(!e||r&2)&&le(l,t,n,n[1],e?re(t,n[1],r,null):se(n[1]),null)},i(n){e||(v(l,n),e=!0)},o(n){k(l,n),e=!1},d(n){l&&l.d(n)}}}function Rl(s,e,t){let{$$slots:l={},$$scope:n}=e,{client:r=new gt}=e;return De(()=>{r.mount()}),bt(r),at(()=>{r.unmount()}),s.$$set=i=>{"client"in i&&t(0,r=i.client),"$$scope"in i&&t(1,n=i.$$scope)},[r,n,l]}class yl extends ie{constructor(e){super(),oe(this,e,Rl,Ql,ae,{client:0})}}function Re(s,e,t){const l=s.slice();l[10]=e[t][0],l[11]=e[t][1];const n=l[11].step_progress==null?void 0:l[11].step_progress;return l[12]=n,l}function Fl(s){let e,t,l;return t=new kt({}),{c(){e=U("Tasks "),q(t.$$.fragment)},l(n){e=G(n,"Tasks "),M(t.$$.fragment,n)},m(n,r){T(n,e,r),P(t,n,r),l=!0},p:Se,i(n){l||(v(t.$$.fragment,n),l=!0)},o(n){k(t.$$.fragment,n),l=!1},d(n){n&&b(e),A(t,n)}}}function Xl(s){let e=s[3].length+"",t,l,n=s[3].length>1?"s":"",r;return{c(){t=U(e),l=U(" failed task"),r=U(n)},l(i){t=G(i,e),l=G(i," failed task"),r=G(i,n)},m(i,o){T(i,t,o),T(i,l,o),T(i,r,o)},p(i,o){o&8&&e!==(e=i[3].length+"")&&x(t,e),o&8&&n!==(n=i[3].length>1?"s":"")&&x(r,n)},i:Se,o:Se,d(i){i&&b(t),i&&b(l),i&&b(r)}}}function Yl(s){let e=s[4].length+"",t,l,n=s[4].length>1?"s":"",r,i,o,u;return o=new $t({props:{withOverlay:!1,small:!0}}),{c(){t=U(e),l=U(" running task"),r=U(n),i=U("... "),q(o.$$.fragment)},l(a){t=G(a,e),l=G(a," running task"),r=G(a,n),i=G(a,"... "),M(o.$$.fragment,a)},m(a,m){T(a,t,m),T(a,l,m),T(a,r,m),T(a,i,m),P(o,a,m),u=!0},p(a,m){(!u||m&16)&&e!==(e=a[4].length+"")&&x(t,e),(!u||m&16)&&n!==(n=a[4].length>1?"s":"")&&x(r,n)},i(a){u||(v(o.$$.fragment,a),u=!0)},o(a){k(o.$$.fragment,a),u=!1},d(a){a&&b(t),a&&b(l),a&&b(r),a&&b(i),A(o,a)}}}function ye(s){let e,t=`${s[2]*100}%`;return{c(){e=z("div"),this.h()},l(l){e=j(l,"DIV",{class:!0}),J(e).forEach(b),this.h()},h(){W(e,"class","absolute left-0 top-0 z-0 h-full bg-blue-400 transition"),we(e,"width",t)},m(l,n){T(l,e,n)},p(l,n){n&4&&t!==(t=`${l[2]*100}%`)&&we(e,"width",t)},d(l){l&&b(e)}}}function Fe(s,e){let t,l,n,r=e[11].name+"",i,o,u,a,m,c;return a=new Yt({props:{labelText:e[11].message||"",helperText:e[11].status!="completed"?e[11].details:"",value:e[11].status==="completed"?1:e[12],max:1,size:"sm",status:e[6][e[11].status]}}),{key:s,first:null,c(){t=z("div"),l=z("div"),n=z("div"),i=U(r),o=H(),u=z("div"),q(a.$$.fragment),m=H(),this.h()},l(g){t=j(g,"DIV",{class:!0});var f=J(t);l=j(f,"DIV",{class:!0});var p=J(l);n=j(p,"DIV",{class:!0});var E=J(n);i=G(E,r),E.forEach(b),p.forEach(b),o=K(f),u=j(f,"DIV",{class:!0});var w=J(u);M(a.$$.fragment,w),w.forEach(b),m=K(f),f.forEach(b),this.h()},h(){W(n,"class","mr-2"),W(l,"class","text-s flex flex-row"),W(u,"class","progress-container mt-3"),W(t,"class","relative border-b-2 border-slate-200 p-4 text-left last:border-b-0"),this.first=t},m(g,f){T(g,t,f),L(t,l),L(l,n),L(n,i),L(t,o),L(t,u),P(a,u,null),L(t,m),c=!0},p(g,f){e=g,(!c||f&1)&&r!==(r=e[11].name+"")&&x(i,r);const p={};f&1&&(p.labelText=e[11].message||""),f&1&&(p.helperText=e[11].status!="completed"?e[11].details:""),f&1&&(p.value=e[11].status==="completed"?1:e[12]),f&1&&(p.status=e[6][e[11].status]),a.$set(p)},i(g){c||(v(a.$$.fragment,g),c=!0)},o(g){k(a.$$.fragment,g),c=!1},d(g){g&&b(t),A(a)}}}function Zl(s){let e,t=[],l=new Map,n,r=s[0];const i=o=>o[10];for(let o=0;o{g[S]=null}),fe(),n=g[l],n?n.p(E,w):(n=g[l]=c[l](E),n.c()),v(n,1),n.m(t,null)),E[4].length===1?p?p.p(E,w):(p=ye(E),p.c(),p.m(e,i)):p&&(p.d(1),p=null);const d={};w&2&&(d.open=E[1]),w&32769&&(d.$$scope={dirty:w,ctx:E}),o.$set(d),(!u||w&16)&&h(e,"bg-white",!E[4].length),(!u||w&16)&&h(e,"bg-blue-200",E[4].length),(!u||w&16)&&h(e,"border-blue-400",E[4].length)},i(E){u||(v(n),v(o.$$.fragment,E),u=!0)},o(E){k(n),k(o.$$.fragment,E),u=!1},d(E){E&&b(e),g[l].d(),p&&p.d(),A(o),a=!1,m()}}}function es(s,e,t){let l,n,r,i,o;const u=rt();Ie(s,u,f=>t(7,o=f));let a=!1;const m={pending:"active",completed:"finished",error:"error"},c=()=>{a&&t(1,a=!1)},g=()=>t(1,a=!a);return s.$$.update=()=>{var f,p;s.$$.dirty&128&&t(0,l=Object.entries(((f=o.data)==null?void 0:f.tasks)||{}).sort(([,E],[,w])=>Date.parse(w.start_timestamp)-Date.parse(E.start_timestamp))),s.$$.dirty&1&&t(4,n=l.filter(([,E])=>E.status==="pending")),s.$$.dirty&1&&t(3,r=l.filter(([,E])=>E.status==="error")),s.$$.dirty&128&&t(2,i=((p=o.data)==null?void 0:p.progress)||0)},[l,a,i,r,n,u,m,o,c,g]}class ts extends ie{constructor(e){super(),oe(this,e,es,xl,ae,{})}}function ls(s,e,t){let l;const n=rt();return Ie(s,n,r=>t(1,l=r)),s.$$.update=()=>{s.$$.dirty&2&&l.isSuccess&&pt(l.data)},[n,l]}class ss extends ie{constructor(e){super(),oe(this,e,ls,null,ae,{})}}function Xe(s,e,t){const l=s.slice();return l[8]=e[t],l}function rs(s){let e,t,l,n,r;function i(){return s[5](s[8])}return{c(){e=z("div"),t=z("button"),l=U("Show error"),this.h()},l(o){e=j(o,"DIV",{slot:!0});var u=J(e);t=j(u,"BUTTON",{class:!0});var a=J(t);l=G(a,"Show error"),a.forEach(b),u.forEach(b),this.h()},h(){W(t,"class","underline"),W(e,"slot","caption")},m(o,u){T(o,e,u),L(e,t),L(t,l),n||(r=Q(t,"click",i),n=!0)},p(o,u){s=o},d(o){o&&b(e),n=!1,r()}}}function Ye(s){let e,t;function l(){return s[6](s[8])}return e=new Jt({props:{lowContrast:!0,title:s[8].name||"Error",subtitle:s[8].message,$$slots:{caption:[rs]},$$scope:{ctx:s}}}),e.$on("close",l),{c(){q(e.$$.fragment)},l(n){M(e.$$.fragment,n)},m(n,r){P(e,n,r),t=!0},p(n,r){s=n;const i={};r&2&&(i.title=s[8].name||"Error"),r&2&&(i.subtitle=s[8].message),r&131&&(i.$$scope={dirty:r,ctx:s}),e.$set(i)},i(n){t||(v(e.$$.fragment,n),t=!0)},o(n){k(e.$$.fragment,n),t=!1},d(n){A(e,n)}}}function Ze(s){let e,t;return e=new Gl({props:{error:s[0]}}),{c(){q(e.$$.fragment)},l(l){M(e.$$.fragment,l)},m(l,n){P(e,l,n),t=!0},p(l,n){const r={};n&1&&(r.error=l[0]),e.$set(r)},i(l){t||(v(e.$$.fragment,l),t=!0)},o(l){k(e.$$.fragment,l),t=!1},d(l){A(e,l)}}}function ns(s){let e,t,l,n,r,i,o,u,a,m,c,g,f,p,E,w,S,d,D,O,$,N,Z;E=new ts({});const X=s[2].default,Y=te(X,s,s[7],null);let I=s[1],V=[];for(let _=0;_k(V[_],1,1,()=>{V[_]=null});let R=s[0]&&Ze(s);return N=new ss({}),{c(){e=z("main"),t=z("div"),l=z("a"),n=U("Lilac "),r=z("span"),i=U("Blueprint"),o=H(),u=z("a"),a=U("Datasets"),m=H(),c=z("a"),g=U("Concepts"),f=H(),p=z("div"),q(E.$$.fragment),w=H(),S=z("div"),Y&&Y.c(),d=H(),D=z("div");for(let _=0;_{R=null}),fe())},i(_){if(!Z){v(E.$$.fragment,_),v(Y,_);for(let C=0;Ct(1,l=c));let{$$slots:n={},$$scope:r}=e,i;De(()=>{Te.set(location.hash),history.pushState=function(c,g,f){return f instanceof URL&&Te.set(f.hash),History.prototype.pushState.apply(history,arguments)}});const o=()=>Te.set(location.hash),u=()=>Te.set(location.hash),a=c=>t(0,i=c),m=c=>{ct(qe,l=l.filter(g=>g!==c),l)};return s.$$set=c=>{"$$scope"in c&&t(7,r=c.$$scope)},[i,l,n,o,u,a,m,r]}class bs extends ie{constructor(e){super(),oe(this,e,os,is,ae,{})}}export{bs as component,gs as universal}; diff --git a/web/blueprint/build/_app/immutable/nodes/1.d02cbd87.js b/web/blueprint/build/_app/immutable/nodes/1.d02cbd87.js new file mode 100644 index 0000000000000000000000000000000000000000..7a7b29000cf1cb261e3009e15960d600d4a6628f --- /dev/null +++ b/web/blueprint/build/_app/immutable/nodes/1.d02cbd87.js @@ -0,0 +1 @@ +import{S,i as q,s as x,k as _,q as f,a as k,l as d,m as g,r as h,h as u,c as y,b as m,J as v,u as $,$ as E,R as C}from"../chunks/index.224851d7.js";import{s as H}from"../chunks/singletons.0ccee753.js";const J=()=>{const s=H;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},P={subscribe(s){return J().page.subscribe(s)}};function R(s){var b;let t,r=s[0].status+"",o,n,i,c=((b=s[0].error)==null?void 0:b.message)+"",l;return{c(){t=_("h1"),o=f(r),n=k(),i=_("p"),l=f(c)},l(e){t=d(e,"H1",{});var a=g(t);o=h(a,r),a.forEach(u),n=y(e),i=d(e,"P",{});var p=g(i);l=h(p,c),p.forEach(u)},m(e,a){m(e,t,a),v(t,o),m(e,n,a),m(e,i,a),v(i,l)},p(e,[a]){var p;a&1&&r!==(r=e[0].status+"")&&$(o,r),a&1&&c!==(c=((p=e[0].error)==null?void 0:p.message)+"")&&$(l,c)},i:E,o:E,d(e){e&&u(t),e&&u(n),e&&u(i)}}}function j(s,t,r){let o;return C(s,P,n=>r(0,o=n)),[o]}let A=class extends S{constructor(t){super(),q(this,t,j,R,x,{})}};export{A as component}; diff --git a/web/blueprint/build/_app/immutable/nodes/2.e3dcc6bf.js b/web/blueprint/build/_app/immutable/nodes/2.e3dcc6bf.js new file mode 100644 index 0000000000000000000000000000000000000000..496c808901856f18898fc633073e52c9db5c6147 --- /dev/null +++ b/web/blueprint/build/_app/immutable/nodes/2.e3dcc6bf.js @@ -0,0 +1 @@ +import{S as re,i as se,s as oe,k as B,y as q,a as P,e as U,l as C,m as S,z as L,c as V,h as m,n as T,b as w,A,J as p,d as y,f as J,g as k,B as M,R as G,q as D,r as E,u as z,v as K,a0 as ie,$ as ce,K as Q,_ as fe,P as ue}from"../chunks/index.224851d7.js";import{g as H}from"../chunks/navigation.6c9a524e.js";import{q as _e,d as de,a as W,S as me}from"../chunks/utils.2fa053fd.js";import{I as X}from"../chunks/InProgress.26146721.js";import{T as pe}from"../chunks/TrashCan.e59ed4ef.js";import{B as te}from"../chunks/taskMonitoringStore.8317b9f1.js";import{M as he}from"../chunks/Modal.67c6d9e8.js";import{I as $e}from"../chunks/InlineNotification.91d7c257.js";function Y(s,e,n){const t=s.slice();return t[13]=e[n],t}function ge(s){let e;return{c(){e=D("Add Dataset")},l(n){e=E(n,"Add Dataset")},m(n,t){w(n,e,t)},d(n){n&&m(e)}}}function be(s){let e,n,t=s[2].data,a=[];for(let l=0;ly(a[l],1,1,()=>{a[l]=null});return{c(){for(let l=0;l{_[N]=null}),J()),~i?(l=_[i],l?l.p(r,d):(l=_[i]=$[i](r),l.c()),k(l,1),l.m(a,null)):l=null),r[0]?o?(o.p(r,d),d&1&&k(o,1)):(o=ee(r),o.c(),k(o,1),o.m(f.parentNode,f)):o&&(K(),y(o,1,1,()=>{o=null}),J())},i(r){h||(k(n.$$.fragment,r),k(l),k(o),h=!0)},o(r){y(n.$$.fragment,r),y(l),y(o),h=!1},d(r){r&&m(e),M(n),~i&&_[i].d(),r&&m(c),o&&o.d(r),r&&m(f)}}}function Ie(s,e,n){let t,a;const i=_e();G(s,i,u=>n(2,a=u));const l=de();G(s,l,u=>n(1,t=u));let c=null;function f(){if(c==null)return;const{namespace:u,name:N}=c;t.mutate([u,N],{onSuccess:()=>n(0,c=null)})}return[c,t,a,i,l,f,()=>H("/datasets/new"),u=>H(W(u.namespace,u.dataset_name)),u=>n(0,c={namespace:u.namespace,name:u.dataset_name}),u=>H(W(u.namespace,u.dataset_name)),()=>n(0,c=null),()=>n(0,c=null),()=>f()]}class Ve extends re{constructor(e){super(),se(this,e,Ie,ye,oe,{})}}export{Ve as component}; diff --git a/web/blueprint/build/_app/immutable/nodes/3.d9dd4803.js b/web/blueprint/build/_app/immutable/nodes/3.d9dd4803.js new file mode 100644 index 0000000000000000000000000000000000000000..487322d9393f8bc43e2a1592fa9e6f286c59523e --- /dev/null +++ b/web/blueprint/build/_app/immutable/nodes/3.d9dd4803.js @@ -0,0 +1 @@ +import{S as X,i as Z,s as ee,E as te,a2 as G,a3 as Q,m as w,h as v,n as y,a4 as ae,b as M,J as b,O as $e,$ as U,D as se,F as re,q as x,r as B,u as H,w as ke,U as we,k as T,y as V,a as L,l as D,z,c as j,A as O,V as Ee,g as C,v as Y,f as J,d as S,B as R,a0 as ge,C as Ce,K as le,R as W,e as oe,a5 as ye,H as ie,a6 as Se}from"../chunks/index.224851d7.js";import{g as Te}from"../chunks/navigation.6c9a524e.js";import{T as De,a as Ie,e as Ne,C as Ae,q as xe,d as Be,b as Me,t as Pe,c as Ve,f as ze,g as Oe}from"../chunks/Commands.7700196d.js";import{T as ve}from"../chunks/TrashCan.e59ed4ef.js";import{T as Re}from"../chunks/JSONSchemaForm.cab38fde.js";import{u as Le}from"../chunks/urlHashStore.b3058edb.js";import{c as ne,S as be}from"../chunks/utils.2fa053fd.js";import{I as ce}from"../chunks/InProgress.26146721.js";import{M as je}from"../chunks/Modal.67c6d9e8.js";function fe(a){let e,n;return{c(){e=G("title"),n=x(a[1])},l(t){e=Q(t,"title",{});var l=w(e);n=B(l,a[1]),l.forEach(v)},m(t,l){M(t,e,l),b(e,n)},p(t,l){l&2&&H(n,t[1])},d(t){t&&v(e)}}}function qe(a){let e,n,t,l=a[1]&&fe(a),m=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:a[0]},{height:a[0]},a[2],a[3]],d={};for(let c=0;c{n(5,e=te(te({},e),re(i))),n(3,d=se(e,m)),"size"in i&&n(0,c=i.size),"title"in i&&n(1,f=i.title)},a.$$.update=()=>{n(4,t=e["aria-label"]||e["aria-labelledby"]||f),n(2,l={"aria-hidden":t?void 0:!0,role:t?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=re(e),[c,f,l,d,t]}class Ue extends X{constructor(e){super(),Z(this,e,He,qe,ee,{size:0,title:1})}}function ue(a,e,n){const t=a.slice();return t[6]=e[n],t}function me(a){let e,n,t=a[6].text+"",l,m,d,c,f,i,p,_;c=new ve({props:{size:16}});function r(){return a[5](a[6])}return{c(){e=T("div"),n=T("span"),l=x(t),m=L(),d=T("button"),V(c.$$.fragment),f=L(),this.h()},l(s){e=D(s,"DIV",{class:!0});var o=w(e);n=D(o,"SPAN",{class:!0});var h=w(n);l=B(h,t),h.forEach(v),m=j(o),d=D(o,"BUTTON",{title:!0,class:!0});var I=w(d);z(c.$$.fragment,I),I.forEach(v),f=j(o),o.forEach(v),this.h()},h(){y(n,"class","shrink"),y(d,"title","Remove sample"),y(d,"class","shrink-0 opacity-50 hover:text-red-400 hover:opacity-100"),y(e,"class","flex w-full justify-between gap-x-2 border-b border-gray-200 p-2 hover:bg-gray-50")},m(s,o){M(s,e,o),b(e,n),b(n,l),b(e,m),b(e,d),O(c,d,null),b(e,f),i=!0,p||(_=le(d,"click",r),p=!0)},p(s,o){a=s,(!i||o&1)&&t!==(t=a[6].text+"")&&H(l,t)},i(s){i||(C(c.$$.fragment,s),i=!0)},o(s){S(c.$$.fragment,s),i=!1},d(s){s&&v(e),R(c),p=!1,_()}}}function Fe(a){let e,n,t,l,m,d;function c(r){a[3](r)}let f={labelText:"Add example"};a[1]!==void 0&&(f.value=a[1]),n=new Re({props:f}),ke.push(()=>we(n,"value",c)),n.$on("keydown",a[4]);let i=[...a[0]].reverse(),p=[];for(let r=0;rS(p[r],1,1,()=>{p[r]=null});return{c(){e=T("div"),V(n.$$.fragment),l=L(),m=T("div");for(let r=0;rt=!1)),n.$set(o),s&5){i=[...r[0]].reverse();let h;for(h=0;h{i.key==="Enter"&&(m("add",l),n(1,l=""))},f=i=>m("remove",i.id);return a.$$set=i=>{"data"in i&&n(0,t=i.data)},[t,l,m,d,c,f]}class pe extends X{constructor(e){super(),Z(this,e,Ke,Fe,ee,{data:0})}}function Ye(a){let e,n,t,l,m,d=a[1].length+"",c,f,i,p,_,r,s,o,h,I=a[0].length+"",q,E,N,$,u;return l=new De({}),p=new pe({props:{data:a[1]}}),p.$on("remove",a[6]),p.$on("add",a[7]),o=new Ie({}),$=new pe({props:{data:a[0]}}),$.$on("remove",a[8]),$.$on("add",a[9]),{c(){e=T("div"),n=T("div"),t=T("span"),V(l.$$.fragment),m=x(" Positive ("),c=x(d),f=x(" examples)"),i=L(),V(p.$$.fragment),_=L(),r=T("div"),s=T("span"),V(o.$$.fragment),h=x("Negative ("),q=x(I),E=x(" examples)"),N=L(),V($.$$.fragment),this.h()},l(g){e=D(g,"DIV",{class:!0});var k=w(e);n=D(k,"DIV",{class:!0});var A=w(n);t=D(A,"SPAN",{class:!0});var P=w(t);z(l.$$.fragment,P),m=B(P," Positive ("),c=B(P,d),f=B(P," examples)"),P.forEach(v),i=j(A),z(p.$$.fragment,A),A.forEach(v),_=j(k),r=D(k,"DIV",{class:!0});var F=w(r);s=D(F,"SPAN",{class:!0});var K=w(s);z(o.$$.fragment,K),h=B(K,"Negative ("),q=B(K,I),E=B(K," examples)"),K.forEach(v),N=j(F),z($.$$.fragment,F),F.forEach(v),k.forEach(v),this.h()},h(){y(t,"class","flex items-center gap-x-2 text-lg"),y(n,"class","flex w-1/2 flex-col gap-y-4"),y(s,"class","flex items-center gap-x-2 text-lg"),y(r,"class","flex w-1/2 flex-col gap-y-4"),y(e,"class","flex h-full gap-x-4")},m(g,k){M(g,e,k),b(e,n),b(n,t),O(l,t,null),b(t,m),b(t,c),b(t,f),b(n,i),O(p,n,null),b(e,_),b(e,r),b(r,s),O(o,s,null),b(s,h),b(s,q),b(s,E),b(r,N),O($,r,null),u=!0},p(g,[k]){(!u||k&2)&&d!==(d=g[1].length+"")&&H(c,d);const A={};k&2&&(A.data=g[1]),p.$set(A),(!u||k&1)&&I!==(I=g[0].length+"")&&H(q,I);const P={};k&1&&(P.data=g[0]),$.$set(P)},i(g){u||(C(l.$$.fragment,g),C(p.$$.fragment,g),C(o.$$.fragment,g),C($.$$.fragment,g),u=!0)},o(g){S(l.$$.fragment,g),S(p.$$.fragment,g),S(o.$$.fragment,g),S($.$$.fragment,g),u=!1},d(g){g&&v(e),R(l),R(p),R(o),R($)}}}function Je(a,e,n){let t,l,m,{concept:d}=e;const c=Ne();W(a,c,o=>n(10,m=o));function f(o){!d.namespace||!d.concept_name||m.mutate([d.namespace,d.concept_name,{remove:[o]}])}function i(o,h){!d.namespace||!d.concept_name||m.mutate([d.namespace,d.concept_name,{insert:[{text:o,label:h}]}])}const p=o=>f(o.detail),_=o=>i(o.detail,!0),r=o=>f(o.detail),s=o=>i(o.detail,!1);return a.$$set=o=>{"concept"in o&&n(5,d=o.concept)},a.$$.update=()=>{a.$$.dirty&32&&n(1,t=Object.values(d.data).filter(o=>o.label==!0)),a.$$.dirty&32&&n(0,l=Object.values(d.data).filter(o=>o.label==!1))},[l,t,c,f,i,d,p,_,r,s]}class Ge extends X{constructor(e){super(),Z(this,e,Je,Ye,ee,{concept:5})}}function de(a,e,n){const t=a.slice();return t[16]=e[n],t}function Qe(a){let e,n,t,l,m,d,c,f=a[4].data,i=[];for(let _=0;_S(i[_],1,1,()=>{i[_]=null});return t=new Ue({}),{c(){for(let _=0;_{h[k]=null}),J()),~t?(l=h[t],l?l.p(u,g):(l=h[t]=o[t](u),l.c()),C(l,1),l.m(n,null)):l=null);let A=c;c=N(u),c===A?~c&&E[c].p(u,g):(f&&(Y(),S(E[A],1,1,()=>{E[A]=null}),J()),~c?(f=E[c],f?f.p(u,g):(f=E[c]=q[c](u),f.c()),C(f,1),f.m(d,null)):f=null),u[1]?$?($.p(u,g),g&2&&C($,1)):($=he(u),$.c(),C($,1),$.m(r.parentNode,r)):$&&(Y(),S($,1,1,()=>{$=null}),J())},i(u){s||(C(l),C(f),C(p.$$.fragment,u),C($),s=!0)},o(u){S(l),S(f),S(p.$$.fragment,u),S($),s=!1},d(u){u&&v(e),~t&&h[t].d(),~c&&E[c].d(),u&&v(i),R(p,u),u&&v(_),$&&$.d(u),u&&v(r)}}}function lt(a,e,n){let t,l,m,d,c,f=U,i=()=>(f(),f=ye(t,u=>n(5,c=u)),t);W(a,Le,u=>n(10,m=u)),a.$$.on_destroy.push(()=>f());let p,_,r=null;const s=xe();W(a,s,u=>n(4,d=u));const o=Be();W(a,o,u=>n(3,l=u));function h(){if(r==null)return;const{namespace:u,name:g}=r;l.mutate([u,g],{onSuccess:()=>{var k;for(const[A,P]of Object.entries(ze)){const F=(k=Se(Oe[A]).selectRowsSchema)==null?void 0:k.data;P.deleteConcept(u,g,F)}n(1,r=null)}})}const I=u=>n(1,r={namespace:u.namespace,name:u.name}),q=()=>Pe({command:Ve.CreateConcept,onCreate:u=>Te(ne(u.detail.namespace,u.detail.name))}),E=()=>n(1,r=null),N=()=>n(1,r=null),$=()=>h();return a.$$.update=()=>{a.$$.dirty&1024&&m.onHashChange("/(?.+)/(?.+)",u=>{n(9,p=u.namespace),n(0,_=u.conceptName)}),a.$$.dirty&513&&i(n(2,t=p&&_?Me(p,_):void 0))},[_,r,t,l,d,c,s,o,h,p,m,I,q,E,N,$]}class pt extends X{constructor(e){super(),Z(this,e,lt,nt,ee,{})}}export{pt as component}; diff --git a/web/blueprint/build/_app/immutable/nodes/4.cfdecd09.js b/web/blueprint/build/_app/immutable/nodes/4.cfdecd09.js new file mode 100644 index 0000000000000000000000000000000000000000..7a6c8033a7a2ed0f9513f969419c6c1ba88ae0dd --- /dev/null +++ b/web/blueprint/build/_app/immutable/nodes/4.cfdecd09.js @@ -0,0 +1,29 @@ +import{S as ve,i as ke,s as pe,E as Q,k as I,l as D,m as E,h as m,I as Ae,H as T,b as V,K as ae,X as nt,a7 as Oi,O as ye,$ as te,P as Ye,D as de,F as be,q as X,a as J,r as x,c as G,J as k,Q as we,e as ue,v as le,d as v,f as ne,g as b,G as Re,L as Fe,M as He,N as Oe,y as j,z as Z,A as Y,W as vt,B as U,a8 as Li,w as je,x as qe,T as Xt,a2 as fe,a3 as oe,n as S,a4 as Me,u as me,C as ft,a9 as ul,aa as fr,ab as or,ac as ur,ad as Ht,R as ze,j as xt,o as qi,Y as dt,ae as cr,af as At,_ as ji,t as dr,Z as hr,p as Pe,ag as ht,ah as Yi,ai as Ke,aj as Ot,a0 as We,ak as st,U as $t,V as el,a5 as rt,al as mr,a1 as Mt,am as _r}from"../chunks/index.224851d7.js";import{u as gr}from"../chunks/urlHashStore.b3058edb.js";import{h as kt,i as br,j as Qe,t as ot,c as ut,k as $e,e as pr,l as tl,T as vr,a as kr,I as cl,q as wr,S as St,m as Er,n as Sr,o as Vr,p as Ui,C as zr,r as Mr,s as yr,u as Tr,v as Ir,w as Dr}from"../chunks/Commands.7700196d.js";import{b as ct,g as Nt,s as De,e as gt,p as Ue,f as ll,h as nl,L as Ze,i as Cr,V as tt,j as Ne,k as Ar,l as Wi,v as Zi,n as Nr,m as Br,o as bt,r as Ki,t as Qi,u as il,w as Pr,S as It,U as Rr,x as Fr,y as yt,z as Tt,A as Zt,B as Hr,C as Or,P as Ji,D as Lr,E as qr}from"../chunks/utils.2fa053fd.js";import{c as dl,W as jr,d as Yr,B as at}from"../chunks/taskMonitoringStore.8317b9f1.js";import{C as hl}from"../chunks/Checkmark.b39b03df.js";import{w as lt,d as ml}from"../chunks/index.fd964a74.js";import{C as Ur,S as Gi,a as Xi}from"../chunks/Toggle.b9cf6836.js";import{L as Wr,a as Zr,b as Kr,c as Qr,C as Jr}from"../chunks/ComboBox.1a71e223.js";import{I as xi}from"../chunks/InlineNotification.91d7c257.js";import{I as _l}from"../chunks/InProgress.26146721.js";import{M as Gr}from"../chunks/Modal.67c6d9e8.js";function gl(n,e,t){const l=n.slice();return l[7]=e[t],l}function bl(n,e){let t,l,i,f;return{key:n,first:null,c(){t=I("div"),l=I("span"),i=X(" "),f=J(),this.h()},l(r){t=D(r,"DIV",{});var s=E(t);l=D(s,"SPAN",{});var a=E(l);i=x(a," "),a.forEach(m),f=G(s),s.forEach(m),this.h()},h(){T(l,"bx--link",!0),T(t,"bx--breadcrumb-item",!0),this.first=t},m(r,s){V(r,t,s),k(t,l),k(l,i),k(t,f)},p(r,s){},d(r){r&&m(t)}}}function Xr(n){let e,t=[],l=new Map,i,f,r=Array.from({length:n[1]},pl);const s=u=>u[7];for(let u=0;ue;function xr(n,e,t){const l=["noTrailingSlash","count"];let i=de(e,l),{noTrailingSlash:f=!1}=e,{count:r=3}=e;function s(c){we.call(this,n,c)}function a(c){we.call(this,n,c)}function o(c){we.call(this,n,c)}function u(c){we.call(this,n,c)}return n.$$set=c=>{e=Q(Q({},e),be(c)),t(2,i=de(e,l)),"noTrailingSlash"in c&&t(0,f=c.noTrailingSlash),"count"in c&&t(1,r=c.count)},[f,r,i,s,a,o,u]}class $r extends ve{constructor(e){super(),ke(this,e,xr,Xr,pe,{noTrailingSlash:0,count:1})}}const es=$r;function ts(n){let e,t,l,i,f;const r=n[4].default,s=Re(r,n,n[3],null);let a=[{"aria-label":"Breadcrumb"},n[2]],o={};for(let u=0;u{r[u]=null}),ne(),t=r[e],t?t.p(a,o):(t=r[e]=f[e](a),t.c()),b(t,1),t.m(l.parentNode,l))},i(a){i||(b(t),i=!0)},o(a){v(t),i=!1},d(a){r[e].d(a),a&&m(l)}}}function is(n,e,t){const l=["noTrailingSlash","skeleton"];let i=de(e,l),{$$slots:f={},$$scope:r}=e,{noTrailingSlash:s=!1}=e,{skeleton:a=!1}=e;function o(w){we.call(this,n,w)}function u(w){we.call(this,n,w)}function c(w){we.call(this,n,w)}function d(w){we.call(this,n,w)}function _(w){we.call(this,n,w)}function h(w){we.call(this,n,w)}function g(w){we.call(this,n,w)}function p(w){we.call(this,n,w)}return n.$$set=w=>{e=Q(Q({},e),be(w)),t(2,i=de(e,l)),"noTrailingSlash"in w&&t(0,s=w.noTrailingSlash),"skeleton"in w&&t(1,a=w.skeleton),"$$scope"in w&&t(3,r=w.$$scope)},[s,a,i,r,f,o,u,c,d,_,h,g,p]}class rs extends ve{constructor(e){super(),ke(this,e,is,ns,pe,{noTrailingSlash:0,skeleton:1})}}const ss=rs,as=n=>({}),vl=n=>({}),fs=n=>({}),kl=n=>({});function os(n){let e,t,l,i,f,r;const s=n[10].default,a=Re(s,n,n[9],null);let o=!n[3]&&(n[8].icon||n[4])&&wl(n),u=[{rel:l=n[7].target==="_blank"?"noopener noreferrer":void 0},{href:n[2]},n[7]],c={};for(let d=0;d{o=null}),ne()),Ae(e,c=ye(u,[(!i||_&128&&l!==(l=d[7].target==="_blank"?"noopener noreferrer":void 0))&&{rel:l},(!i||_&4)&&{href:d[2]},_&128&&d[7]])),T(e,"bx--link",!0),T(e,"bx--link--disabled",d[5]),T(e,"bx--link--inline",d[3]),T(e,"bx--link--visited",d[6]),T(e,"bx--link--sm",d[1]==="sm"),T(e,"bx--link--lg",d[1]==="lg")},i(d){i||(b(a,d),b(o),i=!0)},o(d){v(a,d),v(o),i=!1},d(d){d&&m(e),a&&a.d(d),o&&o.d(),n[20](null),f=!1,Ye(r)}}}function us(n){let e,t,l,i,f;const r=n[10].default,s=Re(r,n,n[9],null);let a=!n[3]&&(n[8].icon||n[4])&&El(n),o=[n[7]],u={};for(let c=0;c{a=null}),ne()),Ae(e,u=ye(o,[d&128&&c[7]])),T(e,"bx--link",!0),T(e,"bx--link--disabled",c[5]),T(e,"bx--link--inline",c[3]),T(e,"bx--link--visited",c[6])},i(c){l||(b(s,c),b(a),l=!0)},o(c){v(s,c),v(a),l=!1},d(c){c&&m(e),s&&s.d(c),a&&a.d(),n[19](null),i=!1,Ye(f)}}}function wl(n){let e,t;const l=n[10].icon,i=Re(l,n,n[9],vl),f=i||cs(n);return{c(){e=I("div"),f&&f.c(),this.h()},l(r){e=D(r,"DIV",{});var s=E(e);f&&f.l(s),s.forEach(m),this.h()},h(){T(e,"bx--link__icon",!0)},m(r,s){V(r,e,s),f&&f.m(e,null),t=!0},p(r,s){i?i.p&&(!t||s&512)&&Fe(i,l,r,r[9],t?Oe(l,r[9],s,as):He(r[9]),vl):f&&f.p&&(!t||s&16)&&f.p(r,t?s:-1)},i(r){t||(b(f,r),t=!0)},o(r){v(f,r),t=!1},d(r){r&&m(e),f&&f.d(r)}}}function cs(n){let e,t,l;var i=n[4];function f(r){return{}}return i&&(e=qe(i,f())),{c(){e&&j(e.$$.fragment),t=ue()},l(r){e&&Z(e.$$.fragment,r),t=ue()},m(r,s){e&&Y(e,r,s),V(r,t,s),l=!0},p(r,s){if(s&16&&i!==(i=r[4])){if(e){le();const a=e;v(a.$$.fragment,1,0,()=>{U(a,1)}),ne()}i?(e=qe(i,f()),j(e.$$.fragment),b(e.$$.fragment,1),Y(e,t.parentNode,t)):e=null}},i(r){l||(e&&b(e.$$.fragment,r),l=!0)},o(r){e&&v(e.$$.fragment,r),l=!1},d(r){r&&m(t),e&&U(e,r)}}}function El(n){let e,t;const l=n[10].icon,i=Re(l,n,n[9],kl),f=i||ds(n);return{c(){e=I("div"),f&&f.c(),this.h()},l(r){e=D(r,"DIV",{});var s=E(e);f&&f.l(s),s.forEach(m),this.h()},h(){T(e,"bx--link__icon",!0)},m(r,s){V(r,e,s),f&&f.m(e,null),t=!0},p(r,s){i?i.p&&(!t||s&512)&&Fe(i,l,r,r[9],t?Oe(l,r[9],s,fs):He(r[9]),kl):f&&f.p&&(!t||s&16)&&f.p(r,t?s:-1)},i(r){t||(b(f,r),t=!0)},o(r){v(f,r),t=!1},d(r){r&&m(e),f&&f.d(r)}}}function ds(n){let e,t,l;var i=n[4];function f(r){return{}}return i&&(e=qe(i,f())),{c(){e&&j(e.$$.fragment),t=ue()},l(r){e&&Z(e.$$.fragment,r),t=ue()},m(r,s){e&&Y(e,r,s),V(r,t,s),l=!0},p(r,s){if(s&16&&i!==(i=r[4])){if(e){le();const a=e;v(a.$$.fragment,1,0,()=>{U(a,1)}),ne()}i?(e=qe(i,f()),j(e.$$.fragment),b(e.$$.fragment,1),Y(e,t.parentNode,t)):e=null}},i(r){l||(e&&b(e.$$.fragment,r),l=!0)},o(r){e&&v(e.$$.fragment,r),l=!1},d(r){r&&m(t),e&&U(e,r)}}}function hs(n){let e,t,l,i;const f=[us,os],r=[];function s(a,o){return a[5]?0:1}return e=s(n),t=r[e]=f[e](n),{c(){t.c(),l=ue()},l(a){t.l(a),l=ue()},m(a,o){r[e].m(a,o),V(a,l,o),i=!0},p(a,[o]){let u=e;e=s(a),e===u?r[e].p(a,o):(le(),v(r[u],1,1,()=>{r[u]=null}),ne(),t=r[e],t?t.p(a,o):(t=r[e]=f[e](a),t.c()),b(t,1),t.m(l.parentNode,l))},i(a){i||(b(t),i=!0)},o(a){v(t),i=!1},d(a){r[e].d(a),a&&m(l)}}}function ms(n,e,t){const l=["size","href","inline","icon","disabled","visited","ref"];let i=de(e,l),{$$slots:f={},$$scope:r}=e;const s=Li(f);let{size:a=void 0}=e,{href:o=void 0}=e,{inline:u=!1}=e,{icon:c=void 0}=e,{disabled:d=!1}=e,{visited:_=!1}=e,{ref:h=null}=e;function g(B){we.call(this,n,B)}function p(B){we.call(this,n,B)}function w(B){we.call(this,n,B)}function z(B){we.call(this,n,B)}function M(B){we.call(this,n,B)}function N(B){we.call(this,n,B)}function A(B){we.call(this,n,B)}function F(B){we.call(this,n,B)}function C(B){je[B?"unshift":"push"](()=>{h=B,t(0,h)})}function H(B){je[B?"unshift":"push"](()=>{h=B,t(0,h)})}return n.$$set=B=>{e=Q(Q({},e),be(B)),t(7,i=de(e,l)),"size"in B&&t(1,a=B.size),"href"in B&&t(2,o=B.href),"inline"in B&&t(3,u=B.inline),"icon"in B&&t(4,c=B.icon),"disabled"in B&&t(5,d=B.disabled),"visited"in B&&t(6,_=B.visited),"ref"in B&&t(0,h=B.ref),"$$scope"in B&&t(9,r=B.$$scope)},[h,a,o,u,c,d,_,i,s,r,f,g,p,w,z,M,N,A,F,C,H]}class _s extends ve{constructor(e){super(),ke(this,e,ms,hs,pe,{size:1,href:2,inline:3,icon:4,disabled:5,visited:6,ref:0})}}const gs=_s,bs=n=>({props:n&4}),Sl=n=>({props:{"aria-current":n[2]["aria-current"],class:"bx--link"}}),ps=n=>({props:n&4}),Vl=n=>({props:{"aria-current":n[2]["aria-current"],class:"bx--link"}});function vs(n){let e;const t=n[3].default,l=Re(t,n,n[8],Sl);return{c(){l&&l.c()},l(i){l&&l.l(i)},m(i,f){l&&l.m(i,f),e=!0},p(i,f){l&&l.p&&(!e||f&260)&&Fe(l,t,i,i[8],e?Oe(t,i[8],f,bs):He(i[8]),Sl)},i(i){e||(b(l,i),e=!0)},o(i){v(l,i),e=!1},d(i){l&&l.d(i)}}}function ks(n){let e,t;return e=new gs({props:{href:n[0],"aria-current":n[2]["aria-current"],$$slots:{default:[ws]},$$scope:{ctx:n}}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p(l,i){const f={};i&1&&(f.href=l[0]),i&4&&(f["aria-current"]=l[2]["aria-current"]),i&260&&(f.$$scope={dirty:i,ctx:l}),e.$set(f)},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function ws(n){let e;const t=n[3].default,l=Re(t,n,n[8],Vl);return{c(){l&&l.c()},l(i){l&&l.l(i)},m(i,f){l&&l.m(i,f),e=!0},p(i,f){l&&l.p&&(!e||f&260)&&Fe(l,t,i,i[8],e?Oe(t,i[8],f,ps):He(i[8]),Vl)},i(i){e||(b(l,i),e=!0)},o(i){v(l,i),e=!1},d(i){l&&l.d(i)}}}function Es(n){let e,t,l,i,f,r;const s=[ks,vs],a=[];function o(d,_){return d[0]?0:1}t=o(n),l=a[t]=s[t](n);let u=[n[2]],c={};for(let d=0;d{a[h]=null}),ne(),l=a[t],l?l.p(d,_):(l=a[t]=s[t](d),l.c()),b(l,1),l.m(e,null)),Ae(e,c=ye(u,[_&4&&d[2]])),T(e,"bx--breadcrumb-item",!0),T(e,"bx--breadcrumb-item--current",d[1]&&d[2]["aria-current"]!=="page")},i(d){i||(b(l),i=!0)},o(d){v(l),i=!1},d(d){d&&m(e),a[t].d(),f=!1,Ye(r)}}}function Ss(n,e,t){const l=["href","isCurrentPage"];let i=de(e,l),{$$slots:f={},$$scope:r}=e,{href:s=void 0}=e,{isCurrentPage:a=!1}=e;Xt("BreadcrumbItem",{});function o(_){we.call(this,n,_)}function u(_){we.call(this,n,_)}function c(_){we.call(this,n,_)}function d(_){we.call(this,n,_)}return n.$$set=_=>{e=Q(Q({},e),be(_)),t(2,i=de(e,l)),"href"in _&&t(0,s=_.href),"isCurrentPage"in _&&t(1,a=_.isCurrentPage),"$$scope"in _&&t(8,r=_.$$scope)},[s,a,i,f,o,u,c,d,r]}class Vs extends ve{constructor(e){super(),ke(this,e,Ss,Es,pe,{href:0,isCurrentPage:1})}}const Yt=Vs;function zl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function zs(n){let e,t,l=n[1]&&zl(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class ys extends ve{constructor(e){super(),ke(this,e,Ms,zs,pe,{size:0,title:1})}}const Ts=ys;function Is(n){let e,t,l,i,f,r,s=[n[1]],a={};for(let o=0;o{e=Q(Q({},e),be(u)),t(1,i=de(e,l)),"size"in u&&t(0,f=u.size)},[f,i,r,s,a,o]}class Cs extends ve{constructor(e){super(),ke(this,e,Ds,Is,pe,{size:0})}}const As=Cs,Ns=n=>({}),Ml=n=>({});function Bs(n){let e,t,l,i,f,r,s,a,o,u,c,d,_,h,g,p;var w=n[14];function z(y){return{props:{class:"bx--search-magnifier-icon"}}}w&&(l=qe(w,z()));const M=n[20].labelText,N=Re(M,n,n[19],Ml),A=N||Rs(n);let F=[{type:"text"},{role:"searchbox"},{autofocus:o=n[11]===!0?!0:void 0},{autocomplete:n[10]},{disabled:n[7]},{id:n[15]},{placeholder:n[9]},n[18]],C={};for(let y=0;y{U(W,1)}),ne()}w?(l=qe(w,z()),j(l.$$.fragment),b(l.$$.fragment,1),Y(l,t,null)):l=null}N?N.p&&(!h||R[0]&524288)&&Fe(N,M,y,y[19],h?Oe(M,y[19],R,Ns):He(y[19]),Ml):A&&A.p&&(!h||R[0]&8192)&&A.p(y,h?R:[-1,-1]),(!h||R[0]&32768&&r!==(r=y[15]+"-search"))&&S(f,"id",r),(!h||R[0]&32768)&&S(f,"for",y[15]),Ae(a,C=ye(F,[{type:"text"},{role:"searchbox"},(!h||R[0]&2048&&o!==(o=y[11]===!0?!0:void 0))&&{autofocus:o},(!h||R[0]&1024)&&{autocomplete:y[10]},(!h||R[0]&128)&&{disabled:y[7]},(!h||R[0]&32768)&&{id:y[15]},(!h||R[0]&512)&&{placeholder:y[9]},R[0]&262144&&y[18]])),R[0]&4&&a.value!==y[2]&&ul(a,y[2]),T(a,"bx--search-input",!0);const ee={};if(R[0]&8&&(ee.size=y[3]==="xl"?20:16),H!==(H=dl)){if(d){le();const W=d;v(W.$$.fragment,1,0,()=>{U(W,1)}),ne()}H?(d=qe(H,B(y)),j(d.$$.fragment),b(d.$$.fragment,1),Y(d,c,null)):d=null}else H&&d.$set(ee);(!h||R[0]&4096)&&S(c,"aria-label",y[12]),(!h||R[0]&128)&&(c.disabled=y[7]),(!h||R[0]&4)&&T(c,"bx--search-close--hidden",y[2]===""),(!h||R[0]&32768&&_!==(_=y[15]+"-search"))&&S(e,"aria-labelledby",_),(!h||R[0]&16)&&S(e,"class",y[4]),(!h||R[0]&16)&&T(e,"bx--search",!0),(!h||R[0]&80)&&T(e,"bx--search--light",y[6]),(!h||R[0]&144)&&T(e,"bx--search--disabled",y[7]),(!h||R[0]&24)&&T(e,"bx--search--sm",y[3]==="sm"),(!h||R[0]&24)&&T(e,"bx--search--lg",y[3]==="lg"),(!h||R[0]&24)&&T(e,"bx--search--xl",y[3]==="xl"),(!h||R[0]&272)&&T(e,"bx--search--expandable",y[8]),(!h||R[0]&17)&&T(e,"bx--search--expanded",y[0])},i(y){h||(l&&b(l.$$.fragment,y),b(A,y),d&&b(d.$$.fragment,y),h=!0)},o(y){l&&v(l.$$.fragment,y),v(A,y),d&&v(d.$$.fragment,y),h=!1},d(y){y&&m(e),l&&U(l),n[33](null),A&&A.d(y),n[35](null),d&&U(d),g=!1,Ye(p)}}}function Ps(n){let e,t;const l=[{size:n[3]},n[18]];let i={};for(let f=0;f{r[u]=null}),ne(),t=r[e],t?t.p(a,o):(t=r[e]=f[e](a),t.c()),b(t,1),t.m(l.parentNode,l))},i(a){i||(b(t),i=!0)},o(a){v(t),i=!1},d(a){r[e].d(a),a&&m(l)}}}function Hs(n,e,t){const l=["value","size","searchClass","skeleton","light","disabled","expandable","expanded","placeholder","autocomplete","autofocus","closeButtonLabelText","labelText","icon","id","ref"];let i=de(e,l),{$$slots:f={},$$scope:r}=e,{value:s=""}=e,{size:a="xl"}=e,{searchClass:o=""}=e,{skeleton:u=!1}=e,{light:c=!1}=e,{disabled:d=!1}=e,{expandable:_=!1}=e,{expanded:h=!1}=e,{placeholder:g="Search..."}=e,{autocomplete:p="off"}=e,{autofocus:w=!1}=e,{closeButtonLabelText:z="Clear search input"}=e,{labelText:M=""}=e,{icon:N=Ts}=e,{id:A="ccs-"+Math.random().toString(36)}=e,{ref:F=null}=e;const C=ft();let H=null;function B(O){we.call(this,n,O)}function y(O){we.call(this,n,O)}function R(O){we.call(this,n,O)}function ee(O){we.call(this,n,O)}function W(O){we.call(this,n,O)}function ie(O){we.call(this,n,O)}function he(O){we.call(this,n,O)}function $(O){we.call(this,n,O)}function P(O){we.call(this,n,O)}function ce(O){we.call(this,n,O)}function re(O){we.call(this,n,O)}function se(O){we.call(this,n,O)}function ge(O){je[O?"unshift":"push"](()=>{H=O,t(16,H)})}const Ee=()=>{_&&t(0,h=!0)};function Ce(O){je[O?"unshift":"push"](()=>{F=O,t(1,F)})}function _e(){s=this.value,t(2,s)}const Se=()=>{_&&t(0,h=!0)},K=()=>{h&&s.trim().length===0&&t(0,h=!1)},L=({key:O})=>{O==="Escape"&&(t(2,s=""),C("clear"))},q=()=>{t(2,s=""),F.focus(),C("clear")};return n.$$set=O=>{e=Q(Q({},e),be(O)),t(18,i=de(e,l)),"value"in O&&t(2,s=O.value),"size"in O&&t(3,a=O.size),"searchClass"in O&&t(4,o=O.searchClass),"skeleton"in O&&t(5,u=O.skeleton),"light"in O&&t(6,c=O.light),"disabled"in O&&t(7,d=O.disabled),"expandable"in O&&t(8,_=O.expandable),"expanded"in O&&t(0,h=O.expanded),"placeholder"in O&&t(9,g=O.placeholder),"autocomplete"in O&&t(10,p=O.autocomplete),"autofocus"in O&&t(11,w=O.autofocus),"closeButtonLabelText"in O&&t(12,z=O.closeButtonLabelText),"labelText"in O&&t(13,M=O.labelText),"icon"in O&&t(14,N=O.icon),"id"in O&&t(15,A=O.id),"ref"in O&&t(1,F=O.ref),"$$scope"in O&&t(19,r=O.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&3&&h&&F&&F.focus(),n.$$.dirty[0]&1&&C(h?"expand":"collapse")},[h,F,s,a,o,u,c,d,_,g,p,w,z,M,N,A,H,C,i,r,f,B,y,R,ee,W,ie,he,$,P,ce,re,se,ge,Ee,Ce,_e,Se,K,L,q]}class Os extends ve{constructor(e){super(),ke(this,e,Hs,Fs,pe,{value:2,size:3,searchClass:4,skeleton:5,light:6,disabled:7,expandable:8,expanded:0,placeholder:9,autocomplete:10,autofocus:11,closeButtonLabelText:12,labelText:13,icon:14,id:15,ref:1},null,[-1,-1])}}const Ls=Os;function yl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function qs(n){let e,t,l,i,f=n[1]&&yl(n),r=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],s={};for(let a=0;a{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Ys extends ve{constructor(e){super(),ke(this,e,js,qs,pe,{size:0,title:1})}}const Us=Ys;function Tl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function Ws(n){let e,t,l,i,f=n[1]&&Tl(n),r=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],s={};for(let a=0;a{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Ks extends ve{constructor(e){super(),ke(this,e,Zs,Ws,pe,{size:0,title:1})}}const Qs=Ks,Js=n=>({}),Il=n=>({});function Gs(n){let e,t,l;var i=n[1];function f(r){return{props:{"aria-label":r[10],title:r[10],class:"bx--overflow-menu__icon "+r[9]}}}return i&&(e=qe(i,f(n))),{c(){e&&j(e.$$.fragment),t=ue()},l(r){e&&Z(e.$$.fragment,r),t=ue()},m(r,s){e&&Y(e,r,s),V(r,t,s),l=!0},p(r,s){const a={};if(s[0]&1024&&(a["aria-label"]=r[10]),s[0]&1024&&(a.title=r[10]),s[0]&512&&(a.class="bx--overflow-menu__icon "+r[9]),s[0]&2&&i!==(i=r[1])){if(e){le();const o=e;v(o.$$.fragment,1,0,()=>{U(o,1)}),ne()}i?(e=qe(i,f(r)),j(e.$$.fragment),b(e.$$.fragment,1),Y(e,t.parentNode,t)):e=null}else i&&e.$set(a)},i(r){l||(e&&b(e.$$.fragment,r),l=!0)},o(r){e&&v(e.$$.fragment,r),l=!1},d(r){r&&m(t),e&&U(e,r)}}}function Dl(n){let e,t;const l=n[24].default,i=Re(l,n,n[23],null);return{c(){e=I("ul"),i&&i.c(),this.h()},l(f){e=D(f,"UL",{role:!0,tabindex:!0,"aria-label":!0,"data-floating-menu-direction":!0,class:!0});var r=E(e);i&&i.l(r),r.forEach(m),this.h()},h(){S(e,"role","menu"),S(e,"tabindex","-1"),S(e,"aria-label",n[13]),S(e,"data-floating-menu-direction",n[5]),S(e,"class",n[8]),T(e,"bx--overflow-menu-options",!0),T(e,"bx--overflow-menu--flip",n[7]),T(e,"bx--overflow-menu-options--open",n[0]),T(e,"bx--overflow-menu-options--light",n[6]),T(e,"bx--overflow-menu-options--sm",n[4]==="sm"),T(e,"bx--overflow-menu-options--xl",n[4]==="xl"),T(e,"bx--breadcrumb-menu-options",!!n[14])},m(f,r){V(f,e,r),i&&i.m(e,null),n[31](e),t=!0},p(f,r){i&&i.p&&(!t||r[0]&8388608)&&Fe(i,l,f,f[23],t?Oe(l,f[23],r,null):He(f[23]),null),(!t||r[0]&8192)&&S(e,"aria-label",f[13]),(!t||r[0]&32)&&S(e,"data-floating-menu-direction",f[5]),(!t||r[0]&256)&&S(e,"class",f[8]),(!t||r[0]&256)&&T(e,"bx--overflow-menu-options",!0),(!t||r[0]&384)&&T(e,"bx--overflow-menu--flip",f[7]),(!t||r[0]&257)&&T(e,"bx--overflow-menu-options--open",f[0]),(!t||r[0]&320)&&T(e,"bx--overflow-menu-options--light",f[6]),(!t||r[0]&272)&&T(e,"bx--overflow-menu-options--sm",f[4]==="sm"),(!t||r[0]&272)&&T(e,"bx--overflow-menu-options--xl",f[4]==="xl"),(!t||r[0]&16640)&&T(e,"bx--breadcrumb-menu-options",!!f[14])},i(f){t||(b(i,f),t=!0)},o(f){v(i,f),t=!1},d(f){f&&m(e),i&&i.d(f),n[31](null)}}}function Xs(n){let e,t,l,i,f,r,s,a;const o=n[24].menu,u=Re(o,n,n[23],Il),c=u||Gs(n);let d=n[0]&&Dl(n),_=[{type:"button"},{"aria-haspopup":""},{"aria-expanded":n[0]},{"aria-label":n[13]},{id:n[11]},n[19]],h={};for(let g=0;g<_.length;g+=1)h=Q(h,_[g]);return{c(){e=new fr(!1),t=ue(),l=J(),i=I("button"),c&&c.c(),f=J(),d&&d.c(),this.h()},l(g){const p=or("svelte-7ztmff",document.head);e=ur(p,!1),t=ue(),p.forEach(m),l=G(g),i=D(g,"BUTTON",{type:!0,"aria-haspopup":!0,"aria-expanded":!0,"aria-label":!0,id:!0});var w=E(i);c&&c.l(w),f=G(w),d&&d.l(w),w.forEach(m),this.h()},h(){e.a=t,Ae(i,h),T(i,"bx--overflow-menu",!0),T(i,"bx--overflow-menu--open",n[0]),T(i,"bx--overflow-menu--light",n[6]),T(i,"bx--overflow-menu--sm",n[4]==="sm"),T(i,"bx--overflow-menu--xl",n[4]==="xl")},m(g,p){e.m(n[12],document.head),k(document.head,t),V(g,l,p),V(g,i,p),c&&c.m(i,null),k(i,f),d&&d.m(i,null),i.autofocus&&i.focus(),n[32](i),r=!0,s||(a=[ae(window,"click",n[30]),ae(i,"click",n[25]),ae(i,"click",n[33]),ae(i,"mouseover",n[26]),ae(i,"mouseenter",n[27]),ae(i,"mouseleave",n[28]),ae(i,"keydown",n[29]),ae(i,"keydown",n[34]),ae(i,"focusout",n[35])],s=!0)},p(g,p){(!r||p[0]&4096)&&e.p(g[12]),u?u.p&&(!r||p[0]&8388608)&&Fe(u,o,g,g[23],r?Oe(o,g[23],p,Js):He(g[23]),Il):c&&c.p&&(!r||p[0]&1538)&&c.p(g,r?p:[-1,-1]),g[0]?d?(d.p(g,p),p[0]&1&&b(d,1)):(d=Dl(g),d.c(),b(d,1),d.m(i,null)):d&&(le(),v(d,1,1,()=>{d=null}),ne()),Ae(i,h=ye(_,[{type:"button"},{"aria-haspopup":""},(!r||p[0]&1)&&{"aria-expanded":g[0]},(!r||p[0]&8192)&&{"aria-label":g[13]},(!r||p[0]&2048)&&{id:g[11]},p[0]&524288&&g[19]])),T(i,"bx--overflow-menu",!0),T(i,"bx--overflow-menu--open",g[0]),T(i,"bx--overflow-menu--light",g[6]),T(i,"bx--overflow-menu--sm",g[4]==="sm"),T(i,"bx--overflow-menu--xl",g[4]==="xl")},i(g){r||(b(c,g),b(d),r=!0)},o(g){v(c,g),v(d),r=!1},d(g){m(t),g&&e.d(),g&&m(l),g&&m(i),c&&c.d(g),d&&d.d(),n[32](null),s=!1,Ye(a)}}}function xs(n,e,t){let l,i;const f=["size","direction","open","light","flipped","menuOptionsClass","icon","iconClass","iconDescription","id","buttonRef","menuRef"];let r=de(e,f),s,a,o,{$$slots:u={},$$scope:c}=e,{size:d=void 0}=e,{direction:_="bottom"}=e,{open:h=!1}=e,{light:g=!1}=e,{flipped:p=!1}=e,{menuOptionsClass:w=void 0}=e,{icon:z=Us}=e,{iconClass:M=void 0}=e,{iconDescription:N="Open and close list of options"}=e,{id:A="ccs-"+Math.random().toString(36)}=e,{buttonRef:F=null}=e,{menuRef:C=null}=e;const H=Ht("BreadcrumbItem"),B=ft(),y=lt([]);ze(n,y,L=>t(22,a=L));const R=lt(void 0);ze(n,R,L=>t(37,o=L));const ee=lt(void 0),W=lt(-1);ze(n,W,L=>t(21,s=L));let ie,he=!0;Xt("OverflowMenu",{focusedId:ee,add:({id:L,text:q,primaryFocus:O,disabled:Ve})=>{y.update(Le=>(O&&W.set(Le.length),[...Le,{id:L,text:q,primaryFocus:O,disabled:Ve,index:Le.length}]))},update:L=>{R.set(L)},change:L=>{let q=s+L;q<0?q=a.length-1:q>=a.length&&(q=0);let O=a[q].disabled;for(;O;)q=q+L,q<0?q=a.length-1:q>=a.length&&(q=0),O=a[q].disabled;W.set(q)}}),xt(()=>{if(o){const{index:L,text:q}=a.filter(O=>O.id===o)[0];B("close",{index:L,text:q}),t(0,h=!1)}if(h){const{width:L,height:q}=F.getBoundingClientRect();t(20,ie=L),!he&&s<0&&C.focus(),p&&(t(3,C.style.left="auto",C),t(3,C.style.right=0,C)),_==="top"?(t(3,C.style.top="auto",C),t(3,C.style.bottom=q+"px",C)):_==="bottom"&&t(3,C.style.top=q+"px",C),H&&(t(3,C.style.top=q+10+"px",C),t(3,C.style.left="-11px",C))}h||(y.set([]),R.set(void 0),W.set(0)),he=!1});function $(L){we.call(this,n,L)}function P(L){we.call(this,n,L)}function ce(L){we.call(this,n,L)}function re(L){we.call(this,n,L)}function se(L){we.call(this,n,L)}const ge=({target:L})=>{F&&F.contains(L)||C&&!C.contains(L)&&t(0,h=!1)};function Ee(L){je[L?"unshift":"push"](()=>{C=L,t(3,C)})}function Ce(L){je[L?"unshift":"push"](()=>{F=L,t(2,F)})}const _e=({target:L})=>{C&&C.contains(L)||(t(0,h=!h),h||B("close"))},Se=L=>{h&&(["ArrowDown","ArrowLeft","ArrowRight","ArrowUp"].includes(L.key)?L.preventDefault():L.key==="Escape"&&(L.stopPropagation(),B("close"),t(0,h=!1),F.focus()))},K=L=>{h&&(F.contains(L.relatedTarget)||(B("close"),t(0,h=!1)))};return n.$$set=L=>{t(39,e=Q(Q({},e),be(L))),t(19,r=de(e,f)),"size"in L&&t(4,d=L.size),"direction"in L&&t(5,_=L.direction),"open"in L&&t(0,h=L.open),"light"in L&&t(6,g=L.light),"flipped"in L&&t(7,p=L.flipped),"menuOptionsClass"in L&&t(8,w=L.menuOptionsClass),"icon"in L&&t(1,z=L.icon),"iconClass"in L&&t(9,M=L.iconClass),"iconDescription"in L&&t(10,N=L.iconDescription),"id"in L&&t(11,A=L.id),"buttonRef"in L&&t(2,F=L.buttonRef),"menuRef"in L&&t(3,C=L.menuRef),"$$scope"in L&&t(23,c=L.$$scope)},n.$$.update=()=>{t(13,l=e["aria-label"]||"menu"),n.$$.dirty[0]&6291456&&a[s]&&ee.set(a[s].id),n.$$.dirty[0]&1050624&&t(12,i=``)},H&&t(1,z=Qs),e=be(e),[h,z,F,C,d,_,g,p,w,M,N,A,i,l,H,B,y,R,W,r,ie,s,a,c,u,$,P,ce,re,se,ge,Ee,Ce,_e,Se,K]}class $s extends ve{constructor(e){super(),ke(this,e,xs,Xs,pe,{size:4,direction:5,open:0,light:6,flipped:7,menuOptionsClass:8,icon:1,iconClass:9,iconDescription:10,id:11,buttonRef:2,menuRef:3},null,[-1,-1])}}const ea=$s;function ta(n){let e,t,l,i;const f=n[16].default,r=Re(f,n,n[15],null),s=r||na(n);let a=[n[7]],o={};for(let u=0;u{r[d]=null}),ne(),l=r[t],l?l.p(u,c):(l=r[t]=f[t](u),l.c()),b(l,1),l.m(e,null)),Ae(e,o=ye(a,[{role:"none"},(!i||c&64)&&{id:u[6]},c&2048&&u[11]])),T(e,"bx--overflow-menu-options__option",!0),T(e,"bx--overflow-menu--divider",u[4]),T(e,"bx--overflow-menu-options__option--danger",u[5]),T(e,"bx--overflow-menu-options__option--disabled",u[3])},i(u){i||(b(l),i=!0)},o(u){v(l),i=!1},d(u){u&&m(e),r[t].d()}}}function sa(n,e,t){let l;const i=["text","href","primaryFocus","disabled","hasDivider","danger","requireTitle","id","ref"];let f=de(e,i),r,{$$slots:s={},$$scope:a}=e;const o=Li(s);let{text:u="Provide text"}=e,{href:c=""}=e,{primaryFocus:d=!1}=e,{disabled:_=!1}=e,{hasDivider:h=!1}=e,{danger:g=!1}=e,{requireTitle:p=!0}=e,{id:w="ccs-"+Math.random().toString(36)}=e,{ref:z=null}=e;const{focusedId:M,add:N,update:A,change:F}=Ht("OverflowMenu");ze(n,M,P=>t(14,r=P)),N({id:w,text:u,primaryFocus:d,disabled:_}),xt(()=>{z&&d&&z.focus()});function C(P){we.call(this,n,P)}function H(P){we.call(this,n,P)}function B(P){we.call(this,n,P)}function y(P){we.call(this,n,P)}function R(P){je[P?"unshift":"push"](()=>{z=P,t(0,z)})}const ee=()=>{A(w)},W=({key:P})=>{P==="ArrowDown"?F(1):P==="ArrowUp"&&F(-1)};function ie(P){je[P?"unshift":"push"](()=>{z=P,t(0,z)})}const he=()=>{A(w)},$=({key:P})=>{P==="ArrowDown"?F(1):P==="ArrowUp"&&F(-1)};return n.$$set=P=>{e=Q(Q({},e),be(P)),t(11,f=de(e,i)),"text"in P&&t(1,u=P.text),"href"in P&&t(2,c=P.href),"primaryFocus"in P&&t(12,d=P.primaryFocus),"disabled"in P&&t(3,_=P.disabled),"hasDivider"in P&&t(4,h=P.hasDivider),"danger"in P&&t(5,g=P.danger),"requireTitle"in P&&t(13,p=P.requireTitle),"id"in P&&t(6,w=P.id),"ref"in P&&t(0,z=P.ref),"$$scope"in P&&t(15,a=P.$$scope)},n.$$.update=()=>{n.$$.dirty&16448&&t(12,d=r===w),n.$$.dirty&8206&&t(7,l={role:"menuitem",tabindex:"-1",class:"bx--overflow-menu-options__btn",disabled:c?void 0:_,href:c||void 0,title:p?o.default?void 0:u:void 0})},[z,u,c,_,h,g,w,l,M,A,F,f,d,p,r,a,s,C,H,B,y,R,ee,W,ie,he,$]}class aa extends ve{constructor(e){super(),ke(this,e,sa,ra,pe,{text:1,href:2,primaryFocus:12,disabled:3,hasDivider:4,danger:5,requireTitle:13,id:6,ref:0})}}const wt=aa;function Cl(n,e,t){const l=n.slice();return l[39]=e[t],l[41]=t,l}const fa=n=>({item:n[0]&8,index:n[0]&8}),Al=n=>({item:n[39],index:n[41]});function Nl(n){let e,t;return{c(){e=I("label"),t=X(n[10]),this.h()},l(l){e=D(l,"LABEL",{for:!0});var i=E(e);t=x(i,n[10]),i.forEach(m),this.h()},h(){S(e,"for",n[19]),T(e,"bx--label",!0),T(e,"bx--label--disabled",n[9]),T(e,"bx--visually-hidden",n[17])},m(l,i){V(l,e,i),k(e,t)},p(l,i){i[0]&1024&&me(t,l[10]),i[0]&524288&&S(e,"for",l[19]),i[0]&512&&T(e,"bx--label--disabled",l[9]),i[0]&131072&&T(e,"bx--visually-hidden",l[17])},d(l){l&&m(e)}}}function Bl(n){let e,t;return e=new jr({props:{class:"bx--list-box__invalid-icon"}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function Pl(n){let e,t;return e=new Yr({props:{class:"bx--list-box__invalid-icon bx--list-box__invalid-icon--warning"}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function oa(n){let e;return{c(){e=X(n[16])},l(t){e=x(t,n[16])},m(t,l){V(t,e,l)},p(t,l){l[0]&65536&&me(e,t[16])},d(t){t&&m(e)}}}function ua(n){let e=n[4](n[22])+"",t;return{c(){t=X(e)},l(l){t=x(l,e)},m(l,i){V(l,t,i)},p(l,i){i[0]&4194320&&e!==(e=l[4](l[22])+"")&&me(t,e)},d(l){l&&m(t)}}}function Rl(n){let e,t;return e=new Kr({props:{"aria-labelledby":n[19],id:n[19],$$slots:{default:[ha]},$$scope:{ctx:n}}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p(l,i){const f={};i[0]&524288&&(f["aria-labelledby"]=l[19]),i[0]&524288&&(f.id=l[19]),i[0]&2097181|i[1]&64&&(f.$$scope={dirty:i,ctx:l}),e.$set(f)},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function ca(n){let e=n[4](n[39])+"",t;return{c(){t=X(e)},l(l){t=x(l,e)},m(l,i){V(l,t,i)},p(l,i){i[0]&24&&e!==(e=l[4](l[39])+"")&&me(t,e)},d(l){l&&m(t)}}}function da(n){let e,t;const l=n[29].default,i=Re(l,n,n[37],Al),f=i||ca(n);return{c(){f&&f.c(),e=J()},l(r){f&&f.l(r),e=G(r)},m(r,s){f&&f.m(r,s),V(r,e,s),t=!0},p(r,s){i?i.p&&(!t||s[0]&8|s[1]&64)&&Fe(i,l,r,r[37],t?Oe(l,r[37],s,fa):He(r[37]),Al):f&&f.p&&(!t||s[0]&24)&&f.p(r,t?s:[-1,-1])},i(r){t||(b(f,r),t=!0)},o(r){v(f,r),t=!1},d(r){f&&f.d(r),r&&m(e)}}}function Fl(n,e){let t,l,i;function f(...s){return e[34](e[39],...s)}function r(){return e[35](e[39],e[41])}return l=new Qr({props:{id:e[39].id,active:e[0]===e[39].id,highlighted:e[21]===e[41],disabled:e[39].disabled,$$slots:{default:[da]},$$scope:{ctx:e}}}),l.$on("click",f),l.$on("mouseenter",r),{key:n,first:null,c(){t=ue(),j(l.$$.fragment),this.h()},l(s){t=ue(),Z(l.$$.fragment,s),this.h()},h(){this.first=t},m(s,a){V(s,t,a),Y(l,s,a),i=!0},p(s,a){e=s;const o={};a[0]&8&&(o.id=e[39].id),a[0]&9&&(o.active=e[0]===e[39].id),a[0]&2097160&&(o.highlighted=e[21]===e[41]),a[0]&8&&(o.disabled=e[39].disabled),a[0]&24|a[1]&64&&(o.$$scope={dirty:a,ctx:e}),l.$set(o)},i(s){i||(b(l.$$.fragment,s),i=!0)},o(s){v(l.$$.fragment,s),i=!1},d(s){s&&m(t),U(l,s)}}}function ha(n){let e=[],t=new Map,l,i,f=n[3];const r=s=>s[39].id;for(let s=0;s{d=null}),ne()),!z[11]&&z[13]?_?M[0]&10240&&b(_,1):(_=Pl(),_.c(),b(_,1),_.m(t.parentNode,t)):_&&(le(),v(_,1,1,()=>{_=null}),ne()),g===(g=h(z))&&p?p.p(z,M):(p.d(1),p=g(z),p&&(p.c(),p.m(i,null)));const N={};M[0]&262144&&(N.translateWithId=z[18]),M[0]&2&&(N.open=z[1]),r.$set(N),(!o||M[0]&2)&&S(l,"aria-expanded",z[1]),(!o||M[0]&512)&&(l.disabled=z[9]),(!o||M[0]&262144)&&S(l,"translatewithid",z[18]),(!o||M[0]&524288)&&S(l,"id",z[19]),z[1]?w?(w.p(z,M),M[0]&2&&b(w,1)):(w=Rl(z),w.c(),b(w,1),w.m(a.parentNode,a)):w&&(le(),v(w,1,1,()=>{w=null}),ne())},i(z){o||(b(d),b(_),b(r.$$.fragment,z),b(w),o=!0)},o(z){v(d),v(_),v(r.$$.fragment,z),v(w),o=!1},d(z){d&&d.d(z),z&&m(e),_&&_.d(z),z&&m(t),z&&m(l),p.d(),U(r),n[31](null),z&&m(s),w&&w.d(z),z&&m(a),u=!1,Ye(c)}}}function Hl(n){let e,t;return{c(){e=I("div"),t=X(n[15]),this.h()},l(l){e=D(l,"DIV",{});var i=E(e);t=x(i,n[15]),i.forEach(m),this.h()},h(){T(e,"bx--form__helper-text",!0),T(e,"bx--form__helper-text--disabled",n[9])},m(l,i){V(l,e,i),k(e,t)},p(l,i){i[0]&32768&&me(t,l[15]),i[0]&512&&T(e,"bx--form__helper-text--disabled",l[9])},d(l){l&&m(e)}}}function _a(n){let e,t,l,i,f,r,s,a=n[10]&&Nl(n);l=new Wr({props:{role:void 0,type:n[5],size:n[7],name:n[20],"aria-label":n[28]["aria-label"],class:`bx--dropdown + `+(n[6]==="top"&&"bx--list-box--up")+` + `+(n[11]&&"bx--dropdown--invalid")+` + `+(!n[11]&&n[13]&&"bx--dropdown--warning")+` + `+(n[1]&&"bx--dropdown--open")+` + `+(n[7]==="sm"&&"bx--dropdown--sm")+` + `+(n[7]==="xl"&&"bx--dropdown--xl")+` + `+(n[23]&&"bx--dropdown--inline")+` + `+(n[9]&&"bx--dropdown--disabled")+` + `+(n[8]&&"bx--dropdown--light"),disabled:n[9],open:n[1],invalid:n[11],invalidText:n[12],light:n[8],warn:n[13],warnText:n[14],$$slots:{default:[ma]},$$scope:{ctx:n}}}),l.$on("click",n[36]);let o=!n[23]&&!n[11]&&!n[13]&&n[15]&&Hl(n),u=[n[27]],c={};for(let d=0;dK.text||K.id}=e,{selectedId:c}=e,{type:d="default"}=e,{direction:_="bottom"}=e,{size:h=void 0}=e,{open:g=!1}=e,{light:p=!1}=e,{disabled:w=!1}=e,{titleText:z=""}=e,{invalid:M=!1}=e,{invalidText:N=""}=e,{warn:A=!1}=e,{warnText:F=""}=e,{helperText:C=""}=e,{label:H=void 0}=e,{hideLabel:B=!1}=e,{translateWithId:y=void 0}=e,{id:R="ccs-"+Math.random().toString(36)}=e,{name:ee=void 0}=e,{ref:W=null}=e;const ie=ft();let he=-1;function $(K){let L=he+K;if(o.length===0)return;L<0?L=o.length-1:L>=o.length&&(L=0);let q=o[L].disabled;for(;q;)L=L+K,L<0?L=o.length-1:L>=o.length&&(L=0),q=o[L].disabled;t(21,he=L)}const P=()=>{ie("select",{selectedId:c,selectedItem:o.find(K=>K.id===c)})},ce=({target:K})=>{g&&W&&!W.contains(K)&&t(1,g=!1)};qi(()=>(parent&&parent.addEventListener("click",ce),()=>{parent&&parent.removeEventListener("click",ce)}));const re=K=>{K.stopPropagation(),!w&&t(1,g=!g)};function se(K){je[K?"unshift":"push"](()=>{W=K,t(2,W)})}const ge=K=>{const{key:L}=K;["Enter","ArrowDown","ArrowUp"].includes(L)&&K.preventDefault(),L==="Enter"?(t(1,g=!g),he>-1&&o[he].id!==c&&(t(0,c=o[he].id),P(),t(1,g=!1))):L==="Tab"?(t(1,g=!1),W.blur()):L==="ArrowDown"?(g||t(1,g=!0),$(1)):L==="ArrowUp"?(g||t(1,g=!0),$(-1)):L==="Escape"&&t(1,g=!1)},Ee=K=>{const{key:L}=K;if([" "].includes(L))K.preventDefault();else return;t(1,g=!g),he>-1&&o[he].id!==c&&(t(0,c=o[he].id),P(),t(1,g=!1))},Ce=(K,L)=>{if(K.disabled){L.stopPropagation();return}t(0,c=K.id),P(),W.focus()},_e=(K,L)=>{K.disabled||t(21,he=L)},Se=({target:K})=>{w||t(1,g=W.contains(K)?!g:!1)};return n.$$set=K=>{t(28,e=Q(Q({},e),be(K))),t(27,r=de(e,f)),"items"in K&&t(3,o=K.items),"itemToString"in K&&t(4,u=K.itemToString),"selectedId"in K&&t(0,c=K.selectedId),"type"in K&&t(5,d=K.type),"direction"in K&&t(6,_=K.direction),"size"in K&&t(7,h=K.size),"open"in K&&t(1,g=K.open),"light"in K&&t(8,p=K.light),"disabled"in K&&t(9,w=K.disabled),"titleText"in K&&t(10,z=K.titleText),"invalid"in K&&t(11,M=K.invalid),"invalidText"in K&&t(12,N=K.invalidText),"warn"in K&&t(13,A=K.warn),"warnText"in K&&t(14,F=K.warnText),"helperText"in K&&t(15,C=K.helperText),"label"in K&&t(16,H=K.label),"hideLabel"in K&&t(17,B=K.hideLabel),"translateWithId"in K&&t(18,y=K.translateWithId),"id"in K&&t(19,R=K.id),"name"in K&&t(20,ee=K.name),"ref"in K&&t(2,W=K.ref),"$$scope"in K&&t(37,a=K.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&32&&t(23,l=d==="inline"),n.$$.dirty[0]&9&&t(22,i=o.find(K=>K.id===c)),n.$$.dirty[0]&2&&(g||t(21,he=-1))},e=be(e),[c,g,W,o,u,d,_,h,p,w,z,M,N,A,F,C,H,B,y,R,ee,he,i,l,$,P,ce,r,e,s,re,se,ge,Ee,Ce,_e,Se,a]}class ba extends ve{constructor(e){super(),ke(this,e,ga,_a,pe,{items:3,itemToString:4,selectedId:0,type:5,direction:6,size:7,open:1,light:8,disabled:9,titleText:10,invalid:11,invalidText:12,warn:13,warnText:14,helperText:15,label:16,hideLabel:17,translateWithId:18,id:19,name:20,ref:2},null,[-1,-1])}}const pa=ba;function va(n){const e=n-1;return e*e*e+1}function Ol(n,{delay:e=0,duration:t=400,easing:l=cr}={}){const i=+getComputedStyle(n).opacity;return{delay:e,duration:t,easing:l,css:f=>`opacity: ${f*i}`}}function pt(n,{delay:e=0,duration:t=400,easing:l=va,axis:i="y"}={}){const f=getComputedStyle(n),r=+f.opacity,s=i==="y"?"height":"width",a=parseFloat(f[s]),o=i==="y"?["top","bottom"]:["left","right"],u=o.map(w=>`${w[0].toUpperCase()}${w.slice(1)}`),c=parseFloat(f[`padding${u[0]}`]),d=parseFloat(f[`padding${u[1]}`]),_=parseFloat(f[`margin${u[0]}`]),h=parseFloat(f[`margin${u[1]}`]),g=parseFloat(f[`border${u[0]}Width`]),p=parseFloat(f[`border${u[1]}Width`]);return{delay:e,duration:t,easing:l,css:w=>`overflow: hidden;opacity: ${Math.min(w*20,1)*r};${s}: ${w*a}px;padding-${o[0]}: ${w*c}px;padding-${o[1]}: ${w*d}px;margin-${o[0]}: ${w*_}px;margin-${o[1]}: ${w*h}px;border-${o[0]}-width: ${w*g}px;border-${o[1]}-width: ${w*p}px;`}}const ka=n=>({}),Ll=n=>({});function ql(n){let e=n[3].label+"",t;return{c(){t=X(e)},l(l){t=x(l,e)},m(l,i){V(l,t,i)},p(l,i){i[0]&8&&e!==(e=l[3].label+"")&&me(t,e)},d(l){l&&m(t)}}}function wa(n){let e,t,l,i,f,r,s,a,o,u,c,d,_=n[3]&&ql(n);f=new Ur({props:{"aria-hidden":"true",title:n[1]}});const h=n[20].default,g=Re(h,n,n[19],null);let p=[{role:"navigation"},n[10]],w={};for(let N=0;Nt(18,o=se));const N=ml(M,se=>se.reduce((ge,Ee)=>({...ge,[Ee.id]:Ee}),{}));ze(n,N,se=>t(28,u=se));const A=lt(g),F=lt(void 0);ze(n,F,se=>t(16,s=se));const C=lt([]);ze(n,C,se=>t(17,a=se));const H=ml(C,se=>se.reduce((ge,Ee)=>({...ge,[Ee.id]:Ee}),{})),B=lt(void 0);let y=null;Xt("Tabs",{tabs:M,contentById:H,selectedTab:F,selectedContent:B,useAutoWidth:A,add:se=>{M.update(ge=>[...ge,{...se,index:ge.length}])},addContent:se=>{C.update(ge=>[...ge,{...se,index:ge.length}])},update:se=>{t(14,ee=u[se].index)},change:async se=>{let ge=ee+se;ge<0?ge=o.length-1:ge>=o.length&&(ge=0);let Ee=o[ge].disabled;for(;Ee;)ge=ge+se,ge<0?ge=o.length-1:ge>=o.length&&(ge=0),Ee=o[ge].disabled;t(14,ee=ge),await dr();const Ce=y==null?void 0:y.querySelectorAll("[role='tab']")[ee];Ce==null||Ce.focus()}}),xt(()=>{t(12,_=ee),W>-1&&W!==ee&&z("change",ee),W=ee});let R=!0,ee=_,W=-1;function ie(se){we.call(this,n,se)}function he(se){we.call(this,n,se)}const $=()=>{t(5,R=!R)},P=()=>{t(5,R=!R)},ce=()=>{t(5,R=!R)};function re(se){je[se?"unshift":"push"](()=>{y=se,t(4,y)})}return n.$$set=se=>{t(11,e=Q(Q({},e),be(se))),t(10,r=de(e,f)),"selected"in se&&t(12,_=se.selected),"type"in se&&t(0,h=se.type),"autoWidth"in se&&t(13,g=se.autoWidth),"iconDescription"in se&&t(1,p=se.iconDescription),"triggerHref"in se&&t(2,w=se.triggerHref),"$$scope"in se&&t(19,d=se.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&4096&&t(14,ee=_),n.$$.dirty[0]&278528&&t(3,l=o[ee]||void 0),n.$$.dirty[0]&147456&&t(15,i=a[ee]||void 0),n.$$.dirty[0]&32776&&(l&&F.set(l.id),i&&B.set(i.id)),n.$$.dirty[0]&65536&&s&&t(5,R=!0),n.$$.dirty[0]&8192&&A.set(g)},e=be(e),[h,p,w,l,y,R,M,N,F,C,r,e,_,g,ee,i,s,a,o,d,c,ie,he,$,P,ce,re]}class Sa extends ve{constructor(e){super(),ke(this,e,Ea,wa,pe,{selected:12,type:0,autoWidth:13,iconDescription:1,triggerHref:2},null,[-1,-1])}}const $i=Sa;function Va(n){let e;return{c(){e=X(n[1])},l(t){e=x(t,n[1])},m(t,l){V(t,e,l)},p(t,l){l&2&&me(e,t[1])},d(t){t&&m(e)}}}function za(n){let e,t,l,i,f,r,s;const a=n[15].default,o=Re(a,n,n[14],null),u=o||Va(n);let c=[{tabindex:"-1"},{role:"presentation"},n[12]],d={};for(let _=0;_t(13,r=ee)),ze(n,w,ee=>t(7,s=ee)),z({id:h,label:u,disabled:d});function A(ee){we.call(this,n,ee)}function F(ee){we.call(this,n,ee)}function C(ee){we.call(this,n,ee)}function H(ee){we.call(this,n,ee)}function B(ee){je[ee?"unshift":"push"](()=>{g=ee,t(0,g)})}const y=()=>{d||M(h)},R=({key:ee})=>{d||(ee==="ArrowRight"?N(1):ee==="ArrowLeft"?N(-1):(ee===" "||ee==="Enter")&&M(h))};return n.$$set=ee=>{e=Q(Q({},e),be(ee)),t(12,f=de(e,i)),"label"in ee&&t(1,u=ee.label),"href"in ee&&t(2,c=ee.href),"disabled"in ee&&t(3,d=ee.disabled),"tabindex"in ee&&t(4,_=ee.tabindex),"id"in ee&&t(5,h=ee.id),"ref"in ee&&t(0,g=ee.ref),"$$scope"in ee&&t(14,o=ee.$$scope)},n.$$.update=()=>{n.$$.dirty&8224&&t(6,l=r===h)},[g,u,c,d,_,h,l,s,p,w,M,N,f,r,o,a,A,F,C,H,B,y,R]}class ya extends ve{constructor(e){super(),ke(this,e,Ma,za,pe,{label:1,href:2,disabled:3,tabindex:4,id:5,ref:0})}}const Vt=ya;function Ta(n){let e,t,l,i;const f=n[12].default,r=Re(f,n,n[11],null);let s=[{role:"tabpanel"},{"aria-labelledby":n[1]},{"aria-hidden":t=!n[2]},{hidden:l=n[2]?void 0:""},{id:n[0]},n[6]],a={};for(let o=0;ot(10,u=z)),ze(n,p,z=>t(8,a=z)),ze(n,w,z=>t(9,o=z)),g({id:_}),n.$$set=z=>{e=Q(Q({},e),be(z)),t(6,s=de(e,r)),"id"in z&&t(0,_=z.id),"$$scope"in z&&t(11,d=z.$$scope)},n.$$.update=()=>{n.$$.dirty&1025&&t(2,l=u===_),n.$$.dirty&513&&t(7,i=o[_].index),n.$$.dirty&384&&t(1,f=a[i].id)},[_,f,l,h,p,w,s,i,a,o,u,d,c]}class Da extends ve{constructor(e){super(),ke(this,e,Ia,Ta,pe,{id:0})}}const zt=Da;function jl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function Ca(n){let e,t,l=n[1]&&jl(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Na extends ve{constructor(e){super(),ke(this,e,Aa,Ca,pe,{size:0,title:1})}}function Yl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function Ba(n){let e,t,l=n[1]&&Yl(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Kt extends ve{constructor(e){super(),ke(this,e,Pa,Ba,pe,{size:0,title:1})}}function Ul(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function Ra(n){let e,t,l,i=n[1]&&Ul(n),f=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],r={};for(let s=0;s{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}let Ha=class extends ve{constructor(e){super(),ke(this,e,Fa,Ra,pe,{size:0,title:1})}};function Wl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function Oa(n){let e,t,l=n[1]&&Wl(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class qa extends ve{constructor(e){super(),ke(this,e,La,Oa,pe,{size:0,title:1})}}function Zl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function ja(n){let e,t,l,i,f=n[1]&&Zl(n),r=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],s={};for(let a=0;a{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Ut extends ve{constructor(e){super(),ke(this,e,Ya,ja,pe,{size:0,title:1})}}function Kl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function Ua(n){let e,t,l,i=n[1]&&Kl(n),f=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],r={};for(let s=0;s{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class it extends ve{constructor(e){super(),ke(this,e,Wa,Ua,pe,{size:0,title:1})}}function Ql(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function Za(n){let e,t,l=n[1]&&Ql(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Qa extends ve{constructor(e){super(),ke(this,e,Ka,Za,pe,{size:0,title:1})}}function Jl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function Ja(n){let e,t,l,i=n[1]&&Jl(n),f=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],r={};for(let s=0;s{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Qt extends ve{constructor(e){super(),ke(this,e,Ga,Ja,pe,{size:0,title:1})}}function Gl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function Xa(n){let e,t,l,i=n[1]&&Gl(n),f=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],r={};for(let s=0;s{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class $a extends ve{constructor(e){super(),ke(this,e,xa,Xa,pe,{size:0,title:1})}}function Xl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function ef(n){let e,t,l=n[1]&&Xl(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class lf extends ve{constructor(e){super(),ke(this,e,tf,ef,pe,{size:0,title:1})}}function xl(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function nf(n){let e,t,l=n[1]&&xl(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class sf extends ve{constructor(e){super(),ke(this,e,rf,nf,pe,{size:0,title:1})}}function $l(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function af(n){let e,t,l,i=n[1]&&$l(n),f=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],r={};for(let s=0;s{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Bt extends ve{constructor(e){super(),ke(this,e,ff,af,pe,{size:0,title:1})}}function en(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function of(n){let e,t,l=n[1]&&en(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class cf extends ve{constructor(e){super(),ke(this,e,uf,of,pe,{size:0,title:1})}}function tn(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function df(n){let e,t,l=n[1]&&tn(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Pt extends ve{constructor(e){super(),ke(this,e,hf,df,pe,{size:0,title:1})}}function ln(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function mf(n){let e,t,l=n[1]&&ln(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Rt extends ve{constructor(e){super(),ke(this,e,_f,mf,pe,{size:0,title:1})}}function nn(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function gf(n){let e,t,l=n[1]&&nn(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class rn extends ve{constructor(e){super(),ke(this,e,bf,gf,pe,{size:0,title:1})}}function sn(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function pf(n){let e,t,l=n[1]&&sn(n),i=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],f={};for(let r=0;r{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class an extends ve{constructor(e){super(),ke(this,e,vf,pf,pe,{size:0,title:1})}}function fn(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function kf(n){let e,t,l,i=n[1]&&fn(n),f=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],r={};for(let s=0;s{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Dt extends ve{constructor(e){super(),ke(this,e,wf,kf,pe,{size:0,title:1})}}function on(n){let e,t;return{c(){e=fe("title"),t=X(n[1])},l(l){e=oe(l,"title",{});var i=E(e);t=x(i,n[1]),i.forEach(m)},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&2&&me(t,l[1])},d(l){l&&m(e)}}}function Ef(n){let e,t,l,i=n[1]&&on(n),f=[{xmlns:"http://www.w3.org/2000/svg"},{viewBox:"0 0 32 32"},{fill:"currentColor"},{preserveAspectRatio:"xMidYMid meet"},{width:n[0]},{height:n[0]},n[2],n[3]],r={};for(let s=0;s{t(5,e=Q(Q({},e),be(o))),t(3,r=de(e,f)),"size"in o&&t(0,s=o.size),"title"in o&&t(1,a=o.title)},n.$$.update=()=>{t(4,l=e["aria-label"]||e["aria-labelledby"]||a),t(2,i={"aria-hidden":l?void 0:!0,role:l?"img":void 0,focusable:Number(e.tabindex)===0?!0:void 0})},e=be(e),[s,a,i,r,l]}class Vf extends ve{constructor(e){super(),ke(this,e,Sf,Ef,pe,{size:0,title:1})}}const zf=100;function Mf(n,e,t,l){if(e==null)return[];let i=[];return l==null?i=ct(t||e):i=Nt(l,t||e),i.filter(f=>tr(n,f.path))}function yf(n,e){return e.some(t=>Ue(t.path,n.path))}function Tf(n,e){const t=Ze.field(n);return t==null?!1:yf(t,e)}function er(n,e){const t={};let l;if(n.fields!=null){for(const[f,r]of Object.entries(n.fields))if(e.some(s=>Ue(s.path,r.path))){const s=er(r,e);s!=null&&(t[f]=s)}}else n.repeated_field!=null&&(e.some(f=>{var r;return Ue(f.path,(r=n.repeated_field)==null?void 0:r.path)})?l=n.repeated_field:l=void 0);return l==null&&Object.keys(t).length===0?{...n,fields:void 0,repeated_field:void 0}:n.path.length===0||e.some(f=>Ue(f.path,n.path))?{...n,fields:t,repeated_field:l}:null}function If(n,e){var l,i;const t=[];for(const f of ll(n)){const r=e==null?void 0:e.find(a=>Ue(a.path,f.path)),s=(i=(l=r==null?void 0:r.stats)==null?void 0:l.data)==null?void 0:i.avg_text_length;s!=null&&s>zf&&t.push(f)}return t}function tr(n,e){if(n==null)return!1;if(typeof e!="string"&&(e=De(e)),n[e]!=null)return n[e];const t=gt(e);return t.length>1?tr(n,De(t.slice(0,t.length-1))):!0}function lr(n,e){return n.searchPath!=null&&n.selectedColumns[n.searchPath]!=!1?gt(n.searchPath):Df(e)}function nr(n,e,t,l){if(t==null)return null;if(n.searchEmbedding!=null)return n.searchEmbedding;const i=rl(e,t);return(i!=null?[...l||[]].sort((r,s)=>{const a=i.includes(r),o=i.includes(s);return a&&o?0:a?-1:o?1:0}):[])[0]}function rl(n,e){var i;if(n.schema==null||e==null)return[];const t=new Set,l=ct(nl(n.schema,e)).filter(f=>f.signal!=null&&ct(f).some(r=>r.dtype==="embedding"));for(const f of l)((i=f.signal)==null?void 0:i.signal_name)!=null&&t.add(f.signal.signal_name);return Array.from(t)}function Lt(n,e){return e==null||n==null?!1:(n.udfs||[]).some(t=>Cr(t.path,e))}function sl(n,e){return e==null?n.queryOptions.searches||[]:(n.queryOptions.searches||[]).filter(t=>Ue(t.path,e))}function Df(n){if(n.stats==null||n.stats.length===0)return null;const e=(n.visibleFields||[]).filter(t=>t.dtype==="string").map(t=>De(t.path));for(const t of n.stats){const l=De(t.path);if(e.indexOf(l)>=0)return t.path}return null}function Cf(n){var e,t;return(((t=(e=n.selectRowsSchema)==null?void 0:e.data)==null?void 0:t.sorts)||[])[0]||null}function Af(n,e){const t=n.length,l=Object.fromEntries(Object.keys(e).map(s=>[s,0]));for(const s of Object.keys(e))e[s].sort((a,o)=>{var d,_;const u=((d=a[tt])==null?void 0:d.start)||0,c=((_=o[tt])==null?void 0:_.start)||0;return u-c});let i=0;const f=[];let r=Object.fromEntries(Object.entries(l).map(([s,a])=>[s,[e[s][a],e[s][a+1]]]));for(;ii&&(s=d.start),d.endi&&(s=d.end))}const a=Object.fromEntries(Object.entries(r).map(([u,c])=>[u,c.filter(d=>d!=null&&d[tt]!=null&&d[tt].starti)]));for(const u of Object.keys(a))a[u].length===0&&delete a[u];const o=Object.values(a).flat().map(u=>Ze.path(u)).map(u=>De(u));f.push({text:n.slice(i,s),span:{start:i,end:s},originalSpans:a,paths:o});for(const u of Object.keys(l)){const c=l[u],d=(r[u][0]||{})[tt];if(!(d==null||c==null)&&d.end<=s){if(c>e[u].length){delete l[u];continue}l[u]++}}i=s,r=Object.fromEntries(Object.entries(l).map(([u,c])=>[u,[e[u][c],e[u][c+1]]]))}return i{if(!r)return;const M=z.target;p(M,s,i)<=l?(!u&&r&&(o("loadMore"),t(8,d=M.scrollHeight),t(9,_=M.scrollTop)),t(7,u=!0)):t(7,u=!1)},p=(z,M,N)=>{const A=z.documentElement?z.documentElement:z;return M?N?A.scrollLeft:A.scrollTop:N?A.scrollWidth-A.clientWidth-A.scrollLeft:A.scrollHeight-A.clientHeight-A.scrollTop};qi(()=>{a?t(10,h=document):f?t(10,h=f):t(10,h=c.parentNode)}),hr(()=>{h&&(h.removeEventListener("scroll",g),h.removeEventListener("resize",g))});function w(z){je[z?"unshift":"push"](()=>{c=z,t(2,c)})}return n.$$set=z=>{"threshold"in z&&t(3,l=z.threshold),"horizontal"in z&&t(4,i=z.horizontal),"elementScroll"in z&&t(0,f=z.elementScroll),"hasMore"in z&&t(5,r=z.hasMore),"reverse"in z&&t(6,s=z.reverse),"window"in z&&t(1,a=z.window)},n.$$.update=()=>{n.$$.dirty&1088&&h&&(s&&t(10,h.scrollTop=h.scrollHeight,h),h.addEventListener("scroll",g),h.addEventListener("resize",g)),n.$$.dirty&1984&&u&&s&&t(10,h.scrollTop=h.scrollHeight-d+_,h)},[f,a,c,l,i,r,s,u,d,_,h,w]}class Pf extends ve{constructor(e){super(),ke(this,e,Bf,Nf,pe,{threshold:3,horizontal:4,elementScroll:0,hasMore:5,reverse:6,window:1})}}function Rf(n){let e,t,l;const i=[n[4]];var f=n[3];function r(s){let a={};for(let o=0;o{U(u,1)}),ne()}f?(e=qe(f,r()),j(e.$$.fragment),b(e.$$.fragment,1),Y(e,t.parentNode,t)):e=null}else f&&e.$set(o)},i(s){l||(e&&b(e.$$.fragment,s),l=!0)},o(s){e&&v(e.$$.fragment,s),l=!1},d(s){s&&m(t),e&&U(e,s)}}}function Ff(n){let e,t;return{c(){e=I("span"),t=X(n[0]),this.h()},l(l){e=D(l,"SPAN",{class:!0});var i=E(e);t=x(i,n[0]),i.forEach(m),this.h()},h(){S(e,"class","whitespace-pre-wrap")},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&1&&me(t,l[0])},i:te,o:te,d(l){l&&m(e)}}}function Hf(n){let e,t,l,i,f=`${n[2]}px`,r=`${Math.max(n[5]/2+Ct,Math.min(n[1],n[6]-n[5]/2-Ct))}px`,s;const a=[Ff,Rf],o=[];function u(c,d){return c[0]?0:c[3]?1:-1}return~(t=u(n))&&(l=o[t]=a[t](n)),{c(){e=I("div"),l&&l.c(),this.h()},l(c){e=D(c,"DIV",{role:!0,class:!0});var d=E(e);l&&l.l(d),d.forEach(m),this.h()},h(){S(e,"role","tooltip"),S(e,"class","absolute z-50 mt-2 min-w-max max-w-xs -translate-x-1/2 break-words border border-gray-300 bg-white p-2 shadow-md"),ht(()=>n[7].call(e)),Pe(e,"top",f),Pe(e,"left",r)},m(c,d){V(c,e,d),~t&&o[t].m(e,null),i=Yi(e,n[7].bind(e)),s=!0},p(c,[d]){let _=t;t=u(c),t===_?~t&&o[t].p(c,d):(l&&(le(),v(o[_],1,1,()=>{o[_]=null}),ne()),~t?(l=o[t],l?l.p(c,d):(l=o[t]=a[t](c),l.c()),b(l,1),l.m(e,null)):l=null),d&4&&f!==(f=`${c[2]}px`)&&Pe(e,"top",f),d&34&&r!==(r=`${Math.max(c[5]/2+Ct,Math.min(c[1],c[6]-c[5]/2-Ct))}px`)&&Pe(e,"left",r)},i(c){s||(b(l),s=!0)},o(c){v(l),s=!1},d(c){c&&m(e),~t&&o[t].d(),i()}}}const Ct=10;function Of(n,e,t){let{text:l}=e,{x:i}=e,{y:f}=e,{component:r}=e,{props:s}=e;const a=window.innerWidth;let o=0;function u(){o=this.clientWidth,t(5,o)}return n.$$set=c=>{"text"in c&&t(0,l=c.text),"x"in c&&t(1,i=c.x),"y"in c&&t(2,f=c.y),"component"in c&&t(3,r=c.component),"props"in c&&t(4,s=c.props)},[l,i,f,r,s,o,a,u]}class Lf extends ve{constructor(e){super(),ke(this,e,Of,Hf,pe,{text:0,x:1,y:2,component:3,props:4})}}function xe(n,{text:e,component:t,props:l}){if(t==null&&e==null)return;let i,f=e,r=t,s=l;function a(){if(i!=null)return;const u=n.getBoundingClientRect();i=new Lf({props:{text:f,component:r,props:s,x:u.left+u.width/2,y:u.bottom},target:document.body})}function o(){i==null||i.$destroy(),i=void 0}return n.addEventListener("mouseover",a),n.addEventListener("mouseleave",o),{update({text:u,component:c,props:d}){f=u,r=c,s=d,i==null||i.$set({tooltipText:u})},destroy(){o(),n.removeEventListener("mouseover",a),n.removeEventListener("mouseleave",o)}}}function qf(n){let e,t,l,i,f,r,s,a;l=new br({});const o=n[3].default,u=Re(o,n,n[6],null);return{c(){e=I("div"),t=I("button"),j(l.$$.fragment),i=J(),f=I("span"),u&&u.c(),this.h()},l(c){e=D(c,"DIV",{class:!0});var d=E(e);t=D(d,"BUTTON",{class:!0});var _=E(t);Z(l.$$.fragment,_),_.forEach(m),i=G(d),f=D(d,"SPAN",{class:!0});var h=E(f);u&&u.l(h),h.forEach(m),d.forEach(m),this.h()},h(){S(t,"class","opacity-50 hover:opacity-100"),S(f,"class","truncate"),S(e,"class","removable-tag flex items-center gap-x-1")},m(c,d){V(c,e,d),k(e,t),Y(l,t,null),k(e,i),k(e,f),u&&u.m(f,null),r=!0,s||(a=ae(t,"click",ji(n[4])),s=!0)},p(c,d){u&&u.p&&(!r||d&64)&&Fe(u,o,c,c[6],r?Oe(o,c[6],d,null):He(c[6]),null)},i(c){r||(b(l.$$.fragment,c),b(u,c),r=!0)},o(c){v(l.$$.fragment,c),v(u,c),r=!1},d(c){c&&m(e),U(l),u&&u.d(c),s=!1,a()}}}function jf(n){let e,t;const l=[{type:n[0]},n[2]];let i={$$slots:{default:[qf]},$$scope:{ctx:n}};for(let f=0;fs("remove");function u(c){we.call(this,n,c)}return n.$$set=c=>{e=Q(Q({},e),be(c)),t(2,i=de(e,l)),"type"in c&&t(0,a=c.type),"$$scope"in c&&t(6,r=c.$$scope)},[a,s,i,f,o,u,r]}class qt extends ve{constructor(e){super(),ke(this,e,Yf,jf,pe,{type:0})}}function Uf(n){let e=(n[2]?"":n[5])+"",t,l,i=n[0][n[1].op]+"",f,r,s;return{c(){t=X(e),l=J(),f=X(i),r=J(),s=X(n[4])},l(a){t=x(a,e),l=G(a),f=x(a,i),r=G(a),s=x(a,n[4])},m(a,o){V(a,t,o),V(a,l,o),V(a,f,o),V(a,r,o),V(a,s,o)},p(a,o){o&36&&e!==(e=(a[2]?"":a[5])+"")&&me(t,e),o&2&&i!==(i=a[0][a[1].op]+"")&&me(f,i),o&16&&me(s,a[4])},d(a){a&&m(t),a&&m(l),a&&m(f),a&&m(r),a&&m(s)}}}function Wf(n){let e,t,l,i,f,r;return t=new qt({props:{interactive:!0,type:"magenta",$$slots:{default:[Uf]},$$scope:{ctx:n}}}),t.$on("click",n[9]),t.$on("remove",n[10]),{c(){e=I("div"),j(t.$$.fragment),this.h()},l(s){e=D(s,"DIV",{class:!0});var a=E(e);Z(t.$$.fragment,a),a.forEach(m),this.h()},h(){S(e,"class","filter-pill items-center")},m(s,a){V(s,e,a),Y(t,e,null),i=!0,f||(r=Ke(l=xe.call(null,e,{text:n[6]})),f=!0)},p(s,[a]){const o={};a&2102&&(o.$$scope={dirty:a,ctx:s}),t.$set(o),l&&Ot(l.update)&&a&64&&l.update.call(null,{text:s[6]})},i(s){i||(b(t.$$.fragment,s),i=!0)},o(s){v(t.$$.fragment,s),i=!1},d(s){s&&m(e),U(t),f=!1,r()}}}function Zf(n,e,t){let l,i,f,r,s;const a={equals:"=",not_equal:"≠",less:"<",less_equal:"≤",greater:">",greater_equal:"≥",in:"in",exists:"exists"};let{filter:o}=e,{hidePath:u=!1}=e;const c=Qe();ze(n,c,h=>t(7,s=h));const d=()=>ot({command:ut.EditFilter,namespace:s.namespace,datasetName:s.datasetName,path:i}),_=()=>c.removeFilter(o);return n.$$set=h=>{"filter"in h&&t(1,o=h.filter),"hidePath"in h&&t(2,u=h.hidePath)},n.$$.update=()=>{n.$$.dirty&2&&t(4,l=Ne(o.value||"")),n.$$.dirty&2&&t(3,i=gt(o.path)),n.$$.dirty&18&&t(6,f=`${De(o.path)} ${a[o.op]} ${l}`),n.$$.dirty&8&&t(5,r=i.at(-1))},[a,o,u,i,l,r,f,s,c,d,_]}class al extends ve{constructor(e){super(),ke(this,e,Zf,Wf,pe,{FILTER_SHORTHANDS:0,filter:1,hidePath:2})}get FILTER_SHORTHANDS(){return this.$$.ctx[0]}}function Kf(n){let e=(n[1]?"":n[0])+"",t;return{c(){t=X(e)},l(l){t=x(l,e)},m(l,i){V(l,t,i)},p(l,i){i&3&&e!==(e=(l[1]?"":l[0])+"")&&me(t,e)},d(l){l&&m(t)}}}function Qf(n){let e,t,l,i,f;const r=[n[2],{type:"purple"},{icon:Kt}];let s={$$slots:{default:[Kf]},$$scope:{ctx:n}};for(let a=0;a{e=Q(Q({},e),be(s)),t(2,i=de(e,l)),"embedding"in s&&t(0,f=s.embedding),"hideEmbeddingName"in s&&t(1,r=s.hideEmbeddingName)},[f,r,i]}class jt extends ve{constructor(e){super(),ke(this,e,Jf,Qf,pe,{embedding:0,hideEmbeddingName:1})}}function Gf(n){let e=De(n[0].path)+"",t,l,i=n[0].query.type+"",f;return{c(){t=X(e),l=X(": "),f=X(i)},l(r){t=x(r,e),l=x(r,": "),f=x(r,i)},m(r,s){V(r,t,s),V(r,l,s),V(r,f,s)},p(r,s){s&1&&e!==(e=De(r[0].path)+"")&&me(t,e),s&1&&i!==(i=r[0].query.type+"")&&me(f,i)},d(r){r&&m(t),r&&m(l),r&&m(f)}}}function cn(n){let e,t,l;return t=new jt({props:{embedding:n[0].query.embedding}}),{c(){e=I("div"),j(t.$$.fragment),this.h()},l(i){e=D(i,"DIV",{class:!0});var f=E(e);Z(t.$$.fragment,f),f.forEach(m),this.h()},h(){S(e,"class","ml-2")},m(i,f){V(i,e,f),Y(t,e,null),l=!0},p(i,f){const r={};f&1&&(r.embedding=i[0].query.embedding),t.$set(r)},i(i){l||(b(t.$$.fragment,i),l=!0)},o(i){v(t.$$.fragment,i),l=!1},d(i){i&&m(e),U(t)}}}function dn(n){let e,t;return{c(){e=I("div"),t=X(n[2]),this.h()},l(l){e=D(l,"DIV",{class:!0});var i=E(e);t=x(i,n[2]),i.forEach(m),this.h()},h(){S(e,"class","mt-2 whitespace-pre-wrap text-left")},m(l,i){V(l,e,i),k(e,t)},p(l,i){i&4&&me(t,l[2])},d(l){l&&m(e)}}}function Xf(n){let e,t,l,i,f,r,s;l=new kt({props:{type:n[1],$$slots:{default:[Gf]},$$scope:{ctx:n}}});let a=(n[0].query.type==="semantic"||n[0].query.type==="concept")&&cn(n),o=n[2]&&dn(n);return{c(){e=I("div"),t=I("div"),j(l.$$.fragment),i=J(),a&&a.c(),f=J(),o&&o.c(),r=ue(),this.h()},l(u){e=D(u,"DIV",{class:!0});var c=E(e);t=D(c,"DIV",{class:!0});var d=E(t);Z(l.$$.fragment,d),d.forEach(m),i=G(c),a&&a.l(c),c.forEach(m),f=G(u),o&&o.l(u),r=ue(),this.h()},h(){S(t,"class","whitespace-nowrap"),S(e,"class","flex items-center justify-items-center")},m(u,c){V(u,e,c),k(e,t),Y(l,t,null),k(e,i),a&&a.m(e,null),V(u,f,c),o&&o.m(u,c),V(u,r,c),s=!0},p(u,[c]){const d={};c&2&&(d.type=u[1]),c&9&&(d.$$scope={dirty:c,ctx:u}),l.$set(d),u[0].query.type==="semantic"||u[0].query.type==="concept"?a?(a.p(u,c),c&1&&b(a,1)):(a=cn(u),a.c(),b(a,1),a.m(e,null)):a&&(le(),v(a,1,1,()=>{a=null}),ne()),u[2]?o?o.p(u,c):(o=dn(u),o.c(),o.m(r.parentNode,r)):o&&(o.d(1),o=null)},i(u){s||(b(l.$$.fragment,u),b(a),s=!0)},o(u){v(l.$$.fragment,u),v(a),s=!1},d(u){u&&m(e),U(l),a&&a.d(),u&&m(f),o&&o.d(u),u&&m(r)}}}function xf(n,e,t){let l,{search:i}=e,{tagType:f="outline"}=e;return n.$$set=r=>{"search"in r&&t(0,i=r.search),"tagType"in r&&t(1,f=r.tagType)},n.$$.update=()=>{n.$$.dirty&1&&t(2,l=i.query.type==="concept"?"":i.query.search)},[i,f,l]}class hn extends ve{constructor(e){super(),ke(this,e,xf,Xf,pe,{search:0,tagType:1})}}function $f(n){let e;return{c(){e=X(n[2])},l(t){e=x(t,n[2])},m(t,l){V(t,e,l)},p(t,l){l&4&&me(e,t[2])},d(t){t&&m(e)}}}function eo(n){let e,t,l,i,f,r;return t=new qt({props:{title:"query",interactive:!0,type:n[1],$$slots:{default:[$f]},$$scope:{ctx:n}}}),t.$on("remove",n[6]),{c(){e=I("div"),j(t.$$.fragment),this.h()},l(s){e=D(s,"DIV",{class:!0});var a=E(e);Z(t.$$.fragment,a),a.forEach(m),this.h()},h(){S(e,"class","search-pill items-center")},m(s,a){V(s,e,a),Y(t,e,null),i=!0,f||(r=Ke(l=xe.call(null,e,{component:hn,props:{search:n[0],tagType:n[1]}})),f=!0)},p(s,[a]){const o={};a&2&&(o.type=s[1]),a&260&&(o.$$scope={dirty:a,ctx:s}),t.$set(o),l&&Ot(l.update)&&a&3&&l.update.call(null,{component:hn,props:{search:s[0],tagType:s[1]}})},i(s){i||(b(t.$$.fragment,s),i=!0)},o(s){v(t.$$.fragment,s),i=!1},d(s){s&&m(e),U(t),f=!1,r()}}}function to(n,e,t){let l,i,f,{search:r}=e;const s={keyword:"outline",semantic:"teal",concept:"green"},a=Qe(),o=$e();ze(n,o,c=>t(3,f=c));const u=()=>{var c;return a.removeSearch(r,((c=f.selectRowsSchema)==null?void 0:c.data)||null)};return n.$$set=c=>{"search"in c&&t(0,r=c.search)},n.$$.update=()=>{n.$$.dirty&1&&t(2,l=r.query.type==="concept"?`${r.query.concept_namespace}/${r.query.concept_name}`:r.query.search),n.$$.dirty&1&&t(1,i=r.query.type!=null?s[r.query.type]:"outline")},[r,i,l,f,a,o,u]}class ir extends ve{constructor(e){super(),ke(this,e,to,eo,pe,{search:0})}}function mn(n,e,t){const l=n.slice();return l[9]=e[t],l}function _n(n,e,t){const l=n.slice();return l[12]=e[t],l}function gn(n,e,t){const l=n.slice();return l[15]=e[t],l}function bn(n){let e,t,l=n[6][n[12]]+"",i,f,r,s,a,o=n[2][n[12]],u=[];for(let d=0;dv(u[d],1,1,()=>{u[d]=null});return{c(){e=I("div"),t=I("div"),i=X(l),f=J(),r=I("div");for(let d=0;d{l=null}),ne())},i(i){t||(b(l),t=!0)},o(i){v(l),t=!1},d(i){l&&l.d(i),i&&m(e)}}}function kn(n){let e,t,l,i,f,r,s=n[3],a=[];for(let u=0;uv(a[u],1,1,()=>{a[u]=null});return{c(){e=I("div"),t=I("div"),l=X("Filters"),i=J(),f=I("div");for(let u=0;uv(a[d],1,1,()=>{a[d]=null});let u=n[3]!=null&&n[3].length>0&&kn(n),c=n[0]&&n[1]&&En(n);return{c(){e=I("div"),t=I("div");for(let d=0;d0?u?(u.p(d,_),_&8&&b(u,1)):(u=kn(d),u.c(),b(u,1),u.m(t,null)):u&&(le(),v(u,1,1,()=>{u=null}),ne()),d[0]&&d[1]?c?c.p(d,_):(c=En(d),c.c(),c.m(f,null)):c&&(c.d(1),c=null)},i(d){if(!r){for(let _=0;_t(8,f=d));const o=["keyword","semantic","concept"],u={keyword:"Keyword",semantic:"Semantic",concept:"Concepts"};let c={};return n.$$set=d=>{"totalNumRows"in d&&t(0,r=d.totalNumRows),"manifest"in d&&t(1,s=d.manifest)},n.$$.update=()=>{if(n.$$.dirty&256&&t(7,l=sl(f)),n.$$.dirty&256&&t(3,i=f.queryOptions.filters),n.$$.dirty&132){t(2,c={});for(const d of l)d.query.type&&(d.query.type in c||t(2,c[d.query.type]=[],c),c[d.query.type].push(d))}},[r,s,c,i,a,o,u,l,f]}class io extends ve{constructor(e){super(),ke(this,e,no,lo,pe,{totalNumRows:0,manifest:1})}}const Wt=.5,Sn=.3,ro=.8;function Jt(n){return`rgba(180,215,255,${n})`}function Gt(n){let e=0;if(n>Wt){const t=(n-Wt)/(1-Wt);e=Sn+t*(ro-Sn)}return Jt(e)}function Vn(n,e,t){const l=n.slice();return l[6]=e[t],l}function zn(n,e){let t,l,i=e[6].name+"",f,r,s,a,o=(typeof e[6].value=="number"?e[6].value.toFixed(3):e[6].value)+"",u,c;return{key:n,first:null,c(){t=I("div"),l=I("div"),f=X(i),r=J(),s=I("div"),a=I("span"),u=X(o),c=J(),this.h()},l(d){t=D(d,"DIV",{class:!0});var _=E(t);l=D(_,"DIV",{class:!0});var h=E(l);f=x(h,i),h.forEach(m),r=G(_),s=D(_,"DIV",{class:!0});var g=E(s);a=D(g,"SPAN",{class:!0});var p=E(a);u=x(p,o),p.forEach(m),g.forEach(m),c=G(_),_.forEach(m),this.h()},h(){S(l,"class","named-value-name table-cell max-w-xs truncate pr-2 svelte-1689hje"),S(a,"class","px-1"),Pe(a,"background-color",typeof e[6].value=="number"?Gt(e[6].value):""),S(s,"class","table-cell rounded text-right"),S(t,"class","table-row"),this.first=t},m(d,_){V(d,t,_),k(t,l),k(l,f),k(t,r),k(t,s),k(s,a),k(a,u),k(t,c)},p(d,_){e=d,_&1&&i!==(i=e[6].name+"")&&me(f,i),_&1&&o!==(o=(typeof e[6].value=="number"?e[6].value.toFixed(3):e[6].value)+"")&&me(u,o),_&1&&Pe(a,"background-color",typeof e[6].value=="number"?Gt(e[6].value):"")},d(d){d&&m(t)}}}function so(n){let e,t,l=[],i=new Map,f,r=`${n[2]}px`,s=`${Math.min(n[1],n[4]-n[3]-20)}px`,a=n[0];const o=u=>u[6];for(let u=0;un[5].call(e)),T(e,"hidden",n[0].length===0),Pe(e,"top",r),Pe(e,"left",s)},m(u,c){V(u,e,c),k(e,t);for(let d=0;d{"namedValues"in o&&t(0,l=o.namedValues),"x"in o&&t(1,i=o.x),"y"in o&&t(2,f=o.y)},[l,i,f,s,r,a]}class fo extends ve{constructor(e){super(),ke(this,e,ao,so,pe,{namedValues:0,x:1,y:2})}}function oo(n,e){let t,l=e;function i(){const r=n.getBoundingClientRect(),s=window.getComputedStyle(n),a=parseInt(s.getPropertyValue("line-height")),o=r.height>a?r.x+n.offsetLeft||n.clientLeft:r.x;t=new fo({props:{namedValues:l,x:o,y:r.top},target:document.body})}function f(){t==null||t.$destroy(),t=void 0}return n.addEventListener("mouseover",i),n.addEventListener("mouseleave",f),{update(r){l=r,t==null||t.$set({namedValues:r})},destroy(){f(),n.removeEventListener("mouseover",i),n.removeEventListener("mouseleave",f)}}}function uo(n,e){const t=l=>n&&!n.contains(l.target)&&!l.defaultPrevented&&e();return document.addEventListener("click",t,!0),{destroy(){document.removeEventListener("click",t,!0)}}}function Mn(n,e,t){const l=n.slice();return l[20]=e[t],l}function yn(n){let e,t,l=n[0].conceptNamespace+"",i,f,r=n[0].conceptName+"",s,a,o,u,c,d,_,h,g,p;return u=new vr({}),_=new kr({}),{c(){e=I("div"),t=I("span"),i=X(l),f=X(" / "),s=X(r),a=J(),o=I("button"),j(u.$$.fragment),c=J(),d=I("button"),j(_.$$.fragment),this.h()},l(w){e=D(w,"DIV",{class:!0});var z=E(e);t=D(z,"SPAN",{class:!0});var M=E(t);i=x(M,l),f=x(M," / "),s=x(M,r),M.forEach(m),a=G(z),o=D(z,"BUTTON",{class:!0});var N=E(o);Z(u.$$.fragment,N),N.forEach(m),c=G(z),d=D(z,"BUTTON",{class:!0});var A=E(d);Z(_.$$.fragment,A),A.forEach(m),z.forEach(m),this.h()},h(){S(t,"class","pr-4"),S(o,"class","px-2"),S(d,"class","px-2"),S(e,"class","flex flex-row px-4 pt-2")},m(w,z){V(w,e,z),k(e,t),k(t,i),k(t,f),k(t,s),k(e,a),k(e,o),Y(u,o,null),k(e,c),k(e,d),Y(_,d,null),h=!0,g||(p=[ae(o,"click",n[14]),ae(d,"click",n[15])],g=!0)},p(w,z){(!h||z&1)&&l!==(l=w[0].conceptNamespace+"")&&me(i,l),(!h||z&1)&&r!==(r=w[0].conceptName+"")&&me(s,r)},i(w){h||(b(u.$$.fragment,w),b(_.$$.fragment,w),h=!0)},o(w){v(u.$$.fragment,w),v(_.$$.fragment,w),h=!1},d(w){w&&m(e),U(u),U(_),g=!1,Ye(p)}}}function co(n){let e,t,l,i;return t=new jt({props:{class:"hover:cursor-pointer",embedding:n[20]}}),{c(){e=X("Find similar "),j(t.$$.fragment),l=J()},l(f){e=x(f,"Find similar "),Z(t.$$.fragment,f),l=G(f)},m(f,r){V(f,e,r),Y(t,f,r),V(f,l,r),i=!0},p(f,r){const s={};r&4&&(s.embedding=f[20]),t.$set(s)},i(f){i||(b(t.$$.fragment,f),i=!0)},o(f){v(t.$$.fragment,f),i=!1},d(f){f&&m(e),U(t,f),f&&m(l)}}}function Tn(n,e){let t,l,i;function f(){return e[16](e[20])}return l=new at({props:{kind:"ghost",class:"w-full",size:"small",$$slots:{default:[co]},$$scope:{ctx:e}}}),l.$on("click",f),{key:n,first:null,c(){t=ue(),j(l.$$.fragment),this.h()},l(r){t=ue(),Z(l.$$.fragment,r),this.h()},h(){this.first=t},m(r,s){V(r,t,s),Y(l,r,s),i=!0},p(r,s){e=r;const a={};s&8388612&&(a.$$scope={dirty:s,ctx:e}),l.$set(a)},i(r){i||(b(l.$$.fragment,r),i=!0)},o(r){v(l.$$.fragment,r),i=!1},d(r){r&&m(t),U(l,r)}}}function ho(n){let e,t,l,i=[],f=new Map,r,s,a,o,u,c=n[0].conceptName!=null&&n[0].conceptNamespace!=null&&yn(n),d=n[2];const _=h=>h[20];for(let h=0;h{c=null}),ne()),g&516&&(d=h[2],le(),i=nt(i,g,_,1,h,d,f,l,dt,Tn,null,Mn),ne()),(!a||g&2&&r!==(r=h[1]!=null?`left: ${h[1].x}px; top: ${h[1].y}px`:""))&&S(e,"style",r),(!a||g&4)&&T(e,"hidden",h[2].length===0)},i(h){if(!a){b(c);for(let g=0;g{a&&(s||(s=st(e,Ol,{duration:60},!0)),s.run(1))}),a=!0}},o(h){v(c);for(let g=0;gt(13,a=C));let _=$e();ze(n,_,C=>t(11,r=C));const h=pr();ze(n,h,C=>t(19,o=C));const g=ft();function p(C){if(!u.conceptName||!u.conceptNamespace)throw Error("Label could not be added, no active concept.");o.mutate([u.conceptNamespace,u.conceptName,{insert:[{text:u.text,label:C}]}]),g("click")}const w=tl();ze(n,w,C=>t(12,s=C));const z=C=>{l==null||i==null||(d.addSearch({path:[De(l)],query:{type:"semantic",search:u.text,embedding:C}}),g("click"))},M=()=>p(!0),N=()=>p(!1),A=C=>z(C),F=()=>g("close");return n.$$set=C=>{"details"in C&&t(0,u=C.details),"clickPosition"in C&&t(1,c=C.clickPosition)},n.$$.update=()=>{n.$$.dirty&10240&&t(10,l=lr(a,r)),n.$$.dirty&15360&&(i=nr(a,r,l,(s.data||[]).map(C=>C.name))),n.$$.dirty&3072&&t(2,f=rl(r,l))},[u,c,f,d,_,h,g,p,w,z,l,r,s,a,M,N,A,F]}class _o extends ve{constructor(e){super(),ke(this,e,mo,ho,pe,{details:0,clickPosition:1})}}function In(n,e,t){const l=n.slice();l[29]=e[t];const i=l[9](l[3],l[29]);return l[30]=i,l}function Dn(n){let e,t=n[29].text+"",l,i,f,r;function s(){return n[23](n[29])}function a(){return n[24](n[29])}function o(...c){return n[25](n[29],...c)}function u(...c){return n[26](n[29],...c)}return{c(){e=I("span"),l=X(t),this.h()},l(c){e=D(c,"SPAN",{class:!0});var d=E(e);l=x(d,t),d.forEach(m),this.h()},h(){S(e,"class","hover:cursor-poiner highlight-span text-sm leading-5 svelte-i4bfci"),T(e,"hover:cursor-pointer",n[0].length>0),T(e,"font-bold",n[29].isBolded),T(e,"underline",n[29].isUnderlined),Pe(e,"background-color",n[30]?Jt(An):n[29].backgroundColor)},m(c,d){V(c,e,d),k(e,l),f||(r=[Ke(i=oo.call(null,e,n[29].hoverInfo)),ae(e,"mouseenter",s),ae(e,"mouseleave",a),ae(e,"keydown",o),ae(e,"click",u)],f=!0)},p(c,d){n=c,d[0]&2&&t!==(t=n[29].text+"")&&me(l,t),i&&Ot(i.update)&&d[0]&2&&i.update.call(null,n[29].hoverInfo),d[0]&1&&T(e,"hover:cursor-pointer",n[0].length>0),d[0]&2&&T(e,"font-bold",n[29].isBolded),d[0]&2&&T(e,"underline",n[29].isUnderlined),d[0]&10&&Pe(e,"background-color",n[30]?Jt(An):n[29].backgroundColor)},d(c){c&&m(e),f=!1,Ye(r)}}}function Cn(n){let e,t;return e=new _o({props:{details:n[4],clickPosition:n[5]}}),e.$on("close",n[27]),e.$on("click",n[28]),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p(l,i){const f={};i[0]&16&&(f.details=l[4]),i[0]&32&&(f.clickPosition=l[5]),e.$set(f)},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function go(n){let e,t,l,i=n[1],f=[];for(let s=0;s{r=null}),ne())},i(s){l||(b(r),l=!0)},o(s){v(r),l=!1},d(s){s&&m(e),We(f,s),r&&r.d()}}}const An=.9;function bo(n,e,t){let l,i,f,r,s,a,{text:o}=e,{row:u}=e,{field:c}=e,{visibleKeywordSpanFields:d}=e,{visibleSpanFields:_}=e,{visibleLabelSpanFields:h}=e;const g=$e();ze(n,g,$=>t(22,a=$));let p,w,z={},M=new Set;const N=$=>{$.paths.forEach(P=>M.add(P)),t(3,M)},A=$=>{$.paths.forEach(P=>M.delete(P)),t(3,M)},F=($,P)=>P.paths.some(ce=>$.has(ce));let C,H,B;const y=$=>N($),R=$=>A($),ee=($,P)=>{P.key=="Enter"&&$.originalSpans!=null&&_.length>0&&t(2,C=$)},W=($,P)=>{$.originalSpans!=null&&_.length>0&&t(2,C=$),t(5,B={x:P.offsetX,y:P.offsetY})},ie=()=>{t(2,C=void 0)},he=()=>{t(2,C=void 0)};return n.$$set=$=>{"text"in $&&t(10,o=$.text),"row"in $&&t(11,u=$.row),"field"in $&&t(12,c=$.field),"visibleKeywordSpanFields"in $&&t(13,d=$.visibleKeywordSpanFields),"visibleSpanFields"in $&&t(0,_=$.visibleSpanFields),"visibleLabelSpanFields"in $&&t(14,h=$.visibleLabelSpanFields)},n.$$.update=()=>{var $;if(n.$$.dirty[0]&8192&&t(20,l=d.map(P=>De(P.path))),n.$$.dirty[0]&16384&&t(19,i=h.map(P=>De(P.path))),n.$$.dirty[0]&4194305&&t(18,f=Object.fromEntries(_.map(P=>[De(P.path),ll(P).filter(ce=>ce.dtype!="string_span").filter(ce=>{var re;return(re=a.visibleFields)==null?void 0:re.some(se=>Ue(se.path,ce.path))})]))),n.$$.dirty[0]&262144&&t(15,p=Object.fromEntries(Object.entries(f).map(([P,ce])=>[P,ce.filter(re=>Ar(re.signal))]).filter(([P,ce])=>ce.length>0))),n.$$.dirty[0]&2049&&t(21,r=Object.fromEntries(_.map(P=>[De(P.path),Wi(u,P.path)]))),n.$$.dirty[0]&2098176&&t(17,s=Af(o,r)),n.$$.dirty[0]&1970178){t(1,w=[]);for(const P of s){const ce=l.some(Ce=>P.originalSpans[Ce]!=null),re=i.some(Ce=>P.originalSpans[Ce]!=null),se={};let ge=-1/0;for(const[Ce,_e]of Object.entries(P.originalSpans)){const Se=f[Ce],K=gt(Ce);if(Se.length!==0)for(const L of _e)for(const q of Se){const O=q.path.slice(K.length),Ve=Zi(L,O);if(Ve==null)continue;const Le=Ze.value(Ve);if(Le!=null&&((($=q.signal)==null?void 0:$.signal_name)==="concept_score"?se[q.path.at(-1)]=Le:se[De(q.path.slice(c.path.length))]=Le,q.dtype==="float32")){const Je=Ze.value(Ve);Je!=null&&(ge=Math.max(ge,Je))}}}const Ee=Object.entries(se).map(([Ce,_e])=>({name:Ce,value:_e}));w.push({backgroundColor:Gt(ge),isBolded:ce,isUnderlined:re,hoverInfo:Ee,paths:P.paths,text:P.text,originalSpans:P.originalSpans})}}if(n.$$.dirty[0]&196608){t(16,z={});for(const P of s)for(const ce of P.paths)t(16,z[ce]=z[ce]||[],z),z[ce].push(P)}if(n.$$.dirty[0]&32774)if(C!=null){const ce=w.filter(re=>re.paths.some(se=>((C==null?void 0:C.paths)||[]).some(ge=>Ue(ge,se)))).map(re=>re.text).join("");t(4,H={conceptName:null,conceptNamespace:null,text:ce});for(const re of Object.keys(C.originalSpans))for(const se of p[re]||[]){t(4,H.conceptName=se.signal.concept_name,H),t(4,H.conceptNamespace=se.signal.namespace,H);break}}else t(4,H=void 0)},[_,w,C,M,H,B,g,N,A,F,o,u,c,d,h,p,z,s,f,i,l,r,a,y,R,ee,W,ie,he]}class po extends ve{constructor(e){super(),ke(this,e,bo,go,pe,{text:10,row:11,field:12,visibleKeywordSpanFields:13,visibleSpanFields:0,visibleLabelSpanFields:14},null,[-1,-1])}}function Nn(n,e,t){const l=n.slice();l[8]=e[t],l[11]=t;const i=l[3].length>1?`[${l[11]}]`:"";return l[9]=i,l}function Bn(n){let e,t,l,i=n[0].join(".")+n[9]+"",f,r,s,a,o,u;return a=new po({props:{text:Ne(n[8]),field:n[2],row:n[1],visibleKeywordSpanFields:n[6],visibleSpanFields:n[5],visibleLabelSpanFields:n[4]}}),{c(){e=I("div"),t=I("div"),l=I("div"),f=X(i),r=J(),s=I("div"),j(a.$$.fragment),o=J(),this.h()},l(c){e=D(c,"DIV",{class:!0});var d=E(e);t=D(d,"DIV",{class:!0});var _=E(t);l=D(_,"DIV",{class:!0});var h=E(l);f=x(h,i),h.forEach(m),r=G(_),s=D(_,"DIV",{class:!0});var g=E(s);Z(a.$$.fragment,g),g.forEach(m),_.forEach(m),o=G(d),d.forEach(m),this.h()},h(){S(l,"class","sticky top-0 z-10 w-full self-start border-t border-neutral-200 bg-neutral-50 px-2 py-2 pb-2 font-mono font-medium text-neutral-500 shadow backdrop-blur-sm"),S(s,"class","m-4 font-normal"),S(t,"class","flex w-full flex-col"),S(e,"class","flex flex-row")},m(c,d){V(c,e,d),k(e,t),k(t,l),k(l,f),k(t,r),k(t,s),Y(a,s,null),k(e,o),u=!0},p(c,d){(!u||d&9)&&i!==(i=c[0].join(".")+c[9]+"")&&me(f,i);const _={};d&8&&(_.text=Ne(c[8])),d&4&&(_.field=c[2]),d&2&&(_.row=c[1]),d&64&&(_.visibleKeywordSpanFields=c[6]),d&32&&(_.visibleSpanFields=c[5]),d&16&&(_.visibleLabelSpanFields=c[4]),a.$set(_)},i(c){u||(b(a.$$.fragment,c),u=!0)},o(c){v(a.$$.fragment,c),u=!1},d(c){c&&m(e),U(a)}}}function vo(n){let e,t,l=n[3],i=[];for(let r=0;rv(i[r],1,1,()=>{i[r]=null});return{c(){for(let r=0;r{"path"in c&&t(0,a=c.path),"row"in c&&t(1,o=c.row),"field"in c&&t(2,u=c.field)},n.$$.update=()=>{n.$$.dirty&4&&t(7,l=ct(u)),n.$$.dirty&128&&t(6,i=l.filter(c=>{var d;return((d=c.signal)==null?void 0:d.signal_name)==="substring_search"}).flatMap(c=>Nt("string_span",c))),n.$$.dirty&128&&t(5,f=l.filter(c=>{var d;return((d=c.signal)==null?void 0:d.signal_name)!=="substring_search"}).filter(c=>c.dtype==="string_span")),n.$$.dirty&128&&t(4,r=l.filter(c=>{var d;return((d=c.signal)==null?void 0:d.signal_name)==="concept_labels"}).flatMap(c=>Nt("string_span",c))),n.$$.dirty&3&&t(3,s=Wi(o,a).map(c=>Ze.value(c)).filter(Nr))},[a,o,u,s,r,f,i,l]}class wo extends ve{constructor(e){super(),ke(this,e,ko,vo,pe,{path:0,row:1,field:2})}}function Eo(n){let e,t,l,i,f;const r=[n[3],{type:n[0]?"green":"blue"},{icon:n[2]}];let s={};for(let a=0;a{e=Q(Q({},e),be(a)),t(3,i=de(e,l)),"isPreview"in a&&t(0,f=a.isPreview)},[f,r,s,i]}class fl extends ve{constructor(e){super(),ke(this,e,So,Eo,pe,{isPreview:0})}}function Pn(n,e,t){const l=n.slice();return l[0]=e[t],l}function Rn(n){let e,t,l=[],i=new Map,f,r=n[1];const s=a=>De(a[0].path);for(let a=0;a{A[B]=null}),ne()),~u?(c=A[u],c?c.p(e,H):(c=A[u]=N[u](e),c.c()),b(c,1),c.m(o,null)):c=null),(!M||H&2)&&g!==(g=e[0].formattedValue+"")&&me(p,g),(!M||H&2&&w!==(w=`${e[0].value}`))&&S(h,"title",w),(!M||H&2)&&T(h,"italic",e[0].formattedValue===null)},i(C){M||(b(c),M=!0)},o(C){v(c),M=!1},d(C){C&&m(t),~u&&A[u].d()}}}function Mo(n){let e,t,l=n[1].length>0&&Rn(n);return{c(){l&&l.c(),e=ue()},l(i){l&&l.l(i),e=ue()},m(i,f){l&&l.m(i,f),V(i,e,f),t=!0},p(i,[f]){i[1].length>0?l?(l.p(i,f),f&2&&b(l,1)):(l=Rn(i),l.c(),b(l,1),l.m(e.parentNode,e)):l&&(le(),v(l,1,1,()=>{l=null}),ne())},i(i){t||(b(l),t=!0)},o(i){v(l),t=!1},d(i){l&&l.d(i),i&&m(e)}}}function yo(n,e,t){let l,i,f,{row:r}=e,{visibleFields:s}=e;const a=$e();ze(n,a,c=>t(5,i=c));const o=tl();ze(n,o,c=>t(6,f=c));function u(c){return Br(c).filter(_=>Tf(_,s)).map(_=>{var N,A;const h=Ze.field(_),g=Ze.path(_);let p=Ze.value(_);if(h.dtype==="string_span")for(let F=g.length-1;F>0;F--){const C=g.slice(0,F),H=nl(Ze.field(c),C);if((H==null?void 0:H.dtype)==="string"){const B=Ze.value(Zi(c,H.path)),y=Ze.value(_);if(y==null)break;p=B==null?void 0:B.substring(y.start,y.end)}}const w=((N=f.data)==null?void 0:N.some(F=>{var C;return F.name===((C=h.signal)==null?void 0:C.signal_name)}))||!1,z=bt(h);let M;return w||z&&h.dtype==null||h.dtype==="embedding"||h.repeated_field!=null?M="":p==null?M=null:M=Ne(p),{indentLevel:g.length-1,fieldName:g[g.length-1],field:h,path:g,isSignal:z,isPreviewSignal:Lt(((A=i.selectRowsSchema)==null?void 0:A.data)||null,g),isEmbeddingSignal:w,value:p,formattedValue:M}})}return n.$$set=c=>{"row"in c&&t(0,r=c.row),"visibleFields"in c&&t(4,s=c.visibleFields)},n.$$.update=()=>{n.$$.dirty&1&&t(1,l=u(r))},[r,l,a,o,s]}class To extends ve{constructor(e){super(),ke(this,e,yo,Mo,pe,{row:0,visibleFields:4})}}function Hn(n,e,t){const l=n.slice();return l[3]=e[t],l[5]=t,l}function On(n){let e,t=[],l=new Map,i,f=n[1];const r=s=>De(s[3].path);for(let s=0;s0&&On(n);return f=new To({props:{row:n[0],visibleFields:n[2]}}),{c(){e=I("div"),t=I("div"),s&&s.c(),l=J(),i=I("div"),j(f.$$.fragment),this.h()},l(a){e=D(a,"DIV",{class:!0});var o=E(e);t=D(o,"DIV",{class:!0});var u=E(t);s&&s.l(u),l=G(u),i=D(u,"DIV",{class:!0});var c=E(i);Z(f.$$.fragment,c),c.forEach(m),u.forEach(m),o.forEach(m),this.h()},h(){S(i,"class","sticky top-0 w-1/3 self-start"),S(t,"class","flex w-full flex-row"),S(e,"class","mx-4 mb-10 rounded border-x border-b border-neutral-200 pb-2 shadow-md")},m(a,o){V(a,e,o),k(e,t),s&&s.m(t,null),k(t,l),k(t,i),Y(f,i,null),r=!0},p(a,[o]){a[1].length>0?s?(s.p(a,o),o&2&&b(s,1)):(s=On(a),s.c(),b(s,1),s.m(t,l)):s&&(le(),v(s,1,1,()=>{s=null}),ne());const u={};o&1&&(u.row=a[0]),o&4&&(u.visibleFields=a[2]),f.$set(u)},i(a){r||(b(s),b(f.$$.fragment,a),r=!0)},o(a){v(s),v(f.$$.fragment,a),r=!1},d(a){a&&m(e),s&&s.d(),U(f)}}}function Do(n,e,t){let{row:l}=e,{mediaFields:i}=e,{visibleFields:f}=e;return n.$$set=r=>{"row"in r&&t(0,l=r.row),"mediaFields"in r&&t(1,i=r.mediaFields),"visibleFields"in r&&t(2,f=r.visibleFields)},[l,i,f]}class Co extends ve{constructor(e){super(),ke(this,e,Do,Io,pe,{row:0,mediaFields:1,visibleFields:2})}}function qn(n,e,t){const l=n.slice();return l[50]=e[t],l}function jn(n,e,t){const l=n.slice();return l[53]=e[t],l}function Ao(n){let e=St[0]+"",t;return{c(){t=X(e)},l(l){t=x(l,e)},m(l,i){V(l,t,i)},p:te,d(l){l&&m(t)}}}function No(n){let e=St[1]+"",t;return{c(){t=X(e)},l(l){t=x(l,e)},m(l,i){V(l,t,i)},p:te,d(l){l&&m(t)}}}function Bo(n){let e,t,l,i;return e=new Vt({props:{$$slots:{default:[Ao]},$$scope:{ctx:n}}}),l=new Vt({props:{$$slots:{default:[No]},$$scope:{ctx:n}}}),{c(){j(e.$$.fragment),t=J(),j(l.$$.fragment)},l(f){Z(e.$$.fragment,f),t=G(f),Z(l.$$.fragment,f)},m(f,r){Y(e,f,r),V(f,t,r),Y(l,f,r),i=!0},p(f,r){const s={};r[1]&67108864&&(s.$$scope={dirty:r,ctx:f}),e.$set(s);const a={};r[1]&67108864&&(a.$$scope={dirty:r,ctx:f}),l.$set(a)},i(f){i||(b(e.$$.fragment,f),b(l.$$.fragment,f),i=!0)},o(f){v(e.$$.fragment,f),v(l.$$.fragment,f),i=!1},d(f){U(e,f),f&&m(t),U(l,f)}}}function Po(n){let e,t=n[56].text+"",l;return{c(){e=I("div"),l=X(t)},l(i){e=D(i,"DIV",{});var f=E(e);l=x(f,t),f.forEach(m)},m(i,f){V(i,e,f),k(e,l)},p(i,f){f[1]&33554432&&t!==(t=i[56].text+"")&&me(l,t)},i:te,o:te,d(i){i&&m(e)}}}function Ro(n){let e,t,l,i,f,r=n[0]!=""?":":"",s,a,o,u;return t=new kt({props:{$$slots:{default:[Fo]},$$scope:{ctx:n}}}),{c(){e=I("div"),j(t.$$.fragment),l=J(),i=I("div"),f=X("New concept"),s=X(r),a=J(),o=X(n[0]),this.h()},l(c){e=D(c,"DIV",{class:!0});var d=E(e);Z(t.$$.fragment,d),l=G(d),i=D(d,"DIV",{class:!0});var _=E(i);f=x(_,"New concept"),s=x(_,r),a=G(_),o=x(_,n[0]),_.forEach(m),d.forEach(m),this.h()},h(){S(i,"class","ml-2"),S(e,"class","new-concept flex flex-row items-center justify-items-center")},m(c,d){V(c,e,d),Y(t,e,null),k(e,l),k(e,i),k(i,f),k(i,s),k(i,a),k(i,o),u=!0},p(c,d){const _={};d[1]&67108864&&(_.$$scope={dirty:d,ctx:c}),t.$set(_),(!u||d[0]&1)&&r!==(r=c[0]!=""?":":"")&&me(s,r),(!u||d[0]&1)&&me(o,c[0])},i(c){u||(b(t.$$.fragment,c),u=!0)},o(c){v(t.$$.fragment,c),u=!1},d(c){c&&m(e),U(t)}}}function Fo(n){let e,t;return e=new Na({}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function Ho(n){let e,t,l,i;const f=[Ro,Po],r=[];function s(a,o){return a[56].id==="new-concept"?0:1}return e=s(n),t=r[e]=f[e](n),{c(){t.c(),l=ue()},l(a){t.l(a),l=ue()},m(a,o){r[e].m(a,o),V(a,l,o),i=!0},p(a,o){let u=e;e=s(a),e===u?r[e].p(a,o):(le(),v(r[u],1,1,()=>{r[u]=null}),ne(),t=r[e],t?t.p(a,o):(t=r[e]=f[e](a),t.c()),b(t,1),t.m(l.parentNode,l))},i(a){i||(b(t),i=!0)},o(a){v(t),i=!1},d(a){r[e].d(a),a&&m(l)}}}function Oo(n){let e,t,l,i,f;function r(a){n[41](a)}let s={size:"xl",items:n[11],disabled:!n[7],shouldFilterItem:Wo,placeholder:"Search by concept",$$slots:{default:[Ho,({item:a})=>({56:a}),({item:a})=>[0,a?33554432:0]]},$$scope:{ctx:n}};return n[0]!==void 0&&(s.value=n[0]),l=new Jr({props:s}),n[40](l),je.push(()=>$t(l,"value",r)),l.$on("select",n[26]),{c(){e=I("div"),t=I("div"),j(l.$$.fragment),this.h()},l(a){e=D(a,"DIV",{class:!0});var o=E(e);t=D(o,"DIV",{class:!0});var u=E(t);Z(l.$$.fragment,u),u.forEach(m),o.forEach(m),this.h()},h(){S(t,"class","flex-grow"),S(e,"class","flex w-full flex-row items-start justify-items-start")},m(a,o){V(a,e,o),k(e,t),Y(l,t,null),f=!0},p(a,o){const u={};o[0]&2048&&(u.items=a[11]),o[0]&128&&(u.disabled=!a[7]),o[0]&1|o[1]&100663296&&(u.$$scope={dirty:o,ctx:a}),!i&&o[0]&1&&(i=!0,u.value=a[0],el(()=>i=!1)),l.$set(u)},i(a){f||(b(l.$$.fragment,a),f=!0)},o(a){v(l.$$.fragment,a),f=!1},d(a){a&&m(e),n[40](null),U(l)}}}function Lo(n){let e,t,l;function i(r){n[42](r)}let f={placeholder:"Search by keywords",disabled:!n[15]};return n[10]!==void 0&&(f.value=n[10]),e=new Ls({props:f}),je.push(()=>$t(e,"value",i)),e.$on("keydown",n[43]),{c(){j(e.$$.fragment)},l(r){Z(e.$$.fragment,r)},m(r,s){Y(e,r,s),l=!0},p(r,s){const a={};s[0]&32768&&(a.disabled=!r[15]),!t&&s[0]&1024&&(t=!0,a.value=r[10],el(()=>t=!1)),e.$set(a)},i(r){l||(b(e.$$.fragment,r),l=!0)},o(r){v(e.$$.fragment,r),l=!1},d(r){U(e,r)}}}function qo(n){let e,t,l,i,f;return t=new zt({props:{class:"w-full",$$slots:{default:[Oo]},$$scope:{ctx:n}}}),i=new zt({props:{class:"w-full",$$slots:{default:[Lo]},$$scope:{ctx:n}}}),{c(){e=I("div"),j(t.$$.fragment),l=J(),j(i.$$.fragment),this.h()},l(r){e=D(r,"DIV",{class:!0});var s=E(e);Z(t.$$.fragment,s),l=G(s),Z(i.$$.fragment,s),s.forEach(m),this.h()},h(){S(e,"class","flex flex-row")},m(r,s){V(r,e,s),Y(t,e,null),k(e,l),Y(i,e,null),f=!0},p(r,s){const a={};s[0]&6273|s[1]&67108864&&(a.$$scope={dirty:s,ctx:r}),t.$set(a);const o={};s[0]&33792|s[1]&67108864&&(o.$$scope={dirty:s,ctx:r}),i.$set(o)},i(r){f||(b(t.$$.fragment,r),b(i.$$.fragment,r),f=!0)},o(r){v(t.$$.fragment,r),v(i.$$.fragment,r),f=!1},d(r){r&&m(e),U(t),U(i)}}}function Yn(n){let e,t;return e=new Xi({props:{value:De(n[53]),text:De(n[53])}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p(l,i){const f={};i[0]&131072&&(f.value=De(l[53])),i[0]&131072&&(f.text=De(l[53])),e.$set(f)},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function jo(n){let e,t,l=n[17],i=[];for(let r=0;rv(i[r],1,1,()=>{i[r]=null});return{c(){for(let r=0;rv(i[r],1,1,()=>{i[r]=null});return{c(){for(let r=0;r{B=null}),ne());const ce={};ie[0]&32&&(ce.selectedId=W[5]),ie[0]&8192&&(ce.items=W[13]),M.$set(ce);const re={};ie[0]&2&&(re.icon=((se=W[1])==null?void 0:se.order)==null?rn:((ge=W[1])==null?void 0:ge.order)==="ASC"?Pt:Rt),ie[0]&2&&(re.disabled=W[1]==null),ie[0]&2&&(re.iconDescription=((Ee=W[1])==null?void 0:Ee.order)==="ASC"?"Sorted ascending. Toggle to switch to descending.":"Sorted descending. Toggle to switch to ascending."),F.$set(re)},i(W){C||(b(l.$$.fragment,W),b(s.$$.fragment,W),b(H),b(h.$$.fragment,W),b(B),b(M.$$.fragment,W),b(F.$$.fragment,W),C=!0)},o(W){v(l.$$.fragment,W),v(s.$$.fragment,W),v(H),v(h.$$.fragment,W),v(B),v(M.$$.fragment,W),v(F.$$.fragment,W),C=!1},d(W){W&&m(e),U(l),U(s),H.d(W),U(h),B&&B.d(),U(M),U(F)}}}const Wo=(n,e)=>n.text.toLowerCase().includes(e.toLowerCase())||n.id==="new-concept";function Zo(n,e,t){let l,i,f,r,s,a,o,u,c,d,_,h,g,p,w,z,M,N,A,F,C,H,B=Qe();ze(n,B,Te=>t(37,F=Te));let y=$e();ze(n,y,Te=>t(36,A=Te));let R;const ee=Ki();ze(n,ee,Te=>t(47,N=Te));const W=tl();ze(n,W,Te=>t(9,H=Te));const ie=(Te,Xe)=>`${De(Te||"")}_${Xe}`;let he={};const $=wr();ze(n,$,Te=>t(38,C=Te));let P=[],ce,re="",se={};const ge=()=>{if(s!=null&&f==="Keyword"){if(R=="")return;B.addSearch({path:[De(s)],query:{type:"keyword",search:R}}),t(10,R="")}},Ee=Te=>{t(2,u=Te.target.value),B.setSearchEmbedding(Te.target.value)},Ce=()=>{u!=null&&(t(32,he[ie(s,u)]=!0,he),N.mutate([l,i,{leaf_path:gt(s||[]),signal:{signal_name:u}}]))};let _e;const Se=(Te,Xe)=>{s==null||u==null||(B.addSearch({path:[De(s)],query:{type:"concept",concept_namespace:Te,concept_name:Xe,embedding:u}}),_e.clear())},K=Te=>{if(!(s==null||u==null)){if(Te.detail.selectedId==="new-concept"){re===ce.id&&t(0,re="");const Xe=re.split("/",2);let Et="",mt="";Xe.length===2?[Et,mt]=Xe:[mt]=Xe,ot({command:ut.CreateConcept,namespace:Et,conceptName:mt,onCreate:Be=>Se(Be.detail.namespace,Be.detail.name)}),_e.clear();return}Se(Te.detail.selectedId.namespace,Te.detail.selectedId.name)}},L=Te=>{B.setSearchPath(Te.target.value)},q=Te=>{B.setSearchTab(St[Te.detail])},O=Te=>{if(Te.detail.selectedId==null){B.setSortBy(null);return}B.setSortBy(gt(Te.detail.selectedId))},Ve=()=>{B.clearSorts()},Le=()=>{p!=null&&B.setSortBy(p.path),B.setSortOrder((p==null?void 0:p.order)==="ASC"?"DESC":"ASC")},Je=()=>{d?ge():Ce()};function Ie(Te){je[Te?"unshift":"push"](()=>{_e=Te,t(12,_e)})}function Ge(Te){re=Te,t(0,re)}function et(Te){R=Te,t(10,R)}const ar=Te=>Te.key=="Enter"?ge():null;return n.$$.update=()=>{var Te,Xe,Et,mt;if(n.$$.dirty[1]&64&&(l=F.namespace),n.$$.dirty[1]&64&&(i=F.datasetName),n.$$.dirty[1]&64&&t(4,f=F.searchTab),n.$$.dirty[0]&16&&t(8,r=Object.values(St).findIndex(Be=>Be===f)),n.$$.dirty[1]&96&&t(3,s=lr(F,A)),n.$$.dirty[0]&8|n.$$.dirty[1]&64&&t(34,a=sl(F,s)),n.$$.dirty[1]&32&&t(17,o=(A.visibleFields||[]).filter(Be=>Be.dtype==="string").map(Be=>De(Be.path))),n.$$.dirty[0]&520|n.$$.dirty[1]&96&&t(2,u=nr(F,A,s,(H.data||[]).map(Be=>Be.name))),n.$$.dirty[0]&8|n.$$.dirty[1]&32&&t(35,c=rl(A,s)),n.$$.dirty[0]&4|n.$$.dirty[1]&16&&t(7,d=c!=null&&!!c.includes(u||"")),n.$$.dirty[0]&140|n.$$.dirty[1]&2&&t(16,_=!d&&he[ie(s,u)]),n.$$.dirty[0]&264&&t(15,h=St[r]==="Keyword"&&s!=null),n.$$.dirty[0]&144&&t(14,g=f==="Concepts"&&d),n.$$.dirty[0]&1&&t(33,ce={id:"new-concept",text:re}),n.$$.dirty[1]&140&&t(11,P=C!=null&&C.data?[ce,...C.data.map(Be=>({id:{namespace:Be.namespace,name:Be.name},text:`${Be.namespace}/${Be.name}`,disabled:a.some(_t=>_t.query.type==="concept"&&_t.query.concept_namespace===Be.namespace&&_t.query.concept_name===Be.name)}))]:[]),n.$$.dirty[1]&32&&t(1,p=Cf(A)),n.$$.dirty[1]&32)for(const Be of((Xe=(Te=A.selectRowsSchema)==null?void 0:Te.data)==null?void 0:Xe.search_results)||[])se[De(Be.result_path)]=Be;n.$$.dirty[0]&2&&t(5,w=p!=null&&p.path?De(p.path):null),n.$$.dirty[1]&64&&t(6,z=F.queryOptions.sort_by),n.$$.dirty[0]&96|n.$$.dirty[1]&32&&t(13,M=((mt=(Et=A.selectRowsSchema)==null?void 0:Et.data)==null?void 0:mt.schema)!=null?[{id:null,text:"None",disabled:z==null&&w!=null},...ll(A.selectRowsSchema.data.schema).map(Be=>{const _t=De(Be.path);return{id:_t,text:_t}})]:[])},[re,p,u,s,f,w,z,d,r,H,R,P,_e,M,g,h,_,o,B,y,ee,W,$,ge,Ee,Ce,K,L,q,O,Ve,Le,he,ce,a,c,A,F,C,Je,Ie,Ge,et,ar]}class Ko extends ve{constructor(e){super(),ke(this,e,Zo,Uo,pe,{},null,[-1,-1])}}function Kn(n,e,t){const l=n.slice();return l[18]=e[t],l}function Qo(n){let e,t;return{c(){e=I("div"),t=X("No results."),this.h()},l(l){e=D(l,"DIV",{class:!0});var i=E(e);t=x(i,"No results."),i.forEach(m),this.h()},h(){S(e,"class","mx-4 mt-8 w-full text-gray-600")},m(l,i){V(l,e,i),k(e,t)},p:te,i:te,o:te,d(l){l&&m(e)}}}function Jo(n){let e,t;return{c(){e=I("div"),t=X("Select fields to display"),this.h()},l(l){e=D(l,"DIV",{class:!0});var i=E(e);t=x(i,"Select fields to display"),i.forEach(m),this.h()},h(){S(e,"class","mt-12 w-full text-center text-gray-600")},m(l,i){V(l,e,i),k(e,t)},p:te,i:te,o:te,d(l){l&&m(e)}}}function Go(n){let e,t;return e=new It({props:{paragraph:!0,lines:3}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p:te,i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function Xo(n){var l,i;let e,t;return e=new xi({props:{lowContrast:!0,title:"Could not fetch schema:",subtitle:((l=n[1].error.body)==null?void 0:l.detail)||((i=n[1])==null?void 0:i.error.message)}}),{c(){j(e.$$.fragment)},l(f){Z(e.$$.fragment,f)},m(f,r){Y(e,f,r),t=!0},p(f,r){var a,o;const s={};r&2&&(s.subtitle=((a=f[1].error.body)==null?void 0:a.detail)||((o=f[1])==null?void 0:o.error.message)),e.$set(s)},i(f){t||(b(e.$$.fragment,f),t=!0)},o(f){v(e.$$.fragment,f),t=!1},d(f){U(e,f)}}}function xo(n){var l;let e,t;return e=new xi({props:{lowContrast:!0,title:"Could not fetch rows:",subtitle:((l=n[2].error.body)==null?void 0:l.detail)||n[2].error.message}}),{c(){j(e.$$.fragment)},l(i){Z(e.$$.fragment,i)},m(i,f){Y(e,i,f),t=!0},p(i,f){var s;const r={};f&4&&(r.subtitle=((s=i[2].error.body)==null?void 0:s.detail)||i[2].error.message),e.$set(r)},i(i){t||(b(e.$$.fragment,i),t=!0)},o(i){v(e.$$.fragment,i),t=!1},d(i){U(e,i)}}}function Qn(n){let e,t=[],l=new Map,i,f,r=n[5];const s=o=>Ze.value(o[18][Rr]);for(let o=0;o0&&Gn(n);return{c(){e=I("div");for(let o=0;o0?a?(a.p(o,u),u&32&&b(a,1)):(a=Gn(o),a.c(),b(a,1),a.m(e,null)):a&&(le(),v(a,1,1,()=>{a=null}),ne())},i(o){if(!f){for(let u=0;u0&&n[3].isSuccess&&n[4]!=null&&Qn(n);return{c(){j(e.$$.fragment),t=J(),j(l.$$.fragment),i=J(),r&&r.c(),s=J(),_&&_.c(),a=ue()},l(h){Z(e.$$.fragment,h),t=G(h),Z(l.$$.fragment,h),i=G(h),r&&r.l(h),s=G(h),_&&_.l(h),a=ue()},m(h,g){Y(e,h,g),V(h,t,g),Y(l,h,g),V(h,i,g),~f&&c[f].m(h,g),V(h,s,g),_&&_.m(h,g),V(h,a,g),o=!0},p(h,[g]){const p={};g&64&&(p.totalNumRows=h[6]),g&512&&(p.manifest=h[9].data),l.$set(p);let w=f;f=d(h),f===w?~f&&c[f].p(h,g):(r&&(le(),v(c[w],1,1,()=>{c[w]=null}),ne()),~f?(r=c[f],r?r.p(h,g):(r=c[f]=u[f](h),r.c()),b(r,1),r.m(s.parentNode,s)):r=null),h[5]&&h[0].length>0&&h[3].isSuccess&&h[4]!=null?_?(_.p(h,g),g&57&&b(_,1)):(_=Qn(h),_.c(),b(_,1),_.m(a.parentNode,a)):_&&(le(),v(_,1,1,()=>{_=null}),ne())},i(h){o||(b(e.$$.fragment,h),b(l.$$.fragment,h),b(r),b(_),o=!0)},o(h){v(e.$$.fragment,h),v(l.$$.fragment,h),v(r),v(_),o=!1},d(h){U(e,h),h&&m(t),U(l,h),h&&m(i),~f&&c[f].d(h),h&&m(s),_&&_.d(h),h&&m(a)}}}function eu(n,e,t){let l,i,f,r,s,a,o,u,c,d,_,h=te,g=()=>(h(),h=rt(r,B=>t(2,_=B)),r),p,w,z=te,M=()=>(z(),z=rt(l,B=>t(3,w=B)),l),N;n.$$.on_destroy.push(()=>h()),n.$$.on_destroy.push(()=>z());let A=Qe();ze(n,A,B=>t(16,p=B));let F=$e();ze(n,F,B=>t(15,d=B));const C=Qi(p.namespace,p.datasetName);ze(n,C,B=>t(9,N=B));const H=()=>_==null?void 0:_.fetchNextPage();return n.$$.update=()=>{var B,y,R,ee;n.$$.dirty&65536&&M(t(8,l=il(p.namespace,p.datasetName))),n.$$.dirty&65544&&t(14,i=w.isSuccess?Sr(p):void 0),n.$$.dirty&32768&&t(1,f=d.selectRowsSchema),n.$$.dirty&81922&&g(t(7,r=Pr(p.namespace,p.datasetName,i||{},f!=null&&f.isSuccess?f.data.schema:void 0))),n.$$.dirty&4&&t(6,s=(B=_.data)==null?void 0:B.pages[0].total_num_rows),n.$$.dirty&4&&t(5,a=(y=_.data)==null?void 0:y.pages.flatMap(W=>W.rows)),n.$$.dirty&32768&&t(0,o=(d.visibleFields||[]).sort((W,ie)=>De(W.path)>De(ie.path)?1:-1)),n.$$.dirty&3&&t(13,u=((R=f==null?void 0:f.data)==null?void 0:R.schema)!=null?er((ee=f==null?void 0:f.data)==null?void 0:ee.schema,o):null),n.$$.dirty&40960&&t(4,c=u!=null?If(u,d.stats||[]):[])},[o,f,_,w,c,a,s,r,l,N,A,F,C,u,i,d,p,H]}class tu extends ve{constructor(e){super(),ke(this,e,eu,$o,pe,{})}}function lu(n){let e,t;return e=new at({props:{$$slots:{default:[iu]},$$scope:{ctx:n}}}),e.$on("click",n[5]),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p(l,i){const f={};i&512&&(f.$$scope={dirty:i,ctx:l}),e.$set(f)},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function nu(n){let e,t;return{c(){e=I("span"),t=X("Invalid query"),this.h()},l(l){e=D(l,"SPAN",{class:!0});var i=E(e);t=x(i,"Invalid query"),i.forEach(m),this.h()},h(){S(e,"class","text-red-500")},m(l,i){V(l,e,i),k(e,t)},p:te,i:te,o:te,d(l){l&&m(e)}}}function iu(n){let e;return{c(){e=X("Apply")},l(t){e=x(t,"Apply")},m(t,l){V(t,e,l)},d(t){t&&m(e)}}}function ru(n){let e,t,l,i,f,r,s,a,o,u,c;const d=[nu,lu],_=[];function h(g,p){return g[0]?g[3]?1:-1:0}return~(r=h(n))&&(s=_[r]=d[r](n)),{c(){e=I("pre"),t=X(""),l=X(n[2]),i=X(` +`),f=J(),s&&s.c(),a=ue(),this.h()},l(g){e=D(g,"PRE",{class:!0,contenteditable:!0});var p=E(e);t=x(p,""),l=x(p,n[2]),i=x(p,` +`),p.forEach(m),f=G(g),s&&s.l(g),a=ue(),this.h()},h(){S(e,"class","whitespace-pre bg-gray-50 p-4 font-mono"),S(e,"contenteditable",""),n[1]===void 0&&ht(()=>n[8].call(e)),T(e,"outline-red-500",!n[0])},m(g,p){V(g,e,p),k(e,t),k(e,l),k(e,i),n[1]!==void 0&&(e.innerText=n[1]),V(g,f,p),~r&&_[r].m(g,p),V(g,a,p),o=!0,u||(c=ae(e,"input",n[8]),u=!0)},p(g,[p]){(!o||p&4)&&mr(l,g[2]),p&2&&g[1]!==e.innerText&&(e.innerText=g[1]),(!o||p&1)&&T(e,"outline-red-500",!g[0]);let w=r;r=h(g),r===w?~r&&_[r].p(g,p):(s&&(le(),v(_[w],1,1,()=>{_[w]=null}),ne()),~r?(s=_[r],s?s.p(g,p):(s=_[r]=d[r](g),s.c()),b(s,1),s.m(a.parentNode,a)):s=null)},i(g){o||(b(s),o=!0)},o(g){v(s),o=!1},d(g){g&&m(e),g&&m(f),~r&&_[r].d(g),g&&m(a),u=!1,c()}}}function su(n,e,t){let l,i,f,r,s;const a=Qe();ze(n,a,d=>t(7,s=d));let o=!0;function u(){Mt(a,s.queryOptions=JSON.parse(f),s)}function c(){f=this.innerText,t(1,f),t(2,i),t(6,l),t(7,s)}return n.$$.update=()=>{if(n.$$.dirty&128&&t(6,l=s.queryOptions),n.$$.dirty&64&&t(2,i=l?JSON.stringify(l,null,2):""),n.$$.dirty&4&&t(1,f=i),n.$$.dirty&2)try{JSON.parse(f),t(0,o=!0)}catch{t(0,o=!1)}n.$$.dirty&67&&t(3,r=o&&!Vr(JSON.parse(f),l))},[o,f,i,r,a,u,l,s,c]}class au extends ve{constructor(e){super(),ke(this,e,su,ru,pe,{})}}function Xn(n){let e,t;return e=new ea({props:{light:!0,flipped:!0,$$slots:{default:[fu]},$$scope:{ctx:n}}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p(l,i){const f={};i&67108927&&(f.$$scope={dirty:i,ctx:l}),e.$set(f)},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function xn(n){let e,t;return e=new wt({props:{text:"Sort by"}}),e.$on("click",n[16]),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p:te,i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function $n(n){let e,t;return e=new wt({props:{text:"Filter"}}),e.$on("click",n[17]),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p:te,i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function ei(n){let e,t;return e=new wt({props:{text:"Compute embedding"}}),e.$on("click",n[18]),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p:te,i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function ti(n){let e,t;return e=new wt({props:{text:"Preview signal"}}),e.$on("click",n[19]),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p:te,i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function li(n){let e,t;return e=new wt({props:{text:"Compute signal"}}),e.$on("click",n[20]),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p:te,i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function ni(n){let e,t;return e=new wt({props:{text:"Delete signal"}}),e.$on("click",n[21]),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p:te,i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function fu(n){let e=Tt(n[0]),t,l=Zt(n[0]),i,f,r,s,a,o,u=e&&xn(n),c=l&&$n(n),d=!n[2]&&ei(n),_=!n[2]&&ti(n),h=!n[2]&&li(n),g=n[1]&&ni(n);return{c(){u&&u.c(),t=J(),c&&c.c(),i=J(),d&&d.c(),f=J(),_&&_.c(),r=J(),h&&h.c(),s=J(),g&&g.c(),a=ue()},l(p){u&&u.l(p),t=G(p),c&&c.l(p),i=G(p),d&&d.l(p),f=G(p),_&&_.l(p),r=G(p),h&&h.l(p),s=G(p),g&&g.l(p),a=ue()},m(p,w){u&&u.m(p,w),V(p,t,w),c&&c.m(p,w),V(p,i,w),d&&d.m(p,w),V(p,f,w),_&&_.m(p,w),V(p,r,w),h&&h.m(p,w),V(p,s,w),g&&g.m(p,w),V(p,a,w),o=!0},p(p,w){w&1&&(e=Tt(p[0])),e?u?(u.p(p,w),w&1&&b(u,1)):(u=xn(p),u.c(),b(u,1),u.m(t.parentNode,t)):u&&(le(),v(u,1,1,()=>{u=null}),ne()),w&1&&(l=Zt(p[0])),l?c?(c.p(p,w),w&1&&b(c,1)):(c=$n(p),c.c(),b(c,1),c.m(i.parentNode,i)):c&&(le(),v(c,1,1,()=>{c=null}),ne()),p[2]?d&&(le(),v(d,1,1,()=>{d=null}),ne()):d?(d.p(p,w),w&4&&b(d,1)):(d=ei(p),d.c(),b(d,1),d.m(f.parentNode,f)),p[2]?_&&(le(),v(_,1,1,()=>{_=null}),ne()):_?(_.p(p,w),w&4&&b(_,1)):(_=ti(p),_.c(),b(_,1),_.m(r.parentNode,r)),p[2]?h&&(le(),v(h,1,1,()=>{h=null}),ne()):h?(h.p(p,w),w&4&&b(h,1)):(h=li(p),h.c(),b(h,1),h.m(s.parentNode,s)),p[1]?g?(g.p(p,w),w&2&&b(g,1)):(g=ni(p),g.c(),b(g,1),g.m(a.parentNode,a)):g&&(le(),v(g,1,1,()=>{g=null}),ne())},i(p){o||(b(u),b(c),b(d),b(_),b(h),b(g),o=!0)},o(p){v(u),v(c),v(d),v(_),v(h),v(g),o=!1},d(p){u&&u.d(p),p&&m(t),c&&c.d(p),p&&m(i),d&&d.d(p),p&&m(f),_&&_.d(p),p&&m(r),h&&h.d(p),p&&m(s),g&&g.d(p),p&&m(a)}}}function ou(n){let e,t,l,i=De(n[0].path)+"",f,r,s,a,o;return{c(){e=I("p"),t=X("Confirm deleting "),l=I("code"),f=X(i),r=X(" ?"),s=J(),a=I("p"),o=X("This is a permanent action and cannot be undone."),this.h()},l(u){e=D(u,"P",{class:!0});var c=E(e);t=x(c,"Confirm deleting "),l=D(c,"CODE",{});var d=E(l);f=x(d,i),d.forEach(m),r=x(c," ?"),c.forEach(m),s=G(u),a=D(u,"P",{class:!0});var _=E(a);o=x(_,"This is a permanent action and cannot be undone."),_.forEach(m),this.h()},h(){S(e,"class","!text-lg"),S(a,"class","mt-2")},m(u,c){V(u,e,c),k(e,t),k(e,l),k(l,f),k(e,r),V(u,s,c),V(u,a,c),k(a,o)},p(u,c){c&1&&i!==(i=De(u[0].path)+"")&&me(f,i)},d(u){u&&m(e),u&&m(s),u&&m(a)}}}function uu(n){let e,t,l,i,f=n[6]&&Xn(n);function r(a){n[22](a)}let s={danger:!0,modalHeading:"Delete signal",primaryButtonText:"Delete",primaryButtonIcon:n[7].isLoading?_l:void 0,secondaryButtonText:"Cancel",$$slots:{default:[ou]},$$scope:{ctx:n}};return n[3]!==void 0&&(s.open=n[3]),t=new Gr({props:s}),je.push(()=>$t(t,"open",r)),t.$on("click:button--secondary",n[23]),t.$on("open",n[24]),t.$on("close",n[25]),t.$on("submit",n[11]),{c(){f&&f.c(),e=J(),j(t.$$.fragment)},l(a){f&&f.l(a),e=G(a),Z(t.$$.fragment,a)},m(a,o){f&&f.m(a,o),V(a,e,o),Y(t,a,o),i=!0},p(a,[o]){a[6]?f?(f.p(a,o),o&64&&b(f,1)):(f=Xn(a),f.c(),b(f,1),f.m(e.parentNode,e)):f&&(le(),v(f,1,1,()=>{f=null}),ne());const u={};o&128&&(u.primaryButtonIcon=a[7].isLoading?_l:void 0),o&67108865&&(u.$$scope={dirty:o,ctx:a}),!l&&o&8&&(l=!0,u.open=a[3],el(()=>l=!1)),t.$set(u)},i(a){i||(b(f),b(t.$$.fragment,a),i=!0)},o(a){v(f),v(t.$$.fragment,a),i=!1},d(a){f&&f.d(a),a&&m(e),U(t,a)}}}function cu(n,e,t){let l,i,f,r,s,a,o,u,c,{field:d}=e,{schema:_}=e,h=!1;const g=Qe();ze(n,g,W=>t(15,c=W));const p=$e();ze(n,p,W=>t(14,u=W));const w=Fr();ze(n,w,W=>t(7,o=W));function z(){o.mutate([l,i,{signal_path:d.path}],{onSuccess:()=>{t(3,h=!1),g.deleteSignal(d.path)}})}const M=()=>g.addSortBy(d.path),N=()=>ot({command:ut.EditFilter,namespace:l,datasetName:i,path:d.path}),A=()=>ot({command:ut.ComputeEmbedding,namespace:l,datasetName:i,path:d==null?void 0:d.path}),F=()=>ot({command:ut.PreviewConcept,namespace:l,datasetName:i,path:d==null?void 0:d.path}),C=()=>ot({command:ut.ComputeSignal,namespace:l,datasetName:i,path:d==null?void 0:d.path}),H=()=>t(3,h=!0);function B(W){h=W,t(3,h)}const y=()=>t(3,h=!1);function R(W){we.call(this,n,W)}function ee(W){we.call(this,n,W)}return n.$$set=W=>{"field"in W&&t(0,d=W.field),"schema"in W&&t(12,_=W.schema)},n.$$.update=()=>{var W;n.$$.dirty&32768&&t(5,l=c.namespace),n.$$.dirty&32768&&t(4,i=c.datasetName),n.$$.dirty&4097&&t(2,f=yt(d,_)),n.$$.dirty&1&&t(1,r=bt(d)),n.$$.dirty&16385&&t(13,s=Lt(((W=u.selectRowsSchema)==null?void 0:W.data)||null,d.path)),n.$$.dirty&8199&&t(6,a=(Tt(d)||Zt(d)||!f||r)&&!s)},[d,r,f,h,i,l,a,o,g,p,w,z,_,s,u,c,M,N,A,F,C,H,B,y,R,ee]}class rr extends ve{constructor(e){super(),ke(this,e,cu,uu,pe,{field:0,schema:12})}}function ii(n,e,t){var s;const l=n.slice();l[7]=e[t][0],l[8]=e[t][1],l[13]=t;const i=l[1]!=null?l[3](l[1][l[13]]):(s=l[7])==null?void 0:s.toString();l[9]=i;const f=`${l[8]/l[2]*100}%`;l[10]=f;const r=Ne(l[8]);return l[11]=r,l}function ri(n){let e,t,l=n[9]+"",i,f,r,s,a,o=n[11]+"",u,c,d,_,h;function g(){return n[6](n[7],n[13])}return{c(){e=I("button"),t=I("div"),i=X(l),r=J(),s=I("div"),a=I("div"),u=X(o),d=J(),this.h()},l(p){e=D(p,"BUTTON",{class:!0});var w=E(e);t=D(w,"DIV",{title:!0,class:!0});var z=E(t);i=x(z,l),z.forEach(m),r=G(w),s=D(w,"DIV",{class:!0});var M=E(s);a=D(M,"DIV",{title:!0,class:!0});var N=E(a);u=x(N,o),N.forEach(m),M.forEach(m),d=G(w),w.forEach(m),this.h()},h(){S(t,"title",f=n[9]),S(t,"class","w-48 flex-none truncate px-2"),S(a,"title",c=n[11]),S(a,"class","histogram-bar my-px bg-indigo-200 pl-2 text-xs leading-5"),Pe(a,"width",n[10]),S(s,"class","w-36 border-l border-gray-300 pl-2"),S(e,"class","flex items-center text-left text-xs text-black hover:bg-gray-200")},m(p,w){V(p,e,w),k(e,t),k(t,i),k(e,r),k(e,s),k(s,a),k(a,u),k(e,d),_||(h=ae(e,"click",g),_=!0)},p(p,w){n=p,w&3&&l!==(l=n[9]+"")&&me(i,l),w&3&&f!==(f=n[9])&&S(t,"title",f),w&1&&o!==(o=n[11]+"")&&me(u,o),w&1&&c!==(c=n[11])&&S(a,"title",c),w&5&&Pe(a,"width",n[10])},d(p){p&&m(e),_=!1,h()}}}function du(n){let e,t=n[0],l=[];for(let i=0;ia("row-click",{value:u,index:c});return n.$$set=u=>{"field"in u&&t(5,i=u.field),"counts"in u&&t(0,f=u.counts),"bins"in u&&t(1,r=u.bins)},n.$$.update=()=>{n.$$.dirty&1&&t(2,l=Math.max(...f.map(([u,c])=>c)))},[f,r,l,s,a,i,o]}class mu extends ve{constructor(e){super(),ke(this,e,hu,du,pe,{field:5,counts:0,bins:1})}}function _u(n){let e,t,l,i,f,r,s,a,o,u,c,d=Ne(n[4].total_count)+"",_,h,g,p,w,z,M,N,A,F,C,H,B=Ne(n[4].approx_count_distinct)+"",y,R,ee,W,ie,he;r=new Bt({props:{class:"inline"}}),z=new Bt({props:{class:"inline"}});let $=n[4].avg_text_length&&si(n),P=n[4].min_val&&n[4].max_val&&ai(n);return{c(){e=I("table"),t=I("tbody"),l=I("tr"),i=I("td"),f=I("span"),j(r.$$.fragment),s=J(),a=I("span"),o=X("Total count"),u=J(),c=I("td"),_=X(d),h=J(),g=I("tr"),p=I("td"),w=I("span"),j(z.$$.fragment),M=J(),N=I("span"),A=X("Unique values"),F=J(),C=I("td"),H=X("~"),y=X(B),R=J(),$&&$.c(),ee=J(),P&&P.c(),this.h()},l(ce){e=D(ce,"TABLE",{class:!0});var re=E(e);t=D(re,"TBODY",{});var se=E(t);l=D(se,"TR",{});var ge=E(l);i=D(ge,"TD",{class:!0});var Ee=E(i);f=D(Ee,"SPAN",{});var Ce=E(f);Z(r.$$.fragment,Ce),Ce.forEach(m),s=G(Ee),a=D(Ee,"SPAN",{});var _e=E(a);o=x(_e,"Total count"),_e.forEach(m),Ee.forEach(m),u=G(ge),c=D(ge,"TD",{class:!0});var Se=E(c);_=x(Se,d),Se.forEach(m),ge.forEach(m),h=G(se),g=D(se,"TR",{});var K=E(g);p=D(K,"TD",{class:!0});var L=E(p);w=D(L,"SPAN",{});var q=E(w);Z(z.$$.fragment,q),q.forEach(m),M=G(L),N=D(L,"SPAN",{});var O=E(N);A=x(O,"Unique values"),O.forEach(m),L.forEach(m),F=G(K),C=D(K,"TD",{class:!0});var Ve=E(C);H=x(Ve,"~"),y=x(Ve,B),Ve.forEach(m),K.forEach(m),R=G(se),$&&$.l(se),ee=G(se),P&&P.l(se),se.forEach(m),re.forEach(m),this.h()},h(){S(i,"class","svelte-1tctrjz"),S(c,"class","svelte-1tctrjz"),S(p,"class","svelte-1tctrjz"),S(C,"class","svelte-1tctrjz"),S(e,"class","stats-table w-full svelte-1tctrjz")},m(ce,re){V(ce,e,re),k(e,t),k(t,l),k(l,i),k(i,f),Y(r,f,null),k(i,s),k(i,a),k(a,o),k(l,u),k(l,c),k(c,_),k(t,h),k(t,g),k(g,p),k(p,w),Y(z,w,null),k(p,M),k(p,N),k(N,A),k(g,F),k(g,C),k(C,H),k(C,y),k(t,R),$&&$.m(t,null),k(t,ee),P&&P.m(t,null),W=!0,ie||(he=[Ke(xe.call(null,f,{text:"Total number of rows where the value is defined."})),Ke(xe.call(null,w,{text:"An approximation of the total number of unique values."}))],ie=!0)},p(ce,re){(!W||re&16)&&d!==(d=Ne(ce[4].total_count)+"")&&me(_,d),(!W||re&16)&&B!==(B=Ne(ce[4].approx_count_distinct)+"")&&me(y,B),ce[4].avg_text_length?$?($.p(ce,re),re&16&&b($,1)):($=si(ce),$.c(),b($,1),$.m(t,ee)):$&&(le(),v($,1,1,()=>{$=null}),ne()),ce[4].min_val&&ce[4].max_val?P?(P.p(ce,re),re&16&&b(P,1)):(P=ai(ce),P.c(),b(P,1),P.m(t,null)):P&&(le(),v(P,1,1,()=>{P=null}),ne())},i(ce){W||(b(r.$$.fragment,ce),b(z.$$.fragment,ce),b($),b(P),W=!0)},o(ce){v(r.$$.fragment,ce),v(z.$$.fragment,ce),v($),v(P),W=!1},d(ce){ce&&m(e),U(r),U(z),$&&$.d(),P&&P.d(),ie=!1,Ye(he)}}}function gu(n){let e,t;return e=new It({props:{paragraph:!0,width:"50%"}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p:te,i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function bu(n){let e,t,l=n[2].error.message+"",i;return{c(){e=I("p"),t=X("Error: "),i=X(l)},l(f){e=D(f,"P",{});var r=E(e);t=x(r,"Error: "),i=x(r,l),r.forEach(m)},m(f,r){V(f,e,r),k(e,t),k(e,i)},p(f,r){r&4&&l!==(l=f[2].error.message+"")&&me(i,l)},i:te,o:te,d(f){f&&m(e)}}}function si(n){let e,t,l,i,f,r,s,a,o,u=Ne(n[4].avg_text_length)+"",c,d,_,h;return i=new Bt({props:{class:"inline"}}),{c(){e=I("tr"),t=I("td"),l=I("span"),j(i.$$.fragment),f=J(),r=I("span"),s=X("Average text length"),a=J(),o=I("td"),c=X(u),this.h()},l(g){e=D(g,"TR",{});var p=E(e);t=D(p,"TD",{class:!0});var w=E(t);l=D(w,"SPAN",{});var z=E(l);Z(i.$$.fragment,z),z.forEach(m),f=G(w),r=D(w,"SPAN",{});var M=E(r);s=x(M,"Average text length"),M.forEach(m),w.forEach(m),a=G(p),o=D(p,"TD",{class:!0});var N=E(o);c=x(N,u),N.forEach(m),p.forEach(m),this.h()},h(){S(t,"class","svelte-1tctrjz"),S(o,"class","svelte-1tctrjz")},m(g,p){V(g,e,p),k(e,t),k(t,l),Y(i,l,null),k(t,f),k(t,r),k(r,s),k(e,a),k(e,o),k(o,c),d=!0,_||(h=Ke(xe.call(null,l,{text:"The average length of the text in characters."})),_=!0)},p(g,p){(!d||p&16)&&u!==(u=Ne(g[4].avg_text_length)+"")&&me(c,u)},i(g){d||(b(i.$$.fragment,g),d=!0)},o(g){v(i.$$.fragment,g),d=!1},d(g){g&&m(e),U(i),_=!1,h()}}}function ai(n){let e,t,l,i,f,r,s,a,o,u=Ne(n[4].min_val)+"",c,d,_=Ne(n[4].max_val)+"",h,g,p,w;return i=new Bt({props:{class:"inline"}}),{c(){e=I("tr"),t=I("td"),l=I("span"),j(i.$$.fragment),f=J(),r=I("span"),s=X("Range"),a=J(),o=I("td"),c=X(u),d=X(" .. "),h=X(_),this.h()},l(z){e=D(z,"TR",{});var M=E(e);t=D(M,"TD",{class:!0});var N=E(t);l=D(N,"SPAN",{});var A=E(l);Z(i.$$.fragment,A),A.forEach(m),f=G(N),r=D(N,"SPAN",{});var F=E(r);s=x(F,"Range"),F.forEach(m),N.forEach(m),a=G(M),o=D(M,"TD",{class:!0});var C=E(o);c=x(C,u),d=x(C," .. "),h=x(C,_),C.forEach(m),M.forEach(m),this.h()},h(){S(t,"class","svelte-1tctrjz"),S(o,"class","svelte-1tctrjz")},m(z,M){V(z,e,M),k(e,t),k(t,l),Y(i,l,null),k(t,f),k(t,r),k(r,s),k(e,a),k(e,o),k(o,c),k(o,d),k(o,h),g=!0,p||(w=Ke(xe.call(null,l,{text:"The minimum and maximum value across the dataset"})),p=!0)},p(z,M){(!g||M&16)&&u!==(u=Ne(z[4].min_val)+"")&&me(c,u),(!g||M&16)&&_!==(_=Ne(z[4].max_val)+"")&&me(h,_)},i(z){g||(b(i.$$.fragment,z),g=!0)},o(z){v(i.$$.fragment,z),g=!1},d(z){z&&m(e),U(i),p=!1,w()}}}function pu(n){let e,t,l;return t=new mu({props:{counts:n[5],bins:n[3],field:n[0]}}),t.$on("row-click",n[11]),{c(){e=I("div"),j(t.$$.fragment),this.h()},l(i){e=D(i,"DIV",{class:!0});var f=E(e);Z(t.$$.fragment,f),f.forEach(m),this.h()},h(){S(e,"class","mt-4")},m(i,f){V(i,e,f),Y(t,e,null),l=!0},p(i,f){const r={};f&32&&(r.counts=i[5]),f&8&&(r.bins=i[3]),f&1&&(r.field=i[0]),t.$set(r)},i(i){l||(b(t.$$.fragment,i),l=!0)},o(i){v(t.$$.fragment,i),l=!1},d(i){i&&m(e),U(t)}}}function vu(n){let e,t;return e=new It({props:{paragraph:!0,width:"50%"}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p:te,i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function ku(n){let e,t,l=n[1].error.message+"",i;return{c(){e=I("p"),t=X("Error: "),i=X(l)},l(f){e=D(f,"P",{});var r=E(e);t=x(r,"Error: "),i=x(r,l),r.forEach(m)},m(f,r){V(f,e,r),k(e,t),k(e,i)},p(f,r){r&2&&l!==(l=f[1].error.message+"")&&me(i,l)},i:te,o:te,d(f){f&&m(e)}}}function wu(n){let e,t,l,i,f,r,s;const a=[bu,gu,_u],o=[];function u(h,g){return h[2].error?0:h[4]==null?1:2}t=u(n),l=o[t]=a[t](n);const c=[ku,vu,pu],d=[];function _(h,g){return h[1].error?0:h[5]==null?1:h[5].length>0?2:-1}return~(f=_(n))&&(r=d[f]=c[f](n)),{c(){e=I("div"),l.c(),i=J(),r&&r.c(),this.h()},l(h){e=D(h,"DIV",{class:!0});var g=E(e);l.l(g),i=G(g),r&&r.l(g),g.forEach(m),this.h()},h(){S(e,"class","p-4")},m(h,g){V(h,e,g),o[t].m(e,null),k(e,i),~f&&d[f].m(e,null),s=!0},p(h,[g]){let p=t;t=u(h),t===p?o[t].p(h,g):(le(),v(o[p],1,1,()=>{o[p]=null}),ne(),l=o[t],l?l.p(h,g):(l=o[t]=a[t](h),l.c()),b(l,1),l.m(e,i));let w=f;f=_(h),f===w?~f&&d[f].p(h,g):(r&&(le(),v(d[w],1,1,()=>{d[w]=null}),ne()),~f?(r=d[f],r?r.p(h,g):(r=d[f]=c[f](h),r.c()),b(r,1),r.m(e,null)):r=null)},i(h){s||(b(l),b(r),s=!0)},o(h){v(l),v(r),s=!1},d(h){h&&m(e),o[t].d(),~f&&d[f].d()}}}function Eu(n,e,t){let l,i,f,r,s,a,o=te,u=()=>(o(),o=rt(i,M=>t(1,a=M)),i),c,d=te,_=()=>(d(),d=rt(l,M=>t(2,c=M)),l),h;n.$$.on_destroy.push(()=>o()),n.$$.on_destroy.push(()=>d());let{field:g}=e;const p=Qe();ze(n,p,M=>t(10,h=M));function w(M,N){if(M==null)return;if(s!=null){const[,F,C]=s[N];if(F!=null){const H={path:g.path,op:"greater_equal",value:F};p.addFilter(H)}if(C!=null){const H={path:g.path,op:"less",value:C};p.addFilter(H)}return}const A={path:g.path,op:"equals",value:M};p.addFilter(A)}const z=M=>w(M.detail.value,M.detail.index);return n.$$set=M=>{"field"in M&&t(0,g=M.field)},n.$$.update=()=>{n.$$.dirty&1025&&_(t(7,l=Hr(h.namespace,h.datasetName,{leaf_path:g.path}))),n.$$.dirty&1025&&u(t(6,i=Or(h.namespace,h.datasetName,{leaf_path:g.path,filters:h.queryOptions.filters}))),n.$$.dirty&2&&t(5,f=a.data!=null?a.data.counts:null),n.$$.dirty&4&&t(4,r=c.data!=null?c.data:null),n.$$.dirty&2&&t(3,s=a.data!=null?a.data.bins:null)},[g,a,c,s,r,f,i,l,p,w,h,z]}class Su extends ve{constructor(e){super(),ke(this,e,Eu,wu,pe,{field:0})}}const{Boolean:Ft}=_r;function fi(n,e,t){const l=n.slice();return l[37]=e[t],l}function oi(n,e,t){const l=n.slice();return l[40]=e[t],l}function ui(n,e,t){const l=n.slice();return l[43]=e[t],l}function ci(n,e,t){const l=n.slice();return l[46]=e[t],l}function Vu(n){let e,t="{}",l;return{c(){e=I("span"),l=X(t),this.h()},l(i){e=D(i,"SPAN",{class:!0});var f=E(e);l=x(f,t),f.forEach(m),this.h()},h(){S(e,"class","font-mono")},m(i,f){V(i,e,f),k(e,l)},p:te,i:te,o:te,d(i){i&&m(e)}}}function zu(n){let e,t,l,i;var f=n[22][n[1].repeated_field.dtype];function r(s){return{props:{title:s[1].dtype}}}return f&&(t=qe(f,r(n))),{c(){e=I("div"),t&&j(t.$$.fragment),l=X("[]"),this.h()},l(s){e=D(s,"DIV",{class:!0});var a=E(e);t&&Z(t.$$.fragment,a),l=x(a,"[]"),a.forEach(m),this.h()},h(){S(e,"class","flex")},m(s,a){V(s,e,a),t&&Y(t,e,null),k(e,l),i=!0},p(s,a){const o={};if(a[0]&2&&(o.title=s[1].dtype),a[0]&2&&f!==(f=s[22][s[1].repeated_field.dtype])){if(t){le();const u=t;v(u.$$.fragment,1,0,()=>{U(u,1)}),ne()}f?(t=qe(f,r(s)),j(t.$$.fragment),b(t.$$.fragment,1),Y(t,e,l)):t=null}else f&&t.$set(o)},i(s){i||(t&&b(t.$$.fragment,s),i=!0)},o(s){t&&v(t.$$.fragment,s),i=!1},d(s){s&&m(e),t&&U(t)}}}function Mu(n){let e,t,l;var i=n[22][n[1].dtype];function f(r){return{props:{title:r[1].dtype}}}return i&&(e=qe(i,f(n))),{c(){e&&j(e.$$.fragment),t=ue()},l(r){e&&Z(e.$$.fragment,r),t=ue()},m(r,s){e&&Y(e,r,s),V(r,t,s),l=!0},p(r,s){const a={};if(s[0]&2&&(a.title=r[1].dtype),s[0]&2&&i!==(i=r[22][r[1].dtype])){if(e){le();const o=e;v(o.$$.fragment,1,0,()=>{U(o,1)}),ne()}i?(e=qe(i,f(r)),j(e.$$.fragment),b(e.$$.fragment,1),Y(e,t.parentNode,t)):e=null}else i&&e.$set(a)},i(r){l||(e&&b(e.$$.fragment,r),l=!0)},o(r){e&&v(e.$$.fragment,r),l=!1},d(r){r&&m(t),e&&U(e,r)}}}function di(n){let e,t;return e=new qt({props:{interactive:!0,type:"green",$$slots:{default:[Iu]},$$scope:{ctx:n}}}),e.$on("click",n[31]),e.$on("remove",n[32]),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p(l,i){const f={};i[0]&8192|i[1]&262144&&(f.$$scope={dirty:i,ctx:l}),e.$set(f)},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function yu(n){let e,t;return e=new Rt({}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function Tu(n){let e,t;return e=new Pt({}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function Iu(n){let e,t,l,i,f,r,s,a;const o=[Tu,yu],u=[];function c(d,_){return d[13]=="ASC"?0:1}return r=c(n),s=u[r]=o[r](n),{c(){e=I("div"),t=I("div"),l=X("Sorted"),i=J(),f=I("span"),s.c(),this.h()},l(d){e=D(d,"DIV",{class:!0});var _=E(e);t=D(_,"DIV",{class:!0});var h=E(t);l=x(h,"Sorted"),h.forEach(m),i=G(_),f=D(_,"SPAN",{});var g=E(f);s.l(g),g.forEach(m),_.forEach(m),this.h()},h(){S(t,"class","mr-1"),S(e,"class","flex flex-row")},m(d,_){V(d,e,_),k(e,t),k(t,l),k(e,i),k(e,f),u[r].m(f,null),a=!0},p(d,_){let h=r;r=c(d),r!==h&&(le(),v(u[h],1,1,()=>{u[h]=null}),ne(),s=u[r],s||(s=u[r]=o[r](d),s.c()),b(s,1),s.m(f,null))},i(d){a||(b(s),a=!0)},o(d){v(s),a=!1},d(d){d&&m(e),u[r].d()}}}function hi(n){let e,t,l=n[6],i=[];for(let r=0;rv(i[r],1,1,()=>{i[r]=null});return{c(){for(let r=0;r{i&&(l||(l=st(e,pt,{},!0)),l.run(1))}),i=!0)},o(f){v(t.$$.fragment,f),f&&(l||(l=st(e,pt,{},!1)),l.run(0)),i=!1},d(f){f&&m(e),U(t),f&&l&&l.end()}}}function ki(n){let e,t,l=n[17],i=[];for(let r=0;rv(i[r],1,1,()=>{i[r]=null});return{c(){for(let r=0;rv(re[q],1,1,()=>{re[q]=null});let ge=n[15],Ee=[];for(let q=0;qv(Ee[q],1,1,()=>{Ee[q]=null});let _e=n[11]&&n[20]&&bi(n),Se=M&&pi(n);A=new rr({props:{field:n[1],schema:n[0]}});let K=n[19]&&vi(n),L=n[17].length&&ki(n);return{c(){e=I("div"),t=I("div"),l=I("div"),j(i.$$.fragment),f=J(),r=I("div"),a.c(),u=J(),c=I("div"),d=X(n[18]),_=J(),$&&$.c(),h=J(),P&&P.c(),g=J();for(let q=0;q{ie[Le]=null}),ne(),a=ie[s],a?a.p(q,O):(a=ie[s]=W[s](q),a.c()),b(a,1),a.m(r,null)),o&&Ot(o.update)&&O[0]&512&&o.update.call(null,{text:q[9]}),(!y||O[0]&16)&&T(r,"bg-blue-200",q[4]),(!y||O[0]&262144)&&me(d,q[18]),q[14]?$?($.p(q,O),O[0]&16384&&b($,1)):($=di(q),$.c(),b($,1),$.m(t,h)):$&&(le(),v($,1,1,()=>{$=null}),ne()),q[12]?P?(P.p(q,O),O[0]&4096&&b(P,1)):(P=hi(q),P.c(),b(P,1),P.m(t,g)):P&&(le(),v(P,1,1,()=>{P=null}),ne()),O[0]&1024){ce=q[10];let Ie;for(Ie=0;Ie{_e=null}),ne()),O[0]&2050&&(M=Tt(q[1])&&!q[11]),M?Se?(Se.p(q,O),O[0]&2050&&b(Se,1)):(Se=pi(q),Se.c(),b(Se,1),Se.m(t,N)):Se&&(le(),v(Se,1,1,()=>{Se=null}),ne());const Je={};O[0]&2&&(Je.field=q[1]),O[0]&1&&(Je.schema=q[0]),A.$set(Je),(!y||O[0]&16)&&T(t,"bg-blue-50",q[4]),(!y||O[0]&2048)&&T(t,"bg-emerald-100",q[11]),(!y||O[0]&16)&&T(t,"hover:bg-blue-100",q[4]),q[19]?K?(K.p(q,O),O[0]&524288&&b(K,1)):(K=vi(q),K.c(),b(K,1),K.m(e,C)):K&&(le(),v(K,1,1,()=>{K=null}),ne()),q[17].length?L?(L.p(q,O),O[0]&131072&&b(L,1)):(L=ki(q),L.c(),b(L,1),L.m(H,null)):L&&(le(),v(L,1,1,()=>{L=null}),ne()),(!y||O[0]&16)&&T(e,"border-b",!q[4])},i(q){if(!y){b(i.$$.fragment,q),b(a),b($),b(P);for(let O=0;O{y&&(B||(B=st(H,pt,{},!0)),B.run(1))}),y=!0}},o(q){v(i.$$.fragment,q),v(a),v($),v(P),re=re.filter(Ft);for(let O=0;Ot(21,H=_e));const he=Qe();ze(n,he,_e=>t(8,F=_e));const $=$e();ze(n,$,_e=>t(29,C=_e));function P(_e){return _e!=null&&_e.repeated_field?P(_e.repeated_field):_e!=null&&_e.fields?[...Object.values(_e.fields).filter(Se=>Se.path.at(-1)!==tt)].flatMap(Se=>{const K=P(Se);return K.some(L=>bt(L))?K:[Se]}).filter(Se=>{var K,L,q,O;return!(Se.dtype==="embedding"||Se.signal!=null&&ct(Se).some(Ve=>Ve.dtype==="embedding")||((K=Se.signal)==null?void 0:K.signal_name)==="sentences"||((L=Se.signal)==null?void 0:L.signal_name)==="substring_search"||((q=Se.signal)==null?void 0:q.signal_name)==="semantic_similarity"||((O=Se.signal)==null?void 0:O.signal_name)==="concept_labels")}):[]}const ce=()=>{c?he.removeSelectedColumn(r):he.addSelectedColumn(r)},re=()=>h==="ASC"?Mt(he,F.queryOptions.sort_order="DESC",F):Mt(he,F.queryOptions.sort_order="ASC",F),se=()=>he.removeSortBy(r),ge=()=>y.signal&&w&&R&&H.mutate([F.namespace,F.datasetName,{leaf_path:R.path,signal:y.signal}]),Ee=()=>{var _e;return y.signal&&w&&ot({command:ut.EditPreviewConcept,namespace:F.namespace,datasetName:F.datasetName,path:R==null?void 0:R.path,signalName:(_e=y.signal)==null?void 0:_e.signal_name,value:y.signal})},Ce=()=>{s?he.removeExpandedColumn(r):he.addExpandedColumn(r)};return n.$$set=_e=>{"schema"in _e&&t(0,B=_e.schema),"field"in _e&&t(1,y=_e.field),"sourceField"in _e&&t(2,R=_e.sourceField),"indent"in _e&&t(3,ee=_e.indent)},n.$$.update=()=>{var _e,Se,K,L;n.$$.dirty[0]&3&&t(4,l=yt(y,B)),n.$$.dirty[0]&2&&t(20,i=bt(y)),n.$$.dirty[0]&16&&t(7,f=!l),n.$$.dirty[0]&2&&t(5,r=y.path),n.$$.dirty[0]&288&&t(19,s=F.expandedColumns[De(r)]||!1),n.$$.dirty[0]&32&&t(28,a=r.at(-1)===Ji),n.$$.dirty[0]&268435488&&t(18,o=a?r.at(-2):r.at(-1)),n.$$.dirty[0]&2&&t(17,u=P(y)),n.$$.dirty[0]&536870944&&t(16,c=(_e=C.visibleFields)==null?void 0:_e.some(q=>Ue(q.path,r))),n.$$.dirty[0]&130&&t(15,d=f?ct(y).filter(q=>q.signal!=null&&ct(q).some(O=>O.dtype==="embedding")):[]),n.$$.dirty[0]&288&&t(14,_=(Se=F.queryOptions.sort_by)==null?void 0:Se.some(q=>Ue(q,r))),n.$$.dirty[0]&256&&t(13,h=F.queryOptions.sort_order),n.$$.dirty[0]&288&&t(6,g=((K=F.queryOptions.filters)==null?void 0:K.filter(q=>Ue(q.path,r)))||[]),n.$$.dirty[0]&64&&t(12,p=g.length>0),n.$$.dirty[0]&536870944&&t(11,w=Lt(((L=C.selectRowsSchema)==null?void 0:L.data)||null,r)),n.$$.dirty[0]&288&&t(10,z=sl(F,r)),n.$$.dirty[0]&16&&t(26,M=l?". This field was generated by a signal":""),n.$$.dirty[0]&2&&t(27,N=y.dtype??(y.repeated_field&&y.repeated_field.dtype?`${y.repeated_field.dtype}[]`:"object")),n.$$.dirty[0]&201326592&&t(9,A=`Data type: ${N}${M}`)},[B,y,R,ee,l,r,g,f,F,A,z,w,p,h,_,d,c,u,o,s,i,H,W,ie,he,$,M,N,a,C,ce,re,se,ge,Ee,Ce]}class sr extends ve{constructor(e){super(),ke(this,e,Cu,Du,pe,{schema:0,field:1,sourceField:2,indent:3},null,[-1,-1])}}function Ei(n,e,t){const l=n.slice();return l[28]=e[t],l}function Si(n,e,t){const l=n.slice();return l[31]=e[t],l}function Au(n){var B;let e,t,l,i,f,r,s,a,o,u,c,d,_,h,g,p,w,z;l=new Ui({props:{labelText:"Show",hideLabel:!0,checked:n[14],disabled:n[10]}}),l.$on("change",n[23]);let M=n[15]&&Vi(n),N=n[13]&&zi(n),A=n[11]&&Mi(n),F=n[17]&&Ti(n),C=((B=n[1])==null?void 0:B.dtype)&&Ii(n);g=new rr({props:{field:n[1],schema:n[0]}});let H=n[8]&&Di(n);return{c(){e=I("div"),t=I("div"),j(l.$$.fragment),i=J(),f=I("div"),M&&M.c(),r=J(),s=I("div"),a=X(n[16]),o=J(),N&&N.c(),u=J(),A&&A.c(),c=J(),F&&F.c(),d=J(),C&&C.c(),_=J(),h=I("div"),j(g.$$.fragment),p=J(),H&&H.c(),w=ue(),this.h()},l(y){e=D(y,"DIV",{class:!0});var R=E(e);t=D(R,"DIV",{class:!0});var ee=E(t);Z(l.$$.fragment,ee),ee.forEach(m),i=G(R),f=D(R,"DIV",{class:!0});var W=E(f);M&&M.l(W),W.forEach(m),r=G(R),s=D(R,"DIV",{class:!0,title:!0});var ie=E(s);a=x(ie,n[16]),ie.forEach(m),o=G(R),N&&N.l(R),u=G(R),A&&A.l(R),c=G(R),F&&F.l(R),d=G(R),C&&C.l(R),_=G(R),h=D(R,"DIV",{});var he=E(h);Z(g.$$.fragment,he),he.forEach(m),R.forEach(m),p=G(y),H&&H.l(y),w=ue(),this.h()},h(){S(t,"class","w-6"),S(f,"class","w-6"),Pe(f,"margin-left",n[2]*24+"px"),S(s,"class","grow truncate whitespace-nowrap pr-2 text-gray-900"),S(s,"title",n[16]),S(e,"class","flex w-full flex-row items-center border-b border-gray-200 px-4 py-2 hover:bg-gray-100"),T(e,"bg-blue-50",n[18]),T(e,"hover:bg-blue-100",n[18])},m(y,R){V(y,e,R),k(e,t),Y(l,t,null),k(e,i),k(e,f),M&&M.m(f,null),k(e,r),k(e,s),k(s,a),k(e,o),N&&N.m(e,null),k(e,u),A&&A.m(e,null),k(e,c),F&&F.m(e,null),k(e,d),C&&C.m(e,null),k(e,_),k(e,h),Y(g,h,null),V(y,p,R),H&&H.m(y,R),V(y,w,R),z=!0},p(y,R){var ie;const ee={};R[0]&16384&&(ee.checked=y[14]),R[0]&1024&&(ee.disabled=y[10]),l.$set(ee),y[15]?M?(M.p(y,R),R[0]&32768&&b(M,1)):(M=Vi(y),M.c(),b(M,1),M.m(f,null)):M&&(le(),v(M,1,1,()=>{M=null}),ne()),R[0]&4&&Pe(f,"margin-left",y[2]*24+"px"),(!z||R[0]&65536)&&me(a,y[16]),(!z||R[0]&65536)&&S(s,"title",y[16]),y[13]?N?(N.p(y,R),R[0]&8192&&b(N,1)):(N=zi(y),N.c(),b(N,1),N.m(e,u)):N&&(le(),v(N,1,1,()=>{N=null}),ne()),y[11]?A?(A.p(y,R),R[0]&2048&&b(A,1)):(A=Mi(y),A.c(),b(A,1),A.m(e,c)):A&&(le(),v(A,1,1,()=>{A=null}),ne()),y[17]?F?(F.p(y,R),R[0]&131072&&b(F,1)):(F=Ti(y),F.c(),b(F,1),F.m(e,d)):F&&(le(),v(F,1,1,()=>{F=null}),ne()),(ie=y[1])!=null&&ie.dtype?C?C.p(y,R):(C=Ii(y),C.c(),C.m(e,_)):C&&(C.d(1),C=null);const W={};R[0]&2&&(W.field=y[1]),R[0]&1&&(W.schema=y[0]),g.$set(W),(!z||R[0]&262144)&&T(e,"bg-blue-50",y[18]),(!z||R[0]&262144)&&T(e,"hover:bg-blue-100",y[18]),y[8]?H?(H.p(y,R),R[0]&256&&b(H,1)):(H=Di(y),H.c(),b(H,1),H.m(w.parentNode,w)):H&&(le(),v(H,1,1,()=>{H=null}),ne())},i(y){z||(b(l.$$.fragment,y),b(M),b(N),b(A),b(F),b(g.$$.fragment,y),b(H),z=!0)},o(y){v(l.$$.fragment,y),v(M),v(N),v(A),v(F),v(g.$$.fragment,y),v(H),z=!1},d(y){y&&m(e),U(l),M&&M.d(),N&&N.d(),A&&A.d(),F&&F.d(),C&&C.d(),U(g),y&&m(p),H&&H.d(y),y&&m(w)}}}function Nu(n){let e,t;return e=new ol({props:{field:n[1].repeated_field,indent:n[2],schema:n[0]}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p(l,i){const f={};i[0]&2&&(f.field=l[1].repeated_field),i[0]&4&&(f.indent=l[2]),i[0]&1&&(f.schema=l[0]),e.$set(f)},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function Vi(n){let e,t,l,i,f;return t=new qa({props:{class:"w-3"}}),{c(){e=I("button"),j(t.$$.fragment),this.h()},l(r){e=D(r,"BUTTON",{class:!0});var s=E(e);Z(t.$$.fragment,s),s.forEach(m),this.h()},h(){S(e,"class","p-2 transition hover:opacity-60"),T(e,"rotate-180",!n[8])},m(r,s){V(r,e,s),Y(t,e,null),l=!0,i||(f=ae(e,"click",n[24]),i=!0)},p(r,s){(!l||s[0]&256)&&T(e,"rotate-180",!r[8])},i(r){l||(b(t.$$.fragment,r),l=!0)},o(r){v(t.$$.fragment,r),l=!1},d(r){r&&m(e),U(t),i=!1,f()}}}function zi(n){let e,t;return e=new qt({props:{interactive:!0,type:"green",$$slots:{default:[Ru]},$$scope:{ctx:n}}}),e.$on("click",n[25]),e.$on("remove",n[26]),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p(l,i){const f={};i[0]&4096|i[1]&8&&(f.$$scope={dirty:i,ctx:l}),e.$set(f)},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function Bu(n){let e,t;return e=new Rt({}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function Pu(n){let e,t;return e=new Pt({}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function Ru(n){let e,t,l,i,f;const r=[Pu,Bu],s=[];function a(o,u){return o[12]=="ASC"?0:1}return t=a(n),l=s[t]=r[t](n),{c(){e=X(`Sorted + `),l.c(),i=ue()},l(o){e=x(o,`Sorted + `),l.l(o),i=ue()},m(o,u){V(o,e,u),s[t].m(o,u),V(o,i,u),f=!0},p(o,u){let c=t;t=a(o),t!==c&&(le(),v(s[c],1,1,()=>{s[c]=null}),ne(),l=s[t],l||(l=s[t]=r[t](o),l.c()),b(l,1),l.m(i.parentNode,i))},i(o){f||(b(l),f=!0)},o(o){v(l),f=!1},d(o){o&&m(e),s[t].d(o),o&&m(i)}}}function Mi(n){let e,t,l=n[4],i=[];for(let r=0;rv(i[r],1,1,()=>{i[r]=null});return{c(){for(let r=0;r{i=null}),ne())},i(f){l||(b(i),f&&ht(()=>{l&&(t||(t=st(e,pt,{},!0)),t.run(1))}),l=!0)},o(f){v(i),f&&(t||(t=st(e,pt,{},!1)),t.run(0)),l=!1},d(f){f&&m(e),i&&i.d(),f&&t&&t.end()}}}function Ci(n){let e,t,l=n[5],i=[];for(let r=0;rv(i[r],1,1,()=>{i[r]=null});return{c(){for(let r=0;r{r[u]=null}),ne(),t=r[e],t?t.p(a,o):(t=r[e]=f[e](a),t.c()),b(t,1),t.m(l.parentNode,l))},i(a){i||(b(t),i=!0)},o(a){v(t),i=!1},d(a){r[e].d(a),a&&m(l)}}}function Hu(n,e,t){let l,i,f,r,s,a,o,u,c,d,_,h,g,p,w,z,M,{schema:N}=e,{field:A}=e,{indent:F=0}=e;const C=Qe();ze(n,C,he=>t(7,M=he));const H=$e();ze(n,H,he=>t(22,z=he));let B=!0;function y(he){return he!=null&&he.fields?Object.values(he.fields).filter($=>$.path.at(-1)!==tt):[]}const R=()=>{c?C.removeSelectedColumn(l):C.addSelectedColumn(l)},ee=()=>t(8,B=!B),W=()=>_==="ASC"?Mt(C,M.queryOptions.sort_order="DESC",M):Mt(C,M.queryOptions.sort_order="ASC",M),ie=()=>C.removeSortBy(l);return n.$$set=he=>{"schema"in he&&t(0,N=he.schema),"field"in he&&t(1,A=he.field),"indent"in he&&t(2,F=he.indent)},n.$$.update=()=>{var he,$,P,ce;n.$$.dirty[0]&2&&t(3,l=A.path),n.$$.dirty[0]&3&&t(21,i=nl(N,A.path.slice(0,-1))),n.$$.dirty[0]&3&&t(18,f=yt(A,N)),n.$$.dirty[0]&2&&t(6,s=A.path.at(-1)===Ji),n.$$.dirty[0]&2097218&&t(17,r=s&&i?bt(i):bt(A)),n.$$.dirty[0]&66&&t(16,a=s?A.path.at(-2):A.path.at(-1)),n.$$.dirty[0]&2&&t(5,o=y(A)),n.$$.dirty[0]&32&&t(15,u=o.length>0),n.$$.dirty[0]&4194312&&t(14,c=(he=z.visibleFields)==null?void 0:he.some(re=>Ue(re.path,l))),n.$$.dirty[0]&136&&t(13,d=($=M.queryOptions.sort_by)==null?void 0:$.some(re=>Ue(re,l))),n.$$.dirty[0]&128&&t(12,_=M.queryOptions.sort_order),n.$$.dirty[0]&136&&t(4,h=((P=M.queryOptions.filters)==null?void 0:P.filter(re=>Ue(re.path,l)))||[]),n.$$.dirty[0]&16&&t(11,g=h.length>0),n.$$.dirty[0]&2&&t(10,p=!A.dtype||A.dtype==="embedding"),n.$$.dirty[0]&4194312&&t(9,w=Lt(((ce=z.selectRowsSchema)==null?void 0:ce.data)||null,l))},[N,A,F,l,h,o,s,M,B,w,p,g,_,d,c,u,a,r,f,C,H,i,z,R,ee,W,ie]}class ol extends ve{constructor(e){super(),ke(this,e,Hu,Fu,pe,{schema:0,field:1,indent:2},null,[-1,-1])}}function Ni(n,e,t){const l=n.slice();return l[10]=e[t],l}function Bi(n,e,t){const l=n.slice();return l[10]=e[t],l}function Ou(n){let e;return{c(){e=X("datasets")},l(t){e=x(t,"datasets")},m(t,l){V(t,e,l)},d(t){t&&m(e)}}}function Lu(n){let e=n[1].namespace+"",t;return{c(){t=X(e)},l(l){t=x(l,e)},m(l,i){V(l,t,i)},p(l,i){i&2&&e!==(e=l[1].namespace+"")&&me(t,e)},d(l){l&&m(t)}}}function qu(n){let e=n[1].datasetName+"",t;return{c(){t=X(e)},l(l){t=x(l,e)},m(l,i){V(l,t,i)},p(l,i){i&2&&e!==(e=l[1].datasetName+"")&&me(t,e)},d(l){l&&m(t)}}}function ju(n){let e,t,l,i,f,r;return e=new Yt({props:{href:"/",$$slots:{default:[Ou]},$$scope:{ctx:n}}}),l=new Yt({props:{href:"/",$$slots:{default:[Lu]},$$scope:{ctx:n}}}),f=new Yt({props:{$$slots:{default:[qu]},$$scope:{ctx:n}}}),{c(){j(e.$$.fragment),t=J(),j(l.$$.fragment),i=J(),j(f.$$.fragment)},l(s){Z(e.$$.fragment,s),t=G(s),Z(l.$$.fragment,s),i=G(s),Z(f.$$.fragment,s)},m(s,a){Y(e,s,a),V(s,t,a),Y(l,s,a),V(s,i,a),Y(f,s,a),r=!0},p(s,a){const o={};a&32768&&(o.$$scope={dirty:a,ctx:s}),e.$set(o);const u={};a&32770&&(u.$$scope={dirty:a,ctx:s}),l.$set(u);const c={};a&32770&&(c.$$scope={dirty:a,ctx:s}),f.$set(c)},i(s){r||(b(e.$$.fragment,s),b(l.$$.fragment,s),b(f.$$.fragment,s),r=!0)},o(s){v(e.$$.fragment,s),v(l.$$.fragment,s),v(f.$$.fragment,s),r=!1},d(s){U(e,s),s&&m(t),U(l,s),s&&m(i),U(f,s)}}}function Pi(n){let e,t=Ne(n[3].data.dataset_manifest.num_items)+"",l,i;return{c(){e=X("("),l=X(t),i=X(" rows)")},l(f){e=x(f,"("),l=x(f,t),i=x(f," rows)")},m(f,r){V(f,e,r),V(f,l,r),V(f,i,r)},p(f,r){r&8&&t!==(t=Ne(f[3].data.dataset_manifest.num_items)+"")&&me(l,t)},d(f){f&&m(e),f&&m(l),f&&m(i)}}}function Yu(n){let e,t,l,i,f,r;return e=new Vt({props:{label:"Schema",class:"w-1/3"}}),l=new Vt({props:{label:"Tree View",class:"w-1/3"}}),f=new Vt({props:{label:"Raw Query",class:"w-1/3"}}),{c(){j(e.$$.fragment),t=J(),j(l.$$.fragment),i=J(),j(f.$$.fragment)},l(s){Z(e.$$.fragment,s),t=G(s),Z(l.$$.fragment,s),i=G(s),Z(f.$$.fragment,s)},m(s,a){Y(e,s,a),V(s,t,a),Y(l,s,a),V(s,i,a),Y(f,s,a),r=!0},p:te,i(s){r||(b(e.$$.fragment,s),b(l.$$.fragment,s),b(f.$$.fragment,s),r=!0)},o(s){v(e.$$.fragment,s),v(l.$$.fragment,s),v(f.$$.fragment,s),r=!1},d(s){U(e,s),s&&m(t),U(l,s),s&&m(i),U(f,s)}}}function Uu(n){let e=[],t=new Map,l,i,f=Object.keys(n[0].data.schema.fields);const r=s=>s[10];for(let s=0;s{r[u]=null}),ne()),~e?(t=r[e],t?t.p(a,o):(t=r[e]=f[e](a),t.c()),b(t,1),t.m(l.parentNode,l)):t=null)},i(a){i||(b(t),i=!0)},o(a){v(t),i=!1},d(a){~e&&r[e].d(a),a&&m(l)}}}function Ku(n){let e=[],t=new Map,l,i,f=Object.keys(n[0].data.schema.fields);const r=s=>s[10];for(let s=0;s{r[u]=null}),ne()),~e?(t=r[e],t?t.p(a,o):(t=r[e]=f[e](a),t.c()),b(t,1),t.m(l.parentNode,l)):t=null)},i(a){i||(b(t),i=!0)},o(a){v(t),i=!1},d(a){~e&&r[e].d(a),a&&m(l)}}}function Gu(n){let e,t;return e=new au({}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function Xu(n){let e,t,l,i,f,r,s;return t=new zt({props:{$$slots:{default:[Zu]},$$scope:{ctx:n}}}),i=new zt({props:{$$slots:{default:[Ju]},$$scope:{ctx:n}}}),r=new zt({props:{$$slots:{default:[Gu]},$$scope:{ctx:n}}}),{c(){e=I("div"),j(t.$$.fragment),l=J(),j(i.$$.fragment),f=J(),j(r.$$.fragment),this.h()},l(a){e=D(a,"DIV",{class:!0,slot:!0});var o=E(e);Z(t.$$.fragment,o),l=G(o),Z(i.$$.fragment,o),f=G(o),Z(r.$$.fragment,o),o.forEach(m),this.h()},h(){S(e,"class","h-full overflow-y-auto"),S(e,"slot","content")},m(a,o){V(a,e,o),Y(t,e,null),k(e,l),Y(i,e,null),k(e,f),Y(r,e,null),s=!0},p(a,o){const u={};o&32769&&(u.$$scope={dirty:o,ctx:a}),t.$set(u);const c={};o&32769&&(c.$$scope={dirty:o,ctx:a}),i.$set(c);const d={};o&32768&&(d.$$scope={dirty:o,ctx:a}),r.$set(d)},i(a){s||(b(t.$$.fragment,a),b(i.$$.fragment,a),b(r.$$.fragment,a),s=!0)},o(a){v(t.$$.fragment,a),v(i.$$.fragment,a),v(r.$$.fragment,a),s=!1},d(a){a&&m(e),U(t),U(i),U(r)}}}function xu(n){let e,t,l,i,f,r,s,a,o,u,c,d,_;i=new ss({props:{noTrailingSlash:!0,skeleton:n[2].isLoading,$$slots:{default:[ju]},$$scope:{ctx:n}}});let h=n[3].isSuccess&&Pi(n);return a=new at({props:{size:"field",kind:"ghost",icon:cf,iconDescription:"Reset View"}}),a.$on("click",n[4].reset),u=new at({props:{size:"field",kind:"ghost",icon:lf,iconDescription:"Download selection"}}),u.$on("click",n[8]),d=new $i({props:{class:"overflow-hidden border-b border-gray-200",$$slots:{content:[Xu],default:[Yu]},$$scope:{ctx:n}}}),{c(){e=I("div"),t=I("div"),l=I("div"),j(i.$$.fragment),f=J(),h&&h.c(),r=J(),s=I("div"),j(a.$$.fragment),o=J(),j(u.$$.fragment),c=J(),j(d.$$.fragment),this.h()},l(g){e=D(g,"DIV",{class:!0});var p=E(e);t=D(p,"DIV",{class:!0});var w=E(t);l=D(w,"DIV",{class:!0});var z=E(l);Z(i.$$.fragment,z),f=G(z),h&&h.l(z),z.forEach(m),r=G(w),s=D(w,"DIV",{class:!0});var M=E(s);Z(a.$$.fragment,M),o=G(M),Z(u.$$.fragment,M),M.forEach(m),w.forEach(m),c=G(p),Z(d.$$.fragment,p),p.forEach(m),this.h()},h(){S(l,"class","flex items-center"),S(s,"class","flex"),S(t,"class","mb-2 flex w-full items-center justify-between gap-x-2 px-4"),S(e,"class","flex h-full flex-col pt-4")},m(g,p){V(g,e,p),k(e,t),k(t,l),Y(i,l,null),k(l,f),h&&h.m(l,null),k(t,r),k(t,s),Y(a,s,null),k(s,o),Y(u,s,null),k(e,c),Y(d,e,null),_=!0},p(g,[p]){const w={};p&4&&(w.skeleton=g[2].isLoading),p&32770&&(w.$$scope={dirty:p,ctx:g}),i.$set(w),g[3].isSuccess?h?h.p(g,p):(h=Pi(g),h.c(),h.m(l,null)):h&&(h.d(1),h=null);const z={};p&32769&&(z.$$scope={dirty:p,ctx:g}),d.$set(z)},i(g){_||(b(i.$$.fragment,g),b(a.$$.fragment,g),b(u.$$.fragment,g),b(d.$$.fragment,g),_=!0)},o(g){v(i.$$.fragment,g),v(a.$$.fragment,g),v(u.$$.fragment,g),v(d.$$.fragment,g),_=!1},d(g){g&&m(e),U(i),h&&h.d(),U(a),U(u),U(d)}}}function $u(n,e,t){let l,i,f,r,s;const a=Qe();ze(n,a,_=>t(1,f=_));const o=$e();ze(n,o,_=>t(9,i=_));const u=il(f.namespace,f.datasetName);ze(n,u,_=>t(2,r=_));const c=Qi(f.namespace,f.datasetName);ze(n,c,_=>t(3,s=_));async function d(){var z;const _=f.namespace,h=f.datasetName,g=f.queryOptions;g.columns=(z=i.visibleFields)==null?void 0:z.map(M=>M.path);const p=`/api/v1/datasets/${_}/${h}/select_rows_download?url_safe_options=${encodeURIComponent(JSON.stringify(g))}`,w=document.createElement("a");w.download=`${_}_${h}.json`,w.href=p,document.body.appendChild(w),w.click(),w.remove()}return n.$$.update=()=>{n.$$.dirty&512&&t(0,l=i.selectRowsSchema)},[l,f,r,s,a,o,u,c,d,i]}class ec extends ve{constructor(e){super(),ke(this,e,$u,xu,pe,{})}}function tc(n){let e,t,l,i,f,r,s,a,o;return l=new ec({}),r=new tu({}),a=new zr({}),{c(){e=I("div"),t=I("div"),j(l.$$.fragment),i=J(),f=I("div"),j(r.$$.fragment),s=J(),j(a.$$.fragment),this.h()},l(u){e=D(u,"DIV",{class:!0});var c=E(e);t=D(c,"DIV",{class:!0});var d=E(t);Z(l.$$.fragment,d),d.forEach(m),i=G(c),f=D(c,"DIV",{class:!0});var _=E(f);Z(r.$$.fragment,_),_.forEach(m),c.forEach(m),s=G(u),Z(a.$$.fragment,u),this.h()},h(){S(t,"class","h-full w-1/3 border-r border-gray-200"),S(f,"class","h-full w-2/3"),S(e,"class","flex h-full w-full")},m(u,c){V(u,e,c),k(e,t),Y(l,t,null),k(e,i),k(e,f),Y(r,f,null),V(u,s,c),Y(a,u,c),o=!0},p:te,i(u){o||(b(l.$$.fragment,u),b(r.$$.fragment,u),b(a.$$.fragment,u),o=!0)},o(u){v(l.$$.fragment,u),v(r.$$.fragment,u),v(a.$$.fragment,u),o=!1},d(u){u&&m(e),U(l),U(r),u&&m(s),U(a,u)}}}function lc(n,e,t){let l,i,f,r,s,a,o=te,u=()=>(o(),o=rt(s,H=>t(8,a=H)),s),c,d=te,_=()=>(d(),d=rt(l,H=>t(9,c=H)),l),h,g=te,p=()=>(g(),g=rt(i,H=>t(10,h=H)),i),w,z=te,M=()=>(z(),z=rt(r,H=>t(11,w=H)),r);n.$$.on_destroy.push(()=>o()),n.$$.on_destroy.push(()=>d()),n.$$.on_destroy.push(()=>g()),n.$$.on_destroy.push(()=>z());let{namespace:N}=e,{datasetName:A}=e;const F=Mr(N,A);yr(F);let C=null;return n.$$set=H=>{"namespace"in H&&t(4,N=H.namespace),"datasetName"in H&&t(5,A=H.datasetName)},n.$$.update=()=>{var H;if(n.$$.dirty&48&&_(t(0,l=Tr(N,A))),n.$$.dirty&1&&Ir(l),n.$$.dirty&512&&p(t(3,i=il(c.namespace,c.datasetName))),n.$$.dirty&1024&&t(7,f=Nt("string",h.data)),n.$$.dirty&640&&M(t(2,r=Lr(f.map(B=>[c.namespace,c.datasetName,{leaf_path:B.path}])))),n.$$.dirty&512&&u(t(1,s=qr(c.namespace,c.datasetName,Dr(c)))),n.$$.dirty&3200&&h.data!=null&&w.length>0&&!w.some(B=>B==null||B.isLoading)&&t(6,C=w.map((B,y)=>({path:f[y].path,stats:B})).sort((B,y)=>{var R,ee;return B==null||y==null?0:(((R=y.stats.data)==null?void 0:R.avg_text_length)||0)-(((ee=B.stats.data)==null?void 0:ee.avg_text_length)||0)})),n.$$.dirty&1024&&h.data!=null&&F.setSchema(h.data),n.$$.dirty&256&&a!=null&&F.setSelectRowsSchema(a),n.$$.dirty&64&&C!=null&&F.setStats(C),n.$$.dirty&768){const B=Mf(c.selectedColumns,((H=a==null?void 0:a.data)==null?void 0:H.schema)||null);F.setVisibleFields(B)}},[l,s,r,i,N,A,C,f,a,c,h,w]}class nc extends ve{constructor(e){super(),ke(this,e,lc,tc,pe,{namespace:4,datasetName:5})}}function Hi(n){let e,t;return e=new nc({props:{namespace:n[0],datasetName:n[1]}}),{c(){j(e.$$.fragment)},l(l){Z(e.$$.fragment,l)},m(l,i){Y(e,l,i),t=!0},p(l,i){const f={};i&1&&(f.namespace=l[0]),i&2&&(f.datasetName=l[1]),e.$set(f)},i(l){t||(b(e.$$.fragment,l),t=!0)},o(l){v(e.$$.fragment,l),t=!1},d(l){U(e,l)}}}function ic(n){let e,t,l=n[0]&&n[1]&&Hi(n);return{c(){l&&l.c(),e=ue()},l(i){l&&l.l(i),e=ue()},m(i,f){l&&l.m(i,f),V(i,e,f),t=!0},p(i,[f]){i[0]&&i[1]?l?(l.p(i,f),f&3&&b(l,1)):(l=Hi(i),l.c(),b(l,1),l.m(e.parentNode,e)):l&&(le(),v(l,1,1,()=>{l=null}),ne())},i(i){t||(b(l),t=!0)},o(i){v(l),t=!1},d(i){l&&l.d(i),i&&m(e)}}}function rc(n,e,t){let l;ze(n,gr,r=>t(2,l=r));let i,f;return n.$$.update=()=>{n.$$.dirty&4&&l.onHashChange("/(?.+)/(?.+)",r=>{t(0,i=r.namespace),t(1,f=r.datasetName)})},[i,f,l]}class vc extends ve{constructor(e){super(),ke(this,e,rc,ic,pe,{})}}export{vc as component}; diff --git a/web/blueprint/build/_app/immutable/nodes/5.e562ff0a.js b/web/blueprint/build/_app/immutable/nodes/5.e562ff0a.js new file mode 100644 index 0000000000000000000000000000000000000000..eb9424a0e665287c1384e59b79abfe054bacca73 --- /dev/null +++ b/web/blueprint/build/_app/immutable/nodes/5.e562ff0a.js @@ -0,0 +1 @@ +import{S as W,i as X,s as z,E as R,k as I,a as j,l as P,m as V,c as H,h as p,n as G,H as T,I as K,b as L,J as D,K as q,g as k,v as y,d as E,f as w,O as ie,P as ae,D as O,a8 as Ve,ad as Ce,R as le,F as se,G as oe,L as re,M as ue,N as fe,Q as B,w as U,q as Y,r as Z,u as ce,$ as x,C as Ge,T as Re,o as je,a1 as _e,ao as He,U as $,y as F,z as A,A as M,V as ee,B as C,e as Q,a5 as qe,a0 as Je}from"../chunks/index.224851d7.js";import{g as Ke}from"../chunks/navigation.6c9a524e.js";import{T as de,J as Oe}from"../chunks/JSONSchemaForm.cab38fde.js";import{g as Ne,B as Ue,w as ze}from"../chunks/taskMonitoringStore.8317b9f1.js";import{C as Qe}from"../chunks/ComboBox.1a71e223.js";import{J as We,K as Xe,M as Ye,a as Ze,S as ye}from"../chunks/utils.2fa053fd.js";import{I as Be}from"../chunks/InlineNotification.91d7c257.js";import{w as Fe}from"../chunks/index.fd964a74.js";const we=l=>({}),he=l=>({});function be(l){let e,t;const a=l[16].labelText,i=oe(a,l,l[15],he),s=i||xe(l);return{c(){e=I("span"),s&&s.c(),this.h()},l(n){e=P(n,"SPAN",{});var r=V(e);s&&s.l(r),r.forEach(p),this.h()},h(){T(e,"bx--visually-hidden",l[7])},m(n,r){L(n,e,r),s&&s.m(e,null),t=!0},p(n,r){i?i.p&&(!t||r&32768)&&re(i,a,n,n[15],t?fe(a,n[15],r,we):ue(n[15]),he):s&&s.p&&(!t||r&64)&&s.p(n,t?r:-1),(!t||r&128)&&T(e,"bx--visually-hidden",n[7])},i(n){t||(k(s,n),t=!0)},o(n){E(s,n),t=!1},d(n){n&&p(e),s&&s.d(n)}}}function xe(l){let e;return{c(){e=Y(l[6])},l(t){e=Z(t,l[6])},m(t,a){L(t,e,a)},p(t,a){a&64&&ce(e,t[6])},d(t){t&&p(e)}}}function $e(l){let e,t,a,i,s,n,r,o,u,d=(l[6]||l[13].labelText)&&be(l),h=[l[12]],c={};for(let m=0;m{d=null}),w()),(!r||v&256)&&G(i,"for",m[8]),K(e,c=ie(h,[v&4096&&m[12]])),T(e,"bx--radio-button-wrapper",!0),T(e,"bx--radio-button-wrapper--label-left",m[5]==="left")},i(m){r||(k(d),r=!0)},o(m){E(d),r=!1},d(m){m&&p(e),l[18](null),d&&d.d(),o=!1,ae(u)}}}function et(l,e,t){const a=["value","checked","disabled","required","labelPosition","labelText","hideLabel","id","name","ref"];let i=O(e,a),s,{$$slots:n={},$$scope:r}=e;const o=Ve(n);let{value:u=""}=e,{checked:d=!1}=e,{disabled:h=!1}=e,{required:c=!1}=e,{labelPosition:m="right"}=e,{labelText:v=""}=e,{hideLabel:f=!1}=e,{id:b="ccs-"+Math.random().toString(36)}=e,{name:_=""}=e,{ref:N=null}=e;const J=Ce("RadioButtonGroup"),te=J?J.selectedValue:Fe(d?u:void 0);le(l,te,S=>t(14,s=S)),J&&J.add({id:b,checked:d,disabled:h,value:u});function ne(S){B.call(this,l,S)}function g(S){U[S?"unshift":"push"](()=>{N=S,t(1,N)})}const me=()=>{J&&J.update(u)};return l.$$set=S=>{e=R(R({},e),se(S)),t(12,i=O(e,a)),"value"in S&&t(2,u=S.value),"checked"in S&&t(0,d=S.checked),"disabled"in S&&t(3,h=S.disabled),"required"in S&&t(4,c=S.required),"labelPosition"in S&&t(5,m=S.labelPosition),"labelText"in S&&t(6,v=S.labelText),"hideLabel"in S&&t(7,f=S.hideLabel),"id"in S&&t(8,b=S.id),"name"in S&&t(9,_=S.name),"ref"in S&&t(1,N=S.ref),"$$scope"in S&&t(15,r=S.$$scope)},l.$$.update=()=>{l.$$.dirty&16388&&t(0,d=s===u)},[d,N,u,h,c,m,v,f,b,_,J,te,i,o,s,r,n,ne,g,me]}class tt extends W{constructor(e){super(),X(this,e,et,$e,z,{value:2,checked:0,disabled:3,required:4,labelPosition:5,labelText:6,hideLabel:7,id:8,name:9,ref:1})}}const lt=tt;function nt(l){let e,t,a,i;const s=l[3].default,n=oe(s,l,l[2],null);let r=[l[1]],o={};for(let u=0;u{r=f,t(0,r)})}return l.$$set=f=>{e=R(R({},e),se(f)),t(1,i=O(e,a)),"ref"in f&&t(0,r=f.ref),"$$scope"in f&&t(2,n=f.$$scope)},[r,i,n,s,o,u,d,h,c,m,v]}class at extends W{constructor(e){super(),X(this,e,it,nt,z,{ref:0})}}const st=at;function ge(l){let e,t,a;return{c(){e=I("legend"),t=Y(l[4]),this.h()},l(i){e=P(i,"LEGEND",{id:!0});var s=V(e);t=Z(s,l[4]),s.forEach(p),this.h()},h(){G(e,"id",a=l[5]||l[6]["aria-labelledby"]),T(e,"bx--label",!0)},m(i,s){L(i,e,s),D(e,t)},p(i,s){s&16&&ce(t,i[4]),s&96&&a!==(a=i[5]||i[6]["aria-labelledby"])&&G(e,"id",a)},d(i){i&&p(e)}}}function ve(l){let e,t;return{c(){e=I("div"),t=Y(l[3]),this.h()},l(a){e=P(a,"DIV",{});var i=V(e);t=Z(i,l[3]),i.forEach(p),this.h()},h(){T(e,"bx--form__requirement",!0)},m(a,i){L(a,e,i),D(e,t)},p(a,i){i&8&&ce(t,a[3])},d(a){a&&p(e)}}}function ot(l){let e,t,a,i,s,n,r,o,u=l[4]&&ge(l);const d=l[8].default,h=oe(d,l,l[7],null);let c=l[2]&&ve(l),m=[{"data-invalid":i=l[1]||void 0},{"aria-labelledby":s=l[6]["aria-labelledby"]||l[5]},l[6]],v={};for(let f=0;f{e=R(R({},e),se(_)),t(6,i=O(e,a)),"noMargin"in _&&t(0,r=_.noMargin),"invalid"in _&&t(1,o=_.invalid),"message"in _&&t(2,u=_.message),"messageText"in _&&t(3,d=_.messageText),"legendText"in _&&t(4,h=_.legendText),"legendId"in _&&t(5,c=_.legendId),"$$scope"in _&&t(7,n=_.$$scope)},[r,o,u,d,h,c,i,n,s,m,v,f,b]}class ut extends W{constructor(e){super(),X(this,e,rt,ot,z,{noMargin:0,invalid:1,message:2,messageText:3,legendText:4,legendId:5})}}const pe=ut;function ft(l){let e,t,a,i,s,n,r=[l[0]],o={};for(let u=0;u{e=R(R({},e),se(u)),t(0,i=O(e,a))},[i,s,n,r,o]}class ct extends W{constructor(e){super(),X(this,e,dt,ft,z,{})}}const mt=ct,_t=l=>({}),ke=l=>({});function Te(l){let e,t;const a=l[11].legendText,i=oe(a,l,l[10],ke),s=i||ht(l);return{c(){e=I("legend"),s&&s.c(),this.h()},l(n){e=P(n,"LEGEND",{});var r=V(e);s&&s.l(r),r.forEach(p),this.h()},h(){T(e,"bx--label",!0),T(e,"bx--visually-hidden",l[2])},m(n,r){L(n,e,r),s&&s.m(e,null),t=!0},p(n,r){i?i.p&&(!t||r&1024)&&re(i,a,n,n[10],t?fe(a,n[10],r,_t):ue(n[10]),ke):s&&s.p&&(!t||r&2)&&s.p(n,t?r:-1),(!t||r&4)&&T(e,"bx--visually-hidden",n[2])},i(n){t||(k(s,n),t=!0)},o(n){E(s,n),t=!1},d(n){n&&p(e),s&&s.d(n)}}}function ht(l){let e;return{c(){e=Y(l[1])},l(t){e=Z(t,l[1])},m(t,a){L(t,e,a)},p(t,a){a&2&&ce(e,t[1])},d(t){t&&p(e)}}}function bt(l){let e,t,a,i,s,n,r=(l[1]||l[8].legendText)&&Te(l);const o=l[11].default,u=oe(o,l,l[10],null);let d=[{id:l[5]},l[7]],h={};for(let c=0;c{r=null}),w()),u&&u.p&&(!i||m&1024)&&re(u,o,c,c[10],i?fe(o,c[10],m,null):ue(c[10]),null),(!i||m&1)&&(t.disabled=c[0]),(!i||m&16)&&T(t,"bx--radio-button-group--vertical",c[4]==="vertical"),(!i||m&8)&&T(t,"bx--radio-button-group--label-left",c[3]==="left"),(!i||m&8)&&T(t,"bx--radio-button-group--label-right",c[3]==="right"),K(e,h=ie(d,[(!i||m&32)&&{id:c[5]},m&128&&c[7]])),T(e,"bx--form-item",!0)},i(c){i||(k(r),k(u,c),i=!0)},o(c){E(r),E(u,c),i=!1},d(c){c&&p(e),r&&r.d(),u&&u.d(c),s=!1,ae(n)}}}function gt(l,e,t){const a=["selected","disabled","legendText","hideLegend","labelPosition","orientation","id"];let i=O(e,a),s,{$$slots:n={},$$scope:r}=e;const o=Ve(n);let{selected:u=void 0}=e,{disabled:d=!1}=e,{legendText:h=""}=e,{hideLegend:c=!1}=e,{labelPosition:m="right"}=e,{orientation:v="horizontal"}=e,{id:f=void 0}=e;const b=Ge(),_=Fe(u);le(l,_,g=>t(16,s=g)),Re("RadioButtonGroup",{selectedValue:_,add:({checked:g,value:me})=>{g&&_.set(me)},update:g=>{t(9,u=g)}}),je(()=>{_e(_,s=u,s)}),He(()=>{_e(_,s=u,s)}),_.subscribe(g=>{t(9,u=g),b("change",g)});function N(g){B.call(this,l,g)}function J(g){B.call(this,l,g)}function te(g){B.call(this,l,g)}function ne(g){B.call(this,l,g)}return l.$$set=g=>{e=R(R({},e),se(g)),t(7,i=O(e,a)),"selected"in g&&t(9,u=g.selected),"disabled"in g&&t(0,d=g.disabled),"legendText"in g&&t(1,h=g.legendText),"hideLegend"in g&&t(2,c=g.hideLegend),"labelPosition"in g&&t(3,m=g.labelPosition),"orientation"in g&&t(4,v=g.orientation),"id"in g&&t(5,f=g.id),"$$scope"in g&&t(10,r=g.$$scope)},[d,h,c,m,v,f,_,i,o,u,r,n,N,J,te,ne]}class vt extends W{constructor(e){super(),X(this,e,gt,bt,z,{selected:9,disabled:0,legendText:1,hideLegend:2,labelPosition:3,orientation:4,id:5})}}const pt=vt,Ae="huggingface",Me=()=>Ne({queryFn:()=>fetch("https://datasets-server.huggingface.co/valid").then(l=>l.json()),queryKey:[Ae,"listDatasets"],select:l=>l.valid}),kt=l=>Ne({queryFn:()=>fetch(`https://datasets-server.huggingface.co/splits?dataset=${l}`).then(e=>e.json()),queryKey:[Ae,"getSplits",l],select:e=>e.splits});function Tt(l){let e,t,a;function i(n){l[6](n)}let s={invalid:l[1],invalidText:l[2],warn:!l[3],warnText:"Dataset doesn't exist"};return l[0]!==void 0&&(s.value=l[0]),e=new de({props:s}),U.push(()=>$(e,"value",i)),{c(){F(e.$$.fragment)},l(n){A(e.$$.fragment,n)},m(n,r){M(e,n,r),a=!0},p(n,[r]){const o={};r&2&&(o.invalid=n[1]),r&4&&(o.invalidText=n[2]),r&8&&(o.warn=!n[3]),!t&&r&1&&(t=!0,o.value=n[0],ee(()=>t=!1)),e.$set(o)},i(n){a||(k(e.$$.fragment,n),a=!0)},o(n){E(e.$$.fragment,n),a=!1},d(n){C(e,n)}}}function Et(l,e,t){let a,i,{value:s}=e,{invalid:n}=e,{invalidText:r}=e;const o=Me();le(l,o,d=>t(5,i=d));function u(d){s=d,t(0,s)}return l.$$set=d=>{"value"in d&&t(0,s=d.value),"invalid"in d&&t(1,n=d.invalid),"invalidText"in d&&t(2,r=d.invalidText)},l.$$.update=()=>{var d;l.$$.dirty&33&&t(3,a=(d=i.data)==null?void 0:d.includes(s))},[s,n,r,a,o,i,u]}class Ee extends W{constructor(e){super(),X(this,e,Et,Tt,z,{value:0,invalid:1,invalidText:2})}}function St(l){let e,t,a;function i(n){l[11](n)}let s={invalid:l[1],invalidText:l[2],labelText:"Split",placeholder:"(optional)"};return l[0]!==void 0&&(s.value=l[0]),e=new de({props:s}),U.push(()=>$(e,"value",i)),{c(){F(e.$$.fragment)},l(n){A(e.$$.fragment,n)},m(n,r){M(e,n,r),a=!0},p(n,r){const o={};r&2&&(o.invalid=n[1]),r&4&&(o.invalidText=n[2]),!t&&r&1&&(t=!0,o.value=n[0],ee(()=>t=!1)),e.$set(o)},i(n){a||(k(e.$$.fragment,n),a=!0)},o(n){E(e.$$.fragment,n),a=!1},d(n){C(e,n)}}}function Dt(l){var a,i;let e,t;return e=new Qe({props:{value:l[0]||"",invalid:l[1],invalidText:l[2],warn:!l[3],warnText:"Dataset doesn't exist",titleText:"Split",placeholder:"(optional)",items:((i=(a=l[5])==null?void 0:a.data)==null?void 0:i.map(Se))||[]}}),e.$on("select",l[10]),{c(){F(e.$$.fragment)},l(s){A(e.$$.fragment,s)},m(s,n){M(e,s,n),t=!0},p(s,n){var o,u;const r={};n&1&&(r.value=s[0]||""),n&2&&(r.invalid=s[1]),n&4&&(r.invalidText=s[2]),n&8&&(r.warn=!s[3]),n&32&&(r.items=((u=(o=s[5])==null?void 0:o.data)==null?void 0:u.map(Se))||[]),e.$set(r)},i(s){t||(k(e.$$.fragment,s),t=!0)},o(s){E(e.$$.fragment,s),t=!1},d(s){C(e,s)}}}function It(l){let e,t,a,i;const s=[Dt,St],n=[];function r(o,u){var d;return(d=o[5])!=null&&d.data&&o[3]?0:1}return e=r(l),t=n[e]=s[e](l),{c(){t.c(),a=Q()},l(o){t.l(o),a=Q()},m(o,u){n[e].m(o,u),L(o,a,u),i=!0},p(o,[u]){let d=e;e=r(o),e===d?n[e].p(o,u):(y(),E(n[d],1,1,()=>{n[d]=null}),w(),t=n[e],t?t.p(o,u):(t=n[e]=s[e](o),t.c()),k(t,1),t.m(a.parentNode,a))},i(o){i||(k(t),i=!0)},o(o){E(t),i=!1},d(o){n[e].d(o),o&&p(a)}}}const Se=l=>({id:l.split,text:l.split});function Pt(l,e,t){let a,i,s,n,r,o=x,u=()=>(o(),o=qe(s,_=>t(5,r=_)),s);l.$$.on_destroy.push(()=>o());let{value:d}=e,{invalid:h}=e,{invalidText:c}=e,{rootValue:m}=e;const v=Me();le(l,v,_=>t(9,n=_));const f=_=>{var N;return t(0,d=(N=_.detail.selectedItem)==null?void 0:N.id)};function b(_){d=_,t(0,d)}return l.$$set=_=>{"value"in _&&t(0,d=_.value),"invalid"in _&&t(1,h=_.invalid),"invalidText"in _&&t(2,c=_.invalidText),"rootValue"in _&&t(7,m=_.rootValue)},l.$$.update=()=>{var _;l.$$.dirty&128&&t(8,a=m.dataset_name),l.$$.dirty&768&&t(3,i=(_=n.data)==null?void 0:_.includes(a)),l.$$.dirty&264&&u(t(4,s=i?kt(a):void 0))},[d,h,c,i,s,r,v,m,a,n,f,b]}class De extends W{constructor(e){super(),X(this,e,Pt,It,z,{value:0,invalid:1,invalidText:2,rootValue:7})}}function Lt(l){const e=l.slice(),t=e[7].data;return e[17]=t,e}function Ie(l,e,t){const a=l.slice();return a[18]=e[t],a}function Vt(l){let e,t,a,i,s,n,r,o,u,d;function h(f){l[11](f)}let c={labelText:"namespace",invalid:!l[0]};l[0]!==void 0&&(c.value=l[0]),t=new de({props:c}),U.push(()=>$(t,"value",h));function m(f){l[12](f)}let v={labelText:"name",invalid:!l[1]};return l[1]!==void 0&&(v.value=l[1]),o=new de({props:v}),U.push(()=>$(o,"value",m)),{c(){e=I("div"),F(t.$$.fragment),i=j(),s=I("span"),n=Y("/"),r=j(),F(o.$$.fragment),this.h()},l(f){e=P(f,"DIV",{class:!0});var b=V(e);A(t.$$.fragment,b),i=H(b),s=P(b,"SPAN",{class:!0});var _=V(s);n=Z(_,"/"),_.forEach(p),r=H(b),A(o.$$.fragment,b),b.forEach(p),this.h()},h(){G(s,"class","mx-4 mt-6 text-lg"),G(e,"class","flex flex-row content-start")},m(f,b){L(f,e,b),M(t,e,null),D(e,i),D(e,s),D(s,n),D(e,r),M(o,e,null),d=!0},p(f,b){const _={};b&1&&(_.invalid=!f[0]),!a&&b&1&&(a=!0,_.value=f[0],ee(()=>a=!1)),t.$set(_);const N={};b&2&&(N.invalid=!f[1]),!u&&b&2&&(u=!0,N.value=f[1],ee(()=>u=!1)),o.$set(N)},i(f){d||(k(t.$$.fragment,f),k(o.$$.fragment,f),d=!0)},o(f){E(t.$$.fragment,f),E(o.$$.fragment,f),d=!1},d(f){f&&p(e),C(t),C(o)}}}function qt(l){let e,t;return e=new mt({}),{c(){F(e.$$.fragment)},l(a){A(e.$$.fragment,a)},m(a,i){M(e,a,i),t=!0},p:x,i(a){t||(k(e.$$.fragment,a),t=!0)},o(a){E(e.$$.fragment,a),t=!1},d(a){C(e,a)}}}function Nt(l){let e,t;return e=new Be({props:{kind:"error",title:"Error",subtitle:l[6].error.message,hideCloseButton:!0}}),{c(){F(e.$$.fragment)},l(a){A(e.$$.fragment,a)},m(a,i){M(e,a,i),t=!0},p(a,i){const s={};i&64&&(s.subtitle=a[6].error.message),e.$set(s)},i(a){t||(k(e.$$.fragment,a),t=!0)},o(a){E(e.$$.fragment,a),t=!1},d(a){C(e,a)}}}function Bt(l){let e,t,a,i;function s(r){l[13](r)}let n={$$slots:{default:[Ft]},$$scope:{ctx:l}};return l[2]!==void 0&&(n.selected=l[2]),t=new pt({props:n}),U.push(()=>$(t,"selected",s)),{c(){e=I("div"),F(t.$$.fragment)},l(r){e=P(r,"DIV",{});var o=V(e);A(t.$$.fragment,o),o.forEach(p)},m(r,o){L(r,e,o),M(t,e,null),i=!0},p(r,o){const u={};o&2097216&&(u.$$scope={dirty:o,ctx:r}),!a&&o&4&&(a=!0,u.selected=r[2],ee(()=>a=!1)),t.$set(u)},i(r){i||(k(t.$$.fragment,r),i=!0)},o(r){E(t.$$.fragment,r),i=!1},d(r){r&&p(e),C(t)}}}function Pe(l){let e,t;return e=new lt({props:{labelText:l[18],value:l[18]}}),{c(){F(e.$$.fragment)},l(a){A(e.$$.fragment,a)},m(a,i){M(e,a,i),t=!0},p(a,i){const s={};i&64&&(s.labelText=a[18]),i&64&&(s.value=a[18]),e.$set(s)},i(a){t||(k(e.$$.fragment,a),t=!0)},o(a){E(e.$$.fragment,a),t=!1},d(a){C(e,a)}}}function Ft(l){let e,t,a=l[6].data.sources,i=[];for(let n=0;nE(i[n],1,1,()=>{i[n]=null});return{c(){for(let n=0;n$(e,"value",s)),U.push(()=>$(e,"validationErrors",n)),{c(){F(e.$$.fragment)},l(o){A(e.$$.fragment,o)},m(o,u){M(e,o,u),i=!0},p(o,u){const d={};u&128&&(d.schema=o[17]),u&4&&(d.customComponents=o[2]==="huggingface"?{"/dataset_name":Ee,"/split":De}:{}),!t&&u&16&&(t=!0,d.value=o[4],ee(()=>t=!1)),!a&&u&8&&(a=!0,d.validationErrors=o[3],ee(()=>a=!1)),e.$set(d)},i(o){i||(k(e.$$.fragment,o),i=!0)},o(o){E(e.$$.fragment,o),i=!1},d(o){C(e,o)}}}function Gt(l){let e,t,a,i,s,n,r;const o=[Bt,Nt,qt],u=[];function d(f,b){return f[6].isSuccess?0:f[6].isError?1:f[6].isLoading?2:-1}~(e=d(l))&&(t=u[e]=o[e](l));const h=[Ct,Mt,At],c=[];function m(f,b){return f[7].isSuccess?0:f[7].isError?1:f[7].isLoading?2:-1}function v(f,b){return b===0?Lt(f):f}return~(i=m(l))&&(s=c[i]=h[i](v(l,i))),{c(){t&&t.c(),a=j(),s&&s.c(),n=Q()},l(f){t&&t.l(f),a=H(f),s&&s.l(f),n=Q()},m(f,b){~e&&u[e].m(f,b),L(f,a,b),~i&&c[i].m(f,b),L(f,n,b),r=!0},p(f,b){let _=e;e=d(f),e===_?~e&&u[e].p(f,b):(t&&(y(),E(u[_],1,1,()=>{u[_]=null}),w()),~e?(t=u[e],t?t.p(f,b):(t=u[e]=o[e](f),t.c()),k(t,1),t.m(a.parentNode,a)):t=null);let N=i;i=m(f),i===N?~i&&c[i].p(v(f,i),b):(s&&(y(),E(c[N],1,1,()=>{c[N]=null}),w()),~i?(s=c[i],s?s.p(v(f,i),b):(s=c[i]=h[i](v(f,i)),s.c()),k(s,1),s.m(n.parentNode,n)):s=null)},i(f){r||(k(t),k(s),r=!0)},o(f){E(t),E(s),r=!1},d(f){~e&&u[e].d(f),f&&p(a),~i&&c[i].d(f),f&&p(n)}}}function Rt(l){let e;return{c(){e=Y("Add")},l(t){e=Z(t,"Add")},m(t,a){L(t,e,a)},d(t){t&&p(e)}}}function jt(l){var r;let e,t,a,i,s,n;return e=new pe({props:{legendText:"Name",$$slots:{default:[Vt]},$$scope:{ctx:l}}}),a=new pe({props:{legendText:"Data Loader",$$slots:{default:[Gt]},$$scope:{ctx:l}}}),s=new Ue({props:{disabled:((r=l[3])==null?void 0:r.length)>0||!l[1]||!l[0],$$slots:{default:[Rt]},$$scope:{ctx:l}}}),s.$on("click",l[10]),{c(){F(e.$$.fragment),t=j(),F(a.$$.fragment),i=j(),F(s.$$.fragment)},l(o){A(e.$$.fragment,o),t=H(o),A(a.$$.fragment,o),i=H(o),A(s.$$.fragment,o)},m(o,u){M(e,o,u),L(o,t,u),M(a,o,u),L(o,i,u),M(s,o,u),n=!0},p(o,u){var m;const d={};u&2097155&&(d.$$scope={dirty:u,ctx:o}),e.$set(d);const h={};u&2097372&&(h.$$scope={dirty:u,ctx:o}),a.$set(h);const c={};u&11&&(c.disabled=((m=o[3])==null?void 0:m.length)>0||!o[1]||!o[0]),u&2097152&&(c.$$scope={dirty:u,ctx:o}),s.$set(c)},i(o){n||(k(e.$$.fragment,o),k(a.$$.fragment,o),k(s.$$.fragment,o),n=!0)},o(o){E(e.$$.fragment,o),E(a.$$.fragment,o),E(s.$$.fragment,o),n=!1},d(o){C(e,o),o&&p(t),C(a,o),o&&p(i),C(s,o)}}}function Ht(l){let e,t,a,i,s,n,r;return n=new st({props:{class:"pt-8",$$slots:{default:[jt]},$$scope:{ctx:l}}}),{c(){e=I("div"),t=I("div"),a=I("h2"),i=Y("Add dataset"),s=j(),F(n.$$.fragment),this.h()},l(o){e=P(o,"DIV",{class:!0});var u=V(e);t=P(u,"DIV",{class:!0});var d=V(t);a=P(d,"H2",{});var h=V(a);i=Z(h,"Add dataset"),h.forEach(p),s=H(d),A(n.$$.fragment,d),d.forEach(p),u.forEach(p),this.h()},h(){G(t,"class","mx-auto flex max-w-xl flex-col"),G(e,"class","h-full w-full overflow-y-auto py-8")},m(o,u){L(o,e,u),D(e,t),D(t,a),D(a,i),D(t,s),M(n,t,null),r=!0},p(o,[u]){const d={};u&2097375&&(d.$$scope={dirty:u,ctx:o}),n.$set(d)},i(o){r||(k(n.$$.fragment,o),r=!0)},o(o){E(n.$$.fragment,o),r=!1},d(o){o&&p(e),C(n)}}}function Jt(l,e,t){let a,i,s,n,r=x,o=()=>(r(),r=qe(a,g=>t(7,n=g)),a);l.$$.on_destroy.push(()=>r());const u=We();le(l,u,g=>t(6,s=g));const d=Xe();le(l,d,g=>t(16,i=g));let h="local",c="",m="huggingface",v=[],f={};function b(){v.length||i.mutate([m,{namespace:h,dataset_name:c,config:f}],{onSuccess:g=>{ze(g.task_id,()=>{Ke(Ze(h,c))})}})}function _(g){h=g,t(0,h)}function N(g){c=g,t(1,c)}function J(g){m=g,t(2,m)}function te(g){f=g,t(4,f),t(0,h),t(1,c)}function ne(g){v=g,t(3,v)}return l.$$.update=()=>{l.$$.dirty&4&&o(t(5,a=Ye(m))),l.$$.dirty&3&&t(4,f.source_name=`${h}/${c}`,f)},[h,c,m,v,f,a,s,n,u,d,b,_,N,J,te,ne]}class Zt extends W{constructor(e){super(),X(this,e,Jt,Ht,z,{})}}export{Zt as component}; diff --git a/web/blueprint/build/_app/version.json b/web/blueprint/build/_app/version.json new file mode 100644 index 0000000000000000000000000000000000000000..ea7e4950fbb5c2bc0b5ee81e3ee5312530db7e87 --- /dev/null +++ b/web/blueprint/build/_app/version.json @@ -0,0 +1 @@ +{"version":"1687990131386"} \ No newline at end of file diff --git a/web/blueprint/build/concepts.html b/web/blueprint/build/concepts.html new file mode 100644 index 0000000000000000000000000000000000000000..0a882486c6ca6f8becd59b8587a7feb1bba2125d --- /dev/null +++ b/web/blueprint/build/concepts.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + +
    + +
    + + diff --git a/web/blueprint/build/datasets.html b/web/blueprint/build/datasets.html new file mode 100644 index 0000000000000000000000000000000000000000..0a882486c6ca6f8becd59b8587a7feb1bba2125d --- /dev/null +++ b/web/blueprint/build/datasets.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + +
    + +
    + + diff --git a/web/blueprint/build/datasets/new.html b/web/blueprint/build/datasets/new.html new file mode 100644 index 0000000000000000000000000000000000000000..f2b65e589a70ad4bb91210702647261df9b6e4d2 --- /dev/null +++ b/web/blueprint/build/datasets/new.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + +
    + +
    + + diff --git a/web/blueprint/build/favicon.png b/web/blueprint/build/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..863bc8215f1a741db3163809154cd139832c28b0 Binary files /dev/null and b/web/blueprint/build/favicon.png differ diff --git a/web/blueprint/build/index.html b/web/blueprint/build/index.html new file mode 100644 index 0000000000000000000000000000000000000000..0a882486c6ca6f8becd59b8587a7feb1bba2125d --- /dev/null +++ b/web/blueprint/build/index.html @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + +
    + +
    + +