From d41646e6b33d078a76e33e02263d00e6091ad1f9 Mon Sep 17 00:00:00 2001 From: Luthaf Date: Wed, 31 Jul 2024 18:01:43 +0000 Subject: [PATCH] deploy: eb01ac3f06484c32d714674c79c1c1dc131471cf --- .nojekyll | 0 index.html | 9 + latest/.buildinfo | 4 + latest/_images/Arpitan.png | Bin 0 -> 4059 bytes latest/_images/Catalan.png | Bin 0 -> 2031 bytes latest/_images/Lombardy.png | Bin 0 -> 4960 bytes latest/_images/Occitan.png | Bin 0 -> 5689 bytes latest/_images/benchmark.png | Bin 0 -> 108913 bytes latest/_sources/benchmarks.rst.txt | 28 + latest/_sources/c-api.rst.txt | 17 + latest/_sources/index.rst.txt | 264 +++++ latest/_sources/python-api.rst.txt | 11 + latest/_sphinx_design_static/design-tabs.js | 101 ++ .../sphinx-design.min.css | 1 + latest/_static/basic.css | 925 ++++++++++++++++++ latest/_static/debug.css | 69 ++ latest/_static/design-tabs.js | 101 ++ latest/_static/doctools.js | 156 +++ latest/_static/documentation_options.js | 13 + latest/_static/file.png | Bin 0 -> 286 bytes latest/_static/language_data.js | 199 ++++ latest/_static/minus.png | Bin 0 -> 90 bytes latest/_static/plus.png | Bin 0 -> 90 bytes latest/_static/pygments.css | 258 +++++ latest/_static/scripts/furo-extensions.js | 0 latest/_static/scripts/furo.js | 3 + latest/_static/scripts/furo.js.LICENSE.txt | 7 + latest/_static/scripts/furo.js.map | 1 + latest/_static/searchtools.js | 620 ++++++++++++ latest/_static/skeleton.css | 296 ++++++ latest/_static/sphinx-design.min.css | 1 + latest/_static/sphinx_highlight.js | 154 +++ latest/_static/styles/furo-extensions.css | 2 + latest/_static/styles/furo-extensions.css.map | 1 + latest/_static/styles/furo.css | 2 + latest/_static/styles/furo.css.map | 1 + latest/benchmarks.html | 317 ++++++ latest/c-api.html | 448 +++++++++ latest/genindex.html | 359 +++++++ latest/index.html | 563 +++++++++++ latest/objects.inv | 8 + latest/python-api.html | 388 ++++++++ latest/search.html | 294 ++++++ latest/searchindex.js | 1 + v0.1.0/.buildinfo | 4 + v0.1.0/_images/Arpitan.png | Bin 0 -> 4059 bytes v0.1.0/_images/Catalan.png | Bin 0 -> 2031 bytes v0.1.0/_images/Lombardy.png | Bin 0 -> 4960 bytes v0.1.0/_images/Occitan.png | Bin 0 -> 5689 bytes v0.1.0/_images/benchmark.png | Bin 0 -> 38581 bytes v0.1.0/_sources/benchmarks.rst.txt | 26 + v0.1.0/_sources/c-api.rst.txt | 17 + v0.1.0/_sources/index.rst.txt | 252 +++++ v0.1.0/_sources/python-api.rst.txt | 11 + v0.1.0/_sphinx_design_static/design-tabs.js | 101 ++ .../sphinx-design.min.css | 1 + v0.1.0/_static/basic.css | 925 ++++++++++++++++++ v0.1.0/_static/debug.css | 69 ++ v0.1.0/_static/design-tabs.js | 101 ++ v0.1.0/_static/doctools.js | 156 +++ v0.1.0/_static/documentation_options.js | 13 + v0.1.0/_static/file.png | Bin 0 -> 286 bytes v0.1.0/_static/language_data.js | 199 ++++ v0.1.0/_static/minus.png | Bin 0 -> 90 bytes v0.1.0/_static/plus.png | Bin 0 -> 90 bytes v0.1.0/_static/pygments.css | 258 +++++ v0.1.0/_static/scripts/furo-extensions.js | 0 v0.1.0/_static/scripts/furo.js | 3 + v0.1.0/_static/scripts/furo.js.LICENSE.txt | 7 + v0.1.0/_static/scripts/furo.js.map | 1 + v0.1.0/_static/searchtools.js | 619 ++++++++++++ v0.1.0/_static/skeleton.css | 296 ++++++ v0.1.0/_static/sphinx-design.min.css | 1 + v0.1.0/_static/sphinx_highlight.js | 154 +++ v0.1.0/_static/styles/furo-extensions.css | 2 + v0.1.0/_static/styles/furo-extensions.css.map | 1 + v0.1.0/_static/styles/furo.css | 2 + v0.1.0/_static/styles/furo.css.map | 1 + v0.1.0/benchmarks.html | 327 +++++++ v0.1.0/c-api.html | 461 +++++++++ v0.1.0/genindex.html | 372 +++++++ v0.1.0/index.html | 575 +++++++++++ v0.1.0/objects.inv | 8 + v0.1.0/python-api.html | 401 ++++++++ v0.1.0/search.html | 307 ++++++ v0.1.0/searchindex.js | 1 + 86 files changed, 11294 insertions(+) create mode 100644 .nojekyll create mode 100644 index.html create mode 100644 latest/.buildinfo create mode 100644 latest/_images/Arpitan.png create mode 100644 latest/_images/Catalan.png create mode 100644 latest/_images/Lombardy.png create mode 100644 latest/_images/Occitan.png create mode 100644 latest/_images/benchmark.png create mode 100644 latest/_sources/benchmarks.rst.txt create mode 100644 latest/_sources/c-api.rst.txt create mode 100644 latest/_sources/index.rst.txt create mode 100644 latest/_sources/python-api.rst.txt create mode 100644 latest/_sphinx_design_static/design-tabs.js create mode 100644 latest/_sphinx_design_static/sphinx-design.min.css create mode 100644 latest/_static/basic.css create mode 100644 latest/_static/debug.css create mode 100644 latest/_static/design-tabs.js create mode 100644 latest/_static/doctools.js create mode 100644 latest/_static/documentation_options.js create mode 100644 latest/_static/file.png create mode 100644 latest/_static/language_data.js create mode 100644 latest/_static/minus.png create mode 100644 latest/_static/plus.png create mode 100644 latest/_static/pygments.css create mode 100644 latest/_static/scripts/furo-extensions.js create mode 100644 latest/_static/scripts/furo.js create mode 100644 latest/_static/scripts/furo.js.LICENSE.txt create mode 100644 latest/_static/scripts/furo.js.map create mode 100644 latest/_static/searchtools.js create mode 100644 latest/_static/skeleton.css create mode 100644 latest/_static/sphinx-design.min.css create mode 100644 latest/_static/sphinx_highlight.js create mode 100644 latest/_static/styles/furo-extensions.css create mode 100644 latest/_static/styles/furo-extensions.css.map create mode 100644 latest/_static/styles/furo.css create mode 100644 latest/_static/styles/furo.css.map create mode 100644 latest/benchmarks.html create mode 100644 latest/c-api.html create mode 100644 latest/genindex.html create mode 100644 latest/index.html create mode 100644 latest/objects.inv create mode 100644 latest/python-api.html create mode 100644 latest/search.html create mode 100644 latest/searchindex.js create mode 100644 v0.1.0/.buildinfo create mode 100644 v0.1.0/_images/Arpitan.png create mode 100644 v0.1.0/_images/Catalan.png create mode 100644 v0.1.0/_images/Lombardy.png create mode 100644 v0.1.0/_images/Occitan.png create mode 100644 v0.1.0/_images/benchmark.png create mode 100644 v0.1.0/_sources/benchmarks.rst.txt create mode 100644 v0.1.0/_sources/c-api.rst.txt create mode 100644 v0.1.0/_sources/index.rst.txt create mode 100644 v0.1.0/_sources/python-api.rst.txt create mode 100644 v0.1.0/_sphinx_design_static/design-tabs.js create mode 100644 v0.1.0/_sphinx_design_static/sphinx-design.min.css create mode 100644 v0.1.0/_static/basic.css create mode 100644 v0.1.0/_static/debug.css create mode 100644 v0.1.0/_static/design-tabs.js create mode 100644 v0.1.0/_static/doctools.js create mode 100644 v0.1.0/_static/documentation_options.js create mode 100644 v0.1.0/_static/file.png create mode 100644 v0.1.0/_static/language_data.js create mode 100644 v0.1.0/_static/minus.png create mode 100644 v0.1.0/_static/plus.png create mode 100644 v0.1.0/_static/pygments.css create mode 100644 v0.1.0/_static/scripts/furo-extensions.js create mode 100644 v0.1.0/_static/scripts/furo.js create mode 100644 v0.1.0/_static/scripts/furo.js.LICENSE.txt create mode 100644 v0.1.0/_static/scripts/furo.js.map create mode 100644 v0.1.0/_static/searchtools.js create mode 100644 v0.1.0/_static/skeleton.css create mode 100644 v0.1.0/_static/sphinx-design.min.css create mode 100644 v0.1.0/_static/sphinx_highlight.js create mode 100644 v0.1.0/_static/styles/furo-extensions.css create mode 100644 v0.1.0/_static/styles/furo-extensions.css.map create mode 100644 v0.1.0/_static/styles/furo.css create mode 100644 v0.1.0/_static/styles/furo.css.map create mode 100644 v0.1.0/benchmarks.html create mode 100644 v0.1.0/c-api.html create mode 100644 v0.1.0/genindex.html create mode 100644 v0.1.0/index.html create mode 100644 v0.1.0/objects.inv create mode 100644 v0.1.0/python-api.html create mode 100644 v0.1.0/search.html create mode 100644 v0.1.0/searchindex.js diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/index.html b/index.html new file mode 100644 index 0000000..e22946d --- /dev/null +++ b/index.html @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/latest/.buildinfo b/latest/.buildinfo new file mode 100644 index 0000000..b9c5684 --- /dev/null +++ b/latest/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 8c4643be54f30dfe8d5c51462bf6dd9f +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/latest/_images/Arpitan.png b/latest/_images/Arpitan.png new file mode 100644 index 0000000000000000000000000000000000000000..525eda7e7e5b5a3590a07a9e270014d21f5ba805 GIT binary patch literal 4059 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 literal 0 HcmV?d00001 diff --git a/latest/_images/Lombardy.png b/latest/_images/Lombardy.png new file mode 100644 index 0000000000000000000000000000000000000000..7340d1a4a790b7facf658b5599bd07c5e12b619b GIT binary patch literal 4960 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 literal 0 HcmV?d00001 diff --git a/latest/_images/Occitan.png b/latest/_images/Occitan.png new file mode 100644 index 0000000000000000000000000000000000000000..e66a1c7b5df535c2561577bd69d281224cfc29f7 GIT binary patch literal 5689 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 Mcqv~kYZmtZ0FAsu9{>OV literal 0 HcmV?d00001 diff --git a/latest/_images/benchmark.png b/latest/_images/benchmark.png new file mode 100644 index 0000000000000000000000000000000000000000..c6f555dc6dffef5c86cb635068b6831f45d02cce GIT binary patch literal 108913 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 z

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. + +.. _bench-script: https://github.com/Luthaf/vesin/blob/main/benchmarks/benchmark.py + +.. figure:: benchmark.png + :align: center + + Speed comparison between multiple neighbor list implementations: vesin, `ase + `_, `matscipy + `_, `pymatgen + `_, + `torch_nl `_, and `NNPOps + `_. + + Missing points indicate that a specific code could not run the calculation + (for example, NNPOps requires the cell to be twice the cutoff in size, and + can't run with large cutoffs and small cells). diff --git a/latest/_sources/c-api.rst.txt b/latest/_sources/c-api.rst.txt new file mode 100644 index 0000000..82b044f --- /dev/null +++ b/latest/_sources/c-api.rst.txt @@ -0,0 +1,17 @@ +.. _c-api: + +C API reference +=============== + +Vesin's C API is defined in the ``vesin.h`` header. The main function is +:c:func:`vesin_neighbors`, which runs a neighbors list calculation. + +.. doxygenfunction:: vesin_neighbors + +.. doxygenfunction:: vesin_free + +.. doxygenstruct:: VesinNeighborList + +.. doxygenstruct:: VesinOptions + +.. doxygenenum:: VesinDevice diff --git a/latest/_sources/index.rst.txt b/latest/_sources/index.rst.txt new file mode 100644 index 0000000..ed9d67a --- /dev/null +++ b/latest/_sources/index.rst.txt @@ -0,0 +1,264 @@ +Vesin: we are all neighbors +=========================== + +.. |occ| image:: /static/images/Occitan.png + :width: 18px + +.. |arp| image:: /static/images/Arpitan.png + :width: 18px + +.. |lomb| image:: /static/images/Lombardy.png + :width: 18px + +.. |cat| image:: /static/images/Catalan.png + :width: 18px + +.. list-table:: + :align: center + :widths: auto + :header-rows: 1 + + - * English 🇺🇸⁠/⁠🇬🇧 + * Occitan |occ| + * French 🇫🇷 + * Arpitan |arp| + * Gallo‑Italic |lomb| + * Catalan |cat| + * Spanish 🇪🇸 + * Italian 🇮🇹 + - * neighbo(u)r + * vesin + * voisin + * vesin + * visin + * veí + * vecino + * vicino + + +``vesin`` is a lightweight neighbor list calculator for molecular systems and +three-dimensional graphs. It is written in C++ and can be used as a standalone +library from C or Python. ``vesin`` is designed to be :ref:`fast ` +and easy to use. + +Installation +------------ + +.. tab-set:: + + .. tab-item:: Python + :sync: python + + You can install the code with ``pip``: + + .. code-block:: bash + + pip install vesin + + .. tab-item:: C/C++ (CMake) + :sync: cxx + + If you use CMake as your build system, the simplest thing to do is to + add https://github.com/Luthaf/vesin to your project. + + .. code-block:: cmake + + # assuming the code is in the `vesin/` directory (for example using + # git submodule) + add_subdirectory(vesin) + + target_link_libraries(your-target vesin) + + Alternatively, you can use CMake's `FetchContent + `_ module + to automatically download the code: + + .. code-block:: cmake + + include(FetchContent) + FetchContent_Declare( + vesin + GIT_REPOSITORY https://github.com/Luthaf/vesin.git + ) + + FetchContent_MakeAvailable(vesin) + + target_link_libraries(your-target vesin) + + .. tab-item:: C/C++ (single file build) + + We support merging all files in the vesin library to a single one that + can then be included in your own project and built with the same build + system as the rest of your code. + + You can generate this single file to build with the following commands: + + .. code-block:: bash + + git clone https://github.com/Luthaf/vesin.git + cd vesin + python create-single-cpp.py + + Then you'll need to copy both ``include/vesin.h`` and + ``vesin-single-build.cpp`` in your project and configure your build + system accordingly. + + + .. tab-item:: C/C++ (global installation) + + You can build and install vesin in some global location (referred to as + ``$PREFIX`` below), and then use the right compiler flags to give this + location to your compiler. In this case, compilation of ``vesin`` and + your code happen separately. + + .. code-block:: bash + + git clone https://github.com/Luthaf/vesin.git + cd vesin + mkdir build && cd build + cmake -DCMAKE_INSTALL_PREFIX=$PREFIX .. + cmake --install . + + You can then compile your code, adding ``$PREFIX/include`` to the + compiler include path, ``$PREFIX/lib`` to the linker library path; and + linking to vesin (typically with ``-lvesin``). If you are building vesin + as a shared library, you'll also need to define ``VESIN_SHARED`` as a + preprocessor constant (``-DVESIN_SHARED`` when compiling the code). + + Some relevant cmake options you can customize: + + +------------------------------+-----------------------------------------------+----------------+ + | Option | Description | Default | + +==============================+===============================================+================+ + | ``CMAKE_BUILD_TYPE`` | Type of build: Debug or Release | Release | + +------------------------------+-----------------------------------------------+----------------+ + | ``CMAKE_INSTALL_PREFIX`` | Prefix where the library will be installed | ``/usr/local`` | + +------------------------------+-----------------------------------------------+----------------+ + | ``BUILD_SHARED_LIBS`` | Default to building and installing a shared | OFF | + | | library instead of a static one | | + +------------------------------+-----------------------------------------------+----------------+ + + +Usage example +------------- + +.. tab-set:: + + .. tab-item:: Python + :sync: python + + .. py:currentmodule:: vesin + + There are two ways to use vesin from Python, you can use the + :py:class:`NeighborList` class: + + .. code-block:: Python + + import numpy as np + from vesin import NeighborList + + # positions can be anything compatible with numpy's ndarray + positions = [ + (0, 0, 0), + (0, 1.3, 1.3), + ] + box = 3.2 * np.eye(3) + + calculator = NeighborList(cutoff=4.2, full_list=True) + i, j, S, d = calculator.compute( + points=points, + box=box, + periodic=True, + quantities="ijSd" + ) + + Alternatively, you can use the :py:func:`ase_neighbor_list` function, + which mimics the API of :py:func:`ase.neighborlist.neighbor_list`: + + .. code-block:: Python + + import ase + from vesin import ase_neighbor_list + + atoms = ase.Atoms(...) + + i, j, S, d = ase_neighbor_list("ijSd", atoms, cutoff=4.2) + + + .. tab-item:: C and C++ + :sync: cxx + + .. code-block:: c++ + + #include + #include + #include + + #include + + int main() { + // points can be any pointer to `double[3]` + double points[][3] = { + {0, 0, 0}, + {0, 1.3, 1.3}, + }; + size_t n_points = 2; + + // box can be any `double[3][3]` array + double box[3][3] = { + {3.2, 0.0, 0.0}, + {0.0, 3.2, 0.0}, + {0.0, 0.0, 3.2}, + }; + bool periodic = true; + + // calculation setup + VesinOptions options; + options.cutoff = 4.2; + options.full = true; + + // decide what quantities should be computed + options.return_shifts = true; + options.return_distances = true; + options.return_vectors = false; + + VesinNeighborList neighbors; + memset(&neighbors, 0, sizeof(VesinNeighborList)); + + const char* error_message = NULL; + int status = vesin_neighbors( + points, n_points, box, periodic, + VesinCPU, options, + &neighbors, + &error_message, + ); + + if (status != EXIT_SUCCESS) { + fprintf(stderr, "error: %s\n", error_message); + return 1; + } + + // use neighbors as needed + printf("we have %d pairs\n", neighbors.length); + + vesin_free(&neighbors); + + return 0; + } + + +API Reference +------------- + +.. toctree:: + :maxdepth: 1 + + python-api + c-api + + +.. toctree:: + :maxdepth: 1 + :hidden: + + benchmarks diff --git a/latest/_sources/python-api.rst.txt b/latest/_sources/python-api.rst.txt new file mode 100644 index 0000000..9916641 --- /dev/null +++ b/latest/_sources/python-api.rst.txt @@ -0,0 +1,11 @@ +.. _python-api: + +Python API reference +==================== + +.. currentmodule:: vesin + +.. autoclass:: NeighborList + :members: + +.. autofunction:: ase_neighbor_list diff --git a/latest/_sphinx_design_static/design-tabs.js b/latest/_sphinx_design_static/design-tabs.js new file mode 100644 index 0000000..b25bd6a --- /dev/null +++ b/latest/_sphinx_design_static/design-tabs.js @@ -0,0 +1,101 @@ +// @ts-check + +// Extra JS capability for selected tabs to be synced +// The selection is stored in local storage so that it persists across page loads. + +/** + * @type {Record} + */ +let sd_id_to_elements = {}; +const storageKeyPrefix = "sphinx-design-tab-id-"; + +/** + * Create a key for a tab element. + * @param {HTMLElement} el - The tab element. + * @returns {[string, string, string] | null} - The key. + * + */ +function create_key(el) { + let syncId = el.getAttribute("data-sync-id"); + let syncGroup = el.getAttribute("data-sync-group"); + if (!syncId || !syncGroup) return null; + return [syncGroup, syncId, syncGroup + "--" + syncId]; +} + +/** + * Initialize the tab selection. + * + */ +function ready() { + // Find all tabs with sync data + + /** @type {string[]} */ + let groups = []; + + document.querySelectorAll(".sd-tab-label").forEach((label) => { + if (label instanceof HTMLElement) { + let data = create_key(label); + if (data) { + let [group, id, key] = data; + + // add click event listener + // @ts-ignore + label.onclick = onSDLabelClick; + + // store map of key to elements + if (!sd_id_to_elements[key]) { + sd_id_to_elements[key] = []; + } + sd_id_to_elements[key].push(label); + + if (groups.indexOf(group) === -1) { + groups.push(group); + // Check if a specific tab has been selected via URL parameter + const tabParam = new URLSearchParams(window.location.search).get( + group + ); + if (tabParam) { + console.log( + "sphinx-design: Selecting tab id for group '" + + group + + "' from URL parameter: " + + tabParam + ); + window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); + } + } + + // Check is a specific tab has been selected previously + let previousId = window.sessionStorage.getItem( + storageKeyPrefix + group + ); + if (previousId === id) { + // console.log( + // "sphinx-design: Selecting tab from session storage: " + id + // ); + // @ts-ignore + label.previousElementSibling.checked = true; + } + } + } + }); +} + +/** + * Activate other tabs with the same sync id. + * + * @this {HTMLElement} - The element that was clicked. + */ +function onSDLabelClick() { + let data = create_key(this); + if (!data) return; + let [group, id, key] = data; + for (const label of sd_id_to_elements[key]) { + if (label === this) continue; + // @ts-ignore + label.previousElementSibling.checked = true; + } + window.sessionStorage.setItem(storageKeyPrefix + group, id); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/latest/_sphinx_design_static/sphinx-design.min.css b/latest/_sphinx_design_static/sphinx-design.min.css new file mode 100644 index 0000000..a325746 --- /dev/null +++ b/latest/_sphinx_design_static/sphinx-design.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative;font-size:var(--sd-fontsize-dropdown)}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary.sd-summary-title{padding:.5em 1em;font-size:var(--sd-fontsize-dropdown-title);font-weight:var(--sd-fontweight-dropdown-title);user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;list-style:none;display:inline-flex;justify-content:space-between}details.sd-dropdown summary.sd-summary-title::-webkit-details-marker{display:none}details.sd-dropdown summary.sd-summary-title:focus{outline:none}details.sd-dropdown summary.sd-summary-title .sd-summary-icon{margin-right:.6em;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary.sd-summary-title .sd-summary-text{flex-grow:1;line-height:1.5;padding-right:.5rem}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker{pointer-events:none;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker svg{opacity:.6}details.sd-dropdown summary.sd-summary-title:hover .sd-summary-state-marker svg{opacity:1;transform:scale(1.1)}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown .sd-summary-chevron-right{transition:.25s}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-right{transform:rotate(90deg)}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-down{transform:rotate(180deg)}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-bg: rgba(0, 113, 188, 0.2);--sd-color-secondary-bg: rgba(108, 117, 125, 0.2);--sd-color-success-bg: rgba(40, 167, 69, 0.2);--sd-color-info-bg: rgba(23, 162, 184, 0.2);--sd-color-warning-bg: rgba(240, 179, 126, 0.2);--sd-color-danger-bg: rgba(220, 53, 69, 0.2);--sd-color-light-bg: rgba(248, 249, 250, 0.2);--sd-color-muted-bg: rgba(108, 117, 125, 0.2);--sd-color-dark-bg: rgba(33, 37, 41, 0.2);--sd-color-black-bg: rgba(0, 0, 0, 0.2);--sd-color-white-bg: rgba(255, 255, 255, 0.2);--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem;--sd-fontsize-dropdown: inherit;--sd-fontsize-dropdown-title: 1rem;--sd-fontweight-dropdown-title: 700} diff --git a/latest/_static/basic.css b/latest/_static/basic.css new file mode 100644 index 0000000..f316efc --- /dev/null +++ b/latest/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/latest/_static/debug.css b/latest/_static/debug.css new file mode 100644 index 0000000..74d4aec --- /dev/null +++ b/latest/_static/debug.css @@ -0,0 +1,69 @@ +/* + This CSS file should be overridden by the theme authors. It's + meant for debugging and developing the skeleton that this theme provides. +*/ +body { + font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; + background: lavender; +} +.sb-announcement { + background: rgb(131, 131, 131); +} +.sb-announcement__inner { + background: black; + color: white; +} +.sb-header { + background: lightskyblue; +} +.sb-header__inner { + background: royalblue; + color: white; +} +.sb-header-secondary { + background: lightcyan; +} +.sb-header-secondary__inner { + background: cornflowerblue; + color: white; +} +.sb-sidebar-primary { + background: lightgreen; +} +.sb-main { + background: blanchedalmond; +} +.sb-main__inner { + background: antiquewhite; +} +.sb-header-article { + background: lightsteelblue; +} +.sb-article-container { + background: snow; +} +.sb-article-main { + background: white; +} +.sb-footer-article { + background: lightpink; +} +.sb-sidebar-secondary { + background: lightgoldenrodyellow; +} +.sb-footer-content { + background: plum; +} +.sb-footer-content__inner { + background: palevioletred; +} +.sb-footer { + background: pink; +} +.sb-footer__inner { + background: salmon; +} +.sb-article { + background: white; +} diff --git a/latest/_static/design-tabs.js b/latest/_static/design-tabs.js new file mode 100644 index 0000000..b25bd6a --- /dev/null +++ b/latest/_static/design-tabs.js @@ -0,0 +1,101 @@ +// @ts-check + +// Extra JS capability for selected tabs to be synced +// The selection is stored in local storage so that it persists across page loads. + +/** + * @type {Record} + */ +let sd_id_to_elements = {}; +const storageKeyPrefix = "sphinx-design-tab-id-"; + +/** + * Create a key for a tab element. + * @param {HTMLElement} el - The tab element. + * @returns {[string, string, string] | null} - The key. + * + */ +function create_key(el) { + let syncId = el.getAttribute("data-sync-id"); + let syncGroup = el.getAttribute("data-sync-group"); + if (!syncId || !syncGroup) return null; + return [syncGroup, syncId, syncGroup + "--" + syncId]; +} + +/** + * Initialize the tab selection. + * + */ +function ready() { + // Find all tabs with sync data + + /** @type {string[]} */ + let groups = []; + + document.querySelectorAll(".sd-tab-label").forEach((label) => { + if (label instanceof HTMLElement) { + let data = create_key(label); + if (data) { + let [group, id, key] = data; + + // add click event listener + // @ts-ignore + label.onclick = onSDLabelClick; + + // store map of key to elements + if (!sd_id_to_elements[key]) { + sd_id_to_elements[key] = []; + } + sd_id_to_elements[key].push(label); + + if (groups.indexOf(group) === -1) { + groups.push(group); + // Check if a specific tab has been selected via URL parameter + const tabParam = new URLSearchParams(window.location.search).get( + group + ); + if (tabParam) { + console.log( + "sphinx-design: Selecting tab id for group '" + + group + + "' from URL parameter: " + + tabParam + ); + window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); + } + } + + // Check is a specific tab has been selected previously + let previousId = window.sessionStorage.getItem( + storageKeyPrefix + group + ); + if (previousId === id) { + // console.log( + // "sphinx-design: Selecting tab from session storage: " + id + // ); + // @ts-ignore + label.previousElementSibling.checked = true; + } + } + } + }); +} + +/** + * Activate other tabs with the same sync id. + * + * @this {HTMLElement} - The element that was clicked. + */ +function onSDLabelClick() { + let data = create_key(this); + if (!data) return; + let [group, id, key] = data; + for (const label of sd_id_to_elements[key]) { + if (label === this) continue; + // @ts-ignore + label.previousElementSibling.checked = true; + } + window.sessionStorage.setItem(storageKeyPrefix + group, id); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/latest/_static/doctools.js b/latest/_static/doctools.js new file mode 100644 index 0000000..4d67807 --- /dev/null +++ b/latest/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/latest/_static/documentation_options.js b/latest/_static/documentation_options.js new file mode 100644 index 0000000..7e4c114 --- /dev/null +++ b/latest/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/latest/_static/file.png b/latest/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/latest/_static/language_data.js b/latest/_static/language_data.js new file mode 100644 index 0000000..367b8ed --- /dev/null +++ b/latest/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, if available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/latest/_static/minus.png b/latest/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/latest/_static/plus.png b/latest/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/latest/_static/pygments.css b/latest/_static/pygments.css new file mode 100644 index 0000000..02b4b12 --- /dev/null +++ b/latest/_static/pygments.css @@ -0,0 +1,258 @@ +.highlight pre { line-height: 125%; } +.highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #204a87; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #ce5c00; font-weight: bold } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .ges { color: #000000; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #000000; font-style: italic } /* Generic.Output */ +.highlight .gp { color: #8f5902 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #204a87 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */ +.highlight .pm { color: #000000; font-weight: bold } /* Punctuation.Marker */ +.highlight .w { color: #f8f8f8 } /* Text.Whitespace */ +.highlight .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */ +.highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */ +.highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */ +.highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */ +.highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */ +@media not print { +body[data-theme="dark"] .highlight pre { line-height: 125%; } +body[data-theme="dark"] .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight .hll { background-color: #404040 } +body[data-theme="dark"] .highlight { background: #202020; color: #d0d0d0 } +body[data-theme="dark"] .highlight .c { color: #ababab; font-style: italic } /* Comment */ +body[data-theme="dark"] .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +body[data-theme="dark"] .highlight .esc { color: #d0d0d0 } /* Escape */ +body[data-theme="dark"] .highlight .g { color: #d0d0d0 } /* Generic */ +body[data-theme="dark"] .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */ +body[data-theme="dark"] .highlight .l { color: #d0d0d0 } /* Literal */ +body[data-theme="dark"] .highlight .n { color: #d0d0d0 } /* Name */ +body[data-theme="dark"] .highlight .o { color: #d0d0d0 } /* Operator */ +body[data-theme="dark"] .highlight .x { color: #d0d0d0 } /* Other */ +body[data-theme="dark"] .highlight .p { color: #d0d0d0 } /* Punctuation */ +body[data-theme="dark"] .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */ +body[data-theme="dark"] .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */ +body[data-theme="dark"] .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */ +body[data-theme="dark"] .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */ +body[data-theme="dark"] .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */ +body[data-theme="dark"] .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body[data-theme="dark"] .highlight .gd { color: #ff3a3a } /* Generic.Deleted */ +body[data-theme="dark"] .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +body[data-theme="dark"] .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body[data-theme="dark"] .highlight .gr { color: #ff3a3a } /* Generic.Error */ +body[data-theme="dark"] .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +body[data-theme="dark"] .highlight .gi { color: #589819 } /* Generic.Inserted */ +body[data-theme="dark"] .highlight .go { color: #cccccc } /* Generic.Output */ +body[data-theme="dark"] .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +body[data-theme="dark"] .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */ +body[data-theme="dark"] .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +body[data-theme="dark"] .highlight .gt { color: #ff3a3a } /* Generic.Traceback */ +body[data-theme="dark"] .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */ +body[data-theme="dark"] .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */ +body[data-theme="dark"] .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */ +body[data-theme="dark"] .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */ +body[data-theme="dark"] .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */ +body[data-theme="dark"] .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */ +body[data-theme="dark"] .highlight .ld { color: #d0d0d0 } /* Literal.Date */ +body[data-theme="dark"] .highlight .m { color: #51b2fd } /* Literal.Number */ +body[data-theme="dark"] .highlight .s { color: #ed9d13 } /* Literal.String */ +body[data-theme="dark"] .highlight .na { color: #bbbbbb } /* Name.Attribute */ +body[data-theme="dark"] .highlight .nb { color: #2fbccd } /* Name.Builtin */ +body[data-theme="dark"] .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */ +body[data-theme="dark"] .highlight .no { color: #40ffff } /* Name.Constant */ +body[data-theme="dark"] .highlight .nd { color: #ffa500 } /* Name.Decorator */ +body[data-theme="dark"] .highlight .ni { color: #d0d0d0 } /* Name.Entity */ +body[data-theme="dark"] .highlight .ne { color: #bbbbbb } /* Name.Exception */ +body[data-theme="dark"] .highlight .nf { color: #71adff } /* Name.Function */ +body[data-theme="dark"] .highlight .nl { color: #d0d0d0 } /* Name.Label */ +body[data-theme="dark"] .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */ +body[data-theme="dark"] .highlight .nx { color: #d0d0d0 } /* Name.Other */ +body[data-theme="dark"] .highlight .py { color: #d0d0d0 } /* Name.Property */ +body[data-theme="dark"] .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */ +body[data-theme="dark"] .highlight .nv { color: #40ffff } /* Name.Variable */ +body[data-theme="dark"] .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */ +body[data-theme="dark"] .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */ +body[data-theme="dark"] .highlight .w { color: #666666 } /* Text.Whitespace */ +body[data-theme="dark"] .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */ +body[data-theme="dark"] .highlight .mf { color: #51b2fd } /* Literal.Number.Float */ +body[data-theme="dark"] .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */ +body[data-theme="dark"] .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */ +body[data-theme="dark"] .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */ +body[data-theme="dark"] .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */ +body[data-theme="dark"] .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */ +body[data-theme="dark"] .highlight .sc { color: #ed9d13 } /* Literal.String.Char */ +body[data-theme="dark"] .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */ +body[data-theme="dark"] .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */ +body[data-theme="dark"] .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */ +body[data-theme="dark"] .highlight .se { color: #ed9d13 } /* Literal.String.Escape */ +body[data-theme="dark"] .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */ +body[data-theme="dark"] .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */ +body[data-theme="dark"] .highlight .sx { color: #ffa500 } /* Literal.String.Other */ +body[data-theme="dark"] .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */ +body[data-theme="dark"] .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */ +body[data-theme="dark"] .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */ +body[data-theme="dark"] .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */ +body[data-theme="dark"] .highlight .fm { color: #71adff } /* Name.Function.Magic */ +body[data-theme="dark"] .highlight .vc { color: #40ffff } /* Name.Variable.Class */ +body[data-theme="dark"] .highlight .vg { color: #40ffff } /* Name.Variable.Global */ +body[data-theme="dark"] .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +body[data-theme="dark"] .highlight .vm { color: #40ffff } /* Name.Variable.Magic */ +body[data-theme="dark"] .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */ +@media (prefers-color-scheme: dark) { +body:not([data-theme="light"]) .highlight pre { line-height: 125%; } +body:not([data-theme="light"]) .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight .hll { background-color: #404040 } +body:not([data-theme="light"]) .highlight { background: #202020; color: #d0d0d0 } +body:not([data-theme="light"]) .highlight .c { color: #ababab; font-style: italic } /* Comment */ +body:not([data-theme="light"]) .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +body:not([data-theme="light"]) .highlight .esc { color: #d0d0d0 } /* Escape */ +body:not([data-theme="light"]) .highlight .g { color: #d0d0d0 } /* Generic */ +body:not([data-theme="light"]) .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */ +body:not([data-theme="light"]) .highlight .l { color: #d0d0d0 } /* Literal */ +body:not([data-theme="light"]) .highlight .n { color: #d0d0d0 } /* Name */ +body:not([data-theme="light"]) .highlight .o { color: #d0d0d0 } /* Operator */ +body:not([data-theme="light"]) .highlight .x { color: #d0d0d0 } /* Other */ +body:not([data-theme="light"]) .highlight .p { color: #d0d0d0 } /* Punctuation */ +body:not([data-theme="light"]) .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */ +body:not([data-theme="light"]) .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */ +body:not([data-theme="light"]) .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */ +body:not([data-theme="light"]) .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */ +body:not([data-theme="light"]) .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */ +body:not([data-theme="light"]) .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body:not([data-theme="light"]) .highlight .gd { color: #ff3a3a } /* Generic.Deleted */ +body:not([data-theme="light"]) .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +body:not([data-theme="light"]) .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body:not([data-theme="light"]) .highlight .gr { color: #ff3a3a } /* Generic.Error */ +body:not([data-theme="light"]) .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +body:not([data-theme="light"]) .highlight .gi { color: #589819 } /* Generic.Inserted */ +body:not([data-theme="light"]) .highlight .go { color: #cccccc } /* Generic.Output */ +body:not([data-theme="light"]) .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +body:not([data-theme="light"]) .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */ +body:not([data-theme="light"]) .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +body:not([data-theme="light"]) .highlight .gt { color: #ff3a3a } /* Generic.Traceback */ +body:not([data-theme="light"]) .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */ +body:not([data-theme="light"]) .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */ +body:not([data-theme="light"]) .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */ +body:not([data-theme="light"]) .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */ +body:not([data-theme="light"]) .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */ +body:not([data-theme="light"]) .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */ +body:not([data-theme="light"]) .highlight .ld { color: #d0d0d0 } /* Literal.Date */ +body:not([data-theme="light"]) .highlight .m { color: #51b2fd } /* Literal.Number */ +body:not([data-theme="light"]) .highlight .s { color: #ed9d13 } /* Literal.String */ +body:not([data-theme="light"]) .highlight .na { color: #bbbbbb } /* Name.Attribute */ +body:not([data-theme="light"]) .highlight .nb { color: #2fbccd } /* Name.Builtin */ +body:not([data-theme="light"]) .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */ +body:not([data-theme="light"]) .highlight .no { color: #40ffff } /* Name.Constant */ +body:not([data-theme="light"]) .highlight .nd { color: #ffa500 } /* Name.Decorator */ +body:not([data-theme="light"]) .highlight .ni { color: #d0d0d0 } /* Name.Entity */ +body:not([data-theme="light"]) .highlight .ne { color: #bbbbbb } /* Name.Exception */ +body:not([data-theme="light"]) .highlight .nf { color: #71adff } /* Name.Function */ +body:not([data-theme="light"]) .highlight .nl { color: #d0d0d0 } /* Name.Label */ +body:not([data-theme="light"]) .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */ +body:not([data-theme="light"]) .highlight .nx { color: #d0d0d0 } /* Name.Other */ +body:not([data-theme="light"]) .highlight .py { color: #d0d0d0 } /* Name.Property */ +body:not([data-theme="light"]) .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */ +body:not([data-theme="light"]) .highlight .nv { color: #40ffff } /* Name.Variable */ +body:not([data-theme="light"]) .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */ +body:not([data-theme="light"]) .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */ +body:not([data-theme="light"]) .highlight .w { color: #666666 } /* Text.Whitespace */ +body:not([data-theme="light"]) .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */ +body:not([data-theme="light"]) .highlight .mf { color: #51b2fd } /* Literal.Number.Float */ +body:not([data-theme="light"]) .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */ +body:not([data-theme="light"]) .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */ +body:not([data-theme="light"]) .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */ +body:not([data-theme="light"]) .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */ +body:not([data-theme="light"]) .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */ +body:not([data-theme="light"]) .highlight .sc { color: #ed9d13 } /* Literal.String.Char */ +body:not([data-theme="light"]) .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */ +body:not([data-theme="light"]) .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */ +body:not([data-theme="light"]) .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */ +body:not([data-theme="light"]) .highlight .se { color: #ed9d13 } /* Literal.String.Escape */ +body:not([data-theme="light"]) .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */ +body:not([data-theme="light"]) .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */ +body:not([data-theme="light"]) .highlight .sx { color: #ffa500 } /* Literal.String.Other */ +body:not([data-theme="light"]) .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */ +body:not([data-theme="light"]) .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */ +body:not([data-theme="light"]) .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */ +body:not([data-theme="light"]) .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */ +body:not([data-theme="light"]) .highlight .fm { color: #71adff } /* Name.Function.Magic */ +body:not([data-theme="light"]) .highlight .vc { color: #40ffff } /* Name.Variable.Class */ +body:not([data-theme="light"]) .highlight .vg { color: #40ffff } /* Name.Variable.Global */ +body:not([data-theme="light"]) .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +body:not([data-theme="light"]) .highlight .vm { color: #40ffff } /* Name.Variable.Magic */ +body:not([data-theme="light"]) .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */ +} +} \ No newline at end of file diff --git a/latest/_static/scripts/furo-extensions.js b/latest/_static/scripts/furo-extensions.js new file mode 100644 index 0000000..e69de29 diff --git a/latest/_static/scripts/furo.js b/latest/_static/scripts/furo.js new file mode 100644 index 0000000..0abb2af --- /dev/null +++ b/latest/_static/scripts/furo.js @@ -0,0 +1,3 @@ +/*! For license information please see furo.js.LICENSE.txt */ +(()=>{var t={856:function(t,e,n){var o,r;r=void 0!==n.g?n.g:"undefined"!=typeof window?window:this,o=function(){return function(t){"use strict";var e={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},n=function(t,e,n){if(n.settings.events){var o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e.dispatchEvent(o)}},o=function(t){var e=0;if(t.offsetParent)for(;t;)e+=t.offsetTop,t=t.offsetParent;return e>=0?e:0},r=function(t){t&&t.sort((function(t,e){return o(t.content)=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,e){var n=t[t.length-1];if(function(t,e){return!(!s()||!c(t.content,e,!0))}(n,e))return n;for(var o=t.length-1;o>=0;o--)if(c(t[o].content,e))return t[o]},a=function(t,e){if(e.nested&&t.parentNode){var n=t.parentNode.closest("li");n&&(n.classList.remove(e.nestedClass),a(n,e))}},i=function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.remove(e.navClass),t.content.classList.remove(e.contentClass),a(o,e),n("gumshoeDeactivate",o,{link:t.nav,content:t.content,settings:e}))}},u=function(t,e){if(e.nested){var n=t.parentNode.closest("li");n&&(n.classList.add(e.nestedClass),u(n,e))}};return function(o,c){var s,a,d,f,m,v={setup:function(){s=document.querySelectorAll(o),a=[],Array.prototype.forEach.call(s,(function(t){var e=document.getElementById(decodeURIComponent(t.hash.substr(1)));e&&a.push({nav:t,content:e})})),r(a)},detect:function(){var t=l(a,m);t?d&&t.content===d.content||(i(d,m),function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.add(e.navClass),t.content.classList.add(e.contentClass),u(o,e),n("gumshoeActivate",o,{link:t.nav,content:t.content,settings:e}))}}(t,m),d=t):d&&(i(d,m),d=null)}},h=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame(v.detect)},g=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame((function(){r(a),v.detect()}))};return v.destroy=function(){d&&i(d,m),t.removeEventListener("scroll",h,!1),m.reflow&&t.removeEventListener("resize",g,!1),a=null,s=null,d=null,f=null,m=null},m=function(){var t={};return Array.prototype.forEach.call(arguments,(function(e){for(var n in e){if(!e.hasOwnProperty(n))return;t[n]=e[n]}})),t}(e,c||{}),v.setup(),v.detect(),t.addEventListener("scroll",h,!1),m.reflow&&t.addEventListener("resize",g,!1),v}}(r)}.apply(e,[]),void 0===o||(t.exports=o)}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var c=e[o]={exports:{}};return t[o].call(c.exports,c,c.exports,n),c.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=n(856),e=n.n(t),o=null,r=null,c=document.documentElement.scrollTop;const s=64;function l(){const t=localStorage.getItem("theme")||"auto";var e;"light"!==(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"auto"===t?"light":"light"==t?"dark":"auto":"auto"===t?"dark":"dark"==t?"light":"auto")&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto"),document.body.dataset.theme=e,localStorage.setItem("theme",e),console.log(`Changed to ${e} mode.`)}function a(){!function(){const t=document.getElementsByClassName("theme-toggle");Array.from(t).forEach((t=>{t.addEventListener("click",l)}))}(),function(){let t=0,e=!1;window.addEventListener("scroll",(function(n){t=window.scrollY,e||(window.requestAnimationFrame((function(){var n;(function(t){const e=Math.floor(r.getBoundingClientRect().top);console.log(`headerTop: ${e}`),0==e&&t!=e?r.classList.add("scrolled"):r.classList.remove("scrolled")})(n=t),function(t){tc&&document.documentElement.classList.remove("show-back-to-top"),c=t}(n),function(t){null!==o&&(0==t?o.scrollTo(0,0):Math.ceil(t)>=Math.floor(document.documentElement.scrollHeight-window.innerHeight)?o.scrollTo(0,o.scrollHeight):document.querySelector(".scroll-current"))}(n),e=!1})),e=!0)})),window.scroll()}(),null!==o&&new(e())(".toc-tree a",{reflow:!0,recursive:!0,navClass:"scroll-current",offset:()=>{let t=parseFloat(getComputedStyle(document.documentElement).fontSize);return r.getBoundingClientRect().height+2.5*t+1}})}document.addEventListener("DOMContentLoaded",(function(){document.body.parentNode.classList.remove("no-js"),r=document.querySelector("header"),o=document.querySelector(".toc-scroll"),a()}))})()})(); +//# sourceMappingURL=furo.js.map \ No newline at end of file diff --git a/latest/_static/scripts/furo.js.LICENSE.txt b/latest/_static/scripts/furo.js.LICENSE.txt new file mode 100644 index 0000000..1632189 --- /dev/null +++ b/latest/_static/scripts/furo.js.LICENSE.txt @@ -0,0 +1,7 @@ +/*! + * gumshoejs v5.1.2 (patched by @pradyunsg) + * A simple, framework-agnostic scrollspy script. + * (c) 2019 Chris Ferdinandi + * MIT License + * http://github.com/cferdinandi/gumshoe + */ diff --git a/latest/_static/scripts/furo.js.map b/latest/_static/scripts/furo.js.map new file mode 100644 index 0000000..80ea12b --- /dev/null +++ b/latest/_static/scripts/furo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/furo.js","mappings":"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","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader(positionY) {\n const headerTop = Math.floor(header.getBoundingClientRect().top);\n\n console.log(`headerTop: ${headerTop}`);\n if (headerTop == 0 && positionY != headerTop) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader(positionY);\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 2.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","headerTop","floor","scrollHandlerForHeader","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file diff --git a/latest/_static/searchtools.js b/latest/_static/searchtools.js new file mode 100644 index 0000000..b08d58c --- /dev/null +++ b/latest/_static/searchtools.js @@ -0,0 +1,620 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms, anchor) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + "Search finished, found ${resultCount} page(s) matching the search query." + ).replace('${resultCount}', resultCount); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; +// Helper function used by query() to order search results. +// Each input is an array of [docname, title, anchor, descr, score, filename]. +// Order the results by score (in opposite order of appearance, since the +// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically. +const _orderResultsByScoreThenName = (a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString, anchor) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + for (const removalQuery of [".headerlink", "script", "style"]) { + htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() }); + } + if (anchor) { + const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`); + if (anchorContent) return anchorContent.textContent; + + console.warn( + `Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.` + ); + } + + // if anchor not specified or not found, fall back to main content + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent) return docContent.textContent; + + console.warn( + "Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + _parseQuery: (query) => { + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + return [query, searchTerms, excludedTerms, highlightTerms, objectTerms]; + }, + + /** + * execute search (requires search index to be loaded) + */ + _performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // Collect multiple result groups to be sorted separately and then ordered. + // Each is an array of [docname, title, anchor, descr, score, filename]. + const normalResults = []; + const nonMainIndexResults = []; + + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase().trim(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + const score = Math.round(Scorer.title * queryLower.length / title.length); + const boost = titles[file] === title ? 1 : 0; // add a boost for document titles + normalResults.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score + boost, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id, isMain] of foundEntries) { + const score = Math.round(100 * queryLower.length / entry.length); + const result = [ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]; + if (isMain) { + normalResults.push(result); + } else { + nonMainIndexResults.push(result); + } + } + } + } + + // lookup as object + objectTerms.forEach((term) => + normalResults.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) { + normalResults.forEach((item) => (item[4] = Scorer.score(item))); + nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item))); + } + + // Sort each group of results by score and then alphabetically by name. + normalResults.sort(_orderResultsByScoreThenName); + nonMainIndexResults.sort(_orderResultsByScoreThenName); + + // Combine the result groups in (reverse) order. + // Non-main index entries are typically arbitrary cross-references, + // so display them after other results. + let results = [...nonMainIndexResults, ...normalResults]; + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + return results.reverse(); + }, + + query: (query) => { + const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query); + const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + if (!terms.hasOwnProperty(word)) { + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + } + if (!titleTerms.hasOwnProperty(word)) { + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord)) + arr.push({ files: titleTerms[term], score: Scorer.partialTitle }); + }); + } + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (!fileMap.has(file)) fileMap.set(file, [word]); + else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords, anchor) => { + const text = Search.htmlToText(htmlText, anchor); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/latest/_static/skeleton.css b/latest/_static/skeleton.css new file mode 100644 index 0000000..467c878 --- /dev/null +++ b/latest/_static/skeleton.css @@ -0,0 +1,296 @@ +/* Some sane resets. */ +html { + height: 100%; +} + +body { + margin: 0; + min-height: 100%; +} + +/* All the flexbox magic! */ +body, +.sb-announcement, +.sb-content, +.sb-main, +.sb-container, +.sb-container__inner, +.sb-article-container, +.sb-footer-content, +.sb-header, +.sb-header-secondary, +.sb-footer { + display: flex; +} + +/* These order things vertically */ +body, +.sb-main, +.sb-article-container { + flex-direction: column; +} + +/* Put elements in the center */ +.sb-header, +.sb-header-secondary, +.sb-container, +.sb-content, +.sb-footer, +.sb-footer-content { + justify-content: center; +} +/* Put elements at the ends */ +.sb-article-container { + justify-content: space-between; +} + +/* These elements grow. */ +.sb-main, +.sb-content, +.sb-container, +article { + flex-grow: 1; +} + +/* Because padding making this wider is not fun */ +article { + box-sizing: border-box; +} + +/* The announcements element should never be wider than the page. */ +.sb-announcement { + max-width: 100%; +} + +.sb-sidebar-primary, +.sb-sidebar-secondary { + flex-shrink: 0; + width: 17rem; +} + +.sb-announcement__inner { + justify-content: center; + + box-sizing: border-box; + height: 3rem; + + overflow-x: auto; + white-space: nowrap; +} + +/* Sidebars, with checkbox-based toggle */ +.sb-sidebar-primary, +.sb-sidebar-secondary { + position: fixed; + height: 100%; + top: 0; +} + +.sb-sidebar-primary { + left: -17rem; + transition: left 250ms ease-in-out; +} +.sb-sidebar-secondary { + right: -17rem; + transition: right 250ms ease-in-out; +} + +.sb-sidebar-toggle { + display: none; +} +.sb-sidebar-overlay { + position: fixed; + top: 0; + width: 0; + height: 0; + + transition: width 0ms ease 250ms, height 0ms ease 250ms, opacity 250ms ease; + + opacity: 0; + background-color: rgba(0, 0, 0, 0.54); +} + +#sb-sidebar-toggle--primary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--primary"], +#sb-sidebar-toggle--secondary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--secondary"] { + width: 100%; + height: 100%; + opacity: 1; + transition: width 0ms ease, height 0ms ease, opacity 250ms ease; +} + +#sb-sidebar-toggle--primary:checked ~ .sb-container .sb-sidebar-primary { + left: 0; +} +#sb-sidebar-toggle--secondary:checked ~ .sb-container .sb-sidebar-secondary { + right: 0; +} + +/* Full-width mode */ +.drop-secondary-sidebar-for-full-width-content + .hide-when-secondary-sidebar-shown { + display: none !important; +} +.drop-secondary-sidebar-for-full-width-content .sb-sidebar-secondary { + display: none !important; +} + +/* Mobile views */ +.sb-page-width { + width: 100%; +} + +.sb-article-container, +.sb-footer-content__inner, +.drop-secondary-sidebar-for-full-width-content .sb-article, +.drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 100vw; +} + +.sb-article, +.match-content-width { + padding: 0 1rem; + box-sizing: border-box; +} + +@media (min-width: 32rem) { + .sb-article, + .match-content-width { + padding: 0 2rem; + } +} + +/* Tablet views */ +@media (min-width: 42rem) { + .sb-article-container { + width: auto; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 42rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 46rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 46rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 50rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 50rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Tablet views */ +@media (min-width: 59rem) { + .sb-sidebar-secondary { + position: static; + } + .hide-when-secondary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 63rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 67rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Desktop views */ +@media (min-width: 76rem) { + .sb-sidebar-primary { + position: static; + } + .hide-when-primary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} + +/* Full desktop views */ +@media (min-width: 80rem) { + .sb-article, + .match-content-width { + width: 46rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } +} + +@media (min-width: 84rem) { + .sb-article, + .match-content-width { + width: 50rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } +} + +@media (min-width: 88rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-page-width { + width: 88rem; + } +} diff --git a/latest/_static/sphinx-design.min.css b/latest/_static/sphinx-design.min.css new file mode 100644 index 0000000..a325746 --- /dev/null +++ b/latest/_static/sphinx-design.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative;font-size:var(--sd-fontsize-dropdown)}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary.sd-summary-title{padding:.5em 1em;font-size:var(--sd-fontsize-dropdown-title);font-weight:var(--sd-fontweight-dropdown-title);user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;list-style:none;display:inline-flex;justify-content:space-between}details.sd-dropdown summary.sd-summary-title::-webkit-details-marker{display:none}details.sd-dropdown summary.sd-summary-title:focus{outline:none}details.sd-dropdown summary.sd-summary-title .sd-summary-icon{margin-right:.6em;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary.sd-summary-title .sd-summary-text{flex-grow:1;line-height:1.5;padding-right:.5rem}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker{pointer-events:none;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker svg{opacity:.6}details.sd-dropdown summary.sd-summary-title:hover .sd-summary-state-marker svg{opacity:1;transform:scale(1.1)}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown .sd-summary-chevron-right{transition:.25s}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-right{transform:rotate(90deg)}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-down{transform:rotate(180deg)}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-bg: rgba(0, 113, 188, 0.2);--sd-color-secondary-bg: rgba(108, 117, 125, 0.2);--sd-color-success-bg: rgba(40, 167, 69, 0.2);--sd-color-info-bg: rgba(23, 162, 184, 0.2);--sd-color-warning-bg: rgba(240, 179, 126, 0.2);--sd-color-danger-bg: rgba(220, 53, 69, 0.2);--sd-color-light-bg: rgba(248, 249, 250, 0.2);--sd-color-muted-bg: rgba(108, 117, 125, 0.2);--sd-color-dark-bg: rgba(33, 37, 41, 0.2);--sd-color-black-bg: rgba(0, 0, 0, 0.2);--sd-color-white-bg: rgba(255, 255, 255, 0.2);--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem;--sd-fontsize-dropdown: inherit;--sd-fontsize-dropdown-title: 1rem;--sd-fontweight-dropdown-title: 700} diff --git a/latest/_static/sphinx_highlight.js b/latest/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/latest/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '

" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/latest/_static/styles/furo-extensions.css b/latest/_static/styles/furo-extensions.css new file mode 100644 index 0000000..8229587 --- /dev/null +++ b/latest/_static/styles/furo-extensions.css @@ -0,0 +1,2 @@ +#furo-sidebar-ad-placement{padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)}#furo-sidebar-ad-placement .ethical-sidebar{background:var(--color-background-secondary);border:none;box-shadow:none}#furo-sidebar-ad-placement .ethical-sidebar:hover{background:var(--color-background-hover)}#furo-sidebar-ad-placement .ethical-sidebar a{color:var(--color-foreground-primary)}#furo-sidebar-ad-placement .ethical-callout a{color:var(--color-foreground-secondary)!important}#furo-readthedocs-versions{background:transparent;display:block;position:static;width:100%}#furo-readthedocs-versions .rst-versions{background:#1a1c1e}#furo-readthedocs-versions .rst-current-version{background:var(--color-sidebar-item-background);cursor:unset}#furo-readthedocs-versions .rst-current-version:hover{background:var(--color-sidebar-item-background)}#furo-readthedocs-versions .rst-current-version .fa-book{color:var(--color-foreground-primary)}#furo-readthedocs-versions>.rst-other-versions{padding:0}#furo-readthedocs-versions>.rst-other-versions small{opacity:1}#furo-readthedocs-versions .injected .rst-versions{position:unset}#furo-readthedocs-versions:focus-within,#furo-readthedocs-versions:hover{box-shadow:0 0 0 1px var(--color-sidebar-background-border)}#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:hover .rst-current-version{background:#1a1c1e;font-size:inherit;height:auto;line-height:inherit;padding:12px;text-align:right}#furo-readthedocs-versions:focus-within .rst-current-version .fa-book,#furo-readthedocs-versions:hover .rst-current-version .fa-book{color:#fff;float:left}#furo-readthedocs-versions:focus-within .fa-caret-down,#furo-readthedocs-versions:hover .fa-caret-down{display:none}#furo-readthedocs-versions:focus-within .injected,#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:focus-within .rst-other-versions,#furo-readthedocs-versions:hover .injected,#furo-readthedocs-versions:hover .rst-current-version,#furo-readthedocs-versions:hover .rst-other-versions{display:block}#furo-readthedocs-versions:focus-within>.rst-current-version,#furo-readthedocs-versions:hover>.rst-current-version{display:none}.highlight:hover button.copybtn{color:var(--color-code-foreground)}.highlight button.copybtn{align-items:center;background-color:var(--color-code-background);border:none;color:var(--color-background-item);cursor:pointer;height:1.25em;right:.5rem;top:.625rem;transition:color .3s,opacity .3s;width:1.25em}.highlight button.copybtn:hover{background-color:var(--color-code-background);color:var(--color-brand-content)}.highlight button.copybtn:after{background-color:transparent;color:var(--color-code-foreground);display:none}.highlight button.copybtn.success{color:#22863a;transition:color 0ms}.highlight button.copybtn.success:after{display:block}.highlight button.copybtn svg{padding:0}body{--sd-color-primary:var(--color-brand-primary);--sd-color-primary-highlight:var(--color-brand-content);--sd-color-primary-text:var(--color-background-primary);--sd-color-shadow:rgba(0,0,0,.05);--sd-color-card-border:var(--color-card-border);--sd-color-card-border-hover:var(--color-brand-content);--sd-color-card-background:var(--color-card-background);--sd-color-card-text:var(--color-foreground-primary);--sd-color-card-header:var(--color-card-marginals-background);--sd-color-card-footer:var(--color-card-marginals-background);--sd-color-tabs-label-active:var(--color-brand-content);--sd-color-tabs-label-hover:var(--color-foreground-muted);--sd-color-tabs-label-inactive:var(--color-foreground-muted);--sd-color-tabs-underline-active:var(--color-brand-content);--sd-color-tabs-underline-hover:var(--color-foreground-border);--sd-color-tabs-underline-inactive:var(--color-background-border);--sd-color-tabs-overline:var(--color-background-border);--sd-color-tabs-underline:var(--color-background-border)}.sd-tab-content{box-shadow:0 -2px var(--sd-color-tabs-overline),0 1px var(--sd-color-tabs-underline)}.sd-card{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)}.sd-shadow-sm{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-md{box-shadow:0 .3rem .75rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-lg{box-shadow:0 .6rem 1.5rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-card-hover:hover{transform:none}.sd-cards-carousel{gap:.25rem;padding:.25rem}body{--tabs--label-text:var(--color-foreground-muted);--tabs--label-text--hover:var(--color-foreground-muted);--tabs--label-text--active:var(--color-brand-content);--tabs--label-text--active--hover:var(--color-brand-content);--tabs--label-background:transparent;--tabs--label-background--hover:transparent;--tabs--label-background--active:transparent;--tabs--label-background--active--hover:transparent;--tabs--padding-x:0.25em;--tabs--margin-x:1em;--tabs--border:var(--color-background-border);--tabs--label-border:transparent;--tabs--label-border--hover:var(--color-foreground-muted);--tabs--label-border--active:var(--color-brand-content);--tabs--label-border--active--hover:var(--color-brand-content)}[role=main] .container{max-width:none;padding-left:0;padding-right:0}.shadow.docutils{border:none;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)!important}.sphinx-bs .card{background-color:var(--color-background-secondary);color:var(--color-foreground)} +/*# sourceMappingURL=furo-extensions.css.map*/ \ No newline at end of file diff --git a/latest/_static/styles/furo-extensions.css.map b/latest/_static/styles/furo-extensions.css.map new file mode 100644 index 0000000..c26eac7 --- /dev/null +++ b/latest/_static/styles/furo-extensions.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo-extensions.css","mappings":"AAGA,2BACE,oFACA,4CAKE,6CAHA,YACA,eAEA,CACA,kDACE,yCAEF,8CACE,sCAEJ,8CACE,kDAEJ,2BAGE,uBACA,cAHA,gBACA,UAEA,CAGA,yCACE,mBAEF,gDAEE,gDADA,YACA,CACA,sDACE,gDACF,yDACE,sCAEJ,+CACE,UACA,qDACE,UAGF,mDACE,eAEJ,yEAEE,4DAEA,mHASE,mBAPA,kBAEA,YADA,oBAGA,aADA,gBAIA,CAEA,qIAEE,WADA,UACA,CAEJ,uGACE,aAEF,iUAGE,cAEF,mHACE,aC1EJ,gCACE,mCAEF,0BAEE,mBAUA,8CACA,YAFA,mCAKA,eAZA,cAIA,YADA,YAYA,iCAdA,YAcA,CAEA,gCAEE,8CADA,gCACA,CAEF,gCAGE,6BADA,mCADA,YAEA,CAEF,kCAEE,cADA,oBACA,CACA,wCACE,cAEJ,8BACE,UCzCN,KAEE,6CAA8C,CAC9C,uDAAwD,CACxD,uDAAwD,CAGxD,iCAAsC,CAGtC,+CAAgD,CAChD,uDAAwD,CACxD,uDAAwD,CACxD,oDAAqD,CACrD,6DAA8D,CAC9D,6DAA8D,CAG9D,uDAAwD,CACxD,yDAA0D,CAC1D,4DAA6D,CAC7D,2DAA4D,CAC5D,8DAA+D,CAC/D,iEAAkE,CAClE,uDAAwD,CACxD,wDAAyD,CAG3D,gBACE,qFAGF,SACE,6EAEF,cACE,uFAEF,cACE,uFAEF,cACE,uFAGF,qBACE,eAEF,mBACE,WACA,eChDF,KACE,gDAAiD,CACjD,uDAAwD,CACxD,qDAAsD,CACtD,4DAA6D,CAC7D,oCAAqC,CACrC,2CAA4C,CAC5C,4CAA6C,CAC7C,mDAAoD,CACpD,wBAAyB,CACzB,oBAAqB,CACrB,6CAA8C,CAC9C,gCAAiC,CACjC,yDAA0D,CAC1D,uDAAwD,CACxD,8DAA+D,CCbjE,uBACE,eACA,eACA,gBAGF,iBACE,YACA,+EAGF,iBACE,mDACA","sources":["webpack:///./src/furo/assets/styles/extensions/_readthedocs.sass","webpack:///./src/furo/assets/styles/extensions/_copybutton.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-design.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-inline-tabs.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-panels.sass"],"sourcesContent":["// This file contains the styles used for tweaking how ReadTheDoc's embedded\n// contents would show up inside the theme.\n\n#furo-sidebar-ad-placement\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n .ethical-sidebar\n // Remove the border and box-shadow.\n border: none\n box-shadow: none\n // Manage the background colors.\n background: var(--color-background-secondary)\n &:hover\n background: var(--color-background-hover)\n // Ensure the text is legible.\n a\n color: var(--color-foreground-primary)\n\n .ethical-callout a\n color: var(--color-foreground-secondary) !important\n\n#furo-readthedocs-versions\n position: static\n width: 100%\n background: transparent\n display: block\n\n // Make the background color fit with the theme's aesthetic.\n .rst-versions\n background: rgb(26, 28, 30)\n\n .rst-current-version\n cursor: unset\n background: var(--color-sidebar-item-background)\n &:hover\n background: var(--color-sidebar-item-background)\n .fa-book\n color: var(--color-foreground-primary)\n\n > .rst-other-versions\n padding: 0\n small\n opacity: 1\n\n .injected\n .rst-versions\n position: unset\n\n &:hover,\n &:focus-within\n box-shadow: 0 0 0 1px var(--color-sidebar-background-border)\n\n .rst-current-version\n // Undo the tweaks done in RTD's CSS\n font-size: inherit\n line-height: inherit\n height: auto\n text-align: right\n padding: 12px\n\n // Match the rest of the body\n background: #1a1c1e\n\n .fa-book\n float: left\n color: white\n\n .fa-caret-down\n display: none\n\n .rst-current-version,\n .rst-other-versions,\n .injected\n display: block\n\n > .rst-current-version\n display: none\n",".highlight\n &:hover button.copybtn\n color: var(--color-code-foreground)\n\n button.copybtn\n // Align things correctly\n align-items: center\n\n height: 1.25em\n width: 1.25em\n\n top: 0.625rem // $code-spacing-vertical\n right: 0.5rem\n\n // Make it look better\n color: var(--color-background-item)\n background-color: var(--color-code-background)\n border: none\n\n // Change to cursor to make it obvious that you can click on it\n cursor: pointer\n\n // Transition smoothly, for aesthetics\n transition: color 300ms, opacity 300ms\n\n &:hover\n color: var(--color-brand-content)\n background-color: var(--color-code-background)\n\n &::after\n display: none\n color: var(--color-code-foreground)\n background-color: transparent\n\n &.success\n transition: color 0ms\n color: #22863a\n &::after\n display: block\n\n svg\n padding: 0\n","body\n // Colors\n --sd-color-primary: var(--color-brand-primary)\n --sd-color-primary-highlight: var(--color-brand-content)\n --sd-color-primary-text: var(--color-background-primary)\n\n // Shadows\n --sd-color-shadow: rgba(0, 0, 0, 0.05)\n\n // Cards\n --sd-color-card-border: var(--color-card-border)\n --sd-color-card-border-hover: var(--color-brand-content)\n --sd-color-card-background: var(--color-card-background)\n --sd-color-card-text: var(--color-foreground-primary)\n --sd-color-card-header: var(--color-card-marginals-background)\n --sd-color-card-footer: var(--color-card-marginals-background)\n\n // Tabs\n --sd-color-tabs-label-active: var(--color-brand-content)\n --sd-color-tabs-label-hover: var(--color-foreground-muted)\n --sd-color-tabs-label-inactive: var(--color-foreground-muted)\n --sd-color-tabs-underline-active: var(--color-brand-content)\n --sd-color-tabs-underline-hover: var(--color-foreground-border)\n --sd-color-tabs-underline-inactive: var(--color-background-border)\n --sd-color-tabs-overline: var(--color-background-border)\n --sd-color-tabs-underline: var(--color-background-border)\n\n// Tabs\n.sd-tab-content\n box-shadow: 0 -2px var(--sd-color-tabs-overline), 0 1px var(--sd-color-tabs-underline)\n\n// Shadows\n.sd-card // Have a shadow by default\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n.sd-shadow-sm\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-md\n box-shadow: 0 0.3rem 0.75rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-lg\n box-shadow: 0 0.6rem 1.5rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Cards\n.sd-card-hover:hover // Don't change scale on hover\n transform: none\n\n.sd-cards-carousel // Have a bit of gap in the carousel by default\n gap: 0.25rem\n padding: 0.25rem\n","// This file contains styles to tweak sphinx-inline-tabs to work well with Furo.\n\nbody\n --tabs--label-text: var(--color-foreground-muted)\n --tabs--label-text--hover: var(--color-foreground-muted)\n --tabs--label-text--active: var(--color-brand-content)\n --tabs--label-text--active--hover: var(--color-brand-content)\n --tabs--label-background: transparent\n --tabs--label-background--hover: transparent\n --tabs--label-background--active: transparent\n --tabs--label-background--active--hover: transparent\n --tabs--padding-x: 0.25em\n --tabs--margin-x: 1em\n --tabs--border: var(--color-background-border)\n --tabs--label-border: transparent\n --tabs--label-border--hover: var(--color-foreground-muted)\n --tabs--label-border--active: var(--color-brand-content)\n --tabs--label-border--active--hover: var(--color-brand-content)\n","// This file contains styles to tweak sphinx-panels to work well with Furo.\n\n// sphinx-panels includes Bootstrap 4, which uses .container which can conflict\n// with docutils' `.. container::` directive.\n[role=\"main\"] .container\n max-width: initial\n padding-left: initial\n padding-right: initial\n\n// Make the panels look nicer!\n.shadow.docutils\n border: none\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Make panel colors respond to dark mode\n.sphinx-bs .card\n background-color: var(--color-background-secondary)\n color: var(--color-foreground)\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/latest/_static/styles/furo.css b/latest/_static/styles/furo.css new file mode 100644 index 0000000..21836d6 --- /dev/null +++ b/latest/_static/styles/furo.css @@ -0,0 +1,2 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}@media print{.content-icon-container,.headerlink,.mobile-header,.related-pages{display:none!important}.highlight{border:.1pt solid var(--color-foreground-border)}a,blockquote,dl,ol,pre,table,ul{page-break-inside:avoid}caption,figure,h1,h2,h3,h4,h5,h6,img{page-break-after:avoid;page-break-inside:avoid}dl,ol,ul{page-break-before:avoid}}.visually-hidden{height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;background:var(--color-background-primary);border:0!important;color:var(--color-foreground-primary);white-space:nowrap!important}:-moz-focusring{outline:auto}body{--font-stack:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;--font-stack--monospace:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--font-stack--headings:var(--font-stack);--font-size--normal:100%;--font-size--small:87.5%;--font-size--small--2:81.25%;--font-size--small--3:75%;--font-size--small--4:62.5%;--sidebar-caption-font-size:var(--font-size--small--2);--sidebar-item-font-size:var(--font-size--small);--sidebar-search-input-font-size:var(--font-size--small);--toc-font-size:var(--font-size--small--3);--toc-font-size--mobile:var(--font-size--normal);--toc-title-font-size:var(--font-size--small--4);--admonition-font-size:0.8125rem;--admonition-title-font-size:0.8125rem;--code-font-size:var(--font-size--small--2);--api-font-size:var(--font-size--small);--header-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*4);--header-padding:0.5rem;--sidebar-tree-space-above:1.5rem;--sidebar-caption-space-above:1rem;--sidebar-item-line-height:1rem;--sidebar-item-spacing-vertical:0.5rem;--sidebar-item-spacing-horizontal:1rem;--sidebar-item-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*2);--sidebar-expander-width:var(--sidebar-item-height);--sidebar-search-space-above:0.5rem;--sidebar-search-input-spacing-vertical:0.5rem;--sidebar-search-input-spacing-horizontal:0.5rem;--sidebar-search-input-height:1rem;--sidebar-search-icon-size:var(--sidebar-search-input-height);--toc-title-padding:0.25rem 0;--toc-spacing-vertical:1.5rem;--toc-spacing-horizontal:1.5rem;--toc-item-spacing-vertical:0.4rem;--toc-item-spacing-horizontal:1rem;--icon-search:url('data:image/svg+xml;charset=utf-8,');--icon-pencil:url('data:image/svg+xml;charset=utf-8,');--icon-abstract:url('data:image/svg+xml;charset=utf-8,');--icon-info:url('data:image/svg+xml;charset=utf-8,');--icon-flame:url('data:image/svg+xml;charset=utf-8,');--icon-question:url('data:image/svg+xml;charset=utf-8,');--icon-warning:url('data:image/svg+xml;charset=utf-8,');--icon-failure:url('data:image/svg+xml;charset=utf-8,');--icon-spark:url('data:image/svg+xml;charset=utf-8,');--color-admonition-title--caution:#ff9100;--color-admonition-title-background--caution:rgba(255,145,0,.2);--color-admonition-title--warning:#ff9100;--color-admonition-title-background--warning:rgba(255,145,0,.2);--color-admonition-title--danger:#ff5252;--color-admonition-title-background--danger:rgba(255,82,82,.2);--color-admonition-title--attention:#ff5252;--color-admonition-title-background--attention:rgba(255,82,82,.2);--color-admonition-title--error:#ff5252;--color-admonition-title-background--error:rgba(255,82,82,.2);--color-admonition-title--hint:#00c852;--color-admonition-title-background--hint:rgba(0,200,82,.2);--color-admonition-title--tip:#00c852;--color-admonition-title-background--tip:rgba(0,200,82,.2);--color-admonition-title--important:#00bfa5;--color-admonition-title-background--important:rgba(0,191,165,.2);--color-admonition-title--note:#00b0ff;--color-admonition-title-background--note:rgba(0,176,255,.2);--color-admonition-title--seealso:#448aff;--color-admonition-title-background--seealso:rgba(68,138,255,.2);--color-admonition-title--admonition-todo:grey;--color-admonition-title-background--admonition-todo:hsla(0,0%,50%,.2);--color-admonition-title:#651fff;--color-admonition-title-background:rgba(101,31,255,.2);--icon-admonition-default:var(--icon-abstract);--color-topic-title:#14b8a6;--color-topic-title-background:rgba(20,184,166,.2);--icon-topic-default:var(--icon-pencil);--color-problematic:#b30000;--color-foreground-primary:#000;--color-foreground-secondary:#5a5c63;--color-foreground-muted:#6b6f76;--color-foreground-border:#878787;--color-background-primary:#fff;--color-background-secondary:#f8f9fb;--color-background-hover:#efeff4;--color-background-hover--transparent:#efeff400;--color-background-border:#eeebee;--color-background-item:#ccc;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#0a4bff;--color-brand-content:#2757dd;--color-brand-visited:#872ee0;--color-api-background:var(--color-background-hover--transparent);--color-api-background-hover:var(--color-background-hover);--color-api-overall:var(--color-foreground-secondary);--color-api-name:var(--color-problematic);--color-api-pre-name:var(--color-problematic);--color-api-paren:var(--color-foreground-secondary);--color-api-keyword:var(--color-foreground-primary);--color-api-added:#21632c;--color-api-added-border:#38a84d;--color-api-changed:#046172;--color-api-changed-border:#06a1bc;--color-api-deprecated:#605706;--color-api-deprecated-border:#f0d90f;--color-api-removed:#b30000;--color-api-removed-border:#ff5c5c;--color-highlight-on-target:#ffc;--color-inline-code-background:var(--color-background-secondary);--color-highlighted-background:#def;--color-highlighted-text:var(--color-foreground-primary);--color-guilabel-background:#ddeeff80;--color-guilabel-border:#bedaf580;--color-guilabel-text:var(--color-foreground-primary);--color-admonition-background:transparent;--color-table-header-background:var(--color-background-secondary);--color-table-border:var(--color-background-border);--color-card-border:var(--color-background-secondary);--color-card-background:transparent;--color-card-marginals-background:var(--color-background-secondary);--color-header-background:var(--color-background-primary);--color-header-border:var(--color-background-border);--color-header-text:var(--color-foreground-primary);--color-sidebar-background:var(--color-background-secondary);--color-sidebar-background-border:var(--color-background-border);--color-sidebar-brand-text:var(--color-foreground-primary);--color-sidebar-caption-text:var(--color-foreground-muted);--color-sidebar-link-text:var(--color-foreground-secondary);--color-sidebar-link-text--top-level:var(--color-brand-primary);--color-sidebar-item-background:var(--color-sidebar-background);--color-sidebar-item-background--current:var( --color-sidebar-item-background );--color-sidebar-item-background--hover:linear-gradient(90deg,var(--color-background-hover--transparent) 0%,var(--color-background-hover) var(--sidebar-item-spacing-horizontal),var(--color-background-hover) 100%);--color-sidebar-item-expander-background:transparent;--color-sidebar-item-expander-background--hover:var( --color-background-hover );--color-sidebar-search-text:var(--color-foreground-primary);--color-sidebar-search-background:var(--color-background-secondary);--color-sidebar-search-background--focus:var(--color-background-primary);--color-sidebar-search-border:var(--color-background-border);--color-sidebar-search-icon:var(--color-foreground-muted);--color-toc-background:var(--color-background-primary);--color-toc-title-text:var(--color-foreground-muted);--color-toc-item-text:var(--color-foreground-secondary);--color-toc-item-text--hover:var(--color-foreground-primary);--color-toc-item-text--active:var(--color-brand-primary);--color-content-foreground:var(--color-foreground-primary);--color-content-background:transparent;--color-link:var(--color-brand-content);--color-link-underline:var(--color-background-border);--color-link--hover:var(--color-brand-content);--color-link-underline--hover:var(--color-foreground-border);--color-link--visited:var(--color-brand-visited);--color-link-underline--visited:var(--color-background-border);--color-link--visited--hover:var(--color-brand-visited);--color-link-underline--visited--hover:var(--color-foreground-border)}.only-light{display:block!important}html body .only-dark{display:none!important}@media not print{body[data-theme=dark]{--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body[data-theme=dark] .only-light{display:none!important}body[data-theme=dark] .only-dark{display:block!important}@media(prefers-color-scheme:dark){body:not([data-theme=light]){--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body:not([data-theme=light]) .only-light{display:none!important}body:not([data-theme=light]) .only-dark{display:block!important}}}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:block}@media(prefers-color-scheme:dark){body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-dark{display:block}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:none}}body[data-theme=dark] .theme-toggle svg.theme-icon-when-dark,body[data-theme=light] .theme-toggle svg.theme-icon-when-light{display:block}body{font-family:var(--font-stack)}code,kbd,pre,samp{font-family:var(--font-stack--monospace)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article{line-height:1.5}h1,h2,h3,h4,h5,h6{border-radius:.5rem;font-family:var(--font-stack--headings);font-weight:700;line-height:1.25;margin:.5rem -.5rem;padding-left:.5rem;padding-right:.5rem}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p{margin-top:0}h1{font-size:2.5em;margin-bottom:1rem}h1,h2{margin-top:1.75rem}h2{font-size:2em}h3{font-size:1.5em}h4{font-size:1.25em}h5{font-size:1.125em}h6{font-size:1em}small{font-size:80%;opacity:75%}p{margin-bottom:.75rem;margin-top:.5rem}hr.docutils{background-color:var(--color-background-border);border:0;height:1px;margin:2rem 0;padding:0}.centered{text-align:center}a{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}a:visited{color:var(--color-link--visited);text-decoration-color:var(--color-link-underline--visited)}a:visited:hover{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}a:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link{color:inherit}a.muted-link:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link:hover:visited{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}html{overflow-x:hidden;overflow-y:scroll;scroll-behavior:smooth}.sidebar-scroll,.toc-scroll,article[role=main] *{scrollbar-color:var(--color-foreground-border) transparent;scrollbar-width:thin}.sidebar-scroll::-webkit-scrollbar,.toc-scroll::-webkit-scrollbar,article[role=main] ::-webkit-scrollbar{height:.25rem;width:.25rem}.sidebar-scroll::-webkit-scrollbar-thumb,.toc-scroll::-webkit-scrollbar-thumb,article[role=main] ::-webkit-scrollbar-thumb{background-color:var(--color-foreground-border);border-radius:.125rem}body,html{height:100%}.skip-to-content,body,html{background:var(--color-background-primary);color:var(--color-foreground-primary)}.skip-to-content{border-radius:1rem;left:.25rem;padding:1rem;position:fixed;top:.25rem;transform:translateY(-200%);transition:transform .3s ease-in-out;z-index:40}.skip-to-content:focus-within{transform:translateY(0)}article{background:var(--color-content-background);color:var(--color-content-foreground);overflow-wrap:break-word}.page{display:flex;min-height:100%}.mobile-header{background-color:var(--color-header-background);border-bottom:1px solid var(--color-header-border);color:var(--color-header-text);display:none;height:var(--header-height);width:100%;z-index:10}.mobile-header.scrolled{border-bottom:none;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.mobile-header .header-center a{color:var(--color-header-text);text-decoration:none}.main{display:flex;flex:1}.sidebar-drawer{background:var(--color-sidebar-background);border-right:1px solid var(--color-sidebar-background-border);box-sizing:border-box;display:flex;justify-content:flex-end;min-width:15em;width:calc(50% - 26em)}.sidebar-container,.toc-drawer{box-sizing:border-box;width:15em}.toc-drawer{background:var(--color-toc-background);padding-right:1rem}.sidebar-sticky,.toc-sticky{display:flex;flex-direction:column;height:min(100%,100vh);height:100vh;position:sticky;top:0}.sidebar-scroll,.toc-scroll{flex-grow:1;flex-shrink:1;overflow:auto;scroll-behavior:smooth}.content{display:flex;flex-direction:column;justify-content:space-between;padding:0 3em;width:46em}.icon{display:inline-block;height:1rem;width:1rem}.icon svg{height:100%;width:100%}.announcement{align-items:center;background-color:var(--color-announcement-background);color:var(--color-announcement-text);display:flex;height:var(--header-height);overflow-x:auto}.announcement+.page{min-height:calc(100% - var(--header-height))}.announcement-content{box-sizing:border-box;min-width:100%;padding:.5rem;text-align:center;white-space:nowrap}.announcement-content a{color:var(--color-announcement-text);text-decoration-color:var(--color-announcement-text)}.announcement-content a:hover{color:var(--color-announcement-text);text-decoration-color:var(--color-link--hover)}.no-js .theme-toggle-container{display:none}.theme-toggle-container{display:flex}.theme-toggle{background:transparent;border:none;cursor:pointer;display:flex;padding:0}.theme-toggle svg{color:var(--color-foreground-primary);display:none;height:1.25rem;width:1.25rem}.theme-toggle-header{align-items:center;display:flex;justify-content:center}.nav-overlay-icon,.toc-overlay-icon{cursor:pointer;display:none}.nav-overlay-icon .icon,.toc-overlay-icon .icon{color:var(--color-foreground-secondary);height:1.5rem;width:1.5rem}.nav-overlay-icon,.toc-header-icon{align-items:center;justify-content:center}.toc-content-icon{height:1.5rem;width:1.5rem}.content-icon-container{display:flex;float:right;gap:.5rem;margin-bottom:1rem;margin-left:1rem;margin-top:1.5rem}.content-icon-container .edit-this-page svg,.content-icon-container .view-this-page svg{color:inherit;height:1.25rem;width:1.25rem}.sidebar-toggle{display:none;position:absolute}.sidebar-toggle[name=__toc]{left:20px}.sidebar-toggle:checked{left:40px}.overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms,height 0ms,opacity .25s ease-out;width:0}.sidebar-overlay{z-index:20}.toc-overlay{z-index:40}.sidebar-drawer{transition:left .25s ease-in-out;z-index:30}.toc-drawer{transition:right .25s ease-in-out;z-index:50}#__navigation:checked~.sidebar-overlay{height:100%;opacity:1;width:100%}#__navigation:checked~.page .sidebar-drawer{left:0;top:0}#__toc:checked~.toc-overlay{height:100%;opacity:1;width:100%}#__toc:checked~.page .toc-drawer{right:0;top:0}.back-to-top{background:var(--color-background-primary);border-radius:1rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 1px 0 hsla(220,9%,46%,.502);display:none;font-size:.8125rem;left:0;margin-left:50%;padding:.5rem .75rem .5rem .5rem;position:fixed;text-decoration:none;top:1rem;transform:translateX(-50%);z-index:10}.back-to-top svg{height:1rem;width:1rem;fill:currentColor;display:inline-block}.back-to-top span{margin-left:.25rem}.show-back-to-top .back-to-top{align-items:center;display:flex}@media(min-width:97em){html{font-size:110%}}@media(max-width:82em){.toc-content-icon{display:flex}.toc-drawer{border-left:1px solid var(--color-background-muted);height:100vh;position:fixed;right:-15em;top:0}.toc-tree{border-left:none;font-size:var(--toc-font-size--mobile)}.sidebar-drawer{width:calc(50% - 18.5em)}}@media(max-width:67em){.nav-overlay-icon{display:flex}.sidebar-drawer{height:100vh;left:-15em;position:fixed;top:0;width:15em}.theme-toggle-header,.toc-header-icon{display:flex}.theme-toggle-content,.toc-content-icon{display:none}.mobile-header{align-items:center;display:flex;justify-content:space-between;position:sticky;top:0}.mobile-header .header-left,.mobile-header .header-right{display:flex;height:var(--header-height);padding:0 var(--header-padding)}.mobile-header .header-left label,.mobile-header .header-right label{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.nav-overlay-icon .icon,.theme-toggle svg{height:1.5rem;width:1.5rem}:target{scroll-margin-top:calc(var(--header-height) + 2.5rem)}.back-to-top{top:calc(var(--header-height) + .5rem)}.page{flex-direction:column;justify-content:center}.content{margin-left:auto;margin-right:auto}}@media(max-width:52em){.content{overflow-x:auto;width:100%}}@media(max-width:46em){.content{padding:0 1em}article aside.sidebar{float:none;margin:1rem 0;width:100%}}.admonition,.topic{background:var(--color-admonition-background);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);font-size:var(--admonition-font-size);margin:1rem auto;overflow:hidden;padding:0 .5rem .5rem;page-break-inside:avoid}.admonition>:nth-child(2),.topic>:nth-child(2){margin-top:0}.admonition>:last-child,.topic>:last-child{margin-bottom:0}.admonition p.admonition-title,p.topic-title{font-size:var(--admonition-title-font-size);font-weight:500;line-height:1.3;margin:0 -.5rem .5rem;padding:.4rem .5rem .4rem 2rem;position:relative}.admonition p.admonition-title:before,p.topic-title:before{content:"";height:1rem;left:.5rem;position:absolute;width:1rem}p.admonition-title{background-color:var(--color-admonition-title-background)}p.admonition-title:before{background-color:var(--color-admonition-title);-webkit-mask-image:var(--icon-admonition-default);mask-image:var(--icon-admonition-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}p.topic-title{background-color:var(--color-topic-title-background)}p.topic-title:before{background-color:var(--color-topic-title);-webkit-mask-image:var(--icon-topic-default);mask-image:var(--icon-topic-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.admonition{border-left:.2rem solid var(--color-admonition-title)}.admonition.caution{border-left-color:var(--color-admonition-title--caution)}.admonition.caution>.admonition-title{background-color:var(--color-admonition-title-background--caution)}.admonition.caution>.admonition-title:before{background-color:var(--color-admonition-title--caution);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.warning{border-left-color:var(--color-admonition-title--warning)}.admonition.warning>.admonition-title{background-color:var(--color-admonition-title-background--warning)}.admonition.warning>.admonition-title:before{background-color:var(--color-admonition-title--warning);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.danger{border-left-color:var(--color-admonition-title--danger)}.admonition.danger>.admonition-title{background-color:var(--color-admonition-title-background--danger)}.admonition.danger>.admonition-title:before{background-color:var(--color-admonition-title--danger);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.attention{border-left-color:var(--color-admonition-title--attention)}.admonition.attention>.admonition-title{background-color:var(--color-admonition-title-background--attention)}.admonition.attention>.admonition-title:before{background-color:var(--color-admonition-title--attention);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.error{border-left-color:var(--color-admonition-title--error)}.admonition.error>.admonition-title{background-color:var(--color-admonition-title-background--error)}.admonition.error>.admonition-title:before{background-color:var(--color-admonition-title--error);-webkit-mask-image:var(--icon-failure);mask-image:var(--icon-failure)}.admonition.hint{border-left-color:var(--color-admonition-title--hint)}.admonition.hint>.admonition-title{background-color:var(--color-admonition-title-background--hint)}.admonition.hint>.admonition-title:before{background-color:var(--color-admonition-title--hint);-webkit-mask-image:var(--icon-question);mask-image:var(--icon-question)}.admonition.tip{border-left-color:var(--color-admonition-title--tip)}.admonition.tip>.admonition-title{background-color:var(--color-admonition-title-background--tip)}.admonition.tip>.admonition-title:before{background-color:var(--color-admonition-title--tip);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.important{border-left-color:var(--color-admonition-title--important)}.admonition.important>.admonition-title{background-color:var(--color-admonition-title-background--important)}.admonition.important>.admonition-title:before{background-color:var(--color-admonition-title--important);-webkit-mask-image:var(--icon-flame);mask-image:var(--icon-flame)}.admonition.note{border-left-color:var(--color-admonition-title--note)}.admonition.note>.admonition-title{background-color:var(--color-admonition-title-background--note)}.admonition.note>.admonition-title:before{background-color:var(--color-admonition-title--note);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition.seealso{border-left-color:var(--color-admonition-title--seealso)}.admonition.seealso>.admonition-title{background-color:var(--color-admonition-title-background--seealso)}.admonition.seealso>.admonition-title:before{background-color:var(--color-admonition-title--seealso);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.admonition-todo{border-left-color:var(--color-admonition-title--admonition-todo)}.admonition.admonition-todo>.admonition-title{background-color:var(--color-admonition-title-background--admonition-todo)}.admonition.admonition-todo>.admonition-title:before{background-color:var(--color-admonition-title--admonition-todo);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition-todo>.admonition-title{text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:first-child{margin-top:.125rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:last-child{margin-bottom:.75rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list>dt{font-size:var(--font-size--small);text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd:empty{margin-bottom:.5rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul{margin-left:-1.2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p:nth-child(2){margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p+p:last-child:empty{margin-bottom:0;margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{color:var(--color-api-overall)}.sig:not(.sig-inline){background:var(--color-api-background);border-radius:.25rem;font-family:var(--font-stack--monospace);font-size:var(--api-font-size);font-weight:700;margin-left:-.25rem;margin-right:-.25rem;padding:.25rem .5rem .25rem 3em;text-indent:-2.5em;transition:background .1s ease-out}.sig:not(.sig-inline):hover{background:var(--color-api-background-hover)}.sig:not(.sig-inline) a.reference .viewcode-link{font-weight:400;width:4.25rem}em.property{font-style:normal}em.property:first-child{color:var(--color-api-keyword)}.sig-name{color:var(--color-api-name)}.sig-prename{color:var(--color-api-pre-name);font-weight:400}.sig-paren{color:var(--color-api-paren)}.sig-param{font-style:normal}div.deprecated,div.versionadded,div.versionchanged,div.versionremoved{border-left:.1875rem solid;border-radius:.125rem;padding-left:.75rem}div.deprecated p,div.versionadded p,div.versionchanged p,div.versionremoved p{margin-bottom:.125rem;margin-top:.125rem}div.versionadded{border-color:var(--color-api-added-border)}div.versionadded .versionmodified{color:var(--color-api-added)}div.versionchanged{border-color:var(--color-api-changed-border)}div.versionchanged .versionmodified{color:var(--color-api-changed)}div.deprecated{border-color:var(--color-api-deprecated-border)}div.deprecated .versionmodified{color:var(--color-api-deprecated)}div.versionremoved{border-color:var(--color-api-removed-border)}div.versionremoved .versionmodified{color:var(--color-api-removed)}.viewcode-back,.viewcode-link{float:right;text-align:right}.line-block{margin-bottom:.75rem;margin-top:.5rem}.line-block .line-block{margin-bottom:0;margin-top:0;padding-left:1rem}.code-block-caption,article p.caption,table>caption{font-size:var(--font-size--small);text-align:center}.toctree-wrapper.compound .caption,.toctree-wrapper.compound :not(.caption)>.caption-text{font-size:var(--font-size--small);margin-bottom:0;text-align:initial;text-transform:uppercase}.toctree-wrapper.compound>ul{margin-bottom:0;margin-top:0}.sig-inline,code.literal{background:var(--color-inline-code-background);border-radius:.2em;font-size:var(--font-size--small--2);padding:.1em .2em}pre.literal-block .sig-inline,pre.literal-block code.literal{font-size:inherit;padding:0}p .sig-inline,p code.literal{border:1px solid var(--color-background-border)}.sig-inline{font-family:var(--font-stack--monospace)}div[class*=" highlight-"],div[class^=highlight-]{display:flex;margin:1em 0}div[class*=" highlight-"] .table-wrapper,div[class^=highlight-] .table-wrapper,pre{margin:0;padding:0}pre{overflow:auto}article[role=main] .highlight pre{line-height:1.5}.highlight pre,pre.literal-block{font-size:var(--code-font-size);padding:.625rem .875rem}pre.literal-block{background-color:var(--color-code-background);border-radius:.2rem;color:var(--color-code-foreground);margin-bottom:1rem;margin-top:1rem}.highlight{border-radius:.2rem;width:100%}.highlight .gp,.highlight span.linenos{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlight .hll{display:block;margin-left:-.875rem;margin-right:-.875rem;padding-left:.875rem;padding-right:.875rem}.code-block-caption{background-color:var(--color-code-background);border-bottom:1px solid;border-radius:.25rem;border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:var(--color-background-border);color:var(--color-code-foreground);display:flex;font-weight:300;padding:.625rem .875rem}.code-block-caption+div[class]{margin-top:0}.code-block-caption+div[class] pre{border-top-left-radius:0;border-top-right-radius:0}.highlighttable{display:block;width:100%}.highlighttable tbody{display:block}.highlighttable tr{display:flex}.highlighttable td.linenos{background-color:var(--color-code-background);border-bottom-left-radius:.2rem;border-top-left-radius:.2rem;color:var(--color-code-foreground);padding:.625rem 0 .625rem .875rem}.highlighttable .linenodiv{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;font-size:var(--code-font-size);padding-right:.875rem}.highlighttable td.code{display:block;flex:1;overflow:hidden;padding:0}.highlighttable td.code .highlight{border-bottom-left-radius:0;border-top-left-radius:0}.highlight span.linenos{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;display:inline-block;margin-right:.875rem;padding-left:0;padding-right:.875rem}.footnote-reference{font-size:var(--font-size--small--4);vertical-align:super}dl.footnote.brackets{color:var(--color-foreground-secondary);display:grid;font-size:var(--font-size--small);grid-template-columns:max-content auto}dl.footnote.brackets dt{margin:0}dl.footnote.brackets dt>.fn-backref{margin-left:.25rem}dl.footnote.brackets dt:after{content:":"}dl.footnote.brackets dt .brackets:before{content:"["}dl.footnote.brackets dt .brackets:after{content:"]"}dl.footnote.brackets dd{margin:0;padding:0 1rem}aside.footnote{color:var(--color-foreground-secondary);font-size:var(--font-size--small)}aside.footnote>span,div.citation>span{float:left;font-weight:500;padding-right:.25rem}aside.footnote>:not(span),div.citation>p{margin-left:2rem}img{box-sizing:border-box;height:auto;max-width:100%}article .figure,article figure{border-radius:.2rem;margin:0}article .figure :last-child,article figure :last-child{margin-bottom:0}article .align-left{clear:left;float:left;margin:0 1rem 1rem}article .align-right{clear:right;float:right;margin:0 1rem 1rem}article .align-center,article .align-default{display:block;margin-left:auto;margin-right:auto;text-align:center}article table.align-default{display:table;text-align:initial}.domainindex-jumpbox,.genindex-jumpbox{border-bottom:1px solid var(--color-background-border);border-top:1px solid var(--color-background-border);padding:.25rem}.domainindex-section h2,.genindex-section h2{margin-bottom:.5rem;margin-top:.75rem}.domainindex-section ul,.genindex-section ul{margin-bottom:0;margin-top:0}ol,ul{margin-bottom:1rem;margin-top:1rem;padding-left:1.2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}ol li>p:last-child,ul li>p:last-child{margin-top:.25rem}ol li>ol,ol li>ul,ul li>ol,ul li>ul{margin-bottom:.5rem;margin-top:.5rem}ol.arabic{list-style:decimal}ol.loweralpha{list-style:lower-alpha}ol.upperalpha{list-style:upper-alpha}ol.lowerroman{list-style:lower-roman}ol.upperroman{list-style:upper-roman}.simple li>ol,.simple li>ul,.toctree-wrapper li>ol,.toctree-wrapper li>ul{margin-bottom:0;margin-top:0}.field-list dt,.option-list dt,dl.footnote dt,dl.glossary dt,dl.simple dt,dl:not([class]) dt{font-weight:500;margin-top:.25rem}.field-list dt+dt,.option-list dt+dt,dl.footnote dt+dt,dl.glossary dt+dt,dl.simple dt+dt,dl:not([class]) dt+dt{margin-top:0}.field-list dt .classifier:before,.option-list dt .classifier:before,dl.footnote dt .classifier:before,dl.glossary dt .classifier:before,dl.simple dt .classifier:before,dl:not([class]) dt .classifier:before{content:":";margin-left:.2rem;margin-right:.2rem}.field-list dd ul,.field-list dd>p:first-child,.option-list dd ul,.option-list dd>p:first-child,dl.footnote dd ul,dl.footnote dd>p:first-child,dl.glossary dd ul,dl.glossary dd>p:first-child,dl.simple dd ul,dl.simple dd>p:first-child,dl:not([class]) dd ul,dl:not([class]) dd>p:first-child{margin-top:.125rem}.field-list dd ul,.option-list dd ul,dl.footnote dd ul,dl.glossary dd ul,dl.simple dd ul,dl:not([class]) dd ul{margin-bottom:.125rem}.math-wrapper{overflow-x:auto;width:100%}div.math{position:relative;text-align:center}div.math .headerlink,div.math:focus .headerlink{display:none}div.math:hover .headerlink{display:inline-block}div.math span.eqno{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);z-index:1}abbr[title]{cursor:help}.problematic{color:var(--color-problematic)}kbd:not(.compound){background-color:var(--color-background-secondary);border:1px solid var(--color-foreground-border);border-radius:.2rem;box-shadow:0 .0625rem 0 rgba(0,0,0,.2),inset 0 0 0 .125rem var(--color-background-primary);color:var(--color-foreground-primary);display:inline-block;font-size:var(--font-size--small--3);margin:0 .2rem;padding:0 .2rem;vertical-align:text-bottom}blockquote{background:var(--color-background-secondary);border-left:4px solid var(--color-background-border);margin-left:0;margin-right:0;padding:.5rem 1rem}blockquote .attribution{font-weight:600;text-align:right}blockquote.highlights,blockquote.pull-quote{font-size:1.25em}blockquote.epigraph,blockquote.pull-quote{border-left-width:0;border-radius:.5rem}blockquote.highlights{background:transparent;border-left-width:0}p .reference img{vertical-align:middle}p.rubric{font-size:1.125em;font-weight:700;line-height:1.25}dd p.rubric{font-size:var(--font-size--small);font-weight:inherit;line-height:inherit;text-transform:uppercase}article .sidebar{background-color:var(--color-background-secondary);border:1px solid var(--color-background-border);border-radius:.2rem;clear:right;float:right;margin-left:1rem;margin-right:0;width:30%}article .sidebar>*{padding-left:1rem;padding-right:1rem}article .sidebar>ol,article .sidebar>ul{padding-left:2.2rem}article .sidebar .sidebar-title{border-bottom:1px solid var(--color-background-border);font-weight:500;margin:0;padding:.5rem 1rem}.table-wrapper{margin-bottom:.5rem;margin-top:1rem;overflow-x:auto;padding:.2rem .2rem .75rem;width:100%}table.docutils{border-collapse:collapse;border-radius:.2rem;border-spacing:0;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)}table.docutils th{background:var(--color-table-header-background)}table.docutils td,table.docutils th{border-bottom:1px solid var(--color-table-border);border-left:1px solid var(--color-table-border);border-right:1px solid var(--color-table-border);padding:0 .25rem}table.docutils td p,table.docutils th p{margin:.25rem}table.docutils td:first-child,table.docutils th:first-child{border-left:none}table.docutils td:last-child,table.docutils th:last-child{border-right:none}table.docutils td.text-left,table.docutils th.text-left{text-align:left}table.docutils td.text-right,table.docutils th.text-right{text-align:right}table.docutils td.text-center,table.docutils th.text-center{text-align:center}:target{scroll-margin-top:2.5rem}@media(max-width:67em){:target{scroll-margin-top:calc(2.5rem + var(--header-height))}section>span:target{scroll-margin-top:calc(2.8rem + var(--header-height))}}.headerlink{font-weight:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-block-caption>.headerlink,dl dt>.headerlink,figcaption p>.headerlink,h1>.headerlink,h2>.headerlink,h3>.headerlink,h4>.headerlink,h5>.headerlink,h6>.headerlink,p.caption>.headerlink,table>caption>.headerlink{margin-left:.5rem;visibility:hidden}.code-block-caption:hover>.headerlink,dl dt:hover>.headerlink,figcaption p:hover>.headerlink,h1:hover>.headerlink,h2:hover>.headerlink,h3:hover>.headerlink,h4:hover>.headerlink,h5:hover>.headerlink,h6:hover>.headerlink,p.caption:hover>.headerlink,table>caption:hover>.headerlink{visibility:visible}.code-block-caption>.toc-backref,dl dt>.toc-backref,figcaption p>.toc-backref,h1>.toc-backref,h2>.toc-backref,h3>.toc-backref,h4>.toc-backref,h5>.toc-backref,h6>.toc-backref,p.caption>.toc-backref,table>caption>.toc-backref{color:inherit;text-decoration-line:none}figure:hover>figcaption>p>.headerlink,table:hover>caption>.headerlink{visibility:visible}:target>h1:first-of-type,:target>h2:first-of-type,:target>h3:first-of-type,:target>h4:first-of-type,:target>h5:first-of-type,:target>h6:first-of-type,span:target~h1:first-of-type,span:target~h2:first-of-type,span:target~h3:first-of-type,span:target~h4:first-of-type,span:target~h5:first-of-type,span:target~h6:first-of-type{background-color:var(--color-highlight-on-target)}:target>h1:first-of-type code.literal,:target>h2:first-of-type code.literal,:target>h3:first-of-type code.literal,:target>h4:first-of-type code.literal,:target>h5:first-of-type code.literal,:target>h6:first-of-type code.literal,span:target~h1:first-of-type code.literal,span:target~h2:first-of-type code.literal,span:target~h3:first-of-type code.literal,span:target~h4:first-of-type code.literal,span:target~h5:first-of-type code.literal,span:target~h6:first-of-type code.literal{background-color:transparent}.literal-block-wrapper:target .code-block-caption,.this-will-duplicate-information-and-it-is-still-useful-here li :target,figure:target,table:target>caption{background-color:var(--color-highlight-on-target)}dt:target{background-color:var(--color-highlight-on-target)!important}.footnote-reference:target,.footnote>dt:target+dd{background-color:var(--color-highlight-on-target)}.guilabel{background-color:var(--color-guilabel-background);border:1px solid var(--color-guilabel-border);border-radius:.5em;color:var(--color-guilabel-text);font-size:.9em;padding:0 .3em}footer{display:flex;flex-direction:column;font-size:var(--font-size--small);margin-top:2rem}.bottom-of-page{align-items:center;border-top:1px solid var(--color-background-border);color:var(--color-foreground-secondary);display:flex;justify-content:space-between;line-height:1.5;margin-top:1rem;padding-bottom:1rem;padding-top:1rem}@media(max-width:46em){.bottom-of-page{flex-direction:column-reverse;gap:.25rem;text-align:center}}.bottom-of-page .left-details{font-size:var(--font-size--small)}.bottom-of-page .right-details{display:flex;flex-direction:column;gap:.25rem;text-align:right}.bottom-of-page .icons{display:flex;font-size:1rem;gap:.25rem;justify-content:flex-end}.bottom-of-page .icons a{text-decoration:none}.bottom-of-page .icons img,.bottom-of-page .icons svg{font-size:1.125rem;height:1em;width:1em}.related-pages a{align-items:center;display:flex;text-decoration:none}.related-pages a:hover .page-info .title{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}.related-pages a svg.furo-related-icon,.related-pages a svg.furo-related-icon>use{color:var(--color-foreground-border);flex-shrink:0;height:.75rem;margin:0 .5rem;width:.75rem}.related-pages a.next-page{clear:right;float:right;max-width:50%;text-align:right}.related-pages a.prev-page{clear:left;float:left;max-width:50%}.related-pages a.prev-page svg{transform:rotate(180deg)}.page-info{display:flex;flex-direction:column;overflow-wrap:anywhere}.next-page .page-info{align-items:flex-end}.page-info .context{align-items:center;color:var(--color-foreground-muted);display:flex;font-size:var(--font-size--small);padding-bottom:.1rem;text-decoration:none}ul.search{list-style:none;padding-left:0}ul.search li{border-bottom:1px solid var(--color-background-border);padding:1rem 0}[role=main] .highlighted{background-color:var(--color-highlighted-background);color:var(--color-highlighted-text)}.sidebar-brand{display:flex;flex-direction:column;flex-shrink:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none}.sidebar-brand-text{color:var(--color-sidebar-brand-text);font-size:1.5rem;overflow-wrap:break-word}.sidebar-brand-text,.sidebar-logo-container{margin:var(--sidebar-item-spacing-vertical) 0}.sidebar-logo{display:block;margin:0 auto;max-width:100%}.sidebar-search-container{align-items:center;background:var(--color-sidebar-search-background);display:flex;margin-top:var(--sidebar-search-space-above);position:relative}.sidebar-search-container:focus-within,.sidebar-search-container:hover{background:var(--color-sidebar-search-background--focus)}.sidebar-search-container:before{background-color:var(--color-sidebar-search-icon);content:"";height:var(--sidebar-search-icon-size);left:var(--sidebar-item-spacing-horizontal);-webkit-mask-image:var(--icon-search);mask-image:var(--icon-search);position:absolute;width:var(--sidebar-search-icon-size)}.sidebar-search{background:transparent;border:none;border-bottom:1px solid var(--color-sidebar-search-border);border-top:1px solid var(--color-sidebar-search-border);box-sizing:border-box;color:var(--color-sidebar-search-foreground);padding:var(--sidebar-search-input-spacing-vertical) var(--sidebar-search-input-spacing-horizontal) var(--sidebar-search-input-spacing-vertical) calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size));width:100%;z-index:10}.sidebar-search:focus{outline:none}.sidebar-search::-moz-placeholder{font-size:var(--sidebar-search-input-font-size)}.sidebar-search::placeholder{font-size:var(--sidebar-search-input-font-size)}#searchbox .highlight-link{margin:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0;text-align:center}#searchbox .highlight-link a{color:var(--color-sidebar-search-icon);font-size:var(--font-size--small--2)}.sidebar-tree{font-size:var(--sidebar-item-font-size);margin-bottom:var(--sidebar-item-spacing-vertical);margin-top:var(--sidebar-tree-space-above)}.sidebar-tree ul{display:flex;flex-direction:column;list-style:none;margin-bottom:0;margin-top:0;padding:0}.sidebar-tree li{margin:0;position:relative}.sidebar-tree li>ul{margin-left:var(--sidebar-item-spacing-horizontal)}.sidebar-tree .icon,.sidebar-tree .reference{color:var(--color-sidebar-link-text)}.sidebar-tree .reference{box-sizing:border-box;display:inline-block;height:100%;line-height:var(--sidebar-item-line-height);overflow-wrap:anywhere;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none;width:100%}.sidebar-tree .reference:hover{background:var(--color-sidebar-item-background--hover);color:var(--color-sidebar-link-text)}.sidebar-tree .reference.external:after{color:var(--color-sidebar-link-text);content:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23607D8B' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' viewBox='0 0 24 24'%3E%3Cpath stroke='none' d='M0 0h24v24H0z'/%3E%3Cpath d='M11 7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-5M10 14 20 4M15 4h5v5'/%3E%3C/svg%3E");margin:0 .25rem;vertical-align:middle}.sidebar-tree .current-page>.reference{font-weight:700}.sidebar-tree label{align-items:center;cursor:pointer;display:flex;height:var(--sidebar-item-height);justify-content:center;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--sidebar-expander-width)}.sidebar-tree .caption,.sidebar-tree :not(.caption)>.caption-text{color:var(--color-sidebar-caption-text);font-size:var(--sidebar-caption-font-size);font-weight:700;margin:var(--sidebar-caption-space-above) 0 0 0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-transform:uppercase}.sidebar-tree li.has-children>.reference{padding-right:var(--sidebar-expander-width)}.sidebar-tree .toctree-l1>.reference,.sidebar-tree .toctree-l1>label .icon{color:var(--color-sidebar-link-text--top-level)}.sidebar-tree label{background:var(--color-sidebar-item-expander-background)}.sidebar-tree label:hover{background:var(--color-sidebar-item-expander-background--hover)}.sidebar-tree .current>.reference{background:var(--color-sidebar-item-background--current)}.sidebar-tree .current>.reference:hover{background:var(--color-sidebar-item-background--hover)}.toctree-checkbox{display:none;position:absolute}.toctree-checkbox~ul{display:none}.toctree-checkbox~label .icon svg{transform:rotate(90deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label .icon svg{transform:rotate(-90deg)}.toc-title-container{padding:var(--toc-title-padding);padding-top:var(--toc-spacing-vertical)}.toc-title{color:var(--color-toc-title-text);font-size:var(--toc-title-font-size);padding-left:var(--toc-spacing-horizontal);text-transform:uppercase}.no-toc{display:none}.toc-tree-container{padding-bottom:var(--toc-spacing-vertical)}.toc-tree{border-left:1px solid var(--color-background-border);font-size:var(--toc-font-size);line-height:1.3;padding-left:calc(var(--toc-spacing-horizontal) - var(--toc-item-spacing-horizontal))}.toc-tree>ul>li:first-child{padding-top:0}.toc-tree>ul>li:first-child>ul{padding-left:0}.toc-tree>ul>li:first-child>a{display:none}.toc-tree ul{list-style-type:none;margin-bottom:0;margin-top:0;padding-left:var(--toc-item-spacing-horizontal)}.toc-tree li{padding-top:var(--toc-item-spacing-vertical)}.toc-tree li.scroll-current>.reference{color:var(--color-toc-item-text--active);font-weight:700}.toc-tree a.reference{color:var(--color-toc-item-text);overflow-wrap:anywhere;text-decoration:none}.toc-scroll{max-height:100vh;overflow-y:scroll}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here){background:rgba(255,0,0,.25);color:var(--color-problematic)}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here):before{content:"ERROR: Adding a table of contents in Furo-based documentation is unnecessary, and does not work well with existing styling. Add a 'this-will-duplicate-information-and-it-is-still-useful-here' class, if you want an escape hatch."}.text-align\:left>p{text-align:left}.text-align\:center>p{text-align:center}.text-align\:right>p{text-align:right} +/*# sourceMappingURL=furo.css.map*/ \ No newline at end of file diff --git a/latest/_static/styles/furo.css.map b/latest/_static/styles/furo.css.map new file mode 100644 index 0000000..0ee3acb --- /dev/null +++ b/latest/_static/styles/furo.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo.css","mappings":"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","sources":["webpack:///./node_modules/normalize.css/normalize.css","webpack:///./src/furo/assets/styles/base/_print.sass","webpack:///./src/furo/assets/styles/base/_screen-readers.sass","webpack:///./src/furo/assets/styles/base/_theme.sass","webpack:///./src/furo/assets/styles/variables/_fonts.scss","webpack:///./src/furo/assets/styles/variables/_spacing.scss","webpack:///./src/furo/assets/styles/variables/_icons.scss","webpack:///./src/furo/assets/styles/variables/_admonitions.scss","webpack:///./src/furo/assets/styles/variables/_colors.scss","webpack:///./src/furo/assets/styles/base/_typography.sass","webpack:///./src/furo/assets/styles/_scaffold.sass","webpack:///./src/furo/assets/styles/variables/_layout.scss","webpack:///./src/furo/assets/styles/content/_admonitions.sass","webpack:///./src/furo/assets/styles/content/_api.sass","webpack:///./src/furo/assets/styles/content/_blocks.sass","webpack:///./src/furo/assets/styles/content/_captions.sass","webpack:///./src/furo/assets/styles/content/_code.sass","webpack:///./src/furo/assets/styles/content/_footnotes.sass","webpack:///./src/furo/assets/styles/content/_images.sass","webpack:///./src/furo/assets/styles/content/_indexes.sass","webpack:///./src/furo/assets/styles/content/_lists.sass","webpack:///./src/furo/assets/styles/content/_math.sass","webpack:///./src/furo/assets/styles/content/_misc.sass","webpack:///./src/furo/assets/styles/content/_rubrics.sass","webpack:///./src/furo/assets/styles/content/_sidebar.sass","webpack:///./src/furo/assets/styles/content/_tables.sass","webpack:///./src/furo/assets/styles/content/_target.sass","webpack:///./src/furo/assets/styles/content/_gui-labels.sass","webpack:///./src/furo/assets/styles/components/_footer.sass","webpack:///./src/furo/assets/styles/components/_sidebar.sass","webpack:///./src/furo/assets/styles/components/_table_of_contents.sass","webpack:///./src/furo/assets/styles/_shame.sass"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// This file contains styles for managing print media.\n\n////////////////////////////////////////////////////////////////////////////////\n// Hide elements not relevant to print media.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Hide icon container.\n .content-icon-container\n display: none !important\n\n // Hide showing header links if hovering over when printing.\n .headerlink\n display: none !important\n\n // Hide mobile header.\n .mobile-header\n display: none !important\n\n // Hide navigation links.\n .related-pages\n display: none !important\n\n////////////////////////////////////////////////////////////////////////////////\n// Tweaks related to decolorization.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Apply a border around code which no longer have a color background.\n .highlight\n border: 0.1pt solid var(--color-foreground-border)\n\n////////////////////////////////////////////////////////////////////////////////\n// Avoid page break in some relevant cases.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n ul, ol, dl, a, table, pre, blockquote\n page-break-inside: avoid\n\n h1, h2, h3, h4, h5, h6, img, figure, caption\n page-break-inside: avoid\n page-break-after: avoid\n\n ul, ol, dl\n page-break-before: avoid\n",".visually-hidden\n position: absolute !important\n width: 1px !important\n height: 1px !important\n padding: 0 !important\n margin: -1px !important\n overflow: hidden !important\n clip: rect(0,0,0,0) !important\n white-space: nowrap !important\n border: 0 !important\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n:-moz-focusring\n outline: auto\n","// This file serves as the \"skeleton\" of the theming logic.\n//\n// This contains the bulk of the logic for handling dark mode, color scheme\n// toggling and the handling of color-scheme-specific hiding of elements.\n\nbody\n @include fonts\n @include spacing\n @include icons\n @include admonitions\n @include default-admonition(#651fff, \"abstract\")\n @include default-topic(#14B8A6, \"pencil\")\n\n @include colors\n\n.only-light\n display: block !important\nhtml body .only-dark\n display: none !important\n\n// Ignore dark-mode hints if print media.\n@media not print\n // Enable dark-mode, if requested.\n body[data-theme=\"dark\"]\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n // Enable dark mode, unless explicitly told to avoid.\n @media (prefers-color-scheme: dark)\n body:not([data-theme=\"light\"])\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n//\n// Theme toggle presentation\n//\nbody[data-theme=\"auto\"]\n .theme-toggle svg.theme-icon-when-auto-light\n display: block\n\n @media (prefers-color-scheme: dark)\n .theme-toggle svg.theme-icon-when-auto-dark\n display: block\n .theme-toggle svg.theme-icon-when-auto-light\n display: none\n\nbody[data-theme=\"dark\"]\n .theme-toggle svg.theme-icon-when-dark\n display: block\n\nbody[data-theme=\"light\"]\n .theme-toggle svg.theme-icon-when-light\n display: block\n","// Fonts used by this theme.\n//\n// There are basically two things here -- using the system font stack and\n// defining sizes for various elements in %ages. We could have also used `em`\n// but %age is easier to reason about for me.\n\n@mixin fonts {\n // These are adapted from https://systemfontstack.com/\n --font-stack: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji;\n --font-stack--monospace: \"SFMono-Regular\", Menlo, Consolas, Monaco,\n Liberation Mono, Lucida Console, monospace;\n --font-stack--headings: var(--font-stack);\n\n --font-size--normal: 100%;\n --font-size--small: 87.5%;\n --font-size--small--2: 81.25%;\n --font-size--small--3: 75%;\n --font-size--small--4: 62.5%;\n\n // Sidebar\n --sidebar-caption-font-size: var(--font-size--small--2);\n --sidebar-item-font-size: var(--font-size--small);\n --sidebar-search-input-font-size: var(--font-size--small);\n\n // Table of Contents\n --toc-font-size: var(--font-size--small--3);\n --toc-font-size--mobile: var(--font-size--normal);\n --toc-title-font-size: var(--font-size--small--4);\n\n // Admonitions\n //\n // These aren't defined in terms of %ages, since nesting these is permitted.\n --admonition-font-size: 0.8125rem;\n --admonition-title-font-size: 0.8125rem;\n\n // Code\n --code-font-size: var(--font-size--small--2);\n\n // API\n --api-font-size: var(--font-size--small);\n}\n","// Spacing for various elements on the page\n//\n// If the user wants to tweak things in a certain way, they are permitted to.\n// They also have to deal with the consequences though!\n\n@mixin spacing {\n // Header!\n --header-height: calc(\n var(--sidebar-item-line-height) + 4 * #{var(--sidebar-item-spacing-vertical)}\n );\n --header-padding: 0.5rem;\n\n // Sidebar\n --sidebar-tree-space-above: 1.5rem;\n --sidebar-caption-space-above: 1rem;\n\n --sidebar-item-line-height: 1rem;\n --sidebar-item-spacing-vertical: 0.5rem;\n --sidebar-item-spacing-horizontal: 1rem;\n --sidebar-item-height: calc(\n var(--sidebar-item-line-height) + 2 *#{var(--sidebar-item-spacing-vertical)}\n );\n\n --sidebar-expander-width: var(--sidebar-item-height); // be square\n\n --sidebar-search-space-above: 0.5rem;\n --sidebar-search-input-spacing-vertical: 0.5rem;\n --sidebar-search-input-spacing-horizontal: 0.5rem;\n --sidebar-search-input-height: 1rem;\n --sidebar-search-icon-size: var(--sidebar-search-input-height);\n\n // Table of Contents\n --toc-title-padding: 0.25rem 0;\n --toc-spacing-vertical: 1.5rem;\n --toc-spacing-horizontal: 1.5rem;\n --toc-item-spacing-vertical: 0.4rem;\n --toc-item-spacing-horizontal: 1rem;\n}\n","// Expose theme icons as CSS variables.\n\n$icons: (\n // Adapted from tabler-icons\n // url: https://tablericons.com/\n \"search\":\n url('data:image/svg+xml;charset=utf-8,'),\n // Factored out from mkdocs-material on 24-Aug-2020.\n // url: https://squidfunk.github.io/mkdocs-material/reference/admonitions/\n \"pencil\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"abstract\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"info\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"flame\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"question\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"warning\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"failure\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"spark\":\n url('data:image/svg+xml;charset=utf-8,')\n);\n\n@mixin icons {\n @each $name, $glyph in $icons {\n --icon-#{$name}: #{$glyph};\n }\n}\n","// Admonitions\n\n// Structure of these is:\n// admonition-class: color \"icon-name\";\n//\n// The colors are translated into CSS variables below. The icons are\n// used directly in the main declarations to set the `mask-image` in\n// the title.\n\n// prettier-ignore\n$admonitions: (\n // Each of these has an reST directives for it.\n \"caution\": #ff9100 \"spark\",\n \"warning\": #ff9100 \"warning\",\n \"danger\": #ff5252 \"spark\",\n \"attention\": #ff5252 \"warning\",\n \"error\": #ff5252 \"failure\",\n \"hint\": #00c852 \"question\",\n \"tip\": #00c852 \"info\",\n \"important\": #00bfa5 \"flame\",\n \"note\": #00b0ff \"pencil\",\n \"seealso\": #448aff \"info\",\n \"admonition-todo\": #808080 \"pencil\"\n);\n\n@mixin default-admonition($color, $icon-name) {\n --color-admonition-title: #{$color};\n --color-admonition-title-background: #{rgba($color, 0.2)};\n\n --icon-admonition-default: var(--icon-#{$icon-name});\n}\n\n@mixin default-topic($color, $icon-name) {\n --color-topic-title: #{$color};\n --color-topic-title-background: #{rgba($color, 0.2)};\n\n --icon-topic-default: var(--icon-#{$icon-name});\n}\n\n@mixin admonitions {\n @each $name, $values in $admonitions {\n --color-admonition-title--#{$name}: #{nth($values, 1)};\n --color-admonition-title-background--#{$name}: #{rgba(\n nth($values, 1),\n 0.2\n )};\n }\n}\n","// Colors used throughout this theme.\n//\n// The aim is to give the user more control. Thus, instead of hard-coding colors\n// in various parts of the stylesheet, the approach taken is to define all\n// colors as CSS variables and reusing them in all the places.\n//\n// `colors-dark` depends on `colors` being included at a lower specificity.\n\n@mixin colors {\n --color-problematic: #b30000;\n\n // Base Colors\n --color-foreground-primary: black; // for main text and headings\n --color-foreground-secondary: #5a5c63; // for secondary text\n --color-foreground-muted: #6b6f76; // for muted text\n --color-foreground-border: #878787; // for content borders\n\n --color-background-primary: white; // for content\n --color-background-secondary: #f8f9fb; // for navigation + ToC\n --color-background-hover: #efeff4ff; // for navigation-item hover\n --color-background-hover--transparent: #efeff400;\n --color-background-border: #eeebee; // for UI borders\n --color-background-item: #ccc; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #0a4bff;\n --color-brand-content: #2757dd;\n --color-brand-visited: #872ee0;\n\n // API documentation\n --color-api-background: var(--color-background-hover--transparent);\n --color-api-background-hover: var(--color-background-hover);\n --color-api-overall: var(--color-foreground-secondary);\n --color-api-name: var(--color-problematic);\n --color-api-pre-name: var(--color-problematic);\n --color-api-paren: var(--color-foreground-secondary);\n --color-api-keyword: var(--color-foreground-primary);\n\n --color-api-added: #21632c;\n --color-api-added-border: #38a84d;\n --color-api-changed: #046172;\n --color-api-changed-border: #06a1bc;\n --color-api-deprecated: #605706;\n --color-api-deprecated-border: #f0d90f;\n --color-api-removed: #b30000;\n --color-api-removed-border: #ff5c5c;\n\n --color-highlight-on-target: #ffffcc;\n\n // Inline code background\n --color-inline-code-background: var(--color-background-secondary);\n\n // Highlighted text (search)\n --color-highlighted-background: #ddeeff;\n --color-highlighted-text: var(--color-foreground-primary);\n\n // GUI Labels\n --color-guilabel-background: #ddeeff80;\n --color-guilabel-border: #bedaf580;\n --color-guilabel-text: var(--color-foreground-primary);\n\n // Admonitions!\n --color-admonition-background: transparent;\n\n //////////////////////////////////////////////////////////////////////////////\n // Everything below this should be one of:\n // - var(...)\n // - *-gradient(...)\n // - special literal values (eg: transparent, none)\n //////////////////////////////////////////////////////////////////////////////\n\n // Tables\n --color-table-header-background: var(--color-background-secondary);\n --color-table-border: var(--color-background-border);\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: transparent;\n --color-card-marginals-background: var(--color-background-secondary);\n\n // Header\n --color-header-background: var(--color-background-primary);\n --color-header-border: var(--color-background-border);\n --color-header-text: var(--color-foreground-primary);\n\n // Sidebar (left)\n --color-sidebar-background: var(--color-background-secondary);\n --color-sidebar-background-border: var(--color-background-border);\n\n --color-sidebar-brand-text: var(--color-foreground-primary);\n --color-sidebar-caption-text: var(--color-foreground-muted);\n --color-sidebar-link-text: var(--color-foreground-secondary);\n --color-sidebar-link-text--top-level: var(--color-brand-primary);\n\n --color-sidebar-item-background: var(--color-sidebar-background);\n --color-sidebar-item-background--current: var(\n --color-sidebar-item-background\n );\n --color-sidebar-item-background--hover: linear-gradient(\n 90deg,\n var(--color-background-hover--transparent) 0%,\n var(--color-background-hover) var(--sidebar-item-spacing-horizontal),\n var(--color-background-hover) 100%\n );\n\n --color-sidebar-item-expander-background: transparent;\n --color-sidebar-item-expander-background--hover: var(\n --color-background-hover\n );\n\n --color-sidebar-search-text: var(--color-foreground-primary);\n --color-sidebar-search-background: var(--color-background-secondary);\n --color-sidebar-search-background--focus: var(--color-background-primary);\n --color-sidebar-search-border: var(--color-background-border);\n --color-sidebar-search-icon: var(--color-foreground-muted);\n\n // Table of Contents (right)\n --color-toc-background: var(--color-background-primary);\n --color-toc-title-text: var(--color-foreground-muted);\n --color-toc-item-text: var(--color-foreground-secondary);\n --color-toc-item-text--hover: var(--color-foreground-primary);\n --color-toc-item-text--active: var(--color-brand-primary);\n\n // Actual page contents\n --color-content-foreground: var(--color-foreground-primary);\n --color-content-background: transparent;\n\n // Links\n --color-link: var(--color-brand-content);\n --color-link-underline: var(--color-background-border);\n --color-link--hover: var(--color-brand-content);\n --color-link-underline--hover: var(--color-foreground-border);\n\n --color-link--visited: var(--color-brand-visited);\n --color-link-underline--visited: var(--color-background-border);\n --color-link--visited--hover: var(--color-brand-visited);\n --color-link-underline--visited--hover: var(--color-foreground-border);\n}\n\n@mixin colors-dark {\n --color-problematic: #ee5151;\n\n // Base Colors\n --color-foreground-primary: #cfd0d0; // for main text and headings\n --color-foreground-secondary: #9ca0a5; // for secondary text\n --color-foreground-muted: #81868d; // for muted text\n --color-foreground-border: #666666; // for content borders\n\n --color-background-primary: #131416; // for content\n --color-background-secondary: #1a1c1e; // for navigation + ToC\n --color-background-hover: #1e2124ff; // for navigation-item hover\n --color-background-hover--transparent: #1e212400;\n --color-background-border: #303335; // for UI borders\n --color-background-item: #444; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #3d94ff;\n --color-brand-content: #5ca5ff;\n --color-brand-visited: #b27aeb;\n\n // Highlighted text (search)\n --color-highlighted-background: #083563;\n\n // GUI Labels\n --color-guilabel-background: #08356380;\n --color-guilabel-border: #13395f80;\n\n // API documentation\n --color-api-keyword: var(--color-foreground-secondary);\n --color-highlight-on-target: #333300;\n\n --color-api-added: #3db854;\n --color-api-added-border: #267334;\n --color-api-changed: #09b0ce;\n --color-api-changed-border: #056d80;\n --color-api-deprecated: #b1a10b;\n --color-api-deprecated-border: #6e6407;\n --color-api-removed: #ff7575;\n --color-api-removed-border: #b03b3b;\n\n // Admonitions\n --color-admonition-background: #18181a;\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: #18181a;\n --color-card-marginals-background: var(--color-background-hover);\n}\n","// This file contains the styling for making the content throughout the page,\n// including fonts, paragraphs, headings and spacing among these elements.\n\nbody\n font-family: var(--font-stack)\npre,\ncode,\nkbd,\nsamp\n font-family: var(--font-stack--monospace)\n\n// Make fonts look slightly nicer.\nbody\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n// Line height from Bootstrap 4.1\narticle\n line-height: 1.5\n\n//\n// Headings\n//\nh1,\nh2,\nh3,\nh4,\nh5,\nh6\n line-height: 1.25\n font-family: var(--font-stack--headings)\n font-weight: bold\n\n border-radius: 0.5rem\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n margin-left: -0.5rem\n margin-right: -0.5rem\n padding-left: 0.5rem\n padding-right: 0.5rem\n\n + p\n margin-top: 0\n\nh1\n font-size: 2.5em\n margin-top: 1.75rem\n margin-bottom: 1rem\nh2\n font-size: 2em\n margin-top: 1.75rem\nh3\n font-size: 1.5em\nh4\n font-size: 1.25em\nh5\n font-size: 1.125em\nh6\n font-size: 1em\n\nsmall\n opacity: 75%\n font-size: 80%\n\n// Paragraph\np\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n\n// Horizontal rules\nhr.docutils\n height: 1px\n padding: 0\n margin: 2rem 0\n background-color: var(--color-background-border)\n border: 0\n\n.centered\n text-align: center\n\n// Links\na\n text-decoration: underline\n\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n &:visited\n color: var(--color-link--visited)\n text-decoration-color: var(--color-link-underline--visited)\n &:hover\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &.muted-link\n color: inherit\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &:visited\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n","// This file contains the styles for the overall layouting of the documentation\n// skeleton, including the responsive changes as well as sidebar toggles.\n//\n// This is implemented as a mobile-last design, which isn't ideal, but it is\n// reasonably good-enough and I got pretty tired by the time I'd finished this\n// to move the rules around to fix this. Shouldn't take more than 3-4 hours,\n// if you know what you're doing tho.\n\n// HACK: Not all browsers account for the scrollbar width in media queries.\n// This results in horizontal scrollbars in the breakpoint where we go\n// from displaying everything to hiding the ToC. We accomodate for this by\n// adding a bit of padding to the TOC drawer, disabling the horizontal\n// scrollbar and allowing the scrollbars to cover the padding.\n// https://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/\n\n// HACK: Always having the scrollbar visible, prevents certain browsers from\n// causing the content to stutter horizontally between taller-than-viewport and\n// not-taller-than-viewport pages.\n\nhtml\n overflow-x: hidden\n overflow-y: scroll\n scroll-behavior: smooth\n\n.sidebar-scroll, .toc-scroll, article[role=main] *\n // Override Firefox scrollbar style\n scrollbar-width: thin\n scrollbar-color: var(--color-foreground-border) transparent\n\n // Override Chrome scrollbar styles\n &::-webkit-scrollbar\n width: 0.25rem\n height: 0.25rem\n &::-webkit-scrollbar-thumb\n background-color: var(--color-foreground-border)\n border-radius: 0.125rem\n\n//\n// Overalls\n//\nhtml,\nbody\n height: 100%\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n.skip-to-content\n position: fixed\n padding: 1rem\n border-radius: 1rem\n left: 0.25rem\n top: 0.25rem\n z-index: 40\n background: var(--color-background-primary)\n color: var(--color-foreground-primary)\n\n transform: translateY(-200%)\n transition: transform 300ms ease-in-out\n\n &:focus-within\n transform: translateY(0%)\n\narticle\n color: var(--color-content-foreground)\n background: var(--color-content-background)\n overflow-wrap: break-word\n\n.page\n display: flex\n // fill the viewport for pages with little content.\n min-height: 100%\n\n.mobile-header\n width: 100%\n height: var(--header-height)\n background-color: var(--color-header-background)\n color: var(--color-header-text)\n border-bottom: 1px solid var(--color-header-border)\n\n // Looks like sub-script/super-script have this, and we need this to\n // be \"on top\" of those.\n z-index: 10\n\n // We don't show the header on large screens.\n display: none\n\n // Add shadow when scrolled\n &.scrolled\n border-bottom: none\n box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2)\n\n .header-center\n a\n color: var(--color-header-text)\n text-decoration: none\n\n.main\n display: flex\n flex: 1\n\n// Sidebar (left) also covers the entire left portion of screen.\n.sidebar-drawer\n box-sizing: border-box\n\n border-right: 1px solid var(--color-sidebar-background-border)\n background: var(--color-sidebar-background)\n\n display: flex\n justify-content: flex-end\n // These next two lines took me two days to figure out.\n width: calc((100% - #{$full-width}) / 2 + #{$sidebar-width})\n min-width: $sidebar-width\n\n// Scroll-along sidebars\n.sidebar-container,\n.toc-drawer\n box-sizing: border-box\n width: $sidebar-width\n\n.toc-drawer\n background: var(--color-toc-background)\n // See HACK described on top of this document\n padding-right: 1rem\n\n.sidebar-sticky,\n.toc-sticky\n position: sticky\n top: 0\n height: min(100%, 100vh)\n height: 100vh\n\n display: flex\n flex-direction: column\n\n.sidebar-scroll,\n.toc-scroll\n flex-grow: 1\n flex-shrink: 1\n\n overflow: auto\n scroll-behavior: smooth\n\n// Central items.\n.content\n padding: 0 $content-padding\n width: $content-width\n\n display: flex\n flex-direction: column\n justify-content: space-between\n\n.icon\n display: inline-block\n height: 1rem\n width: 1rem\n svg\n width: 100%\n height: 100%\n\n//\n// Accommodate announcement banner\n//\n.announcement\n background-color: var(--color-announcement-background)\n color: var(--color-announcement-text)\n\n height: var(--header-height)\n display: flex\n align-items: center\n overflow-x: auto\n & + .page\n min-height: calc(100% - var(--header-height))\n\n.announcement-content\n box-sizing: border-box\n padding: 0.5rem\n min-width: 100%\n white-space: nowrap\n text-align: center\n\n a\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-announcement-text)\n\n &:hover\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-link--hover)\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for theme\n////////////////////////////////////////////////////////////////////////////////\n.no-js .theme-toggle-container // don't show theme toggle if there's no JS\n display: none\n\n.theme-toggle-container\n display: flex\n\n.theme-toggle\n display: flex\n cursor: pointer\n border: none\n padding: 0\n background: transparent\n\n.theme-toggle svg\n height: 1.25rem\n width: 1.25rem\n color: var(--color-foreground-primary)\n display: none\n\n.theme-toggle-header\n display: flex\n align-items: center\n justify-content: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for elements\n////////////////////////////////////////////////////////////////////////////////\n.toc-overlay-icon, .nav-overlay-icon\n display: none\n cursor: pointer\n\n .icon\n color: var(--color-foreground-secondary)\n height: 1.5rem\n width: 1.5rem\n\n.toc-header-icon, .nav-overlay-icon\n // for when we set display: flex\n justify-content: center\n align-items: center\n\n.toc-content-icon\n height: 1.5rem\n width: 1.5rem\n\n.content-icon-container\n float: right\n display: flex\n margin-top: 1.5rem\n margin-left: 1rem\n margin-bottom: 1rem\n gap: 0.5rem\n\n .edit-this-page, .view-this-page\n svg\n color: inherit\n height: 1.25rem\n width: 1.25rem\n\n.sidebar-toggle\n position: absolute\n display: none\n// \n.sidebar-toggle[name=\"__toc\"]\n left: 20px\n.sidebar-toggle:checked\n left: 40px\n// \n\n.overlay\n position: fixed\n top: 0\n width: 0\n height: 0\n\n transition: width 0ms, height 0ms, opacity 250ms ease-out\n\n opacity: 0\n background-color: rgba(0, 0, 0, 0.54)\n.sidebar-overlay\n z-index: 20\n.toc-overlay\n z-index: 40\n\n// Keep things on top and smooth.\n.sidebar-drawer\n z-index: 30\n transition: left 250ms ease-in-out\n.toc-drawer\n z-index: 50\n transition: right 250ms ease-in-out\n\n// Show the Sidebar\n#__navigation:checked\n & ~ .sidebar-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .sidebar-drawer\n top: 0\n left: 0\n // Show the toc sidebar\n#__toc:checked\n & ~ .toc-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .toc-drawer\n top: 0\n right: 0\n\n////////////////////////////////////////////////////////////////////////////////\n// Back to top\n////////////////////////////////////////////////////////////////////////////////\n.back-to-top\n text-decoration: none\n\n display: none\n position: fixed\n left: 0\n top: 1rem\n padding: 0.5rem\n padding-right: 0.75rem\n border-radius: 1rem\n font-size: 0.8125rem\n\n background: var(--color-background-primary)\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), #6b728080 0px 0px 1px 0px\n\n z-index: 10\n\n margin-left: 50%\n transform: translateX(-50%)\n svg\n height: 1rem\n width: 1rem\n fill: currentColor\n display: inline-block\n\n span\n margin-left: 0.25rem\n\n .show-back-to-top &\n display: flex\n align-items: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Responsive layouting\n////////////////////////////////////////////////////////////////////////////////\n// Make things a bit bigger on bigger screens.\n@media (min-width: $full-width + $sidebar-width)\n html\n font-size: 110%\n\n@media (max-width: $full-width)\n // Collapse \"toc\" into the icon.\n .toc-content-icon\n display: flex\n .toc-drawer\n position: fixed\n height: 100vh\n top: 0\n right: -$sidebar-width\n border-left: 1px solid var(--color-background-muted)\n .toc-tree\n border-left: none\n font-size: var(--toc-font-size--mobile)\n\n // Accomodate for a changed content width.\n .sidebar-drawer\n width: calc((100% - #{$full-width - $sidebar-width}) / 2 + #{$sidebar-width})\n\n@media (max-width: $full-width - $sidebar-width)\n // Collapse \"navigation\".\n .nav-overlay-icon\n display: flex\n .sidebar-drawer\n position: fixed\n height: 100vh\n width: $sidebar-width\n\n top: 0\n left: -$sidebar-width\n\n // Swap which icon is visible.\n .toc-header-icon, .theme-toggle-header\n display: flex\n .toc-content-icon, .theme-toggle-content\n display: none\n\n // Show the header.\n .mobile-header\n position: sticky\n top: 0\n display: flex\n justify-content: space-between\n align-items: center\n\n .header-left,\n .header-right\n display: flex\n height: var(--header-height)\n padding: 0 var(--header-padding)\n label\n height: 100%\n width: 100%\n user-select: none\n\n .nav-overlay-icon .icon,\n .theme-toggle svg\n height: 1.5rem\n width: 1.5rem\n\n // Add a scroll margin for the content\n :target\n scroll-margin-top: calc(var(--header-height) + 2.5rem)\n\n // Show back-to-top below the header\n .back-to-top\n top: calc(var(--header-height) + 0.5rem)\n\n // Center the page, and accommodate for the header.\n .page\n flex-direction: column\n justify-content: center\n .content\n margin-left: auto\n margin-right: auto\n\n@media (max-width: $content-width + 2* $content-padding)\n // Content should respect window limits.\n .content\n width: 100%\n overflow-x: auto\n\n@media (max-width: $content-width)\n .content\n padding: 0 $content-padding--small\n // Don't float sidebars to the right.\n article aside.sidebar\n float: none\n width: 100%\n margin: 1rem 0\n","// Overall Layout Variables\n//\n// Because CSS variables can't be used in media queries. The fact that this\n// makes the layout non-user-configurable is a good thing.\n$content-padding: 3em;\n$content-padding--small: 1em;\n$content-width: 46em;\n$sidebar-width: 15em;\n$full-width: $content-width + 2 * ($content-padding + $sidebar-width);\n","//\n// The design here is strongly inspired by mkdocs-material.\n.admonition, .topic\n margin: 1rem auto\n padding: 0 0.5rem 0.5rem 0.5rem\n\n background: var(--color-admonition-background)\n\n border-radius: 0.2rem\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n font-size: var(--admonition-font-size)\n\n overflow: hidden\n page-break-inside: avoid\n\n // First element should have no margin, since the title has it.\n > :nth-child(2)\n margin-top: 0\n\n // Last item should have no margin, since we'll control that w/ padding\n > :last-child\n margin-bottom: 0\n\n.admonition p.admonition-title,\np.topic-title\n position: relative\n margin: 0 -0.5rem 0.5rem\n padding-left: 2rem\n padding-right: .5rem\n padding-top: .4rem\n padding-bottom: .4rem\n\n font-weight: 500\n font-size: var(--admonition-title-font-size)\n line-height: 1.3\n\n // Our fancy icon\n &::before\n content: \"\"\n position: absolute\n left: 0.5rem\n width: 1rem\n height: 1rem\n\n// Default styles\np.admonition-title\n background-color: var(--color-admonition-title-background)\n &::before\n background-color: var(--color-admonition-title)\n mask-image: var(--icon-admonition-default)\n mask-repeat: no-repeat\n\np.topic-title\n background-color: var(--color-topic-title-background)\n &::before\n background-color: var(--color-topic-title)\n mask-image: var(--icon-topic-default)\n mask-repeat: no-repeat\n\n//\n// Variants\n//\n.admonition\n border-left: 0.2rem solid var(--color-admonition-title)\n\n @each $type, $value in $admonitions\n &.#{$type}\n border-left-color: var(--color-admonition-title--#{$type})\n > .admonition-title\n background-color: var(--color-admonition-title-background--#{$type})\n &::before\n background-color: var(--color-admonition-title--#{$type})\n mask-image: var(--icon-#{nth($value, 2)})\n\n.admonition-todo > .admonition-title\n text-transform: uppercase\n","// This file stylizes the API documentation (stuff generated by autodoc). It's\n// deeply nested due to how autodoc structures the HTML without enough classes\n// to select the relevant items.\n\n// API docs!\ndl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)\n // Tweak the spacing of all the things!\n dd\n margin-left: 2rem\n > :first-child\n margin-top: 0.125rem\n > :last-child\n margin-bottom: 0.75rem\n\n // This is used for the arguments\n .field-list\n margin-bottom: 0.75rem\n\n // \"Headings\" (like \"Parameters\" and \"Return\")\n > dt\n text-transform: uppercase\n font-size: var(--font-size--small)\n\n dd:empty\n margin-bottom: 0.5rem\n dd > ul\n margin-left: -1.2rem\n > li\n > p:nth-child(2)\n margin-top: 0\n // When the last-empty-paragraph follows a paragraph, it doesn't need\n // to augument the existing spacing.\n > p + p:last-child:empty\n margin-top: 0\n margin-bottom: 0\n\n // Colorize the elements\n > dt\n color: var(--color-api-overall)\n\n.sig:not(.sig-inline)\n font-weight: bold\n\n font-size: var(--api-font-size)\n font-family: var(--font-stack--monospace)\n\n margin-left: -0.25rem\n margin-right: -0.25rem\n padding-top: 0.25rem\n padding-bottom: 0.25rem\n padding-right: 0.5rem\n\n // These are intentionally em, to properly match the font size.\n padding-left: 3em\n text-indent: -2.5em\n\n border-radius: 0.25rem\n\n background: var(--color-api-background)\n transition: background 100ms ease-out\n\n &:hover\n background: var(--color-api-background-hover)\n\n // adjust the size of the [source] link on the right.\n a.reference\n .viewcode-link\n font-weight: normal\n width: 4.25rem\n\nem.property\n font-style: normal\n &:first-child\n color: var(--color-api-keyword)\n.sig-name\n color: var(--color-api-name)\n.sig-prename\n font-weight: normal\n color: var(--color-api-pre-name)\n.sig-paren\n color: var(--color-api-paren)\n.sig-param\n font-style: normal\n\ndiv.versionadded,\ndiv.versionchanged,\ndiv.deprecated,\ndiv.versionremoved\n border-left: 0.1875rem solid\n border-radius: 0.125rem\n\n padding-left: 0.75rem\n\n p\n margin-top: 0.125rem\n margin-bottom: 0.125rem\n\ndiv.versionadded\n border-color: var(--color-api-added-border)\n .versionmodified\n color: var(--color-api-added)\n\ndiv.versionchanged\n border-color: var(--color-api-changed-border)\n .versionmodified\n color: var(--color-api-changed)\n\ndiv.deprecated\n border-color: var(--color-api-deprecated-border)\n .versionmodified\n color: var(--color-api-deprecated)\n\ndiv.versionremoved\n border-color: var(--color-api-removed-border)\n .versionmodified\n color: var(--color-api-removed)\n\n// Align the [docs] and [source] to the right.\n.viewcode-link, .viewcode-back\n float: right\n text-align: right\n",".line-block\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n .line-block\n margin-top: 0rem\n margin-bottom: 0rem\n padding-left: 1rem\n","// Captions\narticle p.caption,\ntable > caption,\n.code-block-caption\n font-size: var(--font-size--small)\n text-align: center\n\n// Caption above a TOCTree\n.toctree-wrapper.compound\n .caption, :not(.caption) > .caption-text\n font-size: var(--font-size--small)\n text-transform: uppercase\n\n text-align: initial\n margin-bottom: 0\n\n > ul\n margin-top: 0\n margin-bottom: 0\n","// Inline code\ncode.literal, .sig-inline\n background: var(--color-inline-code-background)\n border-radius: 0.2em\n // Make the font smaller, and use padding to recover.\n font-size: var(--font-size--small--2)\n padding: 0.1em 0.2em\n\n pre.literal-block &\n font-size: inherit\n padding: 0\n\n p &\n border: 1px solid var(--color-background-border)\n\n.sig-inline\n font-family: var(--font-stack--monospace)\n\n// Code and Literal Blocks\n$code-spacing-vertical: 0.625rem\n$code-spacing-horizontal: 0.875rem\n\n// Wraps every literal block + line numbers.\ndiv[class*=\" highlight-\"],\ndiv[class^=\"highlight-\"]\n margin: 1em 0\n display: flex\n\n .table-wrapper\n margin: 0\n padding: 0\n\npre\n margin: 0\n padding: 0\n overflow: auto\n\n // Needed to have more specificity than pygments' \"pre\" selector. :(\n article[role=\"main\"] .highlight &\n line-height: 1.5\n\n &.literal-block,\n .highlight &\n font-size: var(--code-font-size)\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n // Make it look like all the other blocks.\n &.literal-block\n margin-top: 1rem\n margin-bottom: 1rem\n\n border-radius: 0.2rem\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n\n// All code is always contained in this.\n.highlight\n width: 100%\n border-radius: 0.2rem\n\n // Make line numbers and prompts un-selectable.\n .gp, span.linenos\n user-select: none\n pointer-events: none\n\n // Expand the line-highlighting.\n .hll\n display: block\n margin-left: -$code-spacing-horizontal\n margin-right: -$code-spacing-horizontal\n padding-left: $code-spacing-horizontal\n padding-right: $code-spacing-horizontal\n\n/* Make code block captions be nicely integrated */\n.code-block-caption\n display: flex\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n border-radius: 0.25rem\n border-bottom-left-radius: 0\n border-bottom-right-radius: 0\n font-weight: 300\n border-bottom: 1px solid\n\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n border-color: var(--color-background-border)\n\n + div[class]\n margin-top: 0\n pre\n border-top-left-radius: 0\n border-top-right-radius: 0\n\n// When `html_codeblock_linenos_style` is table.\n.highlighttable\n width: 100%\n display: block\n tbody\n display: block\n\n tr\n display: flex\n\n // Line numbers\n td.linenos\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n padding: $code-spacing-vertical $code-spacing-horizontal\n padding-right: 0\n border-top-left-radius: 0.2rem\n border-bottom-left-radius: 0.2rem\n\n .linenodiv\n padding-right: $code-spacing-horizontal\n font-size: var(--code-font-size)\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n\n // Actual code\n td.code\n padding: 0\n display: block\n flex: 1\n overflow: hidden\n\n .highlight\n border-top-left-radius: 0\n border-bottom-left-radius: 0\n\n// When `html_codeblock_linenos_style` is inline.\n.highlight\n span.linenos\n display: inline-block\n padding-left: 0\n padding-right: $code-spacing-horizontal\n margin-right: $code-spacing-horizontal\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n","// Inline Footnote Reference\n.footnote-reference\n font-size: var(--font-size--small--4)\n vertical-align: super\n\n// Definition list, listing the content of each note.\n// docutils <= 0.17\ndl.footnote.brackets\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\n display: grid\n grid-template-columns: max-content auto\n dt\n margin: 0\n > .fn-backref\n margin-left: 0.25rem\n\n &:after\n content: \":\"\n\n .brackets\n &:before\n content: \"[\"\n &:after\n content: \"]\"\n\n dd\n margin: 0\n padding: 0 1rem\n\n// docutils >= 0.18\naside.footnote\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\naside.footnote > span,\ndiv.citation > span\n float: left\n font-weight: 500\n padding-right: 0.25rem\n\naside.footnote > *:not(span),\ndiv.citation > p\n margin-left: 2rem\n","//\n// Figures\n//\nimg\n box-sizing: border-box\n max-width: 100%\n height: auto\n\narticle\n figure, .figure\n border-radius: 0.2rem\n\n margin: 0\n :last-child\n margin-bottom: 0\n\n .align-left\n float: left\n clear: left\n margin: 0 1rem 1rem\n\n .align-right\n float: right\n clear: right\n margin: 0 1rem 1rem\n\n .align-default,\n .align-center\n display: block\n text-align: center\n margin-left: auto\n margin-right: auto\n\n // WELL, table needs to be stylised like a table.\n table.align-default\n display: table\n text-align: initial\n",".genindex-jumpbox, .domainindex-jumpbox\n border-top: 1px solid var(--color-background-border)\n border-bottom: 1px solid var(--color-background-border)\n padding: 0.25rem\n\n.genindex-section, .domainindex-section\n h2\n margin-top: 0.75rem\n margin-bottom: 0.5rem\n ul\n margin-top: 0\n margin-bottom: 0\n","ul,\nol\n padding-left: 1.2rem\n\n // Space lists out like paragraphs\n margin-top: 1rem\n margin-bottom: 1rem\n // reduce margins within li.\n li\n > p:first-child\n margin-top: 0.25rem\n margin-bottom: 0.25rem\n\n > p:last-child\n margin-top: 0.25rem\n\n > ul,\n > ol\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n\nol\n &.arabic\n list-style: decimal\n &.loweralpha\n list-style: lower-alpha\n &.upperalpha\n list-style: upper-alpha\n &.lowerroman\n list-style: lower-roman\n &.upperroman\n list-style: upper-roman\n\n// Don't space lists out when they're \"simple\" or in a `.. toctree::`\n.simple,\n.toctree-wrapper\n li\n > ul,\n > ol\n margin-top: 0\n margin-bottom: 0\n\n// Definition Lists\n.field-list,\n.option-list,\ndl:not([class]),\ndl.simple,\ndl.footnote,\ndl.glossary\n dt\n font-weight: 500\n margin-top: 0.25rem\n + dt\n margin-top: 0\n\n .classifier::before\n content: \":\"\n margin-left: 0.2rem\n margin-right: 0.2rem\n\n dd\n > p:first-child,\n ul\n margin-top: 0.125rem\n\n ul\n margin-bottom: 0.125rem\n",".math-wrapper\n width: 100%\n overflow-x: auto\n\ndiv.math\n position: relative\n text-align: center\n\n .headerlink,\n &:focus .headerlink\n display: none\n\n &:hover .headerlink\n display: inline-block\n\n span.eqno\n position: absolute\n right: 0.5rem\n top: 50%\n transform: translate(0, -50%)\n z-index: 1\n","// Abbreviations\nabbr[title]\n cursor: help\n\n// \"Problematic\" content, as identified by Sphinx\n.problematic\n color: var(--color-problematic)\n\n// Keyboard / Mouse \"instructions\"\nkbd:not(.compound)\n margin: 0 0.2rem\n padding: 0 0.2rem\n border-radius: 0.2rem\n border: 1px solid var(--color-foreground-border)\n color: var(--color-foreground-primary)\n vertical-align: text-bottom\n\n font-size: var(--font-size--small--3)\n display: inline-block\n\n box-shadow: 0 0.0625rem 0 rgba(0, 0, 0, 0.2), inset 0 0 0 0.125rem var(--color-background-primary)\n\n background-color: var(--color-background-secondary)\n\n// Blockquote\nblockquote\n border-left: 4px solid var(--color-background-border)\n background: var(--color-background-secondary)\n\n margin-left: 0\n margin-right: 0\n padding: 0.5rem 1rem\n\n .attribution\n font-weight: 600\n text-align: right\n\n &.pull-quote,\n &.highlights\n font-size: 1.25em\n\n &.epigraph,\n &.pull-quote\n border-left-width: 0\n border-radius: 0.5rem\n\n &.highlights\n border-left-width: 0\n background: transparent\n\n// Center align embedded-in-text images\np .reference img\n vertical-align: middle\n","p.rubric\n line-height: 1.25\n font-weight: bold\n font-size: 1.125em\n\n // For Numpy-style documentation that's got rubrics within it.\n // https://github.com/pradyunsg/furo/discussions/505\n dd &\n line-height: inherit\n font-weight: inherit\n\n font-size: var(--font-size--small)\n text-transform: uppercase\n","article .sidebar\n float: right\n clear: right\n width: 30%\n\n margin-left: 1rem\n margin-right: 0\n\n border-radius: 0.2rem\n background-color: var(--color-background-secondary)\n border: var(--color-background-border) 1px solid\n\n > *\n padding-left: 1rem\n padding-right: 1rem\n\n > ul, > ol // lists need additional padding, because bullets.\n padding-left: 2.2rem\n\n .sidebar-title\n margin: 0\n padding: 0.5rem 1rem\n border-bottom: var(--color-background-border) 1px solid\n\n font-weight: 500\n\n// TODO: subtitle\n// TODO: dedicated variables?\n",".table-wrapper\n width: 100%\n overflow-x: auto\n margin-top: 1rem\n margin-bottom: 0.5rem\n padding: 0.2rem 0.2rem 0.75rem\n\ntable.docutils\n border-radius: 0.2rem\n border-spacing: 0\n border-collapse: collapse\n\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n th\n background: var(--color-table-header-background)\n\n td,\n th\n // Space things out properly\n padding: 0 0.25rem\n\n // Get the borders looking just-right.\n border-left: 1px solid var(--color-table-border)\n border-right: 1px solid var(--color-table-border)\n border-bottom: 1px solid var(--color-table-border)\n\n p\n margin: 0.25rem\n\n &:first-child\n border-left: none\n &:last-child\n border-right: none\n\n // MyST-parser tables set these classes for control of column alignment\n &.text-left\n text-align: left\n &.text-right\n text-align: right\n &.text-center\n text-align: center\n",":target\n scroll-margin-top: 2.5rem\n\n@media (max-width: $full-width - $sidebar-width)\n :target\n scroll-margin-top: calc(2.5rem + var(--header-height))\n\n // When a heading is selected\n section > span:target\n scroll-margin-top: calc(2.8rem + var(--header-height))\n\n// Permalinks\n.headerlink\n font-weight: 100\n user-select: none\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ndl dt,\np.caption,\nfigcaption p,\ntable > caption,\n.code-block-caption\n > .headerlink\n margin-left: 0.5rem\n visibility: hidden\n &:hover > .headerlink\n visibility: visible\n\n // Don't change to link-like, if someone adds the contents directive.\n > .toc-backref\n color: inherit\n text-decoration-line: none\n\n// Figure and table captions are special.\nfigure:hover > figcaption > p > .headerlink,\ntable:hover > caption > .headerlink\n visibility: visible\n\n:target >, // Regular section[id] style anchors\nspan:target ~ // Non-regular span[id] style \"extra\" anchors\n h1,\n h2,\n h3,\n h4,\n h5,\n h6\n &:nth-of-type(1)\n background-color: var(--color-highlight-on-target)\n // .headerlink\n // visibility: visible\n code.literal\n background-color: transparent\n\ntable:target > caption,\nfigure:target\n background-color: var(--color-highlight-on-target)\n\n// Inline page contents\n.this-will-duplicate-information-and-it-is-still-useful-here li :target\n background-color: var(--color-highlight-on-target)\n\n// Code block permalinks\n.literal-block-wrapper:target .code-block-caption\n background-color: var(--color-highlight-on-target)\n\n// When a definition list item is selected\n//\n// There isn't really an alternative to !important here, due to the\n// high-specificity of API documentation's selector.\ndt:target\n background-color: var(--color-highlight-on-target) !important\n\n// When a footnote reference is selected\n.footnote > dt:target + dd,\n.footnote-reference:target\n background-color: var(--color-highlight-on-target)\n",".guilabel\n background-color: var(--color-guilabel-background)\n border: 1px solid var(--color-guilabel-border)\n color: var(--color-guilabel-text)\n\n padding: 0 0.3em\n border-radius: 0.5em\n font-size: 0.9em\n","// This file contains the styles used for stylizing the footer that's shown\n// below the content.\n\nfooter\n font-size: var(--font-size--small)\n display: flex\n flex-direction: column\n\n margin-top: 2rem\n\n// Bottom of page information\n.bottom-of-page\n display: flex\n align-items: center\n justify-content: space-between\n\n margin-top: 1rem\n padding-top: 1rem\n padding-bottom: 1rem\n\n color: var(--color-foreground-secondary)\n border-top: 1px solid var(--color-background-border)\n\n line-height: 1.5\n\n @media (max-width: $content-width)\n text-align: center\n flex-direction: column-reverse\n gap: 0.25rem\n\n .left-details\n font-size: var(--font-size--small)\n\n .right-details\n display: flex\n flex-direction: column\n gap: 0.25rem\n text-align: right\n\n .icons\n display: flex\n justify-content: flex-end\n gap: 0.25rem\n font-size: 1rem\n\n a\n text-decoration: none\n\n svg,\n img\n font-size: 1.125rem\n height: 1em\n width: 1em\n\n// Next/Prev page information\n.related-pages\n a\n display: flex\n align-items: center\n\n text-decoration: none\n &:hover .page-info .title\n text-decoration: underline\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n svg.furo-related-icon,\n svg.furo-related-icon > use\n flex-shrink: 0\n\n color: var(--color-foreground-border)\n\n width: 0.75rem\n height: 0.75rem\n margin: 0 0.5rem\n\n &.next-page\n max-width: 50%\n\n float: right\n clear: right\n text-align: right\n\n &.prev-page\n max-width: 50%\n\n float: left\n clear: left\n\n svg\n transform: rotate(180deg)\n\n.page-info\n display: flex\n flex-direction: column\n overflow-wrap: anywhere\n\n .next-page &\n align-items: flex-end\n\n .context\n display: flex\n align-items: center\n\n padding-bottom: 0.1rem\n\n color: var(--color-foreground-muted)\n font-size: var(--font-size--small)\n text-decoration: none\n","// This file contains the styles for the contents of the left sidebar, which\n// contains the navigation tree, logo, search etc.\n\n////////////////////////////////////////////////////////////////////////////////\n// Brand on top of the scrollable tree.\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-brand\n display: flex\n flex-direction: column\n flex-shrink: 0\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n text-decoration: none\n\n.sidebar-brand-text\n color: var(--color-sidebar-brand-text)\n overflow-wrap: break-word\n margin: var(--sidebar-item-spacing-vertical) 0\n font-size: 1.5rem\n\n.sidebar-logo-container\n margin: var(--sidebar-item-spacing-vertical) 0\n\n.sidebar-logo\n margin: 0 auto\n display: block\n max-width: 100%\n\n////////////////////////////////////////////////////////////////////////////////\n// Search\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-search-container\n display: flex\n align-items: center\n margin-top: var(--sidebar-search-space-above)\n\n position: relative\n\n background: var(--color-sidebar-search-background)\n &:hover,\n &:focus-within\n background: var(--color-sidebar-search-background--focus)\n\n &::before\n content: \"\"\n position: absolute\n left: var(--sidebar-item-spacing-horizontal)\n width: var(--sidebar-search-icon-size)\n height: var(--sidebar-search-icon-size)\n\n background-color: var(--color-sidebar-search-icon)\n mask-image: var(--icon-search)\n\n.sidebar-search\n box-sizing: border-box\n\n border: none\n border-top: 1px solid var(--color-sidebar-search-border)\n border-bottom: 1px solid var(--color-sidebar-search-border)\n\n padding-top: var(--sidebar-search-input-spacing-vertical)\n padding-bottom: var(--sidebar-search-input-spacing-vertical)\n padding-right: var(--sidebar-search-input-spacing-horizontal)\n padding-left: calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size))\n\n width: 100%\n\n color: var(--color-sidebar-search-foreground)\n background: transparent\n z-index: 10\n\n &:focus\n outline: none\n\n &::placeholder\n font-size: var(--sidebar-search-input-font-size)\n\n//\n// Hide Search Matches link\n//\n#searchbox .highlight-link\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0\n margin: 0\n text-align: center\n\n a\n color: var(--color-sidebar-search-icon)\n font-size: var(--font-size--small--2)\n\n////////////////////////////////////////////////////////////////////////////////\n// Structure/Skeleton of the navigation tree (left)\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-tree\n font-size: var(--sidebar-item-font-size)\n margin-top: var(--sidebar-tree-space-above)\n margin-bottom: var(--sidebar-item-spacing-vertical)\n\n ul\n padding: 0\n margin-top: 0\n margin-bottom: 0\n\n display: flex\n flex-direction: column\n\n list-style: none\n\n li\n position: relative\n margin: 0\n\n > ul\n margin-left: var(--sidebar-item-spacing-horizontal)\n\n .icon\n color: var(--color-sidebar-link-text)\n\n .reference\n box-sizing: border-box\n color: var(--color-sidebar-link-text)\n\n // Fill the parent.\n display: inline-block\n line-height: var(--sidebar-item-line-height)\n text-decoration: none\n\n // Don't allow long words to cause wrapping.\n overflow-wrap: anywhere\n\n height: 100%\n width: 100%\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n &:hover\n color: var(--color-sidebar-link-text)\n background: var(--color-sidebar-item-background--hover)\n\n // Add a nice little \"external-link\" arrow here.\n &.external::after\n content: url('data:image/svg+xml,')\n margin: 0 0.25rem\n vertical-align: middle\n color: var(--color-sidebar-link-text)\n\n // Make the current page reference bold.\n .current-page > .reference\n font-weight: bold\n\n label\n position: absolute\n top: 0\n right: 0\n height: var(--sidebar-item-height)\n width: var(--sidebar-expander-width)\n\n cursor: pointer\n user-select: none\n\n display: flex\n justify-content: center\n align-items: center\n\n .caption, :not(.caption) > .caption-text\n font-size: var(--sidebar-caption-font-size)\n color: var(--color-sidebar-caption-text)\n\n font-weight: bold\n text-transform: uppercase\n\n margin: var(--sidebar-caption-space-above) 0 0 0\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the