From fd6411622a02827737ef4deba83f1dfa1e27fdab Mon Sep 17 00:00:00 2001 From: Dag Brattli Date: Thu, 22 Sep 2022 19:50:31 +0200 Subject: [PATCH 1/3] Start fixing --- Build.fs | 7 +++ Helpers.fs | 1 + README.md | 5 +- docs-src/index.md | 132 +--------------------------------------------- docs-src/intro.md | 8 +-- 5 files changed, 16 insertions(+), 137 deletions(-) diff --git a/Build.fs b/Build.fs index 305139e..bd75064 100644 --- a/Build.fs +++ b/Build.fs @@ -22,6 +22,10 @@ Target.create "Build" (fun _ -> run dotnet $"fable --exclude Fable.Core --lang Python --outDir {buildPath}" srcPath ) +Target.create "Docs" (fun _ -> + run jupyterBook "build docs-src --path-output src" "." +) + Target.create "Run" (fun _ -> run dotnet "build" srcPath ) @@ -56,6 +60,9 @@ let dependencies = [ "Build" ==> "Test" + "Build" + ==> "Docs" + "Build" ==> "Pack" ] diff --git a/Helpers.fs b/Helpers.fs index 5ef320e..427d78d 100644 --- a/Helpers.fs +++ b/Helpers.fs @@ -76,6 +76,7 @@ let dotnet = createProcess "dotnet" let pytest = createProcess "pytest" let poetry = createProcess "poetry" +let jupyterBook = createProcess "jb" let npm = let npmPath = diff --git a/README.md b/README.md index 1880dba..2554be0 100644 --- a/README.md +++ b/README.md @@ -71,9 +71,10 @@ It contains example code for using Fable Python with: - [Femoto](https://github.com/Zaid-Ajaj/Femto) - [AsyncRx](https://github.com/dbrattli/AsyncRx) - [Fable.Aether](https://xyncro.tech/aether/) -- [Fable.Giraffe](https://github.com/dbrattli/Fable.Giraffe) -- [Fable.Logging](https://github.com/dbrattli/Fable.logging) +- [Fable.Giraffe](https://github.com/dbrattli/Fable.Giraffe), port of Giraffe to Fable.Python +- [Fable.Logging](https://github.com/dbrattli/Fable.logging), logging for Fable.Python - [Fable.Requests](https://github.com/Zaid-Ajaj/Fable.Requests) +- [Fable.Jupyter](https://github.com/fable-compiler/Fable.Jupyter), Jupyter Notebook using Fable.Python - [Fable.SimpleJson.Python](https://github.com/Zaid-Ajaj/Fable.SimpleJson.Python) - [Fable.Sedlex](https://github.com/thautwarm/Fable.Sedlex) - [Feliz.ViewEngine](https://github.com/dbrattli/Feliz.ViewEngine) diff --git a/docs-src/index.md b/docs-src/index.md index aaa1bf2..d0c3be5 100644 --- a/docs-src/index.md +++ b/docs-src/index.md @@ -1,4 +1,4 @@ -# Python you can be proud of! +# Python you can be proud of ````{panels} **Functional programming and more** @@ -321,133 +321,3 @@ async { todo.completed } ``` - - - - -
-

- Users of Fable -

-

- These are some of the projects and companies using Fable. Send us a message to include yours! -

-
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
-
- - - - diff --git a/docs-src/intro.md b/docs-src/intro.md index c22c7c1..4438427 100644 --- a/docs-src/intro.md +++ b/docs-src/intro.md @@ -32,10 +32,10 @@ F# is already used on the server for web and cloud apps, and it's also used quit F# is a great choice to build beautiful apps that run in the browser. F# is: -* Succinct with lightweight syntax -* Robust with a great type system and pattern matching -* Safe with immutability baked into the language -* Supported by large companies (such as Microsoft and Jetbrains) and comes with commercial tooling support +- Succinct with lightweight syntax +- Robust with a great type system and pattern matching +- Safe with immutability baked into the language +- Supported by large companies (such as Microsoft and Jetbrains) and comes with commercial tooling support When compared with Python, F# is safer, more robust, and more pleasant to read and write. From 141b49b7f2bf3e5470d59f409dd684b0e1259fa6 Mon Sep 17 00:00:00 2001 From: Dag Brattli Date: Sun, 25 Sep 2022 09:05:52 +0200 Subject: [PATCH 2/3] Update docs --- .gitignore | 1 + Build.fs | 2 +- docs-src/index.md | 293 +- docs-src/introduction/py-users-read-this.md | 23 +- .../new-to-fsharp/learning-the-language.md | 6 +- docs-src/new-to-fsharp/let-keyword.md | 31 +- .../author-a-fable-library.md | 9 +- docs-src/your-fable-project/build-and-run.md | 43 +- docs-src/your-fable-project/project-file.md | 9 +- docs/_sources/communicate/fable-from-py.md | 274 -- docs/_sources/communicate/py-from-fable.md | 652 ---- docs/_sources/dotnet/compatibility.md | 98 - docs/_sources/dotnet/numbers.md | 64 - docs/_sources/index.md | 453 --- docs/_sources/intro.md | 42 - .../introduction/dotnet-users-read-this.md | 28 - .../introduction/py-users-read-this.md | 24 - docs/_sources/markdown.md | 125 - .../new-to-fsharp/learning-the-language.md | 8 - docs/_sources/new-to-fsharp/let-keyword.md | 61 - docs/_sources/notebooks.ipynb | 122 - .../author-a-fable-library.md | 25 - .../your-fable-project/build-and-run.md | 46 - .../your-fable-project/project-file.md | 83 - docs/_sources/your-fable-project/testing.md | 111 - .../your-fable-project/use-a-fable-library.md | 53 - ...e.b7bb847fb20b106c3d81b95245e65545.min.css | 1 + docs/_sphinx_design_static/design-tabs.js | 27 + docs/_static/basic.css | 6 +- docs/_static/copy-button.svg | 6 +- docs/_static/copybutton.css | 24 +- docs/_static/copybutton.js | 33 +- ...e.b7bb847fb20b106c3d81b95245e65545.min.css | 1 + docs/_static/design-tabs.js | 27 + docs/_static/doctools.js | 77 +- docs/_static/documentation_options.js | 4 +- docs/_static/images/logo_deepnote.svg | 1 + docs/_static/language_data.js | 2 +- .../locales/ar/LC_MESSAGES/booktheme.po | 81 + .../locales/bg/LC_MESSAGES/booktheme.po | 81 + .../locales/bn/LC_MESSAGES/booktheme.po | 66 + .../locales/ca/LC_MESSAGES/booktheme.po | 69 + .../locales/cs/LC_MESSAGES/booktheme.po | 81 + .../locales/da/LC_MESSAGES/booktheme.po | 81 + .../locales/de/LC_MESSAGES/booktheme.po | 81 + .../locales/el/LC_MESSAGES/booktheme.po | 81 + .../locales/eo/LC_MESSAGES/booktheme.po | 81 + .../locales/es/LC_MESSAGES/booktheme.po | 81 + .../locales/et/LC_MESSAGES/booktheme.po | 81 + .../locales/fi/LC_MESSAGES/booktheme.po | 81 + .../locales/fr/LC_MESSAGES/booktheme.po | 81 + .../locales/hr/LC_MESSAGES/booktheme.po | 81 + .../locales/id/LC_MESSAGES/booktheme.po | 81 + .../locales/it/LC_MESSAGES/booktheme.po | 81 + .../locales/iw/LC_MESSAGES/booktheme.po | 81 + .../locales/ja/LC_MESSAGES/booktheme.po | 81 + .../locales/ko/LC_MESSAGES/booktheme.po | 81 + .../locales/lt/LC_MESSAGES/booktheme.po | 81 + .../locales/lv/LC_MESSAGES/booktheme.po | 81 + .../locales/ml/LC_MESSAGES/booktheme.po | 69 + .../locales/mr/LC_MESSAGES/booktheme.po | 69 + .../locales/ms/LC_MESSAGES/booktheme.po | 69 + .../locales/nl/LC_MESSAGES/booktheme.po | 81 + .../locales/no/LC_MESSAGES/booktheme.po | 81 + .../locales/pl/LC_MESSAGES/booktheme.po | 81 + .../locales/pt/LC_MESSAGES/booktheme.po | 81 + .../locales/ro/LC_MESSAGES/booktheme.po | 81 + .../locales/ru/LC_MESSAGES/booktheme.po | 81 + .../locales/sk/LC_MESSAGES/booktheme.po | 81 + .../locales/sl/LC_MESSAGES/booktheme.po | 81 + .../locales/sr/LC_MESSAGES/booktheme.po | 81 + .../locales/sv/LC_MESSAGES/booktheme.po | 81 + .../locales/ta/LC_MESSAGES/booktheme.po | 69 + .../locales/te/LC_MESSAGES/booktheme.po | 69 + .../locales/tg/LC_MESSAGES/booktheme.po | 81 + .../locales/th/LC_MESSAGES/booktheme.po | 81 + .../locales/tl/LC_MESSAGES/booktheme.po | 69 + .../locales/tr/LC_MESSAGES/booktheme.po | 81 + .../locales/uk/LC_MESSAGES/booktheme.po | 81 + .../locales/ur/LC_MESSAGES/booktheme.po | 69 + .../locales/vi/LC_MESSAGES/booktheme.po | 81 + .../locales/zh_CN/LC_MESSAGES/booktheme.po | 78 + .../locales/zh_TW/LC_MESSAGES/booktheme.po | 81 + docs/_static/mystnb.css | 1539 +++++++++ docs/_static/sbt-webpack-macros.html | 11 + docs/_static/scripts/pydata-sphinx-theme.js | 32 + docs/_static/scripts/sphinx-book-theme.js | 2 + docs/_static/scripts/sphinx-book-theme.js.map | 1 + docs/_static/searchtools.js | 15 +- docs/_static/sphinx-thebe.css | 157 +- docs/_static/sphinx-thebe.js | 184 +- docs/_static/styles/pydata-sphinx-theme.css | 6 + docs/_static/styles/sphinx-book-theme.css | 8 + docs/_static/styles/theme.css | 134 + docs/_static/togglebutton.css | 182 +- docs/_static/togglebutton.js | 157 +- docs/_static/webpack-macros.html | 22 +- docs/communicate/fable-from-py.html | 751 +++-- docs/communicate/py-from-fable.html | 1170 ++++--- docs/dotnet/compatibility.html | 503 ++- docs/dotnet/numbers.html | 446 ++- docs/genindex.html | 276 +- docs/index.html | 1029 +++--- docs/intro.html | 452 ++- docs/introduction/dotnet-users-read-this.html | 432 ++- docs/introduction/py-users-read-this.html | 445 ++- docs/markdown.html | 483 ++- docs/new-to-fsharp/learning-the-language.html | 383 ++- docs/new-to-fsharp/let-keyword.html | 506 +-- docs/notebooks.html | 506 ++- docs/objects.inv | Bin 620 -> 618 bytes docs/search.html | 276 +- docs/searchindex.js | 2 +- .../author-a-fable-library.html | 388 ++- docs/your-fable-project/build-and-run.html | 471 +-- docs/your-fable-project/project-file.html | 390 ++- docs/your-fable-project/testing.html | 526 +-- .../use-a-fable-library.html | 432 ++- poetry.lock | 2823 ++++++++++++++++- pyproject.toml | 3 + 120 files changed, 14829 insertions(+), 6740 deletions(-) delete mode 100644 docs/_sources/communicate/fable-from-py.md delete mode 100644 docs/_sources/communicate/py-from-fable.md delete mode 100644 docs/_sources/dotnet/compatibility.md delete mode 100644 docs/_sources/dotnet/numbers.md delete mode 100644 docs/_sources/index.md delete mode 100644 docs/_sources/intro.md delete mode 100644 docs/_sources/introduction/dotnet-users-read-this.md delete mode 100644 docs/_sources/introduction/py-users-read-this.md delete mode 100644 docs/_sources/markdown.md delete mode 100644 docs/_sources/new-to-fsharp/learning-the-language.md delete mode 100644 docs/_sources/new-to-fsharp/let-keyword.md delete mode 100644 docs/_sources/notebooks.ipynb delete mode 100644 docs/_sources/your-fable-project/author-a-fable-library.md delete mode 100644 docs/_sources/your-fable-project/build-and-run.md delete mode 100644 docs/_sources/your-fable-project/project-file.md delete mode 100644 docs/_sources/your-fable-project/testing.md delete mode 100644 docs/_sources/your-fable-project/use-a-fable-library.md create mode 100644 docs/_sphinx_design_static/design-style.b7bb847fb20b106c3d81b95245e65545.min.css create mode 100644 docs/_sphinx_design_static/design-tabs.js create mode 100644 docs/_static/design-style.b7bb847fb20b106c3d81b95245e65545.min.css create mode 100644 docs/_static/design-tabs.js create mode 100644 docs/_static/images/logo_deepnote.svg create mode 100644 docs/_static/locales/ar/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/bg/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/bn/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/ca/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/cs/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/da/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/de/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/el/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/eo/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/es/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/et/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/fi/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/fr/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/hr/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/id/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/it/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/iw/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/ja/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/ko/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/lt/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/lv/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/ml/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/mr/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/ms/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/nl/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/no/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/pl/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/pt/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/ro/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/ru/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/sk/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/sl/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/sr/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/sv/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/ta/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/te/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/tg/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/th/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/tl/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/tr/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/uk/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/ur/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/vi/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.po create mode 100644 docs/_static/sbt-webpack-macros.html create mode 100644 docs/_static/scripts/pydata-sphinx-theme.js create mode 100644 docs/_static/scripts/sphinx-book-theme.js create mode 100644 docs/_static/scripts/sphinx-book-theme.js.map create mode 100644 docs/_static/styles/pydata-sphinx-theme.css create mode 100644 docs/_static/styles/sphinx-book-theme.css create mode 100644 docs/_static/styles/theme.css diff --git a/.gitignore b/.gitignore index 65882b2..1845092 100644 --- a/.gitignore +++ b/.gitignore @@ -70,6 +70,7 @@ instance/ # Sphinx documentation docs/_build/ +docs/_sources/ docs-src/_build # PyBuilder diff --git a/Build.fs b/Build.fs index bd75064..4195b5a 100644 --- a/Build.fs +++ b/Build.fs @@ -23,7 +23,7 @@ Target.create "Build" (fun _ -> ) Target.create "Docs" (fun _ -> - run jupyterBook "build docs-src --path-output src" "." + run poetry "run jb build docs-src --path-output docs" "." ) Target.create "Run" (fun _ -> diff --git a/docs-src/index.md b/docs-src/index.md index d0c3be5..1f2144a 100644 --- a/docs-src/index.md +++ b/docs-src/index.md @@ -1,188 +1,50 @@ # Python you can be proud of -````{panels} - **Functional programming and more** -^^^ +::::{grid} +:gutter: 3 + +:::{grid-item-card} Functional programming and more Immutable by default. Powerful pattern matching. Lightweight syntax. Units of measure. Type providers. Enjoy. ---- - **Type safety without the hassle** -^^^ +::: + +:::{grid-item-card} **Type safety without the hassle** Type inference provides robustness and correctness, but without the cost of additional code. Let the compiler catch bugs for you. -```` - - -
- -
- -
- -
- -
-
- - -
-

- Fable is a compiler that brings F# into the JavaScript ecosystem -

-
- - -
- -
-
-
-
-
-
- - -
-
-
- - Functional programming and more - -

- Immutable by default. Powerful pattern matching. Lightweight syntax. Units of measure. Type providers. Enjoy. -

-
-
-
-
-
-
- - - -
-
- - Type safety without the hassle - -

- Type inference provides robustness and correctness, but without the cost of additional code. Let the compiler catch bugs for you. -

-
-
-
-
-
-
- - - -
-
- - Modern Javascript output - -

- Fable produces readable JavaScript code compatible with ES2015 standards and popular tooling like Webpack. -

-
-
-
-
-
-
- - - -
-
- - Easy JavaScript interop - -

- Call JavaScript from Fable or Fable from JS. Use NPM packages. The entire JavaScript ecosystem is at your fingertips. -

-
-
-
-
-
-
- - - -
-
- - First-class editor tools - -

- Choose your favorite tool: from Visual Studio Code to JetBrains Rider. Check the whole list here. -

-
-
-
-
-
-
- - - -
-
- - Batteries included - -

- Fable supports the F# core library and some common .NET libraries to supplement the JavaScript ecosystem. -

-
-
-
-
-
-
-

- Features -

-

- These are some of the main F# features that you can use in your web apps with Fable. -

-
-
-

- Powerful pattern matching -

-

- These are some of the main F# features that you can use in your web apps with Fable. -

-
-
-
- - +::: +:::: + +::::{grid} +:gutter: 3 + +:::{grid-item-card} Modern Python output +Fable produces readable Python code compatible with PEP8 standards and also uses type-hints. +::: + +:::{grid-item-card} Easy JavaScript interop +Call Python from Fable or Fable from Python. Use PyPI packages. The entire Python ecosystem is at your fingertips. +::: +:::: + +::::{grid} +:gutter: 3 + +:::{grid-item-card} First-class editor tools +Choose your favorite tool: from Visual Studio Code to JetBrains Rider. +Check the whole list here. +::: + +:::{grid-item-card} Batteries included +Fable supports the F# core library and some common .NET libraries to supplement the JavaScript ecosystem. +::: +:::: + +```{seealso} +[Try online](https://fable.io/repl") +``` + +## Features + +These are some of the main F# features that you can use in your web apps with Fable. + ```fsharp type Face = | Ace | King | Queen | Jack @@ -209,23 +71,13 @@ match card with // For example, the value '(_,Spades)' may indicate // a case not covered by the pattern(s). ``` -
-
-
-
-
-

- Computation expressions -

-

- There's a lot of code involving continuations out there, like asynchronous or undeterministic operations. Other languages bake specific solutions into the syntax, with F# you can use built-in computation expressions and also extend them yourself. -

-
-
-
- - + +## Computational expressions + +There's a lot of code involving continuations out there, like asynchronous or +undeterministic operations. Other languages bake specific solutions into the syntax, +with F# you can use built-in computation expressions and also extend them yourself. + ```fsharp // Python async made easy task { @@ -254,23 +106,11 @@ option { return x + y + z } ``` -
-
-
-
-
-

- Units of measure -

-

- These are some of the main F# features that you can use in your web apps with Fable. -

-
-
-
- - + +## Units of measure + +These are some of the main F# features that you can use in your web apps with Fable. + ```fsharp [] type m [] type s @@ -283,25 +123,12 @@ let thisWillFail = distance + time // not match the unit of measure 's' let thisWorks = distance / time -// 2.0 ``` -
-
-
-
-
-

- Type providers -

-

- Build your types using real-world conditions and make the compiler warn you if those conditions change. -

-
-
-
- - + +## Type providers + +Build your types using real-world conditions and make the compiler warn you if those conditions change. + ```fsharp [] let JSON_URL = "https://jsonplaceholder.typicode.com/todos" diff --git a/docs-src/introduction/py-users-read-this.md b/docs-src/introduction/py-users-read-this.md index 4308536..75cea56 100644 --- a/docs-src/introduction/py-users-read-this.md +++ b/docs-src/introduction/py-users-read-this.md @@ -4,21 +4,24 @@ Hi! -We're happy you decided to try Fable. Since F# is a language originally created for the .NET environment, Fable uses some tools that come from there. +We're happy you decided to try Fable. Since F# is a language originally created for the .NET environment, Fable uses +some tools that come from there. -Don't panic! There is enough documentation to explain how the .NET tools integrate in your environment. And there are basically only two things you need to know: +Don't panic! There is enough documentation to explain how the .NET tools integrate in your environment. And there are +basically only two things you need to know: 1. Fable uses F# project files (`.fsproj`) to list your F# code files and libraries. -2. Fable uses NuGet to load F# libraries, which is the equivalent of NPM for the .NET environment +2. Fable uses NuGet to load F# libraries, which is the equivalent of PyPI for the .NET environment -Voilà. Nothing else. We'll come to explanations later in the docs. But we promise, there's nothing you won't understand right away. Apart from these facts, it's all JavaScript! +Voilà. Nothing else. We'll come to explanations later in the docs. But we promise, there's nothing you won't understand +right away. Apart from these facts, it's all JavaScript! **Welcome home!** -- Fable transpiles F# to ES2015 JavaScript, Fable uses the great [Babel](https://babeljs.io/) tool for that. -- Fable integrates with the popular [Webpack](https://webpack.js.org/). And it's not hard to use another bundler. -- JS Dependencies are listed in your common `package.json` file. -- Unit testing is available through [Fable.Mocha](https://github.com/Zaid-Ajaj/Fable.Mocha) (but you can use another test runner if you wish). -- In most cases, building and running a Fable project only requires to call `npm install` and `npm start`. +- Fable transpiles F# to Python 3.9. +% - Fable integrates with the popular [Webpack](https://webpack.js.org/). And it's not hard to use another bundler. +- Python Dependencies are listed in your common `pyproject.toml` file. +- Unit testing is available through [pytest](https://docs.pytest.org) (but you can use another test runner if you wish). +- In most cases, building and running a Fable project only requires to call `dotnet fable --lang py` and `poetry run python`. -So since we're mainly using JavaScript tools, you won't be lost with Fable! +So since we're using many of the well known Python tools, you won't be lost with Fable! diff --git a/docs-src/new-to-fsharp/learning-the-language.md b/docs-src/new-to-fsharp/learning-the-language.md index 5b0654b..2aab0b3 100644 --- a/docs-src/new-to-fsharp/learning-the-language.md +++ b/docs-src/new-to-fsharp/learning-the-language.md @@ -1,6 +1,10 @@ # Learning the language -There are many resources available to learn F#. This section is only intended as a general guide targeted to JS developers, but is mainly contribution-driven and is still a work in progress. If you already know the basics of the language you can skip to [the next section](../2-steps/setup.html) or you can also check other sites and books about F# like: +There are many resources available to learn F#. This section is only intended as a +general guide targeted to Python developers, but is mainly contribution-driven and is still +a work in progress. If you already know the basics of the language you can skip to [the +next section](../2-steps/setup.html) or you can also check other sites and books about +F# like: - [Tour of F#](https://docs.microsoft.com/en-us/dotnet/fsharp/tour) - [F# for Fun and Profit](https://fsharpforfunandprofit.com/) diff --git a/docs-src/new-to-fsharp/let-keyword.md b/docs-src/new-to-fsharp/let-keyword.md index acf6096..79cbc2c 100644 --- a/docs-src/new-to-fsharp/let-keyword.md +++ b/docs-src/new-to-fsharp/let-keyword.md @@ -1,6 +1,7 @@ # The let keyword -`let` is the F# keyword used to bind any value to a name, it's used to bind the so called primitive types such as a `string` or an `integer`, to bind to a function or more complex structures such as arrays or records. +`let` is the F# keyword used to bind any value to a name, it's used to bind the so called primitive types such as a +`string` or an `integer`, to bind to a function or more complex structures such as arrays or records. Here's how you can bind a string to an identifier named `x`: @@ -8,9 +9,11 @@ Here's how you can bind a string to an identifier named `x`: let x = "some text" ``` -The above snippet would be considered a constant in some other languages such as JavaScript. In F# there's no `var` or `const` there's only `let` and since in F# every value is immutable by default, that snippet is the equivalent of a constant. +The above snippet would be considered a variable in some other languages such as Python. In F# there's no `var` or +`const` there's only `let` and since in F# every value is immutable by default, that snippet is the equivalent of a +constant. -Note that `let` in F# is different than `let` in JavaScript and this will be mentioned later on this page. +Note that `let` in F# is different than assignment in Python and this will be mentioned later on this page. We're going to see more on functions later but here's how you can bind a function to an identifier named `add`: @@ -19,11 +22,13 @@ let add x y = x + y ``` -In the above snippet a function that adds two integers is being bound to an identifier named `add` and then two values are being bound to the identifiers `x` and `y`. +In the above snippet a function that adds two integers is being bound to an identifier named `add` and then two values +are being bound to the identifiers `x` and `y`. ## Shadowing -In F#, bindings are immutable by default which means that normally one _can't_ reassign a value to a named binding, rather, if you try to do so using `let` what will happen is that you'll shadow an existing binding. +In F#, bindings are immutable by default which means that normally one _can't_ reassign a value to a named binding, +rather, if you try to do so using `let` what will happen is that you'll shadow an existing binding. For instance, in the following example: @@ -32,7 +37,9 @@ let x = "the answer" let x = 42 ``` -In this case `x` is not being redefined nor its type is being changed from a `string` to an `int`, instead there are two different bindings with the same name `x` to different values. Of course, this example is not very useful because one binding is happening right after the other, but consider the following: +In this case `x` is not being redefined nor its type is being changed from a `string` to an `int`, instead there are two +different bindings with the same name `x` to different values. Of course, this example is not very useful because one +binding is happening right after the other, but consider the following: ```fsharp let printName name = @@ -47,14 +54,20 @@ let printName name = printName "John Doe" ``` -Don't worry too much if you don't fully grasp the above code, the main goal of that snippet is to demonstrate that the function `printName` expects an argument named `name` and in its body it defines another function `stripLastName` that also expects an argument `name`. Inside the scope of `stripLastName` the `name` argument is creating a new binding and thus shadowing the `name` argument received on the `printName` function. And that can be asserted by the two prints at the end of the `printName` function. +Don't worry too much if you don't fully grasp the above code, the main goal of that snippet is to demonstrate that the +function `printName` expects an argument named `name` and in its body it defines another function `stripLastName` that +also expects an argument `name`. Inside the scope of `stripLastName` the `name` argument is creating a new binding and +thus shadowing the `name` argument received on the `printName` function. And that can be asserted by the two prints at +the end of the `printName` function. ## Comparing with Python The main differences that the `let` keyword in F# has from assignments in Python are: -- In Python one would use an assignment to define a named variable, and its value can be reassigned which is not the case in F#. -- In Python assignments are scope bound, so one can declare a new variable with an already used name as long as it is in a different scope, in F# that can be done within the same scope. +- In Python one would use an assignment to define a named variable, and its value can be reassigned which is not the + case in F#. +- In Python assignments are scope bound, so one can declare a new variable with an already used name as long as it is in + a different scope, in F# that can be done within the same scope. ### References diff --git a/docs-src/your-fable-project/author-a-fable-library.md b/docs-src/your-fable-project/author-a-fable-library.md index a7c3763..6f33ecc 100644 --- a/docs-src/your-fable-project/author-a-fable-library.md +++ b/docs-src/your-fable-project/author-a-fable-library.md @@ -18,8 +18,13 @@ The last point may sound complicated but it's only a matter of adding a couple o ``` -That's all it takes to make your library compatible with Fable! In order to publish the package to Nuget check [the Microsoft documentation](https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package-using-the-dotnet-cli) or alternatively you can also [use Fake](https://fake.build/dotnet-nuget.html#Creating-NuGet-packages). +That's all it takes to make your library compatible with Fable! In order to publish the package to Nuget check [the +Microsoft +documentation](https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package-using-the-dotnet-cli) or +alternatively you can also [use Fake](https://fake.build/dotnet-nuget.html#Creating-NuGet-packages). ## Testing -It's a good idea to write unit tests for your library to make sure everything works as expected before publishing. The simplest way for that is to use a JS test runner like [Mocha](https://mochajs.org/), as in [this sample](https://github.com/fable-compiler/fable2-samples/tree/master/mocha). Or you can also use a library like [Fable.Mocha](https://github.com/Zaid-Ajaj/Fable.Mocha) containing more tools for Fable projects. +It's a good idea to write unit tests for your library to make sure everything works as expected before publishing. The +simplest way for that is to use a Python test runner like [pytest](https://pytest.org/), as in [this +project](https://github.com/dbrattli/Fable.Giraffe). diff --git a/docs-src/your-fable-project/build-and-run.md b/docs-src/your-fable-project/build-and-run.md index a88dd7b..4a7a36e 100644 --- a/docs-src/your-fable-project/build-and-run.md +++ b/docs-src/your-fable-project/build-and-run.md @@ -2,45 +2,14 @@ Your project is ready? Then it's time to build and run it. -This process, however, is different depending on whether we are still in development or we are already preparing the project to deploy it to production. In development we don't care so much about optimizations and we want fast builds so we can see the results of our changes on-screen almost immediately. While for production we can endure a slower build in order to get JS code that is more optimized. +## Build -Webpack can be a bit difficult to configure. Most of the [samples](https://github.com/fable-compiler/fable3-samples) have a `webpack.config.js` file that you can use for reference. And there's also a [webpack config template for Fable](https://github.com/fable-compiler/webpack-config-template/blob/master/webpack.config.js) that is prepared to work in most projects. - -## Development - -Even if we already have our own server, when developing our frontend we want a server that is capable of detecting changes in the code and load them without restarting the app! This is what [webpack-dev-server](https://github.com/webpack/webpack-dev-server) does, so normally we'll be running it together with Fable in watch mode, as in `dotnet fable watch src --run webpack serve src/App.fs.js --mode development` - -> In most Fable projects, we use a `webpack.config.js` file to pass arguments to Webpack so you will only see the `webpack serve` command. - -If you use [npm-scripts](https://docs.npmjs.com/misc/scripts) as shortcuts for common actions, it's customary to use `npm start` to run in development mode. Example of `package.json`: - -```json - "scripts": { - "start": "dotnet fable watch src --run webpack serve" - }, +```console +> dotnet fable --lang py project.fsx ``` -> If you also have your own server, you probably want to redirect API calls to it. You can use the [devServer.proxy](https://webpack.js.org/configuration/dev-server#devserverproxy) Webpack configuration option for that. - -The webpack-dev-server will keep running until you kill the process, picking up the changes in your code after you save a file. If you use [Hot Module Replacement](https://elmish.github.io/hmr/) it will try to inject the changes without restarting the app. Otherwise it will just refresh the web page. - -Note that webpack-dev-server serves the generated files from memory and doesn't actually write to disk. We will do that in the next step: building for production! +## Run -## Production - -When preparing the files for deployment, we don't need a special server. We can call Webpack CLI directly in production mode to enable optimizations like [JS minification](https://webpack.js.org/configuration/optimization#optimizationminimize): `dotnet fable src --run webpack --mode production`. - -> As before, in most configurations you don't need to set the `--mode` argument explicitly. And it's also customary to have a "build" (or sometimes "deploy") npm-script for this operation: - -```json - "scripts": { - "start": "dotnet fable watch src --run webpack serve", - "build": "dotnet fable src --run webpack" - }, +```console +> python project.py ``` - -Webpack will run only once and will write the generated files in the [output.path](https://webpack.js.org/configuration/output#outputpath). This is the directory you have to deploy to your host! - -## I don't want to use Webpack - -Then, depending on the sample you've chosen, build options may differ. Please refer to the README file for the chosen sample to get more information. diff --git a/docs-src/your-fable-project/project-file.md b/docs-src/your-fable-project/project-file.md index 9f0515b..aaaed68 100644 --- a/docs-src/your-fable-project/project-file.md +++ b/docs-src/your-fable-project/project-file.md @@ -1,10 +1,13 @@ # The project file -Unlike JS, F# projects require all sources to be listed **in compilation order** in an `.fsproj` file. This may look quite restrictive at first, but it does have [some advantages](https://fsharpforfunandprofit.com/posts/cyclic-dependencies/). -Since an F# project takes its roots from the .NET ecosystem, we need to follow a few obligatory steps in order to add a file to an F# project. +Unlike Python, F# projects require all sources to be listed **in compilation order** in an `.fsproj` file. This may look +quite restrictive at first, but it does have [some +advantages](https://fsharpforfunandprofit.com/posts/cyclic-dependencies/). Since an F# project takes its roots from the +.NET ecosystem, we need to follow a few obligatory steps in order to add a file to an F# project. :::{note} -Many F# IDEs already provide commands to perform operations like creating a project or adding/removing a file. The steps below are only necessary if you want to do this manually. +Many F# IDEs already provide commands to perform operations like creating a project or adding/removing a file. The steps +below are only necessary if you want to do this manually. :::
    diff --git a/docs/_sources/communicate/fable-from-py.md b/docs/_sources/communicate/fable-from-py.md deleted file mode 100644 index 162eef7..0000000 --- a/docs/_sources/communicate/fable-from-py.md +++ /dev/null @@ -1,274 +0,0 @@ -# Call Fable from Python - -Sometimes, we'd like to use the power of Fable in our JavaScript apps. For instance, to create a new -[js node in Node-RED](https://nodered.org/docs/creating-nodes/first-node) or call some handy F# code from our new Node.js serverless function or even call some powerful json parsing into our JavaScript app. - -It may allow you to play with Fable and add features, one at a time. So what does it take to call Fable from JavaScript? First you need to understand a bit how the generated JS code looks like so you can call it correctly. - -> Remember you can use the [Fable REPL](https://fable.io/repl/) to easily check the generated JS for your F# code! - -## Name mangling - -Because JS doesn't support overloading or multiple modules in a single file, Fable needs to mangle the name of some members to avoid clashes, which makes it difficult to call such functions or values from JS. However, there're some cases where Fable guarantees names won't change in order to improve interop: - -- Record fields -- Interface and abstract members -- Functions and values in the root module - -What's a root module? Because F# accepts multiple modules in the same file, we consider the root module the first one containing actual members and is not nested by any other. - -```fsharp -// It doesn't matter if we have a long namespace, Fable only starts -// counting when it finds actual code -module A.Long.Namespace.RootModule - -// The name of this function will be the same in JS -let add (x: int) (y: int) = x + y - -module Nested = - // This will be prefixed with the name of the module in JS - let add (x: int) (y: int) = x * y -``` - -In F# it's possible to have more than one root module in a single file, in that case everything will be mangled. You should avoid this pattern if you want to expose code to JS: - -```fsharp -namespace SharedNamespace - -// Here both functions will be mangled -// to prevent name conflicts -module Foo = - let add x y = x + y - -module Bar = - let add x y = x * y -``` - -### Custom behaviour - -In some cases, it's possible to change the default behavior towards name mangling: - -- If you want to have all members attached to a class (as in standard Python classes) and not-mangled use the `AttachMembers` attribute. But be aware **overloads won't work** in this case. -- If you are not planning to use an interface to interact with Python and want to have overloaded members, you can decorate the interface declaration with the `Mangle` attribute. Note: Interfaces coming from .NET BCL (like System.Collections.IEnumerator) are mangled by default. - -## Common types and objects - -Some F#/.NET types have [counterparts in JS](../dotnet/compatibility.md). Fable takes advantage of this to compile to native types that are more performant and reduce bundle size. You can also use this to improve interop when exchanging data between F# and Python. The most important common types are: - -- **Strings and booleans** behave the same in F# and Python. -- **Chars** are compiled as Python strings of length 1. This is mainly because string indexing in JS gives you another string. But you can use a char as a number with an explicit conversion like `int16 '家'`. -- **Numeric types** compile to JS numbers, except for `long`, `decimal` and `bigint`. -- **Arrays** (and `ResizeArray`) compile to JS arrays. _Numeric arrays_ compile to [Typed Arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) in most situations, though this shouldn't make a difference for most common operations like indexing, iterating or mapping. You can disable this behavior with [the `typedArrays` option](https://www.npmjs.com/package/fable-loader#options). -- Any **IEnumerable** (or `seq`) can be traversed in JS as if it were an [Iterable](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators#Iterables). -- **DateTime** compiles to JS `Date`. -- **Regex** compiles to JS `RegExp`. -- Mutable **dictionaries** (not F# maps) compile to [ES2015 Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map). -- Mutable **hashsets** (not F# sets) compile to [ES2015 Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set). - -> If the dictionary or hashset requires custom or structural equality, Fable will generate a custom type, but it will share the same properties as JS maps and sets. - -- **Objects**: As seen above, only record fields and interface members will be attached to objects without name mangling. Take this into account when sending to or receiving an object from JS. - -```fsharp -type MyRecord = - { Value: int - Add: int -> int -> int } - member this.FiveTimes() = - this.Value * 5 - -type IMyInterface = - abstract Square: unit -> float - -type MyClass(value: float) = - member __.Value = value - interface IMyInterface with - member __.Square() = value * value - -let createRecord(value: int) = - { Value = value - Add = fun x y -> x + y } - -let createClass(value: float) = - MyClass(value) -``` - -```js -import { createRecord, createClass } from "./Tests.fs" - -var record = createRecord(2); - -// Ok, we're calling a record field -record.Add(record.Value, 2); // 4 - -// Fails, this member is not actually attached to the object -record.FiveTimes(); - -var myClass = createClass(5); - -// Fails -myClass.Value; - -// Ok, this is an interface member -myClass.Square(); // 25 -``` - -## Functions: automatic uncurrying - -Fable will automatically uncurry functions in many situations: when they're passed as functions, when set as a record field... So in most cases you can pass them to and from JS as if they were functions without curried arguments. - -```fsharp -let execute (f: int->int->int) x y = - f x y -``` - -```js -import { execute } from "./TestFunctions.fs" - -execute(function (x, y) { return x * y }, 3, 5) // 15 -``` - -> Check [this](https://fsharpforfunandprofit.com/posts/currying/) for more information on function currying in F# (and other functional languages). - -### Using delegates for disambiguation - -There are some situations where Fable uncurrying mechanism can get confused, particularly with functions that return other functions. Let's consider the following example: - -```fsharp -open Fable.Core.JsInterop - -let myEffect() = - printfn "Effect!" - fun () -> printfn "Cleaning up" - -// Method from a JS module, expects a function -// that returns another function for disposing -let useEffect (effect: unit -> (unit -> unit)): unit = - importMember "my-js-module" - -// Fails, Fable thinks this is a 2-arity function -useEffect myEffect -``` - -The problem here is the compiler cannot tell `unit -> unit -> unit` apart from `unit -> (unit -> unit)`, it can only see a 2-arity lambda (a function accepting two arguments). This won't be an issue if all your code is in F#, but if you're sending the function to JS as in this case, Fable will incorrectly try to uncurry it causing unexpected results. - -To disambiguate these cases, you can use [delegates](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/delegates), like `System.Func` which are not curried: - -```fsharp -open System - -// Remove the ambiguity by using a delegate -let useEffect (effect: Func unit)>): unit = - importMember "my-js-module" - -// Works -useEffect(Func<_,_> myEffect) -``` - -## Call Fable source code from a JS file - -Webpack makes it very easy to include files in different programming languages in your project by using loaders. Because in a Fable project we assume you're already using the [fable-loader](https://www.npmjs.com/package/fable-loader), if you have a file like the following: - -```fsharp -module HelloFable - -let sayHelloFable() = "Hello Fable!" -``` - -Importing and using it from JS is as simple as if it were another JS file: - -```js -import { sayHelloFable } from "./HelloFable.fs" - -console.log(sayHelloFable()); -``` - -### Importing Fable code from Typescript - -For better or worse, Typescript wants to check your imported modules and because it doesn't know a thing of F#, it will complain if you try to import an .fs file: - -```ts -// Typescript will complain because it cannot read the file -import { sayHelloFable } from "./HelloFable.fs" -``` - -To appease the Typescript compiler, we need a [declaration file](https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html), which also gives us the opportunity to tell Typescript what is actually exported by our Fable code. If you place a `HelloFable.d.ts` file like the following, the import above will work: - -```ts -// Unfortunately declaration files don't accept relative paths -// so we just use the * wildcard -declare module "*HelloFable.fs" { - function sayHelloFable(): string; -} -``` - -## Call Fable compiled code as a library - -### ..from your web app - -If your project is a web app and you're using Webpack, it just takes two lines of code in the Webpack configuration in the `output` section of `module.exports`: - -```js -libraryTarget: 'var', -library: 'MyFableLib' -``` - -For instance: - -```js - output: { - path: path.join(__dirname, "./public"), - filename: "bundle.js", - libraryTarget: 'var', - library: 'MyFableLib' - }, -``` - -This tells Webpack that we want our Fable code to be available from a global variable named `MyFableLib`. That's it! - -:::{note} -Only the public functions and values in the **last file of the project** will be exposed. -::: - -#### Let's try! - -Let's compile the HelloFable app from above with a webpack.config.js that includes the following: - -```js -output: { - ... - libraryTarget: 'var', - library: 'OMGFable' -} -``` - -Now let's try this directly in our `index.html` file: - -```html - - - - -``` - -Et voilà! We're done! You can find a [full sample here](https://github.com/fable-compiler/fable2-samples/tree/master/interopFableFromJS). - -### ...from your Node.js app - -Basically it's the same thing. If you want to see a complete sample using a `commonjs` output instead of `var`, please [check this project](https://github.com/fable-compiler/fable2-samples/tree/master/nodejsbundle). There you'll see that we've added the following lines to the Webpack config: - -```js - library:"app", - libraryTarget: 'commonjs' -``` - -and then you can call your code from JavaScript like this: - -```js -let app = require("./App.js"); -``` - -### Learn more about Webpack `libraryTarget` - -If you want to know what your options are, please consult the [official documentation](https://webpack.js.org/configuration/output/#outputlibrarytarget). diff --git a/docs/_sources/communicate/py-from-fable.md b/docs/_sources/communicate/py-from-fable.md deleted file mode 100644 index 1990d90..0000000 --- a/docs/_sources/communicate/py-from-fable.md +++ /dev/null @@ -1,652 +0,0 @@ -# Call Python from Fable - -Interoperability is a matter of trust between your statically typed F# code and your untyped dynamic JS code. In order -to mitigate risks, Fable gives you several possibilities, amongst them type safety through interface contracts. -Sometimes it may sound more convenient to just call JS code in a more dynamic fashion, although be aware by doing this -potential bugs will not be discovered until runtime. - -We'll describe both the safe way and the dynamic way and then it will be up to you to decide. Let's start! - -## Adding the JS library to the project - -The very first thing to do is add the library to our project. Since we always have a `package.json` file, we'll just add -the wanted library to our project using either `npm install my-awesome-js-library`. The library will then be available -in the `node_modules` folder. - -> If your library is in a file, just skip this step. - -## Type safety with Imports and Interfaces - -To use code from JS libraries first you need to import it into F#. For this Fable uses [ES2015 -imports](https://developer.mozilla.org/en/docs/web/JavaScript/reference/statements/import), which can be later -transformed to other JS module systems like `commonjs` or `amd` by [Babel](https://babeljs.io/docs/en/plugins#modules). - -There are two ways to declare ES2015 imports in Fable: by using either the **Import attribute** or the **import -expressions**. The `ImportAttribute` can decorate members, types or modules and works as follows: - -```fsharp -// Namespace imports -[] -// import * from "my-module" - -// Member imports -[] -// import { myFunction } from "my-module" - -// Default imports -[] -// import Express from "express" -``` - -You can also use the following alias attributes: - -```fsharp -open Fable.Core -open Fable.Core.PyInterop - -// Same as Import("*", "my-module") -[] -let myModule: obj = nativeOnly - -// Same as Import("default", "my-module") -[] -let myModuleDefaultExport: obj = nativeOnly - -// The member name is taken from decorated value, here `myFunction` -[] -let myFunction(x: int): int = nativeOnly -``` - -If the value is globally accessible in JS, you can use the `Global` attribute with an optional name parameter instead. - -```fsharp -let [] console: JS.Console = nativeOnly - -// You can pass a string argument if you want to use a different name in your F# code -let [] logger: JS.Console = nativeOnly -``` - -### Importing relative paths when using an output directory - -If you are putting the generated JS files in an output directory using Fable's `-o` option, be aware that Fable will only move files corresponding to .fs sources, not external files like .js or .css. Fable will automatically adjust relative paths in imports to the location of the generated file, but sometimes it's difficult to know where the generated file will end up exactly. In these cases, it's useful to use the `${outDir}` macro which will be replaced by the output directory. For example, if we are importing a CSS module like this: - -```fsharp -[] -let styles: CssModule = nativeOnly -``` - -Let's say we're compiling with the `-o build` option and the file ends up in the `build/Components` directory. The generated code will look like: - -```js -import styles from "../../styles/styles.module.css"; -``` - -### OOP Class definition and inheritance - -Assuming we need to import a JS class, we can represent it in F# using a standard class declaration with an `Import` attribute. In this case we use `nativeOnly` as a dummy implementation for its members as the actual implementation will come from JS. When using `nativeOnly` don't forget to add the return type to the member! - -```fsharp -[] -type DataManager<'Model> (conf: Config) = - member _.delete(data: 'Model): Promise<'Model> = nativeOnly - member _.insert(data: 'Model): Promise<'Model> = nativeOnly - member _.update(data: 'Model): Promise<'Model> = nativeOnly -``` - -From this point it is possible to use it or even to inherit from it as it is usually done on regular F#, [see the official F# documentation](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/inheritance). If you want to inherit and override a member, F# requires you to declare the member as `abstract` in the base class, with a default implementation if you want to make it also directly usable from the base class. For example: - -```fsharp -// This class lives in Python -[] -type DataManager<'T> (conf: Config) = - abstract update: data: 'T -> Promise<'T> - default _.update(data: 'T): Promise<'T> = nativeOnly - -// This class lives in our code -type MyDataManager<'T>(config) = - inherit DataManager<'T>(config) - // We can do something with data before sending it to the base class - override _.update(data) = - base.update(data) - -let test (data: 'T) (manager: DataManager<'T>) = - manager.update(data) |> ignore - -// This will call MyDataManager.update even if test expects DataManager -MyDataManager(myConfig) |> test myData -``` - -:::{note} -If you have a Python type declaration for the Python code you want to import, you can use [ts2fable](https://github.com/fable-compiler/ts2fable) to help you write the F# bindings. -::: - -### Let's practice! 1st try! - -Now that we've seen this, let's review the code in the [interop](https://github.com/fable-compiler/fable3-samples/tree/master/interop) sample - -Let's say we have an `alert.js` file that we'd like to use in our Fable project. - -```js -function triggerAlert(message) { - alert(message); -} - -const someString = "And I Like that!"; - -export { triggerAlert, someString }; -``` - -As you can see we've got one function, `triggerAlert` and one constant `someString`. Both are exported using the ES6 `export` keyword. - -In order to use this in our Fable code, let's create an `interface` that will mimic this: - -```fsharp - open Fable.Core.JsInterop // needed to call interop tools - - type IAlert = - abstract triggerAlert : message:string -> unit - abstract someString: string -``` - -As you can see the process is quite easy. The `I` in `IAlert` is not mandatory but it's a precious hint that we're going to use an interface. The `abstract` keyword only indicates that there's no actual implementation in F#. That's true, since we rely on the JavaScript one. - -Now let's use this: - -```fsharp - [] - let mylib: IAlert = nativeOnly -``` - -Here we use the `ImportAll` attribute, which is the same as `Import("*", "path/to/alert.js")` just like we described earlier. - -- step 1: We specify the elements we wish to use. Here `*` means: "take everything that's been exported" -- step 2: we set the path to our js library. -- step 3: we create a let binding called `mylib` to map the js library. -- step 4: we use the `nativeOnly` keyword to say that `mylib` is just a placeholder for the JavaScript native implementation. - -Now we can use this: - -```fsharp -mylib.triggerAlert ("Hey I'm calling my js library from Fable > " + mylib.someString) -``` - -If everything's working correctly, it should create an alert popup in your browser! Of course this sample is intended for web apps, but you could do the same in a Node.js app. - -### Let's practice! 2nd try! - -Assuming we've got two exported functions from a `Canvas.js` file: `drawSmiley` and `drawBubble`: - -```js -export function drawSmiley(id) { - // do something -} -export function drawBubble(id) { - // do something -} -``` - -we could use the same method we used with `alert.js`: - -```fsharp - open Fable.Core.JsInterop // needed to call interop tools - - type ICanvas = - abstract drawSmiley: (id:string) -> unit - abstract drawBubble: (id:string) -> unit - - [] - let mylib: ICanvas = nativeOnly - - mylib.drawSmiley "smiley" // etc.. -``` - -or we could use the `importMember` helper function to directly map the js function to the F# function. - -```fsharp -open Fable.Core.JsInterop // needed to call interop tools - -module Canvas = - // here we just import a member function from canvas.js called drawSmiley. - let drawSmiley(id:string): unit = importMember "path/to/Canvas.js" - let drawBubble(id:string): unit = importMember "path/to/Canvas.js" - -Canvas.drawSmiley "smiley" -``` - -The result would be the same, but the philosophy is slightly different. That's basically up to you to make a choice 😉 - -### Miscellaneous import helpers - -There are other interop helpers you can use thanks to `Fable.Core.JsInterop`: - -```fsharp -open Fable.Core.JsInterop - -let buttons: obj = importAll "my-lib/buttons" -// JS: import * as buttons from "my-lib/buttons" - -// It works for function declarations too -let getTheme(x: int): IInterface = importDefault "my-lib" -// JS: import getTheme from "my-lib" - -let myString: string = importMember "my-lib" -// JS: import { myString } from "my-lib" - -// Use just `import` to make the member name explicit -// as with the ImportAttribute -let aDifferentName: string = import "myString" "my-lib" -// import { myString } from "my-lib" -``` - -Occasionally, you may need to import JS purely for its side-effects. For example, some browser polyfills don't export any functions, but extend the browser's built-in DOM types when executed. - -For this, use `importSideEffects`. - -```fsharp -open Fable.Core.JsInterop - -importSideEffects("my-polyfill-library") // from npm package - -importSideEffects("./my-polyfill.js") // from local .js file -``` - -## Emit, when F# is not enough - -You can use the `Emit` attribute to decorate a function. Every call to the function will then be replaced inline by the content of the attribute with the placeholders `$0, $1, $2...` replaced by the arguments. For example, the following code will generate JavaScript as seen below. - -```fsharp -open Fable.Core - -[] -let add (x: int) (y: string): string = nativeOnly - -let result = add 1 "2" -``` - -When you don't know the exact number of arguments you can use the following syntax: - -```fsharp -type Test() = - [] - member __.Invoke([] args: int[]): obj = nativeOnly -``` - -It's also possible to pass syntax conditioned to optional parameters: - -```fsharp -type Test() = - [] - member __.Item with get(): float = nativeOnly and set(v: float): unit = nativeOnly - - // This syntax means: if second arg evals to true in JS print 'i' and nothing otherwise - [] - member __.ParseRegex(pattern: string, ?ignoreCase: bool): Regex = nativeOnly -``` - -The content of `Emit` will actually be parsed by [Babel](https://babeljs.io/) so it will still be validated somehow. However, it's not advised to abuse this method, as the code won't be checked by the F# compiler. - -### Let's do it! Use Emit - -Now let's work with Emit and look at a new example with the following `MyClass.js`: - -```js -export default class MyClass { - // Note the constructor accepts an object - // with the `value` and `awesomeness` fields - constructor({ value, awesomeness }) { - this._value = value; - this._awesomeness = awesomeness; - } - - get value() { - return this._value; - } - - set value(newValue) { - this._value = newValue; - } - - isAwesome() { - return this._value === this._awesomeness; - } - - static getPI() { - return Math.PI; - } -} -``` - -Let's list its members: - -- a `value` member which returns the current value with a getter and a setter -- a method, `isAwesome`, that checks if the current value equals the awesome value -- a static method `getPi()` that just returns the value of `Math.PI` - -Here's the Fable implementation. Let's start with the members: - -```fsharp -type MyClass<'T> = - // Note we specify this property has also a setter - abstract value: 'T with get, set - abstract isAwesome: unit -> bool -``` - -Now we need to be able to call the static functions, including the constructor. So we write another interface for that: - -```fsharp -type MyClassStatic = - [] - abstract Create: 'T * 'T -> MyClass<'T> - abstract getPI : unit-> float -``` - -:::{note} -We could have used a class declaration with dummy implementations as we did with DataManager above, but you will find that in Fable bindings it's common to split the instance and static parts of a JS type in two interfaces to overcome some restrictions of the F# type system or to be able to deal with JS classes as values. In this case, by convention `Create` denotes the constructor. -::: - -Here we used the `Emit` attribute to apply the JS `new` keyword and to build a JS object with the arguments, because that's what MyClass constructor accepts. Note that here `$0` represents the interface object (in this case, MyClass static). - -Last but not least, let's import MyClass: - -```fsharp -[] -let MyClass : MyClassStatic = nativeOnly -``` - -Now it's possible to use our JS class. Let's see the complete code: - -```fsharp - -type MyClass<'T> = - abstract value: 'T with get, set - abstract isAwesome: unit -> bool - -type MyClassStatic = - [] - abstract Create: 'T * 'T -> MyClass<'T> - abstract getPI : unit-> float - -[] -let MyClass : MyClassStatic = nativeOnly - -let myObject = MyClass.Create(40, 42) - -// using getter -let whatDoIget = myObject.value // using getter -mylib.triggerAlert ("Hey I'm calling my js class from Fable. It gives " + (string whatDoIget)) - -// using setter -myObject.value <- 42 -mylib.triggerAlert ("Now it's better. It gives " + (string myObject.value)) - -// calling member function -mylib.triggerAlert ("Isn't it awesome? " + (string (myObject.isAwesome()))) - -// call our static function -mylib.triggerAlert ("PI is " + (string (MyClass.getPI()))) -``` - -It's possible to combine the `Import` and `Emit` attributes. So we can import and build MyClass in one go. Note that in this case `$0` is replaced by the imported element: - -```fsharp -[] -[] -let createMyClass(value: 'T, awesomeness: 'T) : MyClass<'T> = nativeOnly -``` - -## Other special attributes - -`Fable.Core` includes other attributes for JS interop, like: - -### Erase attribute - -In TypeScript there's a concept of [Union Types](https://www.typescriptlang.org/docs/handbook/advanced-types.html#union-types) which differs from union types in F#. The former are just used to statically check a function argument accepting different types. In Fable, they're translated as **Erased Union Types** whose cases must have one and only one single data field. After compilation, the wrapping will be erased and only the data field will remain. To define an erased union type, just attach the `Erase` attribute to the type. Example: - -```fsharp -open Fable.Core - -[] -type MyErasedType = - | String of string - | Number of int - -myLib.myMethod(String "test") -``` - -```js -myLib.myMethod("test"); -``` - -`Fable.Core` already includes predefined erased types which can be used as follows: - -```fsharp -open Fable.Core - -type Test = abstract Value: string -let myMethod(arg: U3): unit = importMember "./myJsLib" - -let testValue = { new Test with member __.Value = "Test" } -myMethod(U3.Case3 testValue) -``` - -When passing arguments to a method accepting `U2`, `U3`... you can use the `!^` as syntax sugar so you don't need to type the exact case (the argument will still be type checked): - -```fsharp -open Fable.Core.JsInterop - -myMethod !^5 // Equivalent to: myMethod(U3.Case2 5) -myMethod !^testValue - -// This doesn't compile, myMethod doesn't accept floats -myMethod !^2.3 -``` - -:::{note} -Please note erased unions are mainly intended for typing the signature of imported JS functions and not as a cheap replacement of `Choice`. It's possible to do pattern matching against an erased union type but this will be compiled as type testing, and since **type testing is very weak in Fable**, this is only recommended if the generic arguments of the erased union are types that can be easily told apart in the JS runtime (like a string, a number and an array). -::: - -```fsharp -let test(arg: U3) = - match arg with - | U3.Case1 x -> printfn "A string %s" x - | U3.Case2 x -> printfn "An int %i" x - | U3.Case3 xs -> Array.sum xs |> printfn "An array with sum %f" - -// In JS roughly translated as: - -// function test(arg) { -// if (typeof arg === "number") { -// toConsole(printf("An int %i"))(arg); -// } else if (isArray(arg)) { -// toConsole(printf("An array with sum %f"))(sum(arg)); -// } else { -// toConsole(printf("A string %s"))(arg); -// } -// } -``` - -### StringEnum - -In TypeScript it is possible to define [String Literal Types](https://mariusschulz.com/blog/string-literal-types-in-typescript) which are similar to enumerations with an underlying string value. Fable allows the same feature by using union types and the `StringEnum` attribute. These union types must not have any data fields as they will be compiled to a string matching the name of the union case. - -By default, the compiled string will have the first letter lowered. If you want to prevent this or use a different text than the union case name, use the `CompiledName` attribute: - -```fsharp -open Fable.Core - -[] -type MyStrings = - | Vertical - | [] Horizontal - -myLib.myMethod(Vertical, Horizontal) -``` - -```js -// js output -myLib.myMethod("vertical", "Horizontal"); -``` - -## Plain Old JavaScript Objects - -To create a plain JS object (aka POJO), use `createObj`: - -```fsharp -open Fable.Core.JsInterop - -let data = - createObj [ - "todos" ==> Storage.fetch() - "editedTodo" ==> Option.None - "visibility" ==> "all" - ] -``` - -A similar effect can be achieved with the new F# [anonymous records](https://devblogs.microsoft.com/dotnet/announcing-f-4-6-preview/): - -```fsharp -let data = - {| todos = Storage.fetch() - editedTodo = Option.None - visibility = "all" |} -``` - -:::{note} -Since fable-compiler 2.3.6, when using the dynamic cast operator `!!` to cast an anonymous record to an interface, Fable will raise a warning if the fields in the anonymous don't match those of the interface. Use this feature only to interop with JS, in F# code the proper way to instantiate an interface without an implementing type is an [object expression](https://fsharpforfunandprofit.com/posts/object-expressions/). -::: - -```fsharp -type IMyInterface = - abstract foo: string with get, set - abstract bar: float with get, set - abstract baz: int option with get, set - -// Warning, "foo" must be a string -let x: IMyInterface = !!{| foo = 5; bar = 4.; baz = Some 0 |} - -// Warning, "bar" field is missing -let y: IMyInterface = !!{| foo = "5"; bAr = 4.; baz = Some 0 |} - -// Ok, "baz" can be missing because it's optional -let z: IMyInterface = !!{| foo = "5"; bar = 4. |} -``` - -You can also create a JS object from an interface by using `createEmpty` and then assigning the fields manually: - -```fsharp -let x = createEmpty // var x = {} -x.foo <- "abc" // x.foo = "abc" -x.bar <- 8.5 // val.bar = 8.5 -``` - -A similar solution that can also be optimized by Fable directly into a JS object at compile time is to use the `jsOptions` helper: - -```fsharp -let x = jsOptions(fun x -> - x.foo <- "abc" - x.bar <- 8.5) -``` - -Another option is to use a list (or any sequence) of union cases in combination with the `keyValueList` helper. This is often used to represent React props. You can specify the case rules for the transformations of the case names (usually lowering the first letter) and if necessary you can also decorate some cases with the `CompiledName` attribute to change its name in the JS runtime. - -```fsharp -open Fable.Core.JsInterop - -type JsOption = - | Flag1 - | Name of string - | [] QTY of int - -let inline sendToJs (opts: JsOption list) = - keyValueList CaseRules.LowerFirst opts |> aNativeJsFunction - -sendToJs [ - Flag1 - Name "foo" - QTY 5 -] -// JS: { flag1: true, name: "foo", quantity: 5 } -``` - -:::{note} -Fable can make the transformation at compile time when applying the list literal directly to `keyValueList`. That's why it's usually a good idea to inline the function containing the helper. -::: - -### Dynamic typing: don't read this! - -Through the use of the tools we just described above, Fable guarantees you shouldn't run into nasty bugs (as long as the interface contracts are correct) because all the code will be checked by the compiler. If it does not compile it either means your JS library does not exist or its path is not good or that your F# implementation lacks something. We do rely on Fable on systems that are used 24/7, web apps or Node.js apps. We know that if it compiles, it means a 99% chance of running without any problems. - -Our motto is: "If it compiles, it works!" - -Still, like we stated, **interop is a question of trust**. If you trust your JS code and F# code, then maybe it's ok to do things together without further checks. Maybe. - -:::{warning} -Disclaimer: use this at your own risk -::: - -#### What is dynamic typing? - -Fable.Core.JsInterop implements the F# dynamic operators so you can easily access an object property by name (without static check) as follows: - -```fsharp -open Fable.Core.JsInterop - -printfn "Value: %O" jsObject?myProperty -// JS: jsObject?myProperty - -let pname = "myProperty" - -printfn "Value: %O" jsObject?(pname) // Access with a reference -// JS: jsObject[pname] - -jsObject?myProperty <- 5 // Assignment is also possible -``` - -When you combine the dynamic operator with application, Fable will destructure tuple arguments as with normal method calls. These operations can also be chained to replicate JS fluent APIs. - -```fsharp -let result = jsObject?myMethod(1, 2) -// JS: jsObject.myMethod(1, 2) - -chart - ?width(768.) - ?height(480.) - ?group(speedSumGroup) - ?on("renderlet", fun chart -> - chart?selectAll("rect")?on("click", fun sender args -> - Browser.console.log("click!", args)) - -// chart -// .width(768) -// .height(480) -// .group(speedSumGroup) -// .on("renderlet", function (chart) { -// return chart.selectAll("rect").on("click", function (sender, args) { -// return console.log("click!", args); -// }); -// }); -``` - -When you have to call a function with the new keyword in JS, use `createNew`. - -```fsharp -open Fable.Core.JsInterop - -let instance = createNew jsObject(1, 2) -// JS: new jsObject(1, 2) -``` - -If you prefer member extensions rather than operators for dynamic typing, you can open `Fable.Core.DynamicExtensions` to have the methods `.Item` and `.Invoke` available on any object. - -```fsharp -open Fable.Core.DynamicExtensions - -let foo = obj() -let bar1 = foo.["b"] // Same as foo.Item("b") -foo.["c"] <- 14 -let bar2 = foo.Invoke(4, "a") -``` - -#### Dynamic casting - -In some situations, when receiving an untyped object from JS you may want to cast it to a specific type. For this you can use the F# `unbox` function or the `!!` operator in Fable.Core.JsInterop. This will bypass the F# type checker but please note **Fable will not add any runtime check** to verify the cast is correct. diff --git a/docs/_sources/dotnet/compatibility.md b/docs/_sources/dotnet/compatibility.md deleted file mode 100644 index 82fa4ed..0000000 --- a/docs/_sources/dotnet/compatibility.md +++ /dev/null @@ -1,98 +0,0 @@ -# .NET and F# compatibility - -Fable provides support for some classes of .NET BCL (Base Class Library) and most of FSharp.Core library. When possible, Fable translates .NET types and methods to native JavaScript APIs for minimum overhead. - -## .NET Base Class Library - -The following classes are translated to JS and most of their methods (static and instance) should be available in Fable. - -.NET | JavaScript ---------------------------------------|---------------------------- -Numeric Types | number -Arrays | Array / Typed Arrays -Events | fable-core/Event -System.Boolean | boolean -System.Char | string -System.String | string -System.Guid | string -System.TimeSpan | number -System.DateTime | Date -System.DateTimeOffset | Date -System.Timers.Timer | fable-core/Timer -System.Collections.Generic.List | Array -System.Collections.Generic.HashSet | Set -System.Collections.Generic.Dictionary | Map -System.Text.RegularExpressions.Regex | RegExp -System.Lazy | fable-core/Lazy -System.Random | {} -System.Math | (native JS functions) - -The following static methods are also available: - -- `System.Console.WriteLine` (also with formatting) -- `System.Diagnostics.Debug.WriteLine` (also with formatting) -- `System.Diagnostics.Debug.Assert(condition: bool)` -- `System.Diagnostics.Debugger.Break()` -- `System.Activator.CreateInstance<'T>()` - -There is also support to convert between numeric types and to parse strings, check [the conversion tests](https://github.com/fable-compiler/Fable/blob/master/tests/Main/ConvertTests.fs). - -### Caveats - -- All numeric types become JS `number` (64-bit floating type), except for `int64`, `uint64`, `bigint` and `decimal`. Check the [Numeric Types](numbers.md) section to learn more about the differences between .NET and JS. -- Numeric arrays are compiled to [Typed Arrays](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray) when possible. -- No bound checks for numeric types (unless you do explicit conversions like `byte 500`) nor for array indices. -- `Regex` will always behave as if passed `RegexOptions.ECMAScript` flag (e.g., no negative look-behind or named groups). - -## FSharp.Core - -Most of FSharp.Core operators are supported, as well as formatting with `sprintf`, `printfn` or `failwithf` (`String.Format` is also available). -The following types and/or corresponding modules from FSharp.Core lib will likewise translate to JS: - -.NET | JavaScript -------------------|---------------------------------------------------------- -Tuples | Array -Option | (erased) -Choice | fable-core/Choice -Result | fable-core/Result -String | fable-core/String (module) -Seq | [Iterable](http://babeljs.io/docs/learn-es2015/#iterators-for-of) -List | fable-core/List -Map | fable-core/Map -Set | fable-core/Set -Async | fable-core/Async -Event | fable-core/Event (module) -Observable | fable-core/Observable (module) -Arrays | Array / Typed Arrays -Events | fable-core/Event -MailboxProcessor | fable-core/MailboxProcessor (limited support) - -### Caveats II - -- Options are **erased** in Python (`Some 5` becomes just `5` in Python and `None` translates to `null`). This is needed for example, to represent Python [optional properties](https://docs.python.org/3/library/typing.html#typing.Optional). However in a few cases (like nested options) there is an actual representation of the option in the runtime. -- `Async.RunSynchronously` is not supported. -- `MailboxProcessor` is single-threaded in Python and currently only `Start`, `Receive`, `Post` and `PostAndAsyncReply` are implemented (`cancellationToken` or `timeout` optional arguments are not supported). - -## Object Oriented Programming - -Most of F# OOP features are compatible with Fable: interfaces and abstract classes, structs, inheritance, overloading, etc. However, please note that due to some limitations of [ES2015 classes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) the generated code uses the [prototype chain](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Inheritance_and_the_prototype_chain) instead. Also note that instance members are not attached to the prototype, which means they won't be accessible from native JS code. The exception to this rule are the implementations of **interface and abstract members**. - -### Caveats III - -- It's not possible to type test against interfaces or generic types. - -## Reflection and Generics - -There is some reflection support in Fable, you can check the [reflection tests](https://github.com/fable-compiler/Fable/blob/master/tests/Main/ReflectionTests.fs) to see what is currently possible. - -Generics are erased by default in the generated Python code. However, it is still possible to access generic information (like `typeof<'T>`) at runtime by marking functions with `inline`: - -```fsharp -let doesNotCompileInFable(x: 'T) = - typeof<'T>.FullName |> printfn "%s" - -let inline doesWork(x: 'T) = - typeof<'T>.FullName |> printfn "%s" - -doesWork 5 -``` diff --git a/docs/_sources/dotnet/numbers.md b/docs/_sources/dotnet/numbers.md deleted file mode 100644 index e5814f9..0000000 --- a/docs/_sources/dotnet/numbers.md +++ /dev/null @@ -1,64 +0,0 @@ -# Numeric types - -In Fable, we use F# numeric types, which are all translated to Python integers at the exception of `float`, `double`, and `decimal`. - -Fable numbers are very nearly compatible with .NET semantics, but translating into Python types has consequences: - -* (non-standard) All floating point numbers are implemented as 64 bit (`double`). This makes `float32` numbers more accurate than expected. -* (non-standard) Arithmetic integers of 32 bits or less are implemented with different truncation from that expected, as whole numbers embedded within `double`. -* (OK) Conversions between types are correctly truncated. -* (OK) Bitwise operations for 64 bit and 32 bit integers are correct and truncated to the appropriate number of bits. -* (non-standard) Bitwise operations for 16 bit and 8 bit integers use the underlying JavaScript 32 bit bitwise semantics. Results are not truncated as expected, and shift operands are not masked to fit the data type. -* (OK) Longs have a custom implementation which is identical in semantics to .NET and truncates in 64 bits, although it is slower. - -32 bit integers thus differ from .NET in two ways: - -* Underlying 52 bit precision, without expected truncation to 32 bits on overflow. Truncation can be forced if needed by `>>> 0`. -* On exceeding 52 bits absolute value floating point loses precision. So overflow will result in unexpected lower order 0 bits. - -The loss of precision can be seen in a single multiplication: - -```fsharp -((1 <<< 28) + 1) * ((1 <<< 28) + 1) >>> 0 -``` - -The multiply product will have internal double representation rounded to `0x0100_0000_2000_0000`. When it is truncated to 32 bits by `>>> 0` the result will be `0x2000_0000` not the .NET exact lower order bits value of `0x2000_0001`. - -The same problem can be seen where repeated arithmetic operations make the internal (non-truncated) value large. For example a linear congruence random number generator: - -```fsharp -let rng (s:int32) = 10001*s + 12345 -``` - -The numbers generated by repeated application of this to its result will all be even after the 4th pseudo-random number, when `s` value exceeds 2^53: - -```fsharp -let rec randLst n s = - match n with - | 0 -> [s] - | n -> s :: randLst (n-1) (rng s) - -List.iter (printfn "%x") (randLst 7 1) -``` - -The resulting printed list of pseudo-random numbers does not work in Fable: - -| Fable | .NET | -|-------:|------:| -|1|1| -|574a|574a -|d524223|d524223| -|6a89e98c|6a89e98c| -|15bd0684|15bd0685| -|3d8b8000|3d8be20e| -|50000000|65ba5527| -|0|2458c8d0| - -## Workarounds - -* When accurate low-order bit arithmetic is needed and overflow can result in numbers larger than 2^53 use `int64`, `uint64`, which use exact 64 bits, instead of `int32`, `uint32`. -* Alternately, truncate all arithmetic with `>>> 0` or `>>> 0u` as appropriate before numbers can get larger than 2^53: `let rng (s:int32) = 10001*s + 12345 >>> 0` - -## Printing - -One small change from .NET in `printf`, `sprintf`, `ToString`. Negative signed integers are printed in hexadecimal format as sign + magnitude, in .NET they are printed as two's complement bit patterns. diff --git a/docs/_sources/index.md b/docs/_sources/index.md deleted file mode 100644 index aaa1bf2..0000000 --- a/docs/_sources/index.md +++ /dev/null @@ -1,453 +0,0 @@ -# Python you can be proud of! - -````{panels} - **Functional programming and more** -^^^ -Immutable by default. Powerful pattern matching. Lightweight syntax. Units of measure. Type providers. Enjoy. ---- - **Type safety without the hassle** -^^^ -Type inference provides robustness and correctness, but without the cost of additional code. Let the compiler catch bugs for you. -```` - - -
    - -
    - -
    - -
    - -
    -
    - - -
    -

    - Fable is a compiler that brings F# into the JavaScript ecosystem -

    -
    - - -
    - -
    -
    -
    -
    -
    -
    - - -
    -
    -
    - - Functional programming and more - -

    - Immutable by default. Powerful pattern matching. Lightweight syntax. Units of measure. Type providers. Enjoy. -

    -
    -
    -
    -
    -
    -
    - - - -
    -
    - - Type safety without the hassle - -

    - Type inference provides robustness and correctness, but without the cost of additional code. Let the compiler catch bugs for you. -

    -
    -
    -
    -
    -
    -
    - - - -
    -
    - - Modern Javascript output - -

    - Fable produces readable JavaScript code compatible with ES2015 standards and popular tooling like Webpack. -

    -
    -
    -
    -
    -
    -
    - - - -
    -
    - - Easy JavaScript interop - -

    - Call JavaScript from Fable or Fable from JS. Use NPM packages. The entire JavaScript ecosystem is at your fingertips. -

    -
    -
    -
    -
    -
    -
    - - - -
    -
    - - First-class editor tools - -

    - Choose your favorite tool: from Visual Studio Code to JetBrains Rider. Check the whole list here. -

    -
    -
    -
    -
    -
    -
    - - - -
    -
    - - Batteries included - -

    - Fable supports the F# core library and some common .NET libraries to supplement the JavaScript ecosystem. -

    -
    -
    -
    -
    -
    -
    -

    - Features -

    -

    - These are some of the main F# features that you can use in your web apps with Fable. -

    -
    -
    -

    - Powerful pattern matching -

    -

    - These are some of the main F# features that you can use in your web apps with Fable. -

    -
    -
    -
    - - -```fsharp -type Face = - | Ace | King | Queen | Jack - | Number of int -type Color = - | Spades | Hearts | Diamonds | Clubs -type Card = - | Face * Color - -let aceOfHearts = Ace,Hearts -let tenOfSpades = (Number 10), Spades - -match card with -| Ace, Hearts -> - printfn "Ace Of Hearts!" -| _, Hearts -> - printfn "A lovely heart" -| (Number 10), Spades -> - printfn "10 of Spades" -| _, (Diamonds|Clubs) -> - printfn "Diamonds or clubs" -// Warning: -// Incomplete pattern matches on this expression. -// For example, the value '(_,Spades)' may indicate -// a case not covered by the pattern(s). -``` -
    -
    -
    -
    -
    -

    - Computation expressions -

    -

    - There's a lot of code involving continuations out there, like asynchronous or undeterministic operations. Other languages bake specific solutions into the syntax, with F# you can use built-in computation expressions and also extend them yourself. -

    -
    -
    -
    - - -```fsharp -// Python async made easy -task { - let! res = Fetch.fetch url [] - let! txt = res.text() - return txt.Length -} - -// Declare your own computation expression -type OptionBuilder() = - member __.Bind(opt, binder) = - match opt with - | Some value -> binder value - | None -> None - member __.Return(value) = - Some value - -let option = OptionBuilder() - -option { - let! x = trySomething() - let! y = trySomethingElse() - let! z = andYetTrySomethingElse() - // Code will only hit this point if the three - // operations above return Some - return x + y + z -} -``` -
    -
    -
    -
    -
    -

    - Units of measure -

    -

    - These are some of the main F# features that you can use in your web apps with Fable. -

    -
    -
    -
    - - -```fsharp -[] type m -[] type s - -let distance = 12.0 -let time = 6.0 - -let thisWillFail = distance + time -// ERROR: The unit of measure 'm' does -// not match the unit of measure 's' - -let thisWorks = distance / time -// 2.0 -``` -
    -
    -
    -
    -
    -

    - Type providers -

    -

    - Build your types using real-world conditions and make the compiler warn you if those conditions change. -

    -
    -
    -
    - - -```fsharp -[] -let JSON_URL = "https://jsonplaceholder.typicode.com/todos" - -// Type is created automatically from the url -type Todos = Fable.JsonProvider.Generator - -async { - let! (_, res) = Fable.SimpleHttp.Http.get url - let todos = Todos.ParseArray res - for todo in todos do - // Compilation fail if the JSON schema changes - printfn "ID %i, USER: %i, TITLE %s, COMPLETED %b" - todo.id - todo.userId - todo.title - todo.completed -} -``` -
    -
    -
    -
    -
    -

    - Users of Fable -

    -

    - These are some of the projects and companies using Fable. Send us a message to include yours! -

    -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    - - - -
    -
    -
    -
    - - - diff --git a/docs/_sources/intro.md b/docs/_sources/intro.md deleted file mode 100644 index c22c7c1..0000000 --- a/docs/_sources/intro.md +++ /dev/null @@ -1,42 +0,0 @@ -# What is Fable? - -Fable is a compiler that lets you use [F#](https://fsharp.org/) to build applications that run in the Python ecosystem. - -```fsharp -type Shape = - | Square of side: double - | Rectangle of width: double * length: double - -let getArea shape = - match shape with - | Square side -> side * side - | Rectangle (width, length) -> width * length - -let square = Square 2.0 -printfn $"The area of the square is {getArea square}" -``` - -## What is F#? - -F# (pronounced f-sharp) is a strongly typed Functional programming language which offers many great features to build robust and maintable code such as: - -- Lightweight syntax -- Immutability baked into the language by default -- Rich types which let you represent easily your data or your domain -- Powerful pattern matching to define complex behaviors -- And so much more... - -F# is already used on the server for web and cloud apps, and it's also used quite a lot for data science and machine learning. It's a great general-purpose language, and also a great fit for building beautiful UIs that run in the browser. - -## Why use F# for your next Python project? - -F# is a great choice to build beautiful apps that run in the browser. F# is: - -* Succinct with lightweight syntax -* Robust with a great type system and pattern matching -* Safe with immutability baked into the language -* Supported by large companies (such as Microsoft and Jetbrains) and comes with commercial tooling support - -When compared with Python, F# is safer, more robust, and more pleasant to read and write. - -F# is a mature language with functional programming and object programming capabilities, but it doesn't sacrifice readability or simplicity to offer these things. Because of that, we think it's a great choice for your next Python application. diff --git a/docs/_sources/introduction/dotnet-users-read-this.md b/docs/_sources/introduction/dotnet-users-read-this.md deleted file mode 100644 index 2dfedba..0000000 --- a/docs/_sources/introduction/dotnet-users-read-this.md +++ /dev/null @@ -1,28 +0,0 @@ -# Are you a .NET developer? - -Hi! - -We're happy you decided to try Fable Python, which is F# fully transpiled to Python. - -## Fable Python brings some .NET familiarity - -Since it's F# you probably wonder how Fable interacts with your .NET environment. - -For starters, using F# for fable apps is very similar to using F# for .NET apps: - -1. Fable projects use standard `.fsproj` project files (which can also be part of `.sln` solutions) or `.fsx` scripts -2. You can use well-known .NET/F# tools like NuGet, Paket or Fake to manage dependencies or your build -3. You can use any F# editor like Visual Studio, Ionide or Rider -4. Many common classes and routines from the **System** namespace have been mapped to Fable to provide a familiar interface for very common things, such as `DateTime`, `Math`, `String`, etc. -5. Most of **FSharp.Core** is also supported. Check the ".NET and F# Compatibility" section. - -## Fable is Python - -Although Fable brings a lot of familiarity for F# and .NET developers, the target runtime is Python. This difference impacts several important areas: - -* Your dependencies will be Python (e.g PyPI) dependencies, not .NET dependencies -* Runtime behavior will be based on Python semantics, not .NET semantics - -There are some NuGet packages you can add into an F# project, but these packages have to also target Fable Python. Otherwise, your dependencies will directly be Python dependencies. Please check the "Author a Fable library" section to learn more, especially if you are a library author and would like to make your package compatible with Fable Python. - -These differences may seem like a lot to take in at once, but they're important for building robust applications. There have been efforts in the past to try and "magically" turn .NET code into JS, and these all tend to fail. The reality is that your target runtime environment will affect how your app runs and how you build it. However, once you internalize this, you'll find that using F# for web apps with Fable is incredibly productive, making web programming a lot more joyful than just using Python! diff --git a/docs/_sources/introduction/py-users-read-this.md b/docs/_sources/introduction/py-users-read-this.md deleted file mode 100644 index 4308536..0000000 --- a/docs/_sources/introduction/py-users-read-this.md +++ /dev/null @@ -1,24 +0,0 @@ -# Are you a Python developer? - -## Welcome to Fable! - -Hi! - -We're happy you decided to try Fable. Since F# is a language originally created for the .NET environment, Fable uses some tools that come from there. - -Don't panic! There is enough documentation to explain how the .NET tools integrate in your environment. And there are basically only two things you need to know: - -1. Fable uses F# project files (`.fsproj`) to list your F# code files and libraries. -2. Fable uses NuGet to load F# libraries, which is the equivalent of NPM for the .NET environment - -Voilà. Nothing else. We'll come to explanations later in the docs. But we promise, there's nothing you won't understand right away. Apart from these facts, it's all JavaScript! - -**Welcome home!** - -- Fable transpiles F# to ES2015 JavaScript, Fable uses the great [Babel](https://babeljs.io/) tool for that. -- Fable integrates with the popular [Webpack](https://webpack.js.org/). And it's not hard to use another bundler. -- JS Dependencies are listed in your common `package.json` file. -- Unit testing is available through [Fable.Mocha](https://github.com/Zaid-Ajaj/Fable.Mocha) (but you can use another test runner if you wish). -- In most cases, building and running a Fable project only requires to call `npm install` and `npm start`. - -So since we're mainly using JavaScript tools, you won't be lost with Fable! diff --git a/docs/_sources/markdown.md b/docs/_sources/markdown.md deleted file mode 100644 index 5d5ae76..0000000 --- a/docs/_sources/markdown.md +++ /dev/null @@ -1,125 +0,0 @@ -# Markdown Files - -Whether you write your book's content in Jupyter Notebooks (`.ipynb`) or -in regular markdown files (`.md`), you'll write in the same flavor of markdown -called **MyST Markdown**. - -## What is MyST? - -MyST stands for "Markedly Structured Text". It -is a slight variation on a flavor of markdown called "CommonMark" markdown, -with small syntax extensions to allow you to write **roles** and **directives** -in the Sphinx ecosystem. - -## What are roles and directives? - -Roles and directives are two of the most powerful tools in Jupyter Book. They -are kind of like functions, but written in a markup language. They both -serve a similar purpose, but **roles are written in one line**, whereas -**directives span many lines**. They both accept different kinds of inputs, -and what they do with those inputs depends on the specific role or directive -that is being called. - -### Using a directive - -At its simplest, you can insert a directive into your book's content like so: - -```` -```{mydirectivename} -My directive content -``` -```` - -This will only work if a directive with name `mydirectivename` already exists -(which it doesn't). There are many pre-defined directives associated with -Jupyter Book. For example, to insert a note box into your content, you can -use the following directive: - -```` -```{note} -Here is a note -``` -```` - -This results in: - -```{note} -Here is a note -``` - -In your built book. - -For more information on writing directives, see the -[MyST documentation](https://myst-parser.readthedocs.io/). - - -### Using a role - -Roles are very similar to directives, but they are less-complex and written -entirely on one line. You can insert a role into your book's content with -this pattern: - -``` -Some content {rolename}`and here is my role's content!` -``` - -Again, roles will only work if `rolename` is a valid role's name. For example, -the `doc` role can be used to refer to another page in your book. You can -refer directly to another page by its relative path. For example, the -role syntax `` {doc}`intro` `` will result in: {doc}`intro`. - -For more information on writing roles, see the -[MyST documentation](https://myst-parser.readthedocs.io/). - - -### Adding a citation - -You can also cite references that are stored in a `bibtex` file. For example, -the following syntax: `` {cite}`holdgraf_evidence_2014` `` will render like -this: {cite}`holdgraf_evidence_2014`. - -Moreover, you can insert a bibliography into your page with this syntax: -The `{bibliography}` directive must be used for all the `{cite}` roles to -render properly. -For example, if the references for your book are stored in `references.bib`, -then the bibliography is inserted with: - -```` -```{bibliography} -``` -```` - -Resulting in a rendered bibliography that looks like: - -```{bibliography} -``` - - -### Executing code in your markdown files - -If you'd like to include computational content inside these markdown files, -you can use MyST Markdown to define cells that will be executed when your -book is built. Jupyter Book uses *jupytext* to do this. - -First, add Jupytext metadata to the file. For example, to add Jupytext metadata -to this markdown page, run this command: - -``` -jupyter-book myst init markdown.md -``` - -Once a markdown file has Jupytext metadata in it, you can add the following -directive to run the code at build time: - -```` -```{code-cell} -print("Here is some code to execute") -``` -```` - -When your book is built, the contents of any `{code-cell}` blocks will be -executed with your default Jupyter kernel, and their outputs will be displayed -in-line with the rest of your content. - -For more information about executing computational content with Jupyter Book, -see [The MyST-NB documentation](https://myst-nb.readthedocs.io/). diff --git a/docs/_sources/new-to-fsharp/learning-the-language.md b/docs/_sources/new-to-fsharp/learning-the-language.md deleted file mode 100644 index 5b0654b..0000000 --- a/docs/_sources/new-to-fsharp/learning-the-language.md +++ /dev/null @@ -1,8 +0,0 @@ -# Learning the language - -There are many resources available to learn F#. This section is only intended as a general guide targeted to JS developers, but is mainly contribution-driven and is still a work in progress. If you already know the basics of the language you can skip to [the next section](../2-steps/setup.html) or you can also check other sites and books about F# like: - -- [Tour of F#](https://docs.microsoft.com/en-us/dotnet/fsharp/tour) -- [F# for Fun and Profit](https://fsharpforfunandprofit.com/) -- [F# Software Foundation](https://fsharp.org/) -- [Get Programming with F#](https://www.manning.com/books/get-programming-with-f-sharp) (book) diff --git a/docs/_sources/new-to-fsharp/let-keyword.md b/docs/_sources/new-to-fsharp/let-keyword.md deleted file mode 100644 index acf6096..0000000 --- a/docs/_sources/new-to-fsharp/let-keyword.md +++ /dev/null @@ -1,61 +0,0 @@ -# The let keyword - -`let` is the F# keyword used to bind any value to a name, it's used to bind the so called primitive types such as a `string` or an `integer`, to bind to a function or more complex structures such as arrays or records. - -Here's how you can bind a string to an identifier named `x`: - -```fsharp -let x = "some text" -``` - -The above snippet would be considered a constant in some other languages such as JavaScript. In F# there's no `var` or `const` there's only `let` and since in F# every value is immutable by default, that snippet is the equivalent of a constant. - -Note that `let` in F# is different than `let` in JavaScript and this will be mentioned later on this page. - -We're going to see more on functions later but here's how you can bind a function to an identifier named `add`: - -```fsharp -let add x y = - x + y -``` - -In the above snippet a function that adds two integers is being bound to an identifier named `add` and then two values are being bound to the identifiers `x` and `y`. - -## Shadowing - -In F#, bindings are immutable by default which means that normally one _can't_ reassign a value to a named binding, rather, if you try to do so using `let` what will happen is that you'll shadow an existing binding. - -For instance, in the following example: - -```fsharp -let x = "the answer" -let x = 42 -``` - -In this case `x` is not being redefined nor its type is being changed from a `string` to an `int`, instead there are two different bindings with the same name `x` to different values. Of course, this example is not very useful because one binding is happening right after the other, but consider the following: - -```fsharp -let printName name = - let stripLastName name = - if (String.exists (fun c -> c = ' ') name) then - name.Split([|' '|]).[0] - else - name - printfn "%s" name // Will print "John Doe" - printfn "%s" (stripLastName name) // Will print "John" - -printName "John Doe" -``` - -Don't worry too much if you don't fully grasp the above code, the main goal of that snippet is to demonstrate that the function `printName` expects an argument named `name` and in its body it defines another function `stripLastName` that also expects an argument `name`. Inside the scope of `stripLastName` the `name` argument is creating a new binding and thus shadowing the `name` argument received on the `printName` function. And that can be asserted by the two prints at the end of the `printName` function. - -## Comparing with Python - -The main differences that the `let` keyword in F# has from assignments in Python are: - -- In Python one would use an assignment to define a named variable, and its value can be reassigned which is not the case in F#. -- In Python assignments are scope bound, so one can declare a new variable with an already used name as long as it is in a different scope, in F# that can be done within the same scope. - -### References - -- [let Bindings](https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/functions/let-bindings) diff --git a/docs/_sources/notebooks.ipynb b/docs/_sources/notebooks.ipynb deleted file mode 100644 index 318f9df..0000000 --- a/docs/_sources/notebooks.ipynb +++ /dev/null @@ -1,122 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Content with notebooks\n", - "\n", - "You can also create content with Jupyter Notebooks. This means that you can include\n", - "code blocks and their outputs in your book.\n", - "\n", - "## Markdown + notebooks\n", - "\n", - "As it is markdown, you can embed images, HTML, etc into your posts!\n", - "\n", - "![](https://myst-parser.readthedocs.io/en/latest/_static/logo-wide.svg)\n", - "\n", - "You can also $add_{math}$ and\n", - "\n", - "$$\n", - "math^{blocks}\n", - "$$\n", - "\n", - "or\n", - "\n", - "$$\n", - "\\begin{aligned}\n", - "\\mbox{mean} la_{tex} \\\\ \\\\\n", - "math blocks\n", - "\\end{aligned}\n", - "$$\n", - "\n", - "But make sure you \\$Escape \\$your \\$dollar signs \\$you want to keep!\n", - "\n", - "## MyST markdown\n", - "\n", - "MyST markdown works in Jupyter Notebooks as well. For more information about MyST markdown, check\n", - "out [the MyST guide in Jupyter Book](https://jupyterbook.org/content/myst.html),\n", - "or see [the MyST markdown documentation](https://myst-parser.readthedocs.io/en/latest/).\n", - "\n", - "## Code blocks and outputs\n", - "\n", - "Jupyter Book will also embed your code blocks and output in your book.\n", - "For example, here's some sample Matplotlib code:" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from matplotlib import rcParams, cycler\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "plt.ion()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Fixing random state for reproducibility\n", - "np.random.seed(19680801)\n", - "\n", - "N = 10\n", - "data = [np.logspace(0, 1, 100) + np.random.randn(100) + ii for ii in range(N)]\n", - "data = np.array(data).T\n", - "cmap = plt.cm.coolwarm\n", - "rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N)))\n", - "\n", - "\n", - "from matplotlib.lines import Line2D\n", - "custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),\n", - " Line2D([0], [0], color=cmap(.5), lw=4),\n", - " Line2D([0], [0], color=cmap(1.), lw=4)]\n", - "\n", - "fig, ax = plt.subplots(figsize=(10, 5))\n", - "lines = ax.plot(data)\n", - "ax.legend(custom_lines, ['Cold', 'Medium', 'Hot']);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There is a lot more that you can do with outputs (such as including interactive outputs)\n", - "with your book. For more information about this, see [the Jupyter Book documentation](https://jupyterbook.org)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.0" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "state": {}, - "version_major": 2, - "version_minor": 0 - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/docs/_sources/your-fable-project/author-a-fable-library.md b/docs/_sources/your-fable-project/author-a-fable-library.md deleted file mode 100644 index a7c3763..0000000 --- a/docs/_sources/your-fable-project/author-a-fable-library.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Author a Fable library -layout: standard ---- - -To write a library that can be used in Fable you only need to fulfill a few conditions: - -- Don't use FSharp.Core/BCL APIs that are not [compatible with Fable](../dotnet/compatibility.html). -- Keep a simple `.fsproj` file: don't use MSBuild conditions or similar. -- Include the source files in the Nuget package in a folder named `fable`. - -The last point may sound complicated but it's only a matter of adding a couple of lines to your project file and let the `dotnet pack` command do all the rest. - -```xml - - - - -``` - -That's all it takes to make your library compatible with Fable! In order to publish the package to Nuget check [the Microsoft documentation](https://docs.microsoft.com/en-us/nuget/quickstart/create-and-publish-a-package-using-the-dotnet-cli) or alternatively you can also [use Fake](https://fake.build/dotnet-nuget.html#Creating-NuGet-packages). - -## Testing - -It's a good idea to write unit tests for your library to make sure everything works as expected before publishing. The simplest way for that is to use a JS test runner like [Mocha](https://mochajs.org/), as in [this sample](https://github.com/fable-compiler/fable2-samples/tree/master/mocha). Or you can also use a library like [Fable.Mocha](https://github.com/Zaid-Ajaj/Fable.Mocha) containing more tools for Fable projects. diff --git a/docs/_sources/your-fable-project/build-and-run.md b/docs/_sources/your-fable-project/build-and-run.md deleted file mode 100644 index a88dd7b..0000000 --- a/docs/_sources/your-fable-project/build-and-run.md +++ /dev/null @@ -1,46 +0,0 @@ -# Build & run - -Your project is ready? Then it's time to build and run it. - -This process, however, is different depending on whether we are still in development or we are already preparing the project to deploy it to production. In development we don't care so much about optimizations and we want fast builds so we can see the results of our changes on-screen almost immediately. While for production we can endure a slower build in order to get JS code that is more optimized. - -Webpack can be a bit difficult to configure. Most of the [samples](https://github.com/fable-compiler/fable3-samples) have a `webpack.config.js` file that you can use for reference. And there's also a [webpack config template for Fable](https://github.com/fable-compiler/webpack-config-template/blob/master/webpack.config.js) that is prepared to work in most projects. - -## Development - -Even if we already have our own server, when developing our frontend we want a server that is capable of detecting changes in the code and load them without restarting the app! This is what [webpack-dev-server](https://github.com/webpack/webpack-dev-server) does, so normally we'll be running it together with Fable in watch mode, as in `dotnet fable watch src --run webpack serve src/App.fs.js --mode development` - -> In most Fable projects, we use a `webpack.config.js` file to pass arguments to Webpack so you will only see the `webpack serve` command. - -If you use [npm-scripts](https://docs.npmjs.com/misc/scripts) as shortcuts for common actions, it's customary to use `npm start` to run in development mode. Example of `package.json`: - -```json - "scripts": { - "start": "dotnet fable watch src --run webpack serve" - }, -``` - -> If you also have your own server, you probably want to redirect API calls to it. You can use the [devServer.proxy](https://webpack.js.org/configuration/dev-server#devserverproxy) Webpack configuration option for that. - -The webpack-dev-server will keep running until you kill the process, picking up the changes in your code after you save a file. If you use [Hot Module Replacement](https://elmish.github.io/hmr/) it will try to inject the changes without restarting the app. Otherwise it will just refresh the web page. - -Note that webpack-dev-server serves the generated files from memory and doesn't actually write to disk. We will do that in the next step: building for production! - -## Production - -When preparing the files for deployment, we don't need a special server. We can call Webpack CLI directly in production mode to enable optimizations like [JS minification](https://webpack.js.org/configuration/optimization#optimizationminimize): `dotnet fable src --run webpack --mode production`. - -> As before, in most configurations you don't need to set the `--mode` argument explicitly. And it's also customary to have a "build" (or sometimes "deploy") npm-script for this operation: - -```json - "scripts": { - "start": "dotnet fable watch src --run webpack serve", - "build": "dotnet fable src --run webpack" - }, -``` - -Webpack will run only once and will write the generated files in the [output.path](https://webpack.js.org/configuration/output#outputpath). This is the directory you have to deploy to your host! - -## I don't want to use Webpack - -Then, depending on the sample you've chosen, build options may differ. Please refer to the README file for the chosen sample to get more information. diff --git a/docs/_sources/your-fable-project/project-file.md b/docs/_sources/your-fable-project/project-file.md deleted file mode 100644 index 9f0515b..0000000 --- a/docs/_sources/your-fable-project/project-file.md +++ /dev/null @@ -1,83 +0,0 @@ -# The project file - -Unlike JS, F# projects require all sources to be listed **in compilation order** in an `.fsproj` file. This may look quite restrictive at first, but it does have [some advantages](https://fsharpforfunandprofit.com/posts/cyclic-dependencies/). -Since an F# project takes its roots from the .NET ecosystem, we need to follow a few obligatory steps in order to add a file to an F# project. - -:::{note} -Many F# IDEs already provide commands to perform operations like creating a project or adding/removing a file. The steps below are only necessary if you want to do this manually. -::: - -
      -
    • - -**Create an .fsproj file** - -`.fsproj` files are in XML format. This may look a bit old-fashioned, but luckily the basic schema for F# projects has become much simpler in recent versions. Now the skeleton for most projects looks like this: - -```xml - - - netstandard2.0 - - - - - - - - -``` - -
    • - -
    • - -**Add an .fs file to the project** - -F# source files end with the `.fs` extension. To include a new one in the project, you only need to add it to the `.fsproj` using a relative path with the following tag: - -```xml - - - -``` - -For example, if we have have an app with two files, named `MyAwesomeFeature.fs` and `App.fs` (the last one contains the entry point), it will look like this - -```xml - - - - -``` - -:::{note} -Please be aware that in F#, **file order is important.** For instance, if `App.fs` calls `MyAwesomeFeature.fs`, then you must place `MyAwesomeFeature.fs` above `App.fs`. -::: - -Let's add another file, `Authentication.fs`, located in another folder `Shared` which is at the same depth as our `src` folder (this can happen, for example, if the file is shared with another project, like a server). Let's see the current state of our project tree: - -``` -myproject - |_ src - |_ MyAwesomeFeature.fs - |_ App.fs - |_ App.fsproj - |_ Shared - |_ Authentication.fs -``` - -This can be expressed in the project file as: - -```xml - - - - - -``` - -
    • -
    - -An important thing to note is Fable will translate F# source files to [ES2015 modules](https://exploringjs.com/es6/ch_modules.html) using JS `import`. This means that files which are not referenced by any other **will be ignored** (except the last file) including side effects. This is different behavior from .NET, where all files are compiled and executed, regardless of their relationship with the rest of the project. diff --git a/docs/_sources/your-fable-project/testing.md b/docs/_sources/your-fable-project/testing.md deleted file mode 100644 index 59c7694..0000000 --- a/docs/_sources/your-fable-project/testing.md +++ /dev/null @@ -1,111 +0,0 @@ -# Testing - -You can use all tools of the JS ecosystem. - -Several js libs already have a Fable binding: -- mocha: [https://github.com/Zaid-Ajaj/Fable.Mocha](https://github.com/Zaid-Ajaj/Fable.Mocha) -- jest: [https://github.com/Shmew/Fable.Jester](https://github.com/Shmew/Fable.Jester) - -# Example with jest -## Setup -You should install js test runner : -```sh - npm install jest --save-dev -``` -And Fable binding : -```sh - # nuget - dotnet add package Fable.Jester - # paket - paket add Fable.Jester --project ./project/path -``` - -## Write tests -Now, you can write your first test : -```fsharp -open Fable.Jester - -Jest.describe("can run basic tests", fun () -> - Jest.test("running a test", fun () -> - Jest.expect(1+1).toEqual(2) - ) -) -``` -See Jester documentation to more informations : [https://shmew.github.io/Fable.Jester/](https://shmew.github.io/Fable.Jester/) - -## Run -Before running the tests, you have to convert your project to JS, but you don't need to bundle with Webpack, because test runners generally prefer to have small files rather than a single big file. So we only need to run the Fable compiler and put the generated code in an output dir. - -```sh - dotnet fable src -o output -``` - -You should config Jest with a config file `jest.config.js` : -```js -module.exports = { - moduleFileExtensions: ['js'], - roots: ['./output'], - testMatch: ['/**/*.Test.js'], - coveragePathIgnorePatterns: ['/\.fable/', '/[fF]able.*/', '/node_modules/'], - testEnvironment: 'node', - transform: {} -}; -``` -`roots` should be equal to the `outDir` of the compiler. -`testMatch` indicate file pattern name with test. -`coveragePathIgnorePatterns`, `testEnvironment`, `transform` improve performance of runner. -You can read Jest doc to see more : [https://jestjs.io/docs/en/configuration](https://jestjs.io/docs/en/configuration) - -Now, you can run then tests: -```sh - npx jest --config=jest.config.js -``` - -Youhou! You can see the test result :) - -You can specify this command on npm in `package.json` : -```json -{ - "scripts": { - "test": "dotnet fable src -o output --run jest --config=jest.config.js", - }, -} -``` -And now run with a single command: -```sh - npm test -``` - -## Watch mode -Running tests each time is slow. -You can use the watch feature to take advantage of the compiler and runner cache, and run tests whenever a file changes. - -Currently, Fable doesn't have official plugins for the different runners. -So you have to execute these two commands in parallel: -```sh - dotnet fable watch src -o output - npx jest --config=jest.config.js --watchAll -``` - -You add an npm script in `package.json` : -```json -{ - "scripts": { - "test": "dotnet fable src -o output && jest --config=jest.config.js", - "watch-test:build": "dotnet fable watch src -o output", - "watch-test:run": "jest --config=jest.config.js --watchAll", - "watch-test": "npm-run-all --parallel watch-test:*" - }, -} -``` -I use `npm-run-all` to run several commands in parallel. You should install with: -```sh - npm install --save-dev npm-run-all -``` - -Now, run -```sh - npm run-script watch-test -``` - -Enjoy :) diff --git a/docs/_sources/your-fable-project/use-a-fable-library.md b/docs/_sources/your-fable-project/use-a-fable-library.md deleted file mode 100644 index 119a9ae..0000000 --- a/docs/_sources/your-fable-project/use-a-fable-library.md +++ /dev/null @@ -1,53 +0,0 @@ -# Use a Fable library - -We often use libraries using [NuGet](https://www.nuget.org/), which is the defacto .NET package manager. - -So we do need libraries. And Fable proposes a great variety of libraries ready for you to use like: - -- [Fable.Core](https://www.nuget.org/packages/Fable.Core/), which is required for every Fable project -- [Fable.Browser.Dom](https://www.nuget.org/packages/Fable.Browser.Dom), for all your DOM needs (window, document) -- [Fable.Elmish.React](https://www.nuget.org/packages/Fable.Elmish.React), to write web apps using the Elm architecture and React as the render engine -- [Thoth.Json](https://www.nuget.org/packages/Thoth.Json), for JSON serialization - -> Please note that not all Nuget libraries will work with Fable. Refer to the library documentation to check if it's Fable-compatible. - -There are 2 ways to call Fable libraries: - -1. Reference them directly in your project file -2. Use [Paket](https://fsprojects.github.io/Paket/) - -## Option 1: reference a library manually in your project file - -Just like `.fs` files, we can reference libraries directly in the `.fsproj` file. - -We need to tell what library we need and what version we'd like to use. For instance for `Fable.Browser.Dom` version `1.0.0` we'll add the following node in the `.fsproj` file: - -```xml - -``` - -Hence the standard format for a library: - -```xml - -``` - -The dotnet SDK offers a CLI command to do this operation without manually editing the .fsproj. Also if you omit the version number, it will automatically pick the most recent stable version for you. For instance: - -`dotnet add package Fable.Elmish.React [-v 3.0.1]` - -> Some IDEs like Visual Studio or Rider also include options in their Graphic Interface to manage Nuget packages. - -That's basically all you need to do. The build process will then automatically download the libraries for you and compile your code against them. - -> If you need to download the packages before the build (for example, to remove errors in the IDE), run the `dotnet restore` command in the folder containing the .fsproj file. - -## Option 2: use Paket! - -The second way of adding libraries is to use the [Paket](https://fsprojects.github.io/Paket/) library manager. While it's not compulsory, it's in most cases a good choice for large projects. - -Using Paket is clearly straightforward if you follow the [official documentation](https://fsprojects.github.io/Paket/get-started.html). - -But in order to make things easier for you, we created a [sample](https://github.com/fable-compiler/fable2-samples/tree/master/withpaket). This is a good companion while you read the paket doc. - -Usually getting started with Paket takes only a few minutes. diff --git a/docs/_sphinx_design_static/design-style.b7bb847fb20b106c3d81b95245e65545.min.css b/docs/_sphinx_design_static/design-style.b7bb847fb20b106c3d81b95245e65545.min.css new file mode 100644 index 0000000..704c42e --- /dev/null +++ b/docs/_sphinx_design_static/design-style.b7bb847fb20b106c3d81b95245e65545.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-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}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}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: #007bff;--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: #0069d9;--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-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} diff --git a/docs/_sphinx_design_static/design-tabs.js b/docs/_sphinx_design_static/design-tabs.js new file mode 100644 index 0000000..36b38cf --- /dev/null +++ b/docs/_sphinx_design_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/docs/_static/basic.css b/docs/_static/basic.css index 10301e1..d54be80 100644 --- a/docs/_static/basic.css +++ b/docs/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -731,8 +731,9 @@ dl.glossary dt { .classifier:before { font-style: normal; - margin: 0.5em; + margin: 0 0.5em; content: ":"; + display: inline-block; } abbr, acronym { @@ -756,6 +757,7 @@ span.pre { -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; + white-space: nowrap; } div[class*="highlight-"] { diff --git a/docs/_static/copy-button.svg b/docs/_static/copy-button.svg index b888a20..9c074da 100644 --- a/docs/_static/copy-button.svg +++ b/docs/_static/copy-button.svg @@ -1,5 +1,5 @@ - + - - + + diff --git a/docs/_static/copybutton.css b/docs/_static/copybutton.css index 5d29149..40eafe5 100644 --- a/docs/_static/copybutton.css +++ b/docs/_static/copybutton.css @@ -3,7 +3,7 @@ button.copybtn { position: absolute; display: flex; top: .3em; - right: .5em; + right: .3em; width: 1.7em; height: 1.7em; opacity: 0; @@ -13,17 +13,22 @@ button.copybtn { border: none; outline: none; border-radius: 0.4em; - border: #e1e1e1 1px solid; - background-color: rgb(245, 245, 245); + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; } button.copybtn.success { border-color: #22863a; + color: #22863a; } -button.copybtn img { - width: 100%; - padding: .2em; +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; } div.highlight { @@ -79,3 +84,10 @@ div.highlight { transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); transition-delay: .5s; } + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/docs/_static/copybutton.js b/docs/_static/copybutton.js index 482bda0..40ac331 100644 --- a/docs/_static/copybutton.js +++ b/docs/_static/copybutton.js @@ -35,6 +35,12 @@ const messages = { 'copy_to_clipboard': '复制到剪贴板', 'copy_success': '复制成功!', 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', } } @@ -49,7 +55,25 @@ if (doc_url_root == '#') { doc_url_root = ''; } -const path_static = `${doc_url_root}_static/`; +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} /** * Set up copy/paste for code blocks @@ -88,9 +112,8 @@ const temporarilyChangeTooltip = (el, oldText, newText) => { // Changes the copy button icon for two seconds, then changes it back const temporarilyChangeIcon = (el) => { - img = el.querySelector("img"); - img.setAttribute('src', `${path_static}check-solid.svg`) - setTimeout(() => img.setAttribute('src', `${path_static}copy-button.svg`), 2000) + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, 2000) } const addCopyButtonToCodeCells = () => { @@ -109,7 +132,7 @@ const addCopyButtonToCodeCells = () => { const clipboardButton = id => `${messages[locale]['copy_to_clipboard']} + ${iconCopy} ` codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) }) diff --git a/docs/_static/design-style.b7bb847fb20b106c3d81b95245e65545.min.css b/docs/_static/design-style.b7bb847fb20b106c3d81b95245e65545.min.css new file mode 100644 index 0000000..704c42e --- /dev/null +++ b/docs/_static/design-style.b7bb847fb20b106c3d81b95245e65545.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-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}details.sd-dropdown .sd-summary-title{font-weight:700;padding-right:3em !important;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;user-select:none}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary{list-style:none;padding:1em}details.sd-dropdown summary .sd-octicon.no-title{vertical-align:middle}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown summary::-webkit-details-marker{display:none}details.sd-dropdown summary:focus{outline:none}details.sd-dropdown .sd-summary-icon{margin-right:.5em}details.sd-dropdown .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary:hover .sd-summary-up svg,details.sd-dropdown summary:hover .sd-summary-down svg{opacity:1;transform:scale(1.1)}details.sd-dropdown .sd-summary-up svg,details.sd-dropdown .sd-summary-down svg{display:block;opacity:.6}details.sd-dropdown .sd-summary-up,details.sd-dropdown .sd-summary-down{pointer-events:none;position:absolute;right:1em;top:1em}details.sd-dropdown[open]>.sd-summary-title .sd-summary-down{visibility:hidden}details.sd-dropdown:not([open])>.sd-summary-title .sd-summary-up{visibility:hidden}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: #007bff;--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: #0069d9;--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-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} diff --git a/docs/_static/design-tabs.js b/docs/_static/design-tabs.js new file mode 100644 index 0000000..36b38cf --- /dev/null +++ b/docs/_static/design-tabs.js @@ -0,0 +1,27 @@ +var sd_labels_by_text = {}; + +function ready() { + const li = document.getElementsByClassName("sd-tab-label"); + for (const label of li) { + syncId = label.getAttribute("data-sync-id"); + if (syncId) { + label.onclick = onLabelClick; + if (!sd_labels_by_text[syncId]) { + sd_labels_by_text[syncId] = []; + } + sd_labels_by_text[syncId].push(label); + } + } +} + +function onLabelClick() { + // Activate other inputs with the same sync id. + syncId = this.getAttribute("data-sync-id"); + for (label of sd_labels_by_text[syncId]) { + if (label === this) continue; + label.previousElementSibling.checked = true; + } + window.localStorage.setItem("sphinx-design-last-tab", syncId); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/docs/_static/doctools.js b/docs/_static/doctools.js index 8cbf1b1..e1bfd70 100644 --- a/docs/_static/doctools.js +++ b/docs/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -154,9 +154,7 @@ var Documentation = { this.fixFirefoxAnchorBug(); this.highlightSearchWords(); this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } + this.initOnKeyListeners(); }, /** @@ -264,6 +262,16 @@ var Documentation = { hideSearchWords : function() { $('#searchbox .highlight-link').fadeOut(300); $('span.highlighted').removeClass('highlighted'); + var url = new URL(window.location); + url.searchParams.delete('highlight'); + window.history.replaceState({}, '', url); + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar : function() { + $('input[name=q]').first().focus(); }, /** @@ -288,27 +296,54 @@ var Documentation = { }, initOnKeyListeners: function() { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + return; + $(document).keydown(function(event) { var activeElementType = document.activeElement.tagName; // don't navigate when in search box, textarea, dropdown or button if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' - && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey - && !event.shiftKey) { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; - } - break; - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; - } - break; + && activeElementType !== 'BUTTON') { + if (event.altKey || event.ctrlKey || event.metaKey) + return; + + if (!event.shiftKey) { + switch (event.key) { + case 'ArrowLeft': + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) + break; + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + break; + case 'ArrowRight': + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) + break; + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + break; + case 'Escape': + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + break; + Documentation.hideSearchWords(); + return false; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case '/': + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) + break; + Documentation.focusSearchBar(); + return false; } } }); diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index 93b7c24..877e3c3 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -8,5 +8,7 @@ var DOCUMENTATION_OPTIONS = { LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '', - NAVIGATION_WITH_KEYS: true + NAVIGATION_WITH_KEYS: true, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, }; \ No newline at end of file diff --git a/docs/_static/images/logo_deepnote.svg b/docs/_static/images/logo_deepnote.svg new file mode 100644 index 0000000..fa77ebf --- /dev/null +++ b/docs/_static/images/logo_deepnote.svg @@ -0,0 +1 @@ + diff --git a/docs/_static/language_data.js b/docs/_static/language_data.js index 863704b..ebe2f03 100644 --- a/docs/_static/language_data.js +++ b/docs/_static/language_data.js @@ -5,7 +5,7 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/docs/_static/locales/ar/LC_MESSAGES/booktheme.po b/docs/_static/locales/ar/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..b5c145f --- /dev/null +++ b/docs/_static/locales/ar/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ar\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "مخزن" + +msgid "open issue" +msgstr "قضية مفتوحة" + +msgid "Contents" +msgstr "محتويات" + +msgid "Fullscreen mode" +msgstr "وضع ملء الشاشة" + +msgid "Download this page" +msgstr "قم بتنزيل هذه الصفحة" + +msgid "Download source file" +msgstr "تنزيل ملف المصدر" + +msgid "Launch" +msgstr "إطلاق" + +msgid "Edit this page" +msgstr "قم بتحرير هذه الصفحة" + +msgid "Toggle navigation" +msgstr "تبديل التنقل" + +msgid "Theme by the" +msgstr "موضوع بواسطة" + +msgid "Source repository" +msgstr "مستودع المصدر" + +msgid "Last updated on" +msgstr "آخر تحديث في" + +msgid "By the" +msgstr "بواسطة" + +msgid "Sphinx Book Theme" +msgstr "موضوع كتاب أبو الهول" + +msgid "Open an issue" +msgstr "افتح قضية" + +msgid "next page" +msgstr "الصفحة التالية" + +msgid "Copyright" +msgstr "حقوق النشر" + +msgid "Search this book..." +msgstr "بحث في هذا الكتاب ..." + +msgid "Print to PDF" +msgstr "طباعة إلى PDF" + +msgid "By" +msgstr "بواسطة" + +msgid "previous page" +msgstr "الصفحة السابقة" + +msgid "Search the docs ..." +msgstr "ابحث في المستندات ..." + +msgid "Download notebook file" +msgstr "تنزيل ملف دفتر الملاحظات" + +msgid "suggest edit" +msgstr "أقترح تحرير" diff --git a/docs/_static/locales/bg/LC_MESSAGES/booktheme.po b/docs/_static/locales/bg/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..4e1bc06 --- /dev/null +++ b/docs/_static/locales/bg/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "хранилище" + +msgid "open issue" +msgstr "отворен брой" + +msgid "Contents" +msgstr "Съдържание" + +msgid "Fullscreen mode" +msgstr "Режим на цял екран" + +msgid "Download this page" +msgstr "Изтеглете тази страница" + +msgid "Download source file" +msgstr "Изтеглете изходния файл" + +msgid "Launch" +msgstr "Стартиране" + +msgid "Edit this page" +msgstr "Редактирайте тази страница" + +msgid "Toggle navigation" +msgstr "Превключване на навигацията" + +msgid "Theme by the" +msgstr "Тема от" + +msgid "Source repository" +msgstr "Хранилище на източника" + +msgid "Last updated on" +msgstr "Последна актуализация на" + +msgid "By the" +msgstr "По" + +msgid "Sphinx Book Theme" +msgstr "Тема на книгата Sphinx" + +msgid "Open an issue" +msgstr "Отворете проблем" + +msgid "next page" +msgstr "Следваща страница" + +msgid "Copyright" +msgstr "Авторско право" + +msgid "Search this book..." +msgstr "Търсене в тази книга ..." + +msgid "Print to PDF" +msgstr "Печат в PDF" + +msgid "By" +msgstr "От" + +msgid "previous page" +msgstr "предишна страница" + +msgid "Search the docs ..." +msgstr "Търсене в документите ..." + +msgid "Download notebook file" +msgstr "Изтеглете файла на бележника" + +msgid "suggest edit" +msgstr "предложи редактиране" diff --git a/docs/_static/locales/bn/LC_MESSAGES/booktheme.po b/docs/_static/locales/bn/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..6722be2 --- /dev/null +++ b/docs/_static/locales/bn/LC_MESSAGES/booktheme.po @@ -0,0 +1,66 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: bn\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "open issue" +msgstr "খোলা সমস্যা" + +msgid "Download this page" +msgstr "এই পৃষ্ঠাটি ডাউনলোড করুন" + +msgid "Download source file" +msgstr "উত্স ফাইল ডাউনলোড করুন" + +msgid "Launch" +msgstr "শুরু করা" + +msgid "Edit this page" +msgstr "এই পৃষ্ঠাটি সম্পাদনা করুন" + +msgid "Toggle navigation" +msgstr "নেভিগেশন টগল করুন" + +msgid "Theme by the" +msgstr "থিম দ্বারা" + +msgid "Source repository" +msgstr "উত্স সংগ্রহস্থল" + +msgid "Last updated on" +msgstr "সর্বশেষ আপডেট" + +msgid "By the" +msgstr "দ্বারা" + +msgid "Sphinx Book Theme" +msgstr "স্পিনিক্স বুক থিম" + +msgid "Open an issue" +msgstr "একটি সমস্যা খুলুন" + +msgid "next page" +msgstr "পরবর্তী পৃষ্ঠা" + +msgid "Copyright" +msgstr "কপিরাইট" + +msgid "Search this book..." +msgstr "এই বইটি অনুসন্ধান করুন ..." + +msgid "Print to PDF" +msgstr "পিডিএফ প্রিন্ট করুন" + +msgid "By" +msgstr "দ্বারা" + +msgid "previous page" +msgstr "আগের পৃষ্ঠা" + +msgid "Download notebook file" +msgstr "নোটবুক ফাইল ডাউনলোড করুন" diff --git a/docs/_static/locales/ca/LC_MESSAGES/booktheme.po b/docs/_static/locales/ca/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..546e395 --- /dev/null +++ b/docs/_static/locales/ca/LC_MESSAGES/booktheme.po @@ -0,0 +1,69 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "open issue" +msgstr "número obert" + +msgid "Download this page" +msgstr "Descarregueu aquesta pàgina" + +msgid "Download source file" +msgstr "Baixeu el fitxer font" + +msgid "Launch" +msgstr "Llançament" + +msgid "Edit this page" +msgstr "Editeu aquesta pàgina" + +msgid "Toggle navigation" +msgstr "Commuta la navegació" + +msgid "Theme by the" +msgstr "Tema del" + +msgid "Source repository" +msgstr "Dipòsit de fonts" + +msgid "Last updated on" +msgstr "Darrera actualització el" + +msgid "By the" +msgstr "Per la" + +msgid "Sphinx Book Theme" +msgstr "Tema del llibre Esfinx" + +msgid "Open an issue" +msgstr "Obriu un número" + +msgid "next page" +msgstr "pàgina següent" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Search this book..." +msgstr "Cerca en aquest llibre ..." + +msgid "Print to PDF" +msgstr "Imprimeix a PDF" + +msgid "By" +msgstr "Per" + +msgid "previous page" +msgstr "Pàgina anterior" + +msgid "Download notebook file" +msgstr "Descarregar fitxer de quadern" + +msgid "suggest edit" +msgstr "suggerir edició" diff --git a/docs/_static/locales/cs/LC_MESSAGES/booktheme.po b/docs/_static/locales/cs/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..4889556 --- /dev/null +++ b/docs/_static/locales/cs/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: cs\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "úložiště" + +msgid "open issue" +msgstr "otevřené číslo" + +msgid "Contents" +msgstr "Obsah" + +msgid "Fullscreen mode" +msgstr "Režim celé obrazovky" + +msgid "Download this page" +msgstr "Stáhněte si tuto stránku" + +msgid "Download source file" +msgstr "Stáhněte si zdrojový soubor" + +msgid "Launch" +msgstr "Zahájení" + +msgid "Edit this page" +msgstr "Upravit tuto stránku" + +msgid "Toggle navigation" +msgstr "Přepnout navigaci" + +msgid "Theme by the" +msgstr "Téma od" + +msgid "Source repository" +msgstr "Zdrojové úložiště" + +msgid "Last updated on" +msgstr "Naposledy aktualizováno" + +msgid "By the" +msgstr "Podle" + +msgid "Sphinx Book Theme" +msgstr "Téma knihy Sfinga" + +msgid "Open an issue" +msgstr "Otevřete problém" + +msgid "next page" +msgstr "další strana" + +msgid "Copyright" +msgstr "autorská práva" + +msgid "Search this book..." +msgstr "Hledat v této knize ..." + +msgid "Print to PDF" +msgstr "Tisk do PDF" + +msgid "By" +msgstr "Podle" + +msgid "previous page" +msgstr "předchozí stránka" + +msgid "Search the docs ..." +msgstr "Hledat v dokumentech ..." + +msgid "Download notebook file" +msgstr "Stáhnout soubor poznámkového bloku" + +msgid "suggest edit" +msgstr "navrhnout úpravy" diff --git a/docs/_static/locales/da/LC_MESSAGES/booktheme.po b/docs/_static/locales/da/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..675a05f --- /dev/null +++ b/docs/_static/locales/da/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: da\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "lager" + +msgid "open issue" +msgstr "åbent nummer" + +msgid "Contents" +msgstr "Indhold" + +msgid "Fullscreen mode" +msgstr "Fuldskærmstilstand" + +msgid "Download this page" +msgstr "Download denne side" + +msgid "Download source file" +msgstr "Download kildefil" + +msgid "Launch" +msgstr "Start" + +msgid "Edit this page" +msgstr "Rediger denne side" + +msgid "Toggle navigation" +msgstr "Skift navigation" + +msgid "Theme by the" +msgstr "Tema af" + +msgid "Source repository" +msgstr "Kildelager" + +msgid "Last updated on" +msgstr "Sidst opdateret den" + +msgid "By the" +msgstr "Ved" + +msgid "Sphinx Book Theme" +msgstr "Sphinx bogtema" + +msgid "Open an issue" +msgstr "Åbn et problem" + +msgid "next page" +msgstr "Næste side" + +msgid "Copyright" +msgstr "ophavsret" + +msgid "Search this book..." +msgstr "Søg i denne bog ..." + +msgid "Print to PDF" +msgstr "Udskriv til PDF" + +msgid "By" +msgstr "Ved" + +msgid "previous page" +msgstr "forrige side" + +msgid "Search the docs ..." +msgstr "Søg i dokumenterne ..." + +msgid "Download notebook file" +msgstr "Download notesbog-fil" + +msgid "suggest edit" +msgstr "foreslå redigering" diff --git a/docs/_static/locales/de/LC_MESSAGES/booktheme.po b/docs/_static/locales/de/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..70eaab5 --- /dev/null +++ b/docs/_static/locales/de/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "Repository" + +msgid "open issue" +msgstr "offenes Thema" + +msgid "Contents" +msgstr "Inhalt" + +msgid "Fullscreen mode" +msgstr "Vollbildmodus" + +msgid "Download this page" +msgstr "Laden Sie diese Seite herunter" + +msgid "Download source file" +msgstr "Quelldatei herunterladen" + +msgid "Launch" +msgstr "Starten" + +msgid "Edit this page" +msgstr "Bearbeite diese Seite" + +msgid "Toggle navigation" +msgstr "Navigation umschalten" + +msgid "Theme by the" +msgstr "Thema von der" + +msgid "Source repository" +msgstr "Quell-Repository" + +msgid "Last updated on" +msgstr "Zuletzt aktualisiert am" + +msgid "By the" +msgstr "Bis zum" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-Buch-Thema" + +msgid "Open an issue" +msgstr "Öffnen Sie ein Problem" + +msgid "next page" +msgstr "Nächste Seite" + +msgid "Copyright" +msgstr "Urheberrechte ©" + +msgid "Search this book..." +msgstr "Dieses Buch durchsuchen ..." + +msgid "Print to PDF" +msgstr "In PDF drucken" + +msgid "By" +msgstr "Durch" + +msgid "previous page" +msgstr "vorherige Seite" + +msgid "Search the docs ..." +msgstr "Durchsuchen Sie die Dokumente ..." + +msgid "Download notebook file" +msgstr "Notebook-Datei herunterladen" + +msgid "suggest edit" +msgstr "vorschlagen zu bearbeiten" diff --git a/docs/_static/locales/el/LC_MESSAGES/booktheme.po b/docs/_static/locales/el/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..222cfa3 --- /dev/null +++ b/docs/_static/locales/el/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: el\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "αποθήκη" + +msgid "open issue" +msgstr "ανοιχτό ζήτημα" + +msgid "Contents" +msgstr "Περιεχόμενα" + +msgid "Fullscreen mode" +msgstr "ΛΕΙΤΟΥΡΓΙΑ ΠΛΗΡΟΥΣ ΟΘΟΝΗΣ" + +msgid "Download this page" +msgstr "Λήψη αυτής της σελίδας" + +msgid "Download source file" +msgstr "Λήψη αρχείου προέλευσης" + +msgid "Launch" +msgstr "Εκτόξευση" + +msgid "Edit this page" +msgstr "Επεξεργαστείτε αυτήν τη σελίδα" + +msgid "Toggle navigation" +msgstr "Εναλλαγή πλοήγησης" + +msgid "Theme by the" +msgstr "Θέμα από το" + +msgid "Source repository" +msgstr "Αποθήκη πηγής" + +msgid "Last updated on" +msgstr "Τελευταία ενημέρωση στις" + +msgid "By the" +msgstr "Από το" + +msgid "Sphinx Book Theme" +msgstr "Θέμα βιβλίου Sphinx" + +msgid "Open an issue" +msgstr "Ανοίξτε ένα ζήτημα" + +msgid "next page" +msgstr "επόμενη σελίδα" + +msgid "Copyright" +msgstr "Πνευματική ιδιοκτησία" + +msgid "Search this book..." +msgstr "Αναζήτηση σε αυτό το βιβλίο ..." + +msgid "Print to PDF" +msgstr "Εκτύπωση σε PDF" + +msgid "By" +msgstr "Με" + +msgid "previous page" +msgstr "προηγούμενη σελίδα" + +msgid "Search the docs ..." +msgstr "Αναζήτηση στα έγγραφα ..." + +msgid "Download notebook file" +msgstr "Λήψη αρχείου σημειωματάριου" + +msgid "suggest edit" +msgstr "προτείνω επεξεργασία" diff --git a/docs/_static/locales/eo/LC_MESSAGES/booktheme.po b/docs/_static/locales/eo/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..bdf994b --- /dev/null +++ b/docs/_static/locales/eo/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: eo\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "deponejo" + +msgid "open issue" +msgstr "malferma numero" + +msgid "Contents" +msgstr "Enhavo" + +msgid "Fullscreen mode" +msgstr "Plenekrana reĝimo" + +msgid "Download this page" +msgstr "Elŝutu ĉi tiun paĝon" + +msgid "Download source file" +msgstr "Elŝutu fontodosieron" + +msgid "Launch" +msgstr "Lanĉo" + +msgid "Edit this page" +msgstr "Redaktu ĉi tiun paĝon" + +msgid "Toggle navigation" +msgstr "Ŝalti navigadon" + +msgid "Theme by the" +msgstr "Temo de la" + +msgid "Source repository" +msgstr "Fonto-deponejo" + +msgid "Last updated on" +msgstr "Laste ĝisdatigita la" + +msgid "By the" +msgstr "Per la" + +msgid "Sphinx Book Theme" +msgstr "Sfinksa Libro-Temo" + +msgid "Open an issue" +msgstr "Malfermu numeron" + +msgid "next page" +msgstr "sekva paĝo" + +msgid "Copyright" +msgstr "Kopirajto" + +msgid "Search this book..." +msgstr "Serĉu ĉi tiun libron ..." + +msgid "Print to PDF" +msgstr "Presi al PDF" + +msgid "By" +msgstr "De" + +msgid "previous page" +msgstr "antaŭa paĝo" + +msgid "Search the docs ..." +msgstr "Serĉu la dokumentojn ..." + +msgid "Download notebook file" +msgstr "Elŝutu kajeran dosieron" + +msgid "suggest edit" +msgstr "sugesti redaktadon" diff --git a/docs/_static/locales/es/LC_MESSAGES/booktheme.po b/docs/_static/locales/es/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..b23d3ec --- /dev/null +++ b/docs/_static/locales/es/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "repositorio" + +msgid "open issue" +msgstr "Tema abierto" + +msgid "Contents" +msgstr "Contenido" + +msgid "Fullscreen mode" +msgstr "Modo de pantalla completa" + +msgid "Download this page" +msgstr "Descarga esta pagina" + +msgid "Download source file" +msgstr "Descargar archivo fuente" + +msgid "Launch" +msgstr "Lanzamiento" + +msgid "Edit this page" +msgstr "Edita esta página" + +msgid "Toggle navigation" +msgstr "Navegación de palanca" + +msgid "Theme by the" +msgstr "Tema por el" + +msgid "Source repository" +msgstr "Repositorio de origen" + +msgid "Last updated on" +msgstr "Ultima actualización en" + +msgid "By the" +msgstr "Por el" + +msgid "Sphinx Book Theme" +msgstr "Tema del libro de la esfinge" + +msgid "Open an issue" +msgstr "Abrir un problema" + +msgid "next page" +msgstr "siguiente página" + +msgid "Copyright" +msgstr "Derechos de autor" + +msgid "Search this book..." +msgstr "Buscar este libro ..." + +msgid "Print to PDF" +msgstr "Imprimir en PDF" + +msgid "By" +msgstr "Por" + +msgid "previous page" +msgstr "pagina anterior" + +msgid "Search the docs ..." +msgstr "Buscar los documentos ..." + +msgid "Download notebook file" +msgstr "Descargar archivo de cuaderno" + +msgid "suggest edit" +msgstr "sugerir editar" diff --git a/docs/_static/locales/et/LC_MESSAGES/booktheme.po b/docs/_static/locales/et/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..664c246 --- /dev/null +++ b/docs/_static/locales/et/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: et\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "hoidla" + +msgid "open issue" +msgstr "avatud küsimus" + +msgid "Contents" +msgstr "Sisu" + +msgid "Fullscreen mode" +msgstr "Täisekraanirežiim" + +msgid "Download this page" +msgstr "Laadige see leht alla" + +msgid "Download source file" +msgstr "Laadige alla lähtefail" + +msgid "Launch" +msgstr "Käivitage" + +msgid "Edit this page" +msgstr "Muutke seda lehte" + +msgid "Toggle navigation" +msgstr "Lülita navigeerimine sisse" + +msgid "Theme by the" +msgstr "Teema" + +msgid "Source repository" +msgstr "Allikahoidla" + +msgid "Last updated on" +msgstr "Viimati uuendatud" + +msgid "By the" +msgstr "Autor" + +msgid "Sphinx Book Theme" +msgstr "Sfinksiraamatu teema" + +msgid "Open an issue" +msgstr "Avage probleem" + +msgid "next page" +msgstr "järgmine leht" + +msgid "Copyright" +msgstr "Autoriõigus" + +msgid "Search this book..." +msgstr "Otsige sellest raamatust ..." + +msgid "Print to PDF" +msgstr "Prindi PDF-i" + +msgid "By" +msgstr "Kõrval" + +msgid "previous page" +msgstr "eelmine leht" + +msgid "Search the docs ..." +msgstr "Dokumentidest otsimine ..." + +msgid "Download notebook file" +msgstr "Laadige sülearvuti fail alla" + +msgid "suggest edit" +msgstr "soovita muuta" diff --git a/docs/_static/locales/fi/LC_MESSAGES/booktheme.po b/docs/_static/locales/fi/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..c4b0d30 --- /dev/null +++ b/docs/_static/locales/fi/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "arkisto" + +msgid "open issue" +msgstr "avoin ongelma" + +msgid "Contents" +msgstr "Sisällys" + +msgid "Fullscreen mode" +msgstr "Koko näytön tila" + +msgid "Download this page" +msgstr "Lataa tämä sivu" + +msgid "Download source file" +msgstr "Lataa lähdetiedosto" + +msgid "Launch" +msgstr "Tuoda markkinoille" + +msgid "Edit this page" +msgstr "Muokkaa tätä sivua" + +msgid "Toggle navigation" +msgstr "Vaihda navigointia" + +msgid "Theme by the" +msgstr "Teeman tekijä" + +msgid "Source repository" +msgstr "Lähteen arkisto" + +msgid "Last updated on" +msgstr "Viimeksi päivitetty" + +msgid "By the" +msgstr "Mukaan" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-kirjan teema" + +msgid "Open an issue" +msgstr "Avaa ongelma" + +msgid "next page" +msgstr "seuraava sivu" + +msgid "Copyright" +msgstr "Tekijänoikeus" + +msgid "Search this book..." +msgstr "Hae tästä kirjasta ..." + +msgid "Print to PDF" +msgstr "Tulosta PDF-tiedostoon" + +msgid "By" +msgstr "Tekijä" + +msgid "previous page" +msgstr "Edellinen sivu" + +msgid "Search the docs ..." +msgstr "Hae dokumenteista ..." + +msgid "Download notebook file" +msgstr "Lataa muistikirjatiedosto" + +msgid "suggest edit" +msgstr "ehdottaa muokkausta" diff --git a/docs/_static/locales/fr/LC_MESSAGES/booktheme.po b/docs/_static/locales/fr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..93762ce --- /dev/null +++ b/docs/_static/locales/fr/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "dépôt" + +msgid "open issue" +msgstr "signaler un problème" + +msgid "Contents" +msgstr "Contenu" + +msgid "Fullscreen mode" +msgstr "Mode plein écran" + +msgid "Download this page" +msgstr "Téléchargez cette page" + +msgid "Download source file" +msgstr "Télécharger le fichier source" + +msgid "Launch" +msgstr "lancement" + +msgid "Edit this page" +msgstr "Modifier cette page" + +msgid "Toggle navigation" +msgstr "Basculer la navigation" + +msgid "Theme by the" +msgstr "Thème par le" + +msgid "Source repository" +msgstr "Dépôt source" + +msgid "Last updated on" +msgstr "Dernière mise à jour le" + +msgid "By the" +msgstr "Par le" + +msgid "Sphinx Book Theme" +msgstr "Thème du livre Sphinx" + +msgid "Open an issue" +msgstr "Ouvrez un problème" + +msgid "next page" +msgstr "page suivante" + +msgid "Copyright" +msgstr "droits d'auteur" + +msgid "Search this book..." +msgstr "Rechercher dans ce livre ..." + +msgid "Print to PDF" +msgstr "Imprimer au format PDF" + +msgid "By" +msgstr "Par" + +msgid "previous page" +msgstr "page précédente" + +msgid "Search the docs ..." +msgstr "Rechercher dans les documents ..." + +msgid "Download notebook file" +msgstr "Télécharger le fichier notebook" + +msgid "suggest edit" +msgstr "suggestion de modification" diff --git a/docs/_static/locales/hr/LC_MESSAGES/booktheme.po b/docs/_static/locales/hr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..7e94599 --- /dev/null +++ b/docs/_static/locales/hr/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: hr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "spremište" + +msgid "open issue" +msgstr "otvoreno izdanje" + +msgid "Contents" +msgstr "Sadržaj" + +msgid "Fullscreen mode" +msgstr "Način preko cijelog zaslona" + +msgid "Download this page" +msgstr "Preuzmite ovu stranicu" + +msgid "Download source file" +msgstr "Preuzmi izvornu datoteku" + +msgid "Launch" +msgstr "Pokrenite" + +msgid "Edit this page" +msgstr "Uredite ovu stranicu" + +msgid "Toggle navigation" +msgstr "Uključi / isključi navigaciju" + +msgid "Theme by the" +msgstr "Tema autora" + +msgid "Source repository" +msgstr "Izvorno spremište" + +msgid "Last updated on" +msgstr "Posljednje ažuriranje:" + +msgid "By the" +msgstr "Od strane" + +msgid "Sphinx Book Theme" +msgstr "Tema knjige Sphinx" + +msgid "Open an issue" +msgstr "Otvorite izdanje" + +msgid "next page" +msgstr "sljedeća stranica" + +msgid "Copyright" +msgstr "Autorska prava" + +msgid "Search this book..." +msgstr "Pretražite ovu knjigu ..." + +msgid "Print to PDF" +msgstr "Ispis u PDF" + +msgid "By" +msgstr "Po" + +msgid "previous page" +msgstr "Prethodna stranica" + +msgid "Search the docs ..." +msgstr "Pretražite dokumente ..." + +msgid "Download notebook file" +msgstr "Preuzmi datoteku bilježnice" + +msgid "suggest edit" +msgstr "predloži uređivanje" diff --git a/docs/_static/locales/id/LC_MESSAGES/booktheme.po b/docs/_static/locales/id/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..fbeca80 --- /dev/null +++ b/docs/_static/locales/id/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: id\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "gudang" + +msgid "open issue" +msgstr "masalah terbuka" + +msgid "Contents" +msgstr "Isi" + +msgid "Fullscreen mode" +msgstr "Mode layar penuh" + +msgid "Download this page" +msgstr "Unduh halaman ini" + +msgid "Download source file" +msgstr "Unduh file sumber" + +msgid "Launch" +msgstr "Meluncurkan" + +msgid "Edit this page" +msgstr "Edit halaman ini" + +msgid "Toggle navigation" +msgstr "Alihkan navigasi" + +msgid "Theme by the" +msgstr "Tema oleh" + +msgid "Source repository" +msgstr "Repositori sumber" + +msgid "Last updated on" +msgstr "Terakhir diperbarui saat" + +msgid "By the" +msgstr "Oleh" + +msgid "Sphinx Book Theme" +msgstr "Tema Buku Sphinx" + +msgid "Open an issue" +msgstr "Buka masalah" + +msgid "next page" +msgstr "halaman selanjutnya" + +msgid "Copyright" +msgstr "hak cipta" + +msgid "Search this book..." +msgstr "Telusuri buku ini ..." + +msgid "Print to PDF" +msgstr "Cetak ke PDF" + +msgid "By" +msgstr "Oleh" + +msgid "previous page" +msgstr "halaman sebelumnya" + +msgid "Search the docs ..." +msgstr "Telusuri dokumen ..." + +msgid "Download notebook file" +msgstr "Unduh file notebook" + +msgid "suggest edit" +msgstr "menyarankan edit" diff --git a/docs/_static/locales/it/LC_MESSAGES/booktheme.po b/docs/_static/locales/it/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..f64a72b --- /dev/null +++ b/docs/_static/locales/it/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "repository" + +msgid "open issue" +msgstr "questione aperta" + +msgid "Contents" +msgstr "Contenuti" + +msgid "Fullscreen mode" +msgstr "Modalità schermo intero" + +msgid "Download this page" +msgstr "Scarica questa pagina" + +msgid "Download source file" +msgstr "Scarica il file sorgente" + +msgid "Launch" +msgstr "Lanciare" + +msgid "Edit this page" +msgstr "Modifica questa pagina" + +msgid "Toggle navigation" +msgstr "Attiva / disattiva la navigazione" + +msgid "Theme by the" +msgstr "Tema di" + +msgid "Source repository" +msgstr "Repository di origine" + +msgid "Last updated on" +msgstr "Ultimo aggiornamento il" + +msgid "By the" +msgstr "Dal" + +msgid "Sphinx Book Theme" +msgstr "Tema del libro della Sfinge" + +msgid "Open an issue" +msgstr "Apri un problema" + +msgid "next page" +msgstr "pagina successiva" + +msgid "Copyright" +msgstr "Diritto d'autore" + +msgid "Search this book..." +msgstr "Cerca in questo libro ..." + +msgid "Print to PDF" +msgstr "Stampa in PDF" + +msgid "By" +msgstr "Di" + +msgid "previous page" +msgstr "pagina precedente" + +msgid "Search the docs ..." +msgstr "Cerca nei documenti ..." + +msgid "Download notebook file" +msgstr "Scarica il file del taccuino" + +msgid "suggest edit" +msgstr "suggerisci modifica" diff --git a/docs/_static/locales/iw/LC_MESSAGES/booktheme.po b/docs/_static/locales/iw/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..a2a09f0 --- /dev/null +++ b/docs/_static/locales/iw/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: iw\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "מאגר" + +msgid "open issue" +msgstr "בעיה פתוחה" + +msgid "Contents" +msgstr "תוכן" + +msgid "Fullscreen mode" +msgstr "מצב מסך מלא" + +msgid "Download this page" +msgstr "הורד דף זה" + +msgid "Download source file" +msgstr "הורד את קובץ המקור" + +msgid "Launch" +msgstr "לְהַשִׁיק" + +msgid "Edit this page" +msgstr "ערוך דף זה" + +msgid "Toggle navigation" +msgstr "החלף ניווט" + +msgid "Theme by the" +msgstr "נושא מאת" + +msgid "Source repository" +msgstr "מאגר המקורות" + +msgid "Last updated on" +msgstr "עודכן לאחרונה ב" + +msgid "By the" +msgstr "דרך" + +msgid "Sphinx Book Theme" +msgstr "נושא ספר ספינקס" + +msgid "Open an issue" +msgstr "פתח גיליון" + +msgid "next page" +msgstr "עמוד הבא" + +msgid "Copyright" +msgstr "זכויות יוצרים" + +msgid "Search this book..." +msgstr "חפש בספר זה ..." + +msgid "Print to PDF" +msgstr "הדפס לקובץ PDF" + +msgid "By" +msgstr "על ידי" + +msgid "previous page" +msgstr "עמוד קודם" + +msgid "Search the docs ..." +msgstr "חפש במסמכים ..." + +msgid "Download notebook file" +msgstr "הורד קובץ מחברת" + +msgid "suggest edit" +msgstr "מציע לערוך" diff --git a/docs/_static/locales/ja/LC_MESSAGES/booktheme.po b/docs/_static/locales/ja/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..216d540 --- /dev/null +++ b/docs/_static/locales/ja/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ja\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "リポジトリ" + +msgid "open issue" +msgstr "未解決の問題" + +msgid "Contents" +msgstr "目次" + +msgid "Fullscreen mode" +msgstr "全画面モード" + +msgid "Download this page" +msgstr "このページをダウンロード" + +msgid "Download source file" +msgstr "ソースファイルをダウンロード" + +msgid "Launch" +msgstr "起動" + +msgid "Edit this page" +msgstr "このページを編集" + +msgid "Toggle navigation" +msgstr "ナビゲーションを切り替え" + +msgid "Theme by the" +msgstr "のテーマ" + +msgid "Source repository" +msgstr "ソースリポジトリ" + +msgid "Last updated on" +msgstr "最終更新日" + +msgid "By the" +msgstr "によって" + +msgid "Sphinx Book Theme" +msgstr "スフィンクスの本のテーマ" + +msgid "Open an issue" +msgstr "問題を報告" + +msgid "next page" +msgstr "次のページ" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Search this book..." +msgstr "この本を検索..." + +msgid "Print to PDF" +msgstr "PDFに印刷" + +msgid "By" +msgstr "著者" + +msgid "previous page" +msgstr "前のページ" + +msgid "Search the docs ..." +msgstr "ドキュメントを検索..." + +msgid "Download notebook file" +msgstr "ノートブックファイルをダウンロード" + +msgid "suggest edit" +msgstr "編集を提案する" diff --git a/docs/_static/locales/ko/LC_MESSAGES/booktheme.po b/docs/_static/locales/ko/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..8c19ab6 --- /dev/null +++ b/docs/_static/locales/ko/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ko\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "저장소" + +msgid "open issue" +msgstr "열린 문제" + +msgid "Contents" +msgstr "내용" + +msgid "Fullscreen mode" +msgstr "전체 화면으로보기" + +msgid "Download this page" +msgstr "이 페이지 다운로드" + +msgid "Download source file" +msgstr "소스 파일 다운로드" + +msgid "Launch" +msgstr "시작하다" + +msgid "Edit this page" +msgstr "이 페이지 편집" + +msgid "Toggle navigation" +msgstr "탐색 전환" + +msgid "Theme by the" +msgstr "테마별" + +msgid "Source repository" +msgstr "소스 저장소" + +msgid "Last updated on" +msgstr "마지막 업데이트" + +msgid "By the" +msgstr "에 의해" + +msgid "Sphinx Book Theme" +msgstr "스핑크스 도서 테마" + +msgid "Open an issue" +msgstr "이슈 열기" + +msgid "next page" +msgstr "다음 페이지" + +msgid "Copyright" +msgstr "저작권" + +msgid "Search this book..." +msgstr "이 책 검색 ..." + +msgid "Print to PDF" +msgstr "PDF로 인쇄" + +msgid "By" +msgstr "으로" + +msgid "previous page" +msgstr "이전 페이지" + +msgid "Search the docs ..." +msgstr "문서 검색 ..." + +msgid "Download notebook file" +msgstr "노트북 파일 다운로드" + +msgid "suggest edit" +msgstr "편집 제안" diff --git a/docs/_static/locales/lt/LC_MESSAGES/booktheme.po b/docs/_static/locales/lt/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..368967f --- /dev/null +++ b/docs/_static/locales/lt/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "saugykla" + +msgid "open issue" +msgstr "atviras klausimas" + +msgid "Contents" +msgstr "Turinys" + +msgid "Fullscreen mode" +msgstr "Pilno ekrano režimas" + +msgid "Download this page" +msgstr "Atsisiųskite šį puslapį" + +msgid "Download source file" +msgstr "Atsisiųsti šaltinio failą" + +msgid "Launch" +msgstr "Paleiskite" + +msgid "Edit this page" +msgstr "Redaguoti šį puslapį" + +msgid "Toggle navigation" +msgstr "Perjungti naršymą" + +msgid "Theme by the" +msgstr "Tema" + +msgid "Source repository" +msgstr "Šaltinio saugykla" + +msgid "Last updated on" +msgstr "Paskutinį kartą atnaujinta" + +msgid "By the" +msgstr "Prie" + +msgid "Sphinx Book Theme" +msgstr "Sfinkso knygos tema" + +msgid "Open an issue" +msgstr "Atidarykite problemą" + +msgid "next page" +msgstr "Kitas puslapis" + +msgid "Copyright" +msgstr "Autorių teisės" + +msgid "Search this book..." +msgstr "Ieškoti šioje knygoje ..." + +msgid "Print to PDF" +msgstr "Spausdinti į PDF" + +msgid "By" +msgstr "Iki" + +msgid "previous page" +msgstr "Ankstesnis puslapis" + +msgid "Search the docs ..." +msgstr "Ieškoti dokumentuose ..." + +msgid "Download notebook file" +msgstr "Atsisiųsti nešiojamojo kompiuterio failą" + +msgid "suggest edit" +msgstr "pasiūlyti redaguoti" diff --git a/docs/_static/locales/lv/LC_MESSAGES/booktheme.po b/docs/_static/locales/lv/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..066fa4e --- /dev/null +++ b/docs/_static/locales/lv/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: lv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "krātuve" + +msgid "open issue" +msgstr "atklāts jautājums" + +msgid "Contents" +msgstr "Saturs" + +msgid "Fullscreen mode" +msgstr "Pilnekrāna režīms" + +msgid "Download this page" +msgstr "Lejupielādējiet šo lapu" + +msgid "Download source file" +msgstr "Lejupielādēt avota failu" + +msgid "Launch" +msgstr "Uzsākt" + +msgid "Edit this page" +msgstr "Rediģēt šo lapu" + +msgid "Toggle navigation" +msgstr "Pārslēgt navigāciju" + +msgid "Theme by the" +msgstr "Autora tēma" + +msgid "Source repository" +msgstr "Avota krātuve" + +msgid "Last updated on" +msgstr "Pēdējoreiz atjaunināts" + +msgid "By the" +msgstr "Ar" + +msgid "Sphinx Book Theme" +msgstr "Sfinksa grāmatas tēma" + +msgid "Open an issue" +msgstr "Atveriet problēmu" + +msgid "next page" +msgstr "nākamā lapaspuse" + +msgid "Copyright" +msgstr "Autortiesības" + +msgid "Search this book..." +msgstr "Meklēt šajā grāmatā ..." + +msgid "Print to PDF" +msgstr "Drukāt PDF formātā" + +msgid "By" +msgstr "Autors" + +msgid "previous page" +msgstr "iepriekšējā lapa" + +msgid "Search the docs ..." +msgstr "Meklēt dokumentos ..." + +msgid "Download notebook file" +msgstr "Lejupielādēt piezīmju grāmatiņu" + +msgid "suggest edit" +msgstr "ieteikt rediģēt" diff --git a/docs/_static/locales/ml/LC_MESSAGES/booktheme.po b/docs/_static/locales/ml/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..2b0fd76 --- /dev/null +++ b/docs/_static/locales/ml/LC_MESSAGES/booktheme.po @@ -0,0 +1,69 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "open issue" +msgstr "തുറന്ന പ്രശ്നം" + +msgid "Download this page" +msgstr "ഈ പേജ് ഡൗൺലോഡുചെയ്യുക" + +msgid "Download source file" +msgstr "ഉറവിട ഫയൽ ഡൗൺലോഡുചെയ്യുക" + +msgid "Launch" +msgstr "സമാരംഭിക്കുക" + +msgid "Edit this page" +msgstr "ഈ പേജ് എഡിറ്റുചെയ്യുക" + +msgid "Toggle navigation" +msgstr "നാവിഗേഷൻ ടോഗിൾ ചെയ്യുക" + +msgid "Theme by the" +msgstr "പ്രമേയം" + +msgid "Source repository" +msgstr "ഉറവിട ശേഖരം" + +msgid "Last updated on" +msgstr "അവസാനം അപ്‌ഡേറ്റുചെയ്‌തത്" + +msgid "By the" +msgstr "എഴുതിയത്" + +msgid "Sphinx Book Theme" +msgstr "സ്ഫിങ്ക്സ് പുസ്തക തീം" + +msgid "Open an issue" +msgstr "ഒരു പ്രശ്നം തുറക്കുക" + +msgid "next page" +msgstr "അടുത്ത പേജ്" + +msgid "Copyright" +msgstr "പകർപ്പവകാശം" + +msgid "Search this book..." +msgstr "ഈ പുസ്തകം തിരയുക ..." + +msgid "Print to PDF" +msgstr "PDF- ലേക്ക് പ്രിന്റുചെയ്യുക" + +msgid "By" +msgstr "എഴുതിയത്" + +msgid "previous page" +msgstr "മുൻപത്തെ താൾ" + +msgid "Download notebook file" +msgstr "നോട്ട്ബുക്ക് ഫയൽ ഡൺലോഡ് ചെയ്യുക" + +msgid "suggest edit" +msgstr "എഡിറ്റുചെയ്യാൻ നിർദ്ദേശിക്കുക" diff --git a/docs/_static/locales/mr/LC_MESSAGES/booktheme.po b/docs/_static/locales/mr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..51d011f --- /dev/null +++ b/docs/_static/locales/mr/LC_MESSAGES/booktheme.po @@ -0,0 +1,69 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: mr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "open issue" +msgstr "खुला मुद्दा" + +msgid "Download this page" +msgstr "हे पृष्ठ डाउनलोड करा" + +msgid "Download source file" +msgstr "स्त्रोत फाइल डाउनलोड करा" + +msgid "Launch" +msgstr "लाँच करा" + +msgid "Edit this page" +msgstr "हे पृष्ठ संपादित करा" + +msgid "Toggle navigation" +msgstr "नेव्हिगेशन टॉगल करा" + +msgid "Theme by the" +msgstr "द्वारा थीम" + +msgid "Source repository" +msgstr "स्त्रोत भांडार" + +msgid "Last updated on" +msgstr "अखेरचे अद्यतनित" + +msgid "By the" +msgstr "द्वारा" + +msgid "Sphinx Book Theme" +msgstr "स्फिंक्स बुक थीम" + +msgid "Open an issue" +msgstr "एक मुद्दा उघडा" + +msgid "next page" +msgstr "पुढील पृष्ठ" + +msgid "Copyright" +msgstr "कॉपीराइट" + +msgid "Search this book..." +msgstr "हे पुस्तक शोधा ..." + +msgid "Print to PDF" +msgstr "पीडीएफवर मुद्रित करा" + +msgid "By" +msgstr "द्वारा" + +msgid "previous page" +msgstr "मागील पान" + +msgid "Download notebook file" +msgstr "नोटबुक फाईल डाउनलोड करा" + +msgid "suggest edit" +msgstr "संपादन सुचवा" diff --git a/docs/_static/locales/ms/LC_MESSAGES/booktheme.po b/docs/_static/locales/ms/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..6f8a250 --- /dev/null +++ b/docs/_static/locales/ms/LC_MESSAGES/booktheme.po @@ -0,0 +1,69 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ms\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "open issue" +msgstr "isu terbuka" + +msgid "Download this page" +msgstr "Muat turun halaman ini" + +msgid "Download source file" +msgstr "Muat turun fail sumber" + +msgid "Launch" +msgstr "Lancarkan" + +msgid "Edit this page" +msgstr "Edit halaman ini" + +msgid "Toggle navigation" +msgstr "Togol navigasi" + +msgid "Theme by the" +msgstr "Tema oleh" + +msgid "Source repository" +msgstr "Repositori sumber" + +msgid "Last updated on" +msgstr "Terakhir dikemas kini pada" + +msgid "By the" +msgstr "Oleh" + +msgid "Sphinx Book Theme" +msgstr "Tema Buku Sphinx" + +msgid "Open an issue" +msgstr "Buka masalah" + +msgid "next page" +msgstr "muka surat seterusnya" + +msgid "Copyright" +msgstr "hak cipta" + +msgid "Search this book..." +msgstr "Cari buku ini ..." + +msgid "Print to PDF" +msgstr "Cetak ke PDF" + +msgid "By" +msgstr "Oleh" + +msgid "previous page" +msgstr "halaman sebelumnya" + +msgid "Download notebook file" +msgstr "Muat turun fail buku nota" + +msgid "suggest edit" +msgstr "cadangkan edit" diff --git a/docs/_static/locales/nl/LC_MESSAGES/booktheme.po b/docs/_static/locales/nl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..4065b58 --- /dev/null +++ b/docs/_static/locales/nl/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: nl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "repository" + +msgid "open issue" +msgstr "open probleem" + +msgid "Contents" +msgstr "Inhoud" + +msgid "Fullscreen mode" +msgstr "Volledig scherm" + +msgid "Download this page" +msgstr "Download deze pagina" + +msgid "Download source file" +msgstr "Download het bronbestand" + +msgid "Launch" +msgstr "Lancering" + +msgid "Edit this page" +msgstr "bewerk deze pagina" + +msgid "Toggle navigation" +msgstr "Schakel navigatie" + +msgid "Theme by the" +msgstr "Thema door de" + +msgid "Source repository" +msgstr "Bronopslagplaats" + +msgid "Last updated on" +msgstr "Laatst geupdate op" + +msgid "By the" +msgstr "Door de" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-boekthema" + +msgid "Open an issue" +msgstr "Open een probleem" + +msgid "next page" +msgstr "volgende bladzijde" + +msgid "Copyright" +msgstr "auteursrechten" + +msgid "Search this book..." +msgstr "Zoek in dit boek ..." + +msgid "Print to PDF" +msgstr "Afdrukken naar pdf" + +msgid "By" +msgstr "Door" + +msgid "previous page" +msgstr "vorige pagina" + +msgid "Search the docs ..." +msgstr "Doorzoek de documenten ..." + +msgid "Download notebook file" +msgstr "Download notebookbestand" + +msgid "suggest edit" +msgstr "suggereren bewerken" diff --git a/docs/_static/locales/no/LC_MESSAGES/booktheme.po b/docs/_static/locales/no/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..c4391bb --- /dev/null +++ b/docs/_static/locales/no/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: no\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "oppbevaringssted" + +msgid "open issue" +msgstr "åpent nummer" + +msgid "Contents" +msgstr "Innhold" + +msgid "Fullscreen mode" +msgstr "Fullskjerm-modus" + +msgid "Download this page" +msgstr "Last ned denne siden" + +msgid "Download source file" +msgstr "Last ned kildefilen" + +msgid "Launch" +msgstr "Start" + +msgid "Edit this page" +msgstr "Rediger denne siden" + +msgid "Toggle navigation" +msgstr "Bytt navigasjon" + +msgid "Theme by the" +msgstr "Tema av" + +msgid "Source repository" +msgstr "Kildedepot" + +msgid "Last updated on" +msgstr "Sist oppdatert den" + +msgid "By the" +msgstr "Ved" + +msgid "Sphinx Book Theme" +msgstr "Sphinx boktema" + +msgid "Open an issue" +msgstr "Åpne et problem" + +msgid "next page" +msgstr "neste side" + +msgid "Copyright" +msgstr "opphavsrett" + +msgid "Search this book..." +msgstr "Søk i denne boken ..." + +msgid "Print to PDF" +msgstr "Skriv ut til PDF" + +msgid "By" +msgstr "Av" + +msgid "previous page" +msgstr "forrige side" + +msgid "Search the docs ..." +msgstr "Søk i dokumentene ..." + +msgid "Download notebook file" +msgstr "Last ned notatbokfilen" + +msgid "suggest edit" +msgstr "foreslå redigering" diff --git a/docs/_static/locales/pl/LC_MESSAGES/booktheme.po b/docs/_static/locales/pl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..bd03ba4 --- /dev/null +++ b/docs/_static/locales/pl/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "magazyn" + +msgid "open issue" +msgstr "otwarty problem" + +msgid "Contents" +msgstr "Zawartość" + +msgid "Fullscreen mode" +msgstr "Pełny ekran" + +msgid "Download this page" +msgstr "Pobierz tę stronę" + +msgid "Download source file" +msgstr "Pobierz plik źródłowy" + +msgid "Launch" +msgstr "Uruchomić" + +msgid "Edit this page" +msgstr "Edytuj tę strone" + +msgid "Toggle navigation" +msgstr "Przełącz nawigację" + +msgid "Theme by the" +msgstr "Motyw autorstwa" + +msgid "Source repository" +msgstr "Repozytorium źródłowe" + +msgid "Last updated on" +msgstr "Ostatnia aktualizacja" + +msgid "By the" +msgstr "Przez" + +msgid "Sphinx Book Theme" +msgstr "Motyw książki Sphinx" + +msgid "Open an issue" +msgstr "Otwórz problem" + +msgid "next page" +msgstr "Następna strona" + +msgid "Copyright" +msgstr "prawa autorskie" + +msgid "Search this book..." +msgstr "Przeszukaj tę książkę ..." + +msgid "Print to PDF" +msgstr "Drukuj do PDF" + +msgid "By" +msgstr "Przez" + +msgid "previous page" +msgstr "Poprzednia strona" + +msgid "Search the docs ..." +msgstr "Przeszukaj dokumenty ..." + +msgid "Download notebook file" +msgstr "Pobierz plik notatnika" + +msgid "suggest edit" +msgstr "zaproponuj edycję" diff --git a/docs/_static/locales/pt/LC_MESSAGES/booktheme.po b/docs/_static/locales/pt/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..8ac25a1 --- /dev/null +++ b/docs/_static/locales/pt/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "repositório" + +msgid "open issue" +msgstr "questão aberta" + +msgid "Contents" +msgstr "Conteúdo" + +msgid "Fullscreen mode" +msgstr "Modo tela cheia" + +msgid "Download this page" +msgstr "Baixe esta página" + +msgid "Download source file" +msgstr "Baixar arquivo fonte" + +msgid "Launch" +msgstr "Lançamento" + +msgid "Edit this page" +msgstr "Edite essa página" + +msgid "Toggle navigation" +msgstr "Alternar de navegação" + +msgid "Theme by the" +msgstr "Tema por" + +msgid "Source repository" +msgstr "Repositório fonte" + +msgid "Last updated on" +msgstr "Última atualização em" + +msgid "By the" +msgstr "Pelo" + +msgid "Sphinx Book Theme" +msgstr "Tema do livro Sphinx" + +msgid "Open an issue" +msgstr "Abra um problema" + +msgid "next page" +msgstr "próxima página" + +msgid "Copyright" +msgstr "direito autoral" + +msgid "Search this book..." +msgstr "Pesquise este livro ..." + +msgid "Print to PDF" +msgstr "Imprimir em PDF" + +msgid "By" +msgstr "De" + +msgid "previous page" +msgstr "página anterior" + +msgid "Search the docs ..." +msgstr "Pesquise os documentos ..." + +msgid "Download notebook file" +msgstr "Baixar arquivo de notebook" + +msgid "suggest edit" +msgstr "sugerir edição" diff --git a/docs/_static/locales/ro/LC_MESSAGES/booktheme.po b/docs/_static/locales/ro/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..d0f7d2f --- /dev/null +++ b/docs/_static/locales/ro/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ro\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "repertoriu" + +msgid "open issue" +msgstr "problema deschisă" + +msgid "Contents" +msgstr "Cuprins" + +msgid "Fullscreen mode" +msgstr "Modul ecran întreg" + +msgid "Download this page" +msgstr "Descarcă această pagină" + +msgid "Download source file" +msgstr "Descărcați fișierul sursă" + +msgid "Launch" +msgstr "Lansa" + +msgid "Edit this page" +msgstr "Editați această pagină" + +msgid "Toggle navigation" +msgstr "Comutare navigare" + +msgid "Theme by the" +msgstr "Tema de" + +msgid "Source repository" +msgstr "Depozit sursă" + +msgid "Last updated on" +msgstr "Ultima actualizare la" + +msgid "By the" +msgstr "Langa" + +msgid "Sphinx Book Theme" +msgstr "Tema Sphinx Book" + +msgid "Open an issue" +msgstr "Deschideți o problemă" + +msgid "next page" +msgstr "pagina următoare" + +msgid "Copyright" +msgstr "Drepturi de autor" + +msgid "Search this book..." +msgstr "Căutați în această carte ..." + +msgid "Print to PDF" +msgstr "Imprimați în PDF" + +msgid "By" +msgstr "De" + +msgid "previous page" +msgstr "pagina anterioară" + +msgid "Search the docs ..." +msgstr "Căutați documente ..." + +msgid "Download notebook file" +msgstr "Descărcați fișierul notebook" + +msgid "suggest edit" +msgstr "sugerează editare" diff --git a/docs/_static/locales/ru/LC_MESSAGES/booktheme.po b/docs/_static/locales/ru/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..9b55bfe --- /dev/null +++ b/docs/_static/locales/ru/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ru\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "хранилище" + +msgid "open issue" +msgstr "открытый вопрос" + +msgid "Contents" +msgstr "Содержание" + +msgid "Fullscreen mode" +msgstr "Полноэкранный режим" + +msgid "Download this page" +msgstr "Загрузите эту страницу" + +msgid "Download source file" +msgstr "Скачать исходный файл" + +msgid "Launch" +msgstr "Запуск" + +msgid "Edit this page" +msgstr "Редактировать эту страницу" + +msgid "Toggle navigation" +msgstr "Переключить навигацию" + +msgid "Theme by the" +msgstr "Тема от" + +msgid "Source repository" +msgstr "Исходный репозиторий" + +msgid "Last updated on" +msgstr "Последнее обновление" + +msgid "By the" +msgstr "Посредством" + +msgid "Sphinx Book Theme" +msgstr "Тема книги Сфинкс" + +msgid "Open an issue" +msgstr "Открыть вопрос" + +msgid "next page" +msgstr "Следующая страница" + +msgid "Copyright" +msgstr "авторское право" + +msgid "Search this book..." +msgstr "Искать в этой книге ..." + +msgid "Print to PDF" +msgstr "Распечатать в PDF" + +msgid "By" +msgstr "По" + +msgid "previous page" +msgstr "Предыдущая страница" + +msgid "Search the docs ..." +msgstr "Искать в документах ..." + +msgid "Download notebook file" +msgstr "Скачать файл записной книжки" + +msgid "suggest edit" +msgstr "предложить редактировать" diff --git a/docs/_static/locales/sk/LC_MESSAGES/booktheme.po b/docs/_static/locales/sk/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..3e6fd9f --- /dev/null +++ b/docs/_static/locales/sk/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sk\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "Úložisko" + +msgid "open issue" +msgstr "otvorené vydanie" + +msgid "Contents" +msgstr "Obsah" + +msgid "Fullscreen mode" +msgstr "Režim celej obrazovky" + +msgid "Download this page" +msgstr "Stiahnite si túto stránku" + +msgid "Download source file" +msgstr "Stiahnite si zdrojový súbor" + +msgid "Launch" +msgstr "Spustiť" + +msgid "Edit this page" +msgstr "Upraviť túto stránku" + +msgid "Toggle navigation" +msgstr "Prepnúť navigáciu" + +msgid "Theme by the" +msgstr "Téma od" + +msgid "Source repository" +msgstr "Zdrojové úložisko" + +msgid "Last updated on" +msgstr "Posledná aktualizácia dňa" + +msgid "By the" +msgstr "Podľa" + +msgid "Sphinx Book Theme" +msgstr "Téma knihy Sfinga" + +msgid "Open an issue" +msgstr "Otvorte problém" + +msgid "next page" +msgstr "ďalšia strana" + +msgid "Copyright" +msgstr "Autorské práva" + +msgid "Search this book..." +msgstr "Hľadať v tejto knihe ..." + +msgid "Print to PDF" +msgstr "Tlač do PDF" + +msgid "By" +msgstr "Autor:" + +msgid "previous page" +msgstr "predchádzajúca strana" + +msgid "Search the docs ..." +msgstr "Hľadať v dokumentoch ..." + +msgid "Download notebook file" +msgstr "Stiahnite si zošit" + +msgid "suggest edit" +msgstr "navrhnúť úpravu" diff --git a/docs/_static/locales/sl/LC_MESSAGES/booktheme.po b/docs/_static/locales/sl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..dd99bbe --- /dev/null +++ b/docs/_static/locales/sl/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "odlagališče" + +msgid "open issue" +msgstr "odprto vprašanje" + +msgid "Contents" +msgstr "Vsebina" + +msgid "Fullscreen mode" +msgstr "Celozaslonski način" + +msgid "Download this page" +msgstr "Prenesite to stran" + +msgid "Download source file" +msgstr "Prenesite izvorno datoteko" + +msgid "Launch" +msgstr "Kosilo" + +msgid "Edit this page" +msgstr "Uredite to stran" + +msgid "Toggle navigation" +msgstr "Preklopi navigacijo" + +msgid "Theme by the" +msgstr "Tema avtorja" + +msgid "Source repository" +msgstr "Izvorno skladišče" + +msgid "Last updated on" +msgstr "Nazadnje posodobljeno dne" + +msgid "By the" +msgstr "Avtor" + +msgid "Sphinx Book Theme" +msgstr "Tema knjige Sphinx" + +msgid "Open an issue" +msgstr "Odprite številko" + +msgid "next page" +msgstr "Naslednja stran" + +msgid "Copyright" +msgstr "avtorske pravice" + +msgid "Search this book..." +msgstr "Poiščite to knjigo ..." + +msgid "Print to PDF" +msgstr "Natisni v PDF" + +msgid "By" +msgstr "Avtor" + +msgid "previous page" +msgstr "Prejšnja stran" + +msgid "Search the docs ..." +msgstr "Poiščite dokumente ..." + +msgid "Download notebook file" +msgstr "Prenesite datoteko zvezka" + +msgid "suggest edit" +msgstr "predlagajte urejanje" diff --git a/docs/_static/locales/sr/LC_MESSAGES/booktheme.po b/docs/_static/locales/sr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..12284e0 --- /dev/null +++ b/docs/_static/locales/sr/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "спремиште" + +msgid "open issue" +msgstr "отворено издање" + +msgid "Contents" +msgstr "Садржај" + +msgid "Fullscreen mode" +msgstr "Режим целог екрана" + +msgid "Download this page" +msgstr "Преузмите ову страницу" + +msgid "Download source file" +msgstr "Преузми изворну датотеку" + +msgid "Launch" +msgstr "Лансирање" + +msgid "Edit this page" +msgstr "Уредите ову страницу" + +msgid "Toggle navigation" +msgstr "Укључи / искључи навигацију" + +msgid "Theme by the" +msgstr "Тхеме би" + +msgid "Source repository" +msgstr "Изворно спремиште" + +msgid "Last updated on" +msgstr "Последње ажурирање" + +msgid "By the" +msgstr "Од" + +msgid "Sphinx Book Theme" +msgstr "Тема књиге Спхинк" + +msgid "Open an issue" +msgstr "Отворите издање" + +msgid "next page" +msgstr "Следећа страна" + +msgid "Copyright" +msgstr "Ауторско право" + +msgid "Search this book..." +msgstr "Претражите ову књигу ..." + +msgid "Print to PDF" +msgstr "Испис у ПДФ" + +msgid "By" +msgstr "Од стране" + +msgid "previous page" +msgstr "Претходна страница" + +msgid "Search the docs ..." +msgstr "Претражите документе ..." + +msgid "Download notebook file" +msgstr "Преузмите датотеку бележнице" + +msgid "suggest edit" +msgstr "предложи уређивање" diff --git a/docs/_static/locales/sv/LC_MESSAGES/booktheme.po b/docs/_static/locales/sv/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..203c917 --- /dev/null +++ b/docs/_static/locales/sv/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: sv\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "förvar" + +msgid "open issue" +msgstr "öppet problem" + +msgid "Contents" +msgstr "Innehåll" + +msgid "Fullscreen mode" +msgstr "Fullskärmsläge" + +msgid "Download this page" +msgstr "Ladda ner den här sidan" + +msgid "Download source file" +msgstr "Ladda ner källfil" + +msgid "Launch" +msgstr "Lansera" + +msgid "Edit this page" +msgstr "Redigera den här sidan" + +msgid "Toggle navigation" +msgstr "Växla navigering" + +msgid "Theme by the" +msgstr "Tema av" + +msgid "Source repository" +msgstr "Källförvar" + +msgid "Last updated on" +msgstr "Senast uppdaterad den" + +msgid "By the" +msgstr "Vid" + +msgid "Sphinx Book Theme" +msgstr "Sphinx boktema" + +msgid "Open an issue" +msgstr "Öppna ett problem" + +msgid "next page" +msgstr "nästa sida" + +msgid "Copyright" +msgstr "upphovsrätt" + +msgid "Search this book..." +msgstr "Sök i den här boken ..." + +msgid "Print to PDF" +msgstr "Skriv ut till PDF" + +msgid "By" +msgstr "Förbi" + +msgid "previous page" +msgstr "föregående sida" + +msgid "Search the docs ..." +msgstr "Sök i dokumenten ..." + +msgid "Download notebook file" +msgstr "Ladda ner anteckningsbokfilen" + +msgid "suggest edit" +msgstr "föreslå redigering" diff --git a/docs/_static/locales/ta/LC_MESSAGES/booktheme.po b/docs/_static/locales/ta/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..eefce8a --- /dev/null +++ b/docs/_static/locales/ta/LC_MESSAGES/booktheme.po @@ -0,0 +1,69 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "open issue" +msgstr "திறந்த பிரச்சினை" + +msgid "Download this page" +msgstr "இந்தப் பக்கத்தைப் பதிவிறக்கவும்" + +msgid "Download source file" +msgstr "மூல கோப்பைப் பதிவிறக்குக" + +msgid "Launch" +msgstr "தொடங்க" + +msgid "Edit this page" +msgstr "இந்தப் பக்கத்தைத் திருத்தவும்" + +msgid "Toggle navigation" +msgstr "வழிசெலுத்தலை நிலைமாற்று" + +msgid "Theme by the" +msgstr "வழங்கிய தீம்" + +msgid "Source repository" +msgstr "மூல களஞ்சியம்" + +msgid "Last updated on" +msgstr "கடைசியாக புதுப்பிக்கப்பட்டது" + +msgid "By the" +msgstr "மூலம்" + +msgid "Sphinx Book Theme" +msgstr "ஸ்பிங்க்ஸ் புத்தக தீம்" + +msgid "Open an issue" +msgstr "சிக்கலைத் திறக்கவும்" + +msgid "next page" +msgstr "அடுத்த பக்கம்" + +msgid "Copyright" +msgstr "பதிப்புரிமை" + +msgid "Search this book..." +msgstr "இந்த புத்தகத்தைத் தேடுங்கள் ..." + +msgid "Print to PDF" +msgstr "PDF இல் அச்சிடுக" + +msgid "By" +msgstr "வழங்கியவர்" + +msgid "previous page" +msgstr "முந்தைய பக்கம்" + +msgid "Download notebook file" +msgstr "நோட்புக் கோப்பைப் பதிவிறக்கவும்" + +msgid "suggest edit" +msgstr "திருத்த பரிந்துரைக்கவும்" diff --git a/docs/_static/locales/te/LC_MESSAGES/booktheme.po b/docs/_static/locales/te/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..0373b70 --- /dev/null +++ b/docs/_static/locales/te/LC_MESSAGES/booktheme.po @@ -0,0 +1,69 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: te\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "open issue" +msgstr "ఓపెన్ ఇష్యూ" + +msgid "Download this page" +msgstr "ఈ పేజీని డౌన్‌లోడ్ చేయండి" + +msgid "Download source file" +msgstr "మూల ఫైల్‌ను డౌన్‌లోడ్ చేయండి" + +msgid "Launch" +msgstr "ప్రారంభించండి" + +msgid "Edit this page" +msgstr "ఈ పేజీని సవరించండి" + +msgid "Toggle navigation" +msgstr "నావిగేషన్‌ను టోగుల్ చేయండి" + +msgid "Theme by the" +msgstr "ద్వారా థీమ్" + +msgid "Source repository" +msgstr "మూల రిపోజిటరీ" + +msgid "Last updated on" +msgstr "చివరిగా నవీకరించబడింది" + +msgid "By the" +msgstr "ద్వారా" + +msgid "Sphinx Book Theme" +msgstr "సింహిక పుస్తక థీమ్" + +msgid "Open an issue" +msgstr "సమస్యను తెరవండి" + +msgid "next page" +msgstr "తరువాతి పేజీ" + +msgid "Copyright" +msgstr "కాపీరైట్" + +msgid "Search this book..." +msgstr "ఈ పుస్తకాన్ని శోధించండి ..." + +msgid "Print to PDF" +msgstr "PDF కి ముద్రించండి" + +msgid "By" +msgstr "ద్వారా" + +msgid "previous page" +msgstr "ముందు పేజి" + +msgid "Download notebook file" +msgstr "నోట్బుక్ ఫైల్ను డౌన్లోడ్ చేయండి" + +msgid "suggest edit" +msgstr "సవరించమని సూచించండి" diff --git a/docs/_static/locales/tg/LC_MESSAGES/booktheme.po b/docs/_static/locales/tg/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..1807ae2 --- /dev/null +++ b/docs/_static/locales/tg/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tg\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "анбор" + +msgid "open issue" +msgstr "барориши кушод" + +msgid "Contents" +msgstr "Мундариҷа" + +msgid "Fullscreen mode" +msgstr "Ҳолати экрани пурра" + +msgid "Download this page" +msgstr "Ин саҳифаро зеркашӣ кунед" + +msgid "Download source file" +msgstr "Файли манбаъро зеркашӣ кунед" + +msgid "Launch" +msgstr "Оғоз" + +msgid "Edit this page" +msgstr "Ин саҳифаро таҳрир кунед" + +msgid "Toggle navigation" +msgstr "Гузаришро иваз кунед" + +msgid "Theme by the" +msgstr "Мавзӯъи аз" + +msgid "Source repository" +msgstr "Анбори манбаъ" + +msgid "Last updated on" +msgstr "Last навсозӣ дар" + +msgid "By the" +msgstr "Бо" + +msgid "Sphinx Book Theme" +msgstr "Сфинкс Мавзӯи китоб" + +msgid "Open an issue" +msgstr "Масъаларо кушоед" + +msgid "next page" +msgstr "саҳифаи оянда" + +msgid "Copyright" +msgstr "Ҳуқуқи муаллиф" + +msgid "Search this book..." +msgstr "Ин китобро ҷустуҷӯ кунед ..." + +msgid "Print to PDF" +msgstr "Чоп ба PDF" + +msgid "By" +msgstr "Бо" + +msgid "previous page" +msgstr "саҳифаи қаблӣ" + +msgid "Search the docs ..." +msgstr "Ҷустуҷӯи ҳуҷҷатҳо ..." + +msgid "Download notebook file" +msgstr "Файли дафтарро зеркашӣ кунед" + +msgid "suggest edit" +msgstr "пешниҳод вироиш" diff --git a/docs/_static/locales/th/LC_MESSAGES/booktheme.po b/docs/_static/locales/th/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..a286feb --- /dev/null +++ b/docs/_static/locales/th/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: th\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "ที่เก็บ" + +msgid "open issue" +msgstr "เปิดปัญหา" + +msgid "Contents" +msgstr "สารบัญ" + +msgid "Fullscreen mode" +msgstr "โหมดเต็มหน้าจอ" + +msgid "Download this page" +msgstr "ดาวน์โหลดหน้านี้" + +msgid "Download source file" +msgstr "ดาวน์โหลดไฟล์ต้นฉบับ" + +msgid "Launch" +msgstr "เปิด" + +msgid "Edit this page" +msgstr "แก้ไขหน้านี้" + +msgid "Toggle navigation" +msgstr "ไม่ต้องสลับช่องทาง" + +msgid "Theme by the" +msgstr "ธีมโดย" + +msgid "Source repository" +msgstr "ที่เก็บซอร์ส" + +msgid "Last updated on" +msgstr "ปรับปรุงล่าสุดเมื่อ" + +msgid "By the" +msgstr "โดย" + +msgid "Sphinx Book Theme" +msgstr "ธีมหนังสือสฟิงซ์" + +msgid "Open an issue" +msgstr "เปิดปัญหา" + +msgid "next page" +msgstr "หน้าต่อไป" + +msgid "Copyright" +msgstr "ลิขสิทธิ์" + +msgid "Search this book..." +msgstr "ค้นหาหนังสือเล่มนี้ ..." + +msgid "Print to PDF" +msgstr "พิมพ์เป็น PDF" + +msgid "By" +msgstr "โดย" + +msgid "previous page" +msgstr "หน้าที่แล้ว" + +msgid "Search the docs ..." +msgstr "ค้นหาเอกสาร ..." + +msgid "Download notebook file" +msgstr "ดาวน์โหลดไฟล์สมุดบันทึก" + +msgid "suggest edit" +msgstr "แนะนำแก้ไข" diff --git a/docs/_static/locales/tl/LC_MESSAGES/booktheme.po b/docs/_static/locales/tl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..2e09439 --- /dev/null +++ b/docs/_static/locales/tl/LC_MESSAGES/booktheme.po @@ -0,0 +1,69 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "open issue" +msgstr "bukas na isyu" + +msgid "Download this page" +msgstr "I-download ang pahinang ito" + +msgid "Download source file" +msgstr "Mag-download ng file ng pinagmulan" + +msgid "Launch" +msgstr "Ilunsad" + +msgid "Edit this page" +msgstr "I-edit ang pahinang ito" + +msgid "Toggle navigation" +msgstr "I-toggle ang pag-navigate" + +msgid "Theme by the" +msgstr "Tema ng" + +msgid "Source repository" +msgstr "Pinagmulan ng imbakan" + +msgid "Last updated on" +msgstr "Huling na-update noong" + +msgid "By the" +msgstr "Sa pamamagitan ng" + +msgid "Sphinx Book Theme" +msgstr "Tema ng Sphinx Book" + +msgid "Open an issue" +msgstr "Magbukas ng isyu" + +msgid "next page" +msgstr "Susunod na pahina" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Search this book..." +msgstr "Maghanap sa librong ito ..." + +msgid "Print to PDF" +msgstr "I-print sa PDF" + +msgid "By" +msgstr "Ni" + +msgid "previous page" +msgstr "Nakaraang pahina" + +msgid "Download notebook file" +msgstr "Mag-download ng file ng notebook" + +msgid "suggest edit" +msgstr "iminumungkahi i-edit" diff --git a/docs/_static/locales/tr/LC_MESSAGES/booktheme.po b/docs/_static/locales/tr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..fe21499 --- /dev/null +++ b/docs/_static/locales/tr/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "depo" + +msgid "open issue" +msgstr "Açık konu" + +msgid "Contents" +msgstr "İçindekiler" + +msgid "Fullscreen mode" +msgstr "Tam ekran modu" + +msgid "Download this page" +msgstr "Bu sayfayı indirin" + +msgid "Download source file" +msgstr "Kaynak dosyayı indirin" + +msgid "Launch" +msgstr "Başlatmak" + +msgid "Edit this page" +msgstr "Bu sayfayı düzenle" + +msgid "Toggle navigation" +msgstr "Gezinmeyi değiştir" + +msgid "Theme by the" +msgstr "Tarafından tema" + +msgid "Source repository" +msgstr "Kaynak kod deposu" + +msgid "Last updated on" +msgstr "Son güncelleme tarihi" + +msgid "By the" +msgstr "Tarafından" + +msgid "Sphinx Book Theme" +msgstr "Sfenks Kitap Teması" + +msgid "Open an issue" +msgstr "Bir sorunu açın" + +msgid "next page" +msgstr "sonraki Sayfa" + +msgid "Copyright" +msgstr "Telif hakkı" + +msgid "Search this book..." +msgstr "Bu kitabı ara ..." + +msgid "Print to PDF" +msgstr "PDF olarak yazdır" + +msgid "By" +msgstr "Tarafından" + +msgid "previous page" +msgstr "önceki sayfa" + +msgid "Search the docs ..." +msgstr "Belgelerde ara ..." + +msgid "Download notebook file" +msgstr "Defter dosyasını indirin" + +msgid "suggest edit" +msgstr "düzenleme öner" diff --git a/docs/_static/locales/uk/LC_MESSAGES/booktheme.po b/docs/_static/locales/uk/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..ae85786 --- /dev/null +++ b/docs/_static/locales/uk/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: uk\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "сховище" + +msgid "open issue" +msgstr "відкритий випуск" + +msgid "Contents" +msgstr "Зміст" + +msgid "Fullscreen mode" +msgstr "Повноекранний режим" + +msgid "Download this page" +msgstr "Завантажте цю сторінку" + +msgid "Download source file" +msgstr "Завантажити вихідний файл" + +msgid "Launch" +msgstr "Запуск" + +msgid "Edit this page" +msgstr "Редагувати цю сторінку" + +msgid "Toggle navigation" +msgstr "Переключити навігацію" + +msgid "Theme by the" +msgstr "Тема від" + +msgid "Source repository" +msgstr "Джерело сховища" + +msgid "Last updated on" +msgstr "Останнє оновлення:" + +msgid "By the" +msgstr "По" + +msgid "Sphinx Book Theme" +msgstr "Тема книги \"Сфінкс\"" + +msgid "Open an issue" +msgstr "Відкрийте випуск" + +msgid "next page" +msgstr "Наступна сторінка" + +msgid "Copyright" +msgstr "Авторське право" + +msgid "Search this book..." +msgstr "Шукати в цій книзі ..." + +msgid "Print to PDF" +msgstr "Друк у форматі PDF" + +msgid "By" +msgstr "Автор" + +msgid "previous page" +msgstr "Попередня сторінка" + +msgid "Search the docs ..." +msgstr "Шукати в документах ..." + +msgid "Download notebook file" +msgstr "Завантажте файл блокнота" + +msgid "suggest edit" +msgstr "запропонувати редагувати" diff --git a/docs/_static/locales/ur/LC_MESSAGES/booktheme.po b/docs/_static/locales/ur/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..4c4c637 --- /dev/null +++ b/docs/_static/locales/ur/LC_MESSAGES/booktheme.po @@ -0,0 +1,69 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "open issue" +msgstr "کھلا مسئلہ" + +msgid "Download this page" +msgstr "اس صفحے کو ڈاؤن لوڈ کریں" + +msgid "Download source file" +msgstr "سورس فائل ڈاؤن لوڈ کریں" + +msgid "Launch" +msgstr "لانچ کریں" + +msgid "Edit this page" +msgstr "اس صفحے میں ترمیم کریں" + +msgid "Toggle navigation" +msgstr "نیویگیشن ٹوگل کریں" + +msgid "Theme by the" +msgstr "کے ذریعہ تھیم" + +msgid "Source repository" +msgstr "ماخذ ذخیرہ" + +msgid "Last updated on" +msgstr "آخری بار تازہ کاری ہوئی" + +msgid "By the" +msgstr "کی طرف" + +msgid "Sphinx Book Theme" +msgstr "سپنکس بک تھیم" + +msgid "Open an issue" +msgstr "ایک مسئلہ کھولیں" + +msgid "next page" +msgstr "اگلا صفحہ" + +msgid "Copyright" +msgstr "کاپی رائٹ" + +msgid "Search this book..." +msgstr "اس کتاب کو تلاش کریں…" + +msgid "Print to PDF" +msgstr "پی ڈی ایف پرنٹ کریں" + +msgid "By" +msgstr "بذریعہ" + +msgid "previous page" +msgstr "سابقہ ​​صفحہ" + +msgid "Download notebook file" +msgstr "نوٹ بک فائل ڈاؤن لوڈ کریں" + +msgid "suggest edit" +msgstr "ترمیم کی تجویز کریں" diff --git a/docs/_static/locales/vi/LC_MESSAGES/booktheme.po b/docs/_static/locales/vi/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..2c42502 --- /dev/null +++ b/docs/_static/locales/vi/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: vi\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "kho" + +msgid "open issue" +msgstr "vấn đề mở" + +msgid "Contents" +msgstr "Nội dung" + +msgid "Fullscreen mode" +msgstr "Chế độ toàn màn hình" + +msgid "Download this page" +msgstr "Tải xuống trang này" + +msgid "Download source file" +msgstr "Tải xuống tệp nguồn" + +msgid "Launch" +msgstr "Phóng" + +msgid "Edit this page" +msgstr "chỉnh sửa trang này" + +msgid "Toggle navigation" +msgstr "Chuyển đổi điều hướng thành" + +msgid "Theme by the" +msgstr "Chủ đề của" + +msgid "Source repository" +msgstr "Kho nguồn" + +msgid "Last updated on" +msgstr "Cập nhật lần cuối vào" + +msgid "By the" +msgstr "Bằng" + +msgid "Sphinx Book Theme" +msgstr "Chủ đề sách nhân sư" + +msgid "Open an issue" +msgstr "Mở một vấn đề" + +msgid "next page" +msgstr "Trang tiếp theo" + +msgid "Copyright" +msgstr "Bản quyền" + +msgid "Search this book..." +msgstr "Tìm kiếm cuốn sách này ..." + +msgid "Print to PDF" +msgstr "In sang PDF" + +msgid "By" +msgstr "Bởi" + +msgid "previous page" +msgstr "trang trước" + +msgid "Search the docs ..." +msgstr "Tìm kiếm tài liệu ..." + +msgid "Download notebook file" +msgstr "Tải xuống tệp sổ tay" + +msgid "suggest edit" +msgstr "đề nghị chỉnh sửa" diff --git a/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.po b/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..4098aed --- /dev/null +++ b/docs/_static/locales/zh_CN/LC_MESSAGES/booktheme.po @@ -0,0 +1,78 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_CN\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "资料库" + +msgid "open issue" +msgstr "公开的问题" + +msgid "Contents" +msgstr "内容" + +msgid "Fullscreen mode" +msgstr "全屏模式" + +msgid "Download this page" +msgstr "下载此页面" + +msgid "Download source file" +msgstr "下载源文件" + +msgid "Launch" +msgstr "发射" + +msgid "Edit this page" +msgstr "编辑这个页面" + +msgid "Toggle navigation" +msgstr "切换导航" + +msgid "Theme by the" +msgstr "主题由" + +msgid "Source repository" +msgstr "源库" + +msgid "Last updated on" +msgstr "上次更新时间:" + +msgid "By the" +msgstr "由" + +msgid "Sphinx Book Theme" +msgstr "狮身人面像书主题" + +msgid "Open an issue" +msgstr "打开一个问题" + +msgid "next page" +msgstr "下一页" + +msgid "Copyright" +msgstr "版权" + +msgid "Search this book..." +msgstr "搜索这本书..." + +msgid "Print to PDF" +msgstr "列印成PDF" + +msgid "By" +msgstr "通过" + +msgid "previous page" +msgstr "上一页" + +msgid "Search the docs ..." +msgstr "搜索文档..." + +msgid "Download notebook file" +msgstr "下载笔记本文件" diff --git a/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.po b/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..52cff5e --- /dev/null +++ b/docs/_static/locales/zh_TW/LC_MESSAGES/booktheme.po @@ -0,0 +1,81 @@ + +msgid "" +msgstr "" +"Project-Id-Version: Sphinx-Book-Theme\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: zh_TW\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "repository" +msgstr "資料庫" + +msgid "open issue" +msgstr "公開的問題" + +msgid "Contents" +msgstr "內容" + +msgid "Fullscreen mode" +msgstr "全屏模式" + +msgid "Download this page" +msgstr "下載此頁面" + +msgid "Download source file" +msgstr "下載源文件" + +msgid "Launch" +msgstr "發射" + +msgid "Edit this page" +msgstr "編輯這個頁面" + +msgid "Toggle navigation" +msgstr "切換導航" + +msgid "Theme by the" +msgstr "主題由" + +msgid "Source repository" +msgstr "源庫" + +msgid "Last updated on" +msgstr "上次更新時間:" + +msgid "By the" +msgstr "由" + +msgid "Sphinx Book Theme" +msgstr "獅身人面像書主題" + +msgid "Open an issue" +msgstr "打開一個問題" + +msgid "next page" +msgstr "下一頁" + +msgid "Copyright" +msgstr "版權" + +msgid "Search this book..." +msgstr "搜索這本書..." + +msgid "Print to PDF" +msgstr "列印成PDF" + +msgid "By" +msgstr "通過" + +msgid "previous page" +msgstr "上一頁" + +msgid "Search the docs ..." +msgstr "搜索文檔..." + +msgid "Download notebook file" +msgstr "下載筆記本文件" + +msgid "suggest edit" +msgstr "建議編輯" diff --git a/docs/_static/mystnb.css b/docs/_static/mystnb.css index b44e2ab..e0ca0e1 100644 --- a/docs/_static/mystnb.css +++ b/docs/_static/mystnb.css @@ -181,3 +181,1542 @@ div.highlight .-Color[class*=-BGCyan] { div.highlight .-Color[class*=-BGWhite] { background-color: #C5C1B4 } + +/* Font colors for 8-bit ANSI */ + +div.highlight .-Color[class*=-C0] { + color: #000000 +} +div.highlight .-Color[class*=-BGC0] { + background-color: #000000 +} +div.highlight .-Color[class*=-C1] { + color: #800000 +} +div.highlight .-Color[class*=-BGC1] { + background-color: #800000 +} +div.highlight .-Color[class*=-C2] { + color: #008000 +} +div.highlight .-Color[class*=-BGC2] { + background-color: #008000 +} +div.highlight .-Color[class*=-C3] { + color: #808000 +} +div.highlight .-Color[class*=-BGC3] { + background-color: #808000 +} +div.highlight .-Color[class*=-C4] { + color: #000080 +} +div.highlight .-Color[class*=-BGC4] { + background-color: #000080 +} +div.highlight .-Color[class*=-C5] { + color: #800080 +} +div.highlight .-Color[class*=-BGC5] { + background-color: #800080 +} +div.highlight .-Color[class*=-C6] { + color: #008080 +} +div.highlight .-Color[class*=-BGC6] { + background-color: #008080 +} +div.highlight .-Color[class*=-C7] { + color: #C0C0C0 +} +div.highlight .-Color[class*=-BGC7] { + background-color: #C0C0C0 +} +div.highlight .-Color[class*=-C8] { + color: #808080 +} +div.highlight .-Color[class*=-BGC8] { + background-color: #808080 +} +div.highlight .-Color[class*=-C9] { + color: #FF0000 +} +div.highlight .-Color[class*=-BGC9] { + background-color: #FF0000 +} +div.highlight .-Color[class*=-C10] { + color: #00FF00 +} +div.highlight .-Color[class*=-BGC10] { + background-color: #00FF00 +} +div.highlight .-Color[class*=-C11] { + color: #FFFF00 +} +div.highlight .-Color[class*=-BGC11] { + background-color: #FFFF00 +} +div.highlight .-Color[class*=-C12] { + color: #0000FF +} +div.highlight .-Color[class*=-BGC12] { + background-color: #0000FF +} +div.highlight .-Color[class*=-C13] { + color: #FF00FF +} +div.highlight .-Color[class*=-BGC13] { + background-color: #FF00FF +} +div.highlight .-Color[class*=-C14] { + color: #00FFFF +} +div.highlight .-Color[class*=-BGC14] { + background-color: #00FFFF +} +div.highlight .-Color[class*=-C15] { + color: #FFFFFF +} +div.highlight .-Color[class*=-BGC15] { + background-color: #FFFFFF +} +div.highlight .-Color[class*=-C16] { + color: #000000 +} +div.highlight .-Color[class*=-BGC16] { + background-color: #000000 +} +div.highlight .-Color[class*=-C17] { + color: #00005F +} +div.highlight .-Color[class*=-BGC17] { + background-color: #00005F +} +div.highlight .-Color[class*=-C18] { + color: #000087 +} +div.highlight .-Color[class*=-BGC18] { + background-color: #000087 +} +div.highlight .-Color[class*=-C19] { + color: #0000AF +} +div.highlight .-Color[class*=-BGC19] { + background-color: #0000AF +} +div.highlight .-Color[class*=-C20] { + color: #0000D7 +} +div.highlight .-Color[class*=-BGC20] { + background-color: #0000D7 +} +div.highlight .-Color[class*=-C21] { + color: #0000FF +} +div.highlight .-Color[class*=-BGC21] { + background-color: #0000FF +} +div.highlight .-Color[class*=-C22] { + color: #005F00 +} +div.highlight .-Color[class*=-BGC22] { + background-color: #005F00 +} +div.highlight .-Color[class*=-C23] { + color: #005F5F +} +div.highlight .-Color[class*=-BGC23] { + background-color: #005F5F +} +div.highlight .-Color[class*=-C24] { + color: #005F87 +} +div.highlight .-Color[class*=-BGC24] { + background-color: #005F87 +} +div.highlight .-Color[class*=-C25] { + color: #005FAF +} +div.highlight .-Color[class*=-BGC25] { + background-color: #005FAF +} +div.highlight .-Color[class*=-C26] { + color: #005FD7 +} +div.highlight .-Color[class*=-BGC26] { + background-color: #005FD7 +} +div.highlight .-Color[class*=-C27] { + color: #005FFF +} +div.highlight .-Color[class*=-BGC27] { + background-color: #005FFF +} +div.highlight .-Color[class*=-C28] { + color: #008700 +} +div.highlight .-Color[class*=-BGC28] { + background-color: #008700 +} +div.highlight .-Color[class*=-C29] { + color: #00875F +} +div.highlight .-Color[class*=-BGC29] { + background-color: #00875F +} +div.highlight .-Color[class*=-C30] { + color: #008787 +} +div.highlight .-Color[class*=-BGC30] { + background-color: #008787 +} +div.highlight .-Color[class*=-C31] { + color: #0087AF +} +div.highlight .-Color[class*=-BGC31] { + background-color: #0087AF +} +div.highlight .-Color[class*=-C32] { + color: #0087D7 +} +div.highlight .-Color[class*=-BGC32] { + background-color: #0087D7 +} +div.highlight .-Color[class*=-C33] { + color: #0087FF +} +div.highlight .-Color[class*=-BGC33] { + background-color: #0087FF +} +div.highlight .-Color[class*=-C34] { + color: #00AF00 +} +div.highlight .-Color[class*=-BGC34] { + background-color: #00AF00 +} +div.highlight .-Color[class*=-C35] { + color: #00AF5F +} +div.highlight .-Color[class*=-BGC35] { + background-color: #00AF5F +} +div.highlight .-Color[class*=-C36] { + color: #00AF87 +} +div.highlight .-Color[class*=-BGC36] { + background-color: #00AF87 +} +div.highlight .-Color[class*=-C37] { + color: #00AFAF +} +div.highlight .-Color[class*=-BGC37] { + background-color: #00AFAF +} +div.highlight .-Color[class*=-C38] { + color: #00AFD7 +} +div.highlight .-Color[class*=-BGC38] { + background-color: #00AFD7 +} +div.highlight .-Color[class*=-C39] { + color: #00AFFF +} +div.highlight .-Color[class*=-BGC39] { + background-color: #00AFFF +} +div.highlight .-Color[class*=-C40] { + color: #00D700 +} +div.highlight .-Color[class*=-BGC40] { + background-color: #00D700 +} +div.highlight .-Color[class*=-C41] { + color: #00D75F +} +div.highlight .-Color[class*=-BGC41] { + background-color: #00D75F +} +div.highlight .-Color[class*=-C42] { + color: #00D787 +} +div.highlight .-Color[class*=-BGC42] { + background-color: #00D787 +} +div.highlight .-Color[class*=-C43] { + color: #00D7AF +} +div.highlight .-Color[class*=-BGC43] { + background-color: #00D7AF +} +div.highlight .-Color[class*=-C44] { + color: #00D7D7 +} +div.highlight .-Color[class*=-BGC44] { + background-color: #00D7D7 +} +div.highlight .-Color[class*=-C45] { + color: #00D7FF +} +div.highlight .-Color[class*=-BGC45] { + background-color: #00D7FF +} +div.highlight .-Color[class*=-C46] { + color: #00FF00 +} +div.highlight .-Color[class*=-BGC46] { + background-color: #00FF00 +} +div.highlight .-Color[class*=-C47] { + color: #00FF5F +} +div.highlight .-Color[class*=-BGC47] { + background-color: #00FF5F +} +div.highlight .-Color[class*=-C48] { + color: #00FF87 +} +div.highlight .-Color[class*=-BGC48] { + background-color: #00FF87 +} +div.highlight .-Color[class*=-C49] { + color: #00FFAF +} +div.highlight .-Color[class*=-BGC49] { + background-color: #00FFAF +} +div.highlight .-Color[class*=-C50] { + color: #00FFD7 +} +div.highlight .-Color[class*=-BGC50] { + background-color: #00FFD7 +} +div.highlight .-Color[class*=-C51] { + color: #00FFFF +} +div.highlight .-Color[class*=-BGC51] { + background-color: #00FFFF +} +div.highlight .-Color[class*=-C52] { + color: #5F0000 +} +div.highlight .-Color[class*=-BGC52] { + background-color: #5F0000 +} +div.highlight .-Color[class*=-C53] { + color: #5F005F +} +div.highlight .-Color[class*=-BGC53] { + background-color: #5F005F +} +div.highlight .-Color[class*=-C54] { + color: #5F0087 +} +div.highlight .-Color[class*=-BGC54] { + background-color: #5F0087 +} +div.highlight .-Color[class*=-C55] { + color: #5F00AF +} +div.highlight .-Color[class*=-BGC55] { + background-color: #5F00AF +} +div.highlight .-Color[class*=-C56] { + color: #5F00D7 +} +div.highlight .-Color[class*=-BGC56] { + background-color: #5F00D7 +} +div.highlight .-Color[class*=-C57] { + color: #5F00FF +} +div.highlight .-Color[class*=-BGC57] { + background-color: #5F00FF +} +div.highlight .-Color[class*=-C58] { + color: #5F5F00 +} +div.highlight .-Color[class*=-BGC58] { + background-color: #5F5F00 +} +div.highlight .-Color[class*=-C59] { + color: #5F5F5F +} +div.highlight .-Color[class*=-BGC59] { + background-color: #5F5F5F +} +div.highlight .-Color[class*=-C60] { + color: #5F5F87 +} +div.highlight .-Color[class*=-BGC60] { + background-color: #5F5F87 +} +div.highlight .-Color[class*=-C61] { + color: #5F5FAF +} +div.highlight .-Color[class*=-BGC61] { + background-color: #5F5FAF +} +div.highlight .-Color[class*=-C62] { + color: #5F5FD7 +} +div.highlight .-Color[class*=-BGC62] { + background-color: #5F5FD7 +} +div.highlight .-Color[class*=-C63] { + color: #5F5FFF +} +div.highlight .-Color[class*=-BGC63] { + background-color: #5F5FFF +} +div.highlight .-Color[class*=-C64] { + color: #5F8700 +} +div.highlight .-Color[class*=-BGC64] { + background-color: #5F8700 +} +div.highlight .-Color[class*=-C65] { + color: #5F875F +} +div.highlight .-Color[class*=-BGC65] { + background-color: #5F875F +} +div.highlight .-Color[class*=-C66] { + color: #5F8787 +} +div.highlight .-Color[class*=-BGC66] { + background-color: #5F8787 +} +div.highlight .-Color[class*=-C67] { + color: #5F87AF +} +div.highlight .-Color[class*=-BGC67] { + background-color: #5F87AF +} +div.highlight .-Color[class*=-C68] { + color: #5F87D7 +} +div.highlight .-Color[class*=-BGC68] { + background-color: #5F87D7 +} +div.highlight .-Color[class*=-C69] { + color: #5F87FF +} +div.highlight .-Color[class*=-BGC69] { + background-color: #5F87FF +} +div.highlight .-Color[class*=-C70] { + color: #5FAF00 +} +div.highlight .-Color[class*=-BGC70] { + background-color: #5FAF00 +} +div.highlight .-Color[class*=-C71] { + color: #5FAF5F +} +div.highlight .-Color[class*=-BGC71] { + background-color: #5FAF5F +} +div.highlight .-Color[class*=-C72] { + color: #5FAF87 +} +div.highlight .-Color[class*=-BGC72] { + background-color: #5FAF87 +} +div.highlight .-Color[class*=-C73] { + color: #5FAFAF +} +div.highlight .-Color[class*=-BGC73] { + background-color: #5FAFAF +} +div.highlight .-Color[class*=-C74] { + color: #5FAFD7 +} +div.highlight .-Color[class*=-BGC74] { + background-color: #5FAFD7 +} +div.highlight .-Color[class*=-C75] { + color: #5FAFFF +} +div.highlight .-Color[class*=-BGC75] { + background-color: #5FAFFF +} +div.highlight .-Color[class*=-C76] { + color: #5FD700 +} +div.highlight .-Color[class*=-BGC76] { + background-color: #5FD700 +} +div.highlight .-Color[class*=-C77] { + color: #5FD75F +} +div.highlight .-Color[class*=-BGC77] { + background-color: #5FD75F +} +div.highlight .-Color[class*=-C78] { + color: #5FD787 +} +div.highlight .-Color[class*=-BGC78] { + background-color: #5FD787 +} +div.highlight .-Color[class*=-C79] { + color: #5FD7AF +} +div.highlight .-Color[class*=-BGC79] { + background-color: #5FD7AF +} +div.highlight .-Color[class*=-C80] { + color: #5FD7D7 +} +div.highlight .-Color[class*=-BGC80] { + background-color: #5FD7D7 +} +div.highlight .-Color[class*=-C81] { + color: #5FD7FF +} +div.highlight .-Color[class*=-BGC81] { + background-color: #5FD7FF +} +div.highlight .-Color[class*=-C82] { + color: #5FFF00 +} +div.highlight .-Color[class*=-BGC82] { + background-color: #5FFF00 +} +div.highlight .-Color[class*=-C83] { + color: #5FFF5F +} +div.highlight .-Color[class*=-BGC83] { + background-color: #5FFF5F +} +div.highlight .-Color[class*=-C84] { + color: #5FFF87 +} +div.highlight .-Color[class*=-BGC84] { + background-color: #5FFF87 +} +div.highlight .-Color[class*=-C85] { + color: #5FFFAF +} +div.highlight .-Color[class*=-BGC85] { + background-color: #5FFFAF +} +div.highlight .-Color[class*=-C86] { + color: #5FFFD7 +} +div.highlight .-Color[class*=-BGC86] { + background-color: #5FFFD7 +} +div.highlight .-Color[class*=-C87] { + color: #5FFFFF +} +div.highlight .-Color[class*=-BGC87] { + background-color: #5FFFFF +} +div.highlight .-Color[class*=-C88] { + color: #870000 +} +div.highlight .-Color[class*=-BGC88] { + background-color: #870000 +} +div.highlight .-Color[class*=-C89] { + color: #87005F +} +div.highlight .-Color[class*=-BGC89] { + background-color: #87005F +} +div.highlight .-Color[class*=-C90] { + color: #870087 +} +div.highlight .-Color[class*=-BGC90] { + background-color: #870087 +} +div.highlight .-Color[class*=-C91] { + color: #8700AF +} +div.highlight .-Color[class*=-BGC91] { + background-color: #8700AF +} +div.highlight .-Color[class*=-C92] { + color: #8700D7 +} +div.highlight .-Color[class*=-BGC92] { + background-color: #8700D7 +} +div.highlight .-Color[class*=-C93] { + color: #8700FF +} +div.highlight .-Color[class*=-BGC93] { + background-color: #8700FF +} +div.highlight .-Color[class*=-C94] { + color: #875F00 +} +div.highlight .-Color[class*=-BGC94] { + background-color: #875F00 +} +div.highlight .-Color[class*=-C95] { + color: #875F5F +} +div.highlight .-Color[class*=-BGC95] { + background-color: #875F5F +} +div.highlight .-Color[class*=-C96] { + color: #875F87 +} +div.highlight .-Color[class*=-BGC96] { + background-color: #875F87 +} +div.highlight .-Color[class*=-C97] { + color: #875FAF +} +div.highlight .-Color[class*=-BGC97] { + background-color: #875FAF +} +div.highlight .-Color[class*=-C98] { + color: #875FD7 +} +div.highlight .-Color[class*=-BGC98] { + background-color: #875FD7 +} +div.highlight .-Color[class*=-C99] { + color: #875FFF +} +div.highlight .-Color[class*=-BGC99] { + background-color: #875FFF +} +div.highlight .-Color[class*=-C100] { + color: #878700 +} +div.highlight .-Color[class*=-BGC100] { + background-color: #878700 +} +div.highlight .-Color[class*=-C101] { + color: #87875F +} +div.highlight .-Color[class*=-BGC101] { + background-color: #87875F +} +div.highlight .-Color[class*=-C102] { + color: #878787 +} +div.highlight .-Color[class*=-BGC102] { + background-color: #878787 +} +div.highlight .-Color[class*=-C103] { + color: #8787AF +} +div.highlight .-Color[class*=-BGC103] { + background-color: #8787AF +} +div.highlight .-Color[class*=-C104] { + color: #8787D7 +} +div.highlight .-Color[class*=-BGC104] { + background-color: #8787D7 +} +div.highlight .-Color[class*=-C105] { + color: #8787FF +} +div.highlight .-Color[class*=-BGC105] { + background-color: #8787FF +} +div.highlight .-Color[class*=-C106] { + color: #87AF00 +} +div.highlight .-Color[class*=-BGC106] { + background-color: #87AF00 +} +div.highlight .-Color[class*=-C107] { + color: #87AF5F +} +div.highlight .-Color[class*=-BGC107] { + background-color: #87AF5F +} +div.highlight .-Color[class*=-C108] { + color: #87AF87 +} +div.highlight .-Color[class*=-BGC108] { + background-color: #87AF87 +} +div.highlight .-Color[class*=-C109] { + color: #87AFAF +} +div.highlight .-Color[class*=-BGC109] { + background-color: #87AFAF +} +div.highlight .-Color[class*=-C110] { + color: #87AFD7 +} +div.highlight .-Color[class*=-BGC110] { + background-color: #87AFD7 +} +div.highlight .-Color[class*=-C111] { + color: #87AFFF +} +div.highlight .-Color[class*=-BGC111] { + background-color: #87AFFF +} +div.highlight .-Color[class*=-C112] { + color: #87D700 +} +div.highlight .-Color[class*=-BGC112] { + background-color: #87D700 +} +div.highlight .-Color[class*=-C113] { + color: #87D75F +} +div.highlight .-Color[class*=-BGC113] { + background-color: #87D75F +} +div.highlight .-Color[class*=-C114] { + color: #87D787 +} +div.highlight .-Color[class*=-BGC114] { + background-color: #87D787 +} +div.highlight .-Color[class*=-C115] { + color: #87D7AF +} +div.highlight .-Color[class*=-BGC115] { + background-color: #87D7AF +} +div.highlight .-Color[class*=-C116] { + color: #87D7D7 +} +div.highlight .-Color[class*=-BGC116] { + background-color: #87D7D7 +} +div.highlight .-Color[class*=-C117] { + color: #87D7FF +} +div.highlight .-Color[class*=-BGC117] { + background-color: #87D7FF +} +div.highlight .-Color[class*=-C118] { + color: #87FF00 +} +div.highlight .-Color[class*=-BGC118] { + background-color: #87FF00 +} +div.highlight .-Color[class*=-C119] { + color: #87FF5F +} +div.highlight .-Color[class*=-BGC119] { + background-color: #87FF5F +} +div.highlight .-Color[class*=-C120] { + color: #87FF87 +} +div.highlight .-Color[class*=-BGC120] { + background-color: #87FF87 +} +div.highlight .-Color[class*=-C121] { + color: #87FFAF +} +div.highlight .-Color[class*=-BGC121] { + background-color: #87FFAF +} +div.highlight .-Color[class*=-C122] { + color: #87FFD7 +} +div.highlight .-Color[class*=-BGC122] { + background-color: #87FFD7 +} +div.highlight .-Color[class*=-C123] { + color: #87FFFF +} +div.highlight .-Color[class*=-BGC123] { + background-color: #87FFFF +} +div.highlight .-Color[class*=-C124] { + color: #AF0000 +} +div.highlight .-Color[class*=-BGC124] { + background-color: #AF0000 +} +div.highlight .-Color[class*=-C125] { + color: #AF005F +} +div.highlight .-Color[class*=-BGC125] { + background-color: #AF005F +} +div.highlight .-Color[class*=-C126] { + color: #AF0087 +} +div.highlight .-Color[class*=-BGC126] { + background-color: #AF0087 +} +div.highlight .-Color[class*=-C127] { + color: #AF00AF +} +div.highlight .-Color[class*=-BGC127] { + background-color: #AF00AF +} +div.highlight .-Color[class*=-C128] { + color: #AF00D7 +} +div.highlight .-Color[class*=-BGC128] { + background-color: #AF00D7 +} +div.highlight .-Color[class*=-C129] { + color: #AF00FF +} +div.highlight .-Color[class*=-BGC129] { + background-color: #AF00FF +} +div.highlight .-Color[class*=-C130] { + color: #AF5F00 +} +div.highlight .-Color[class*=-BGC130] { + background-color: #AF5F00 +} +div.highlight .-Color[class*=-C131] { + color: #AF5F5F +} +div.highlight .-Color[class*=-BGC131] { + background-color: #AF5F5F +} +div.highlight .-Color[class*=-C132] { + color: #AF5F87 +} +div.highlight .-Color[class*=-BGC132] { + background-color: #AF5F87 +} +div.highlight .-Color[class*=-C133] { + color: #AF5FAF +} +div.highlight .-Color[class*=-BGC133] { + background-color: #AF5FAF +} +div.highlight .-Color[class*=-C134] { + color: #AF5FD7 +} +div.highlight .-Color[class*=-BGC134] { + background-color: #AF5FD7 +} +div.highlight .-Color[class*=-C135] { + color: #AF5FFF +} +div.highlight .-Color[class*=-BGC135] { + background-color: #AF5FFF +} +div.highlight .-Color[class*=-C136] { + color: #AF8700 +} +div.highlight .-Color[class*=-BGC136] { + background-color: #AF8700 +} +div.highlight .-Color[class*=-C137] { + color: #AF875F +} +div.highlight .-Color[class*=-BGC137] { + background-color: #AF875F +} +div.highlight .-Color[class*=-C138] { + color: #AF8787 +} +div.highlight .-Color[class*=-BGC138] { + background-color: #AF8787 +} +div.highlight .-Color[class*=-C139] { + color: #AF87AF +} +div.highlight .-Color[class*=-BGC139] { + background-color: #AF87AF +} +div.highlight .-Color[class*=-C140] { + color: #AF87D7 +} +div.highlight .-Color[class*=-BGC140] { + background-color: #AF87D7 +} +div.highlight .-Color[class*=-C141] { + color: #AF87FF +} +div.highlight .-Color[class*=-BGC141] { + background-color: #AF87FF +} +div.highlight .-Color[class*=-C142] { + color: #AFAF00 +} +div.highlight .-Color[class*=-BGC142] { + background-color: #AFAF00 +} +div.highlight .-Color[class*=-C143] { + color: #AFAF5F +} +div.highlight .-Color[class*=-BGC143] { + background-color: #AFAF5F +} +div.highlight .-Color[class*=-C144] { + color: #AFAF87 +} +div.highlight .-Color[class*=-BGC144] { + background-color: #AFAF87 +} +div.highlight .-Color[class*=-C145] { + color: #AFAFAF +} +div.highlight .-Color[class*=-BGC145] { + background-color: #AFAFAF +} +div.highlight .-Color[class*=-C146] { + color: #AFAFD7 +} +div.highlight .-Color[class*=-BGC146] { + background-color: #AFAFD7 +} +div.highlight .-Color[class*=-C147] { + color: #AFAFFF +} +div.highlight .-Color[class*=-BGC147] { + background-color: #AFAFFF +} +div.highlight .-Color[class*=-C148] { + color: #AFD700 +} +div.highlight .-Color[class*=-BGC148] { + background-color: #AFD700 +} +div.highlight .-Color[class*=-C149] { + color: #AFD75F +} +div.highlight .-Color[class*=-BGC149] { + background-color: #AFD75F +} +div.highlight .-Color[class*=-C150] { + color: #AFD787 +} +div.highlight .-Color[class*=-BGC150] { + background-color: #AFD787 +} +div.highlight .-Color[class*=-C151] { + color: #AFD7AF +} +div.highlight .-Color[class*=-BGC151] { + background-color: #AFD7AF +} +div.highlight .-Color[class*=-C152] { + color: #AFD7D7 +} +div.highlight .-Color[class*=-BGC152] { + background-color: #AFD7D7 +} +div.highlight .-Color[class*=-C153] { + color: #AFD7FF +} +div.highlight .-Color[class*=-BGC153] { + background-color: #AFD7FF +} +div.highlight .-Color[class*=-C154] { + color: #AFFF00 +} +div.highlight .-Color[class*=-BGC154] { + background-color: #AFFF00 +} +div.highlight .-Color[class*=-C155] { + color: #AFFF5F +} +div.highlight .-Color[class*=-BGC155] { + background-color: #AFFF5F +} +div.highlight .-Color[class*=-C156] { + color: #AFFF87 +} +div.highlight .-Color[class*=-BGC156] { + background-color: #AFFF87 +} +div.highlight .-Color[class*=-C157] { + color: #AFFFAF +} +div.highlight .-Color[class*=-BGC157] { + background-color: #AFFFAF +} +div.highlight .-Color[class*=-C158] { + color: #AFFFD7 +} +div.highlight .-Color[class*=-BGC158] { + background-color: #AFFFD7 +} +div.highlight .-Color[class*=-C159] { + color: #AFFFFF +} +div.highlight .-Color[class*=-BGC159] { + background-color: #AFFFFF +} +div.highlight .-Color[class*=-C160] { + color: #D70000 +} +div.highlight .-Color[class*=-BGC160] { + background-color: #D70000 +} +div.highlight .-Color[class*=-C161] { + color: #D7005F +} +div.highlight .-Color[class*=-BGC161] { + background-color: #D7005F +} +div.highlight .-Color[class*=-C162] { + color: #D70087 +} +div.highlight .-Color[class*=-BGC162] { + background-color: #D70087 +} +div.highlight .-Color[class*=-C163] { + color: #D700AF +} +div.highlight .-Color[class*=-BGC163] { + background-color: #D700AF +} +div.highlight .-Color[class*=-C164] { + color: #D700D7 +} +div.highlight .-Color[class*=-BGC164] { + background-color: #D700D7 +} +div.highlight .-Color[class*=-C165] { + color: #D700FF +} +div.highlight .-Color[class*=-BGC165] { + background-color: #D700FF +} +div.highlight .-Color[class*=-C166] { + color: #D75F00 +} +div.highlight .-Color[class*=-BGC166] { + background-color: #D75F00 +} +div.highlight .-Color[class*=-C167] { + color: #D75F5F +} +div.highlight .-Color[class*=-BGC167] { + background-color: #D75F5F +} +div.highlight .-Color[class*=-C168] { + color: #D75F87 +} +div.highlight .-Color[class*=-BGC168] { + background-color: #D75F87 +} +div.highlight .-Color[class*=-C169] { + color: #D75FAF +} +div.highlight .-Color[class*=-BGC169] { + background-color: #D75FAF +} +div.highlight .-Color[class*=-C170] { + color: #D75FD7 +} +div.highlight .-Color[class*=-BGC170] { + background-color: #D75FD7 +} +div.highlight .-Color[class*=-C171] { + color: #D75FFF +} +div.highlight .-Color[class*=-BGC171] { + background-color: #D75FFF +} +div.highlight .-Color[class*=-C172] { + color: #D78700 +} +div.highlight .-Color[class*=-BGC172] { + background-color: #D78700 +} +div.highlight .-Color[class*=-C173] { + color: #D7875F +} +div.highlight .-Color[class*=-BGC173] { + background-color: #D7875F +} +div.highlight .-Color[class*=-C174] { + color: #D78787 +} +div.highlight .-Color[class*=-BGC174] { + background-color: #D78787 +} +div.highlight .-Color[class*=-C175] { + color: #D787AF +} +div.highlight .-Color[class*=-BGC175] { + background-color: #D787AF +} +div.highlight .-Color[class*=-C176] { + color: #D787D7 +} +div.highlight .-Color[class*=-BGC176] { + background-color: #D787D7 +} +div.highlight .-Color[class*=-C177] { + color: #D787FF +} +div.highlight .-Color[class*=-BGC177] { + background-color: #D787FF +} +div.highlight .-Color[class*=-C178] { + color: #D7AF00 +} +div.highlight .-Color[class*=-BGC178] { + background-color: #D7AF00 +} +div.highlight .-Color[class*=-C179] { + color: #D7AF5F +} +div.highlight .-Color[class*=-BGC179] { + background-color: #D7AF5F +} +div.highlight .-Color[class*=-C180] { + color: #D7AF87 +} +div.highlight .-Color[class*=-BGC180] { + background-color: #D7AF87 +} +div.highlight .-Color[class*=-C181] { + color: #D7AFAF +} +div.highlight .-Color[class*=-BGC181] { + background-color: #D7AFAF +} +div.highlight .-Color[class*=-C182] { + color: #D7AFD7 +} +div.highlight .-Color[class*=-BGC182] { + background-color: #D7AFD7 +} +div.highlight .-Color[class*=-C183] { + color: #D7AFFF +} +div.highlight .-Color[class*=-BGC183] { + background-color: #D7AFFF +} +div.highlight .-Color[class*=-C184] { + color: #D7D700 +} +div.highlight .-Color[class*=-BGC184] { + background-color: #D7D700 +} +div.highlight .-Color[class*=-C185] { + color: #D7D75F +} +div.highlight .-Color[class*=-BGC185] { + background-color: #D7D75F +} +div.highlight .-Color[class*=-C186] { + color: #D7D787 +} +div.highlight .-Color[class*=-BGC186] { + background-color: #D7D787 +} +div.highlight .-Color[class*=-C187] { + color: #D7D7AF +} +div.highlight .-Color[class*=-BGC187] { + background-color: #D7D7AF +} +div.highlight .-Color[class*=-C188] { + color: #D7D7D7 +} +div.highlight .-Color[class*=-BGC188] { + background-color: #D7D7D7 +} +div.highlight .-Color[class*=-C189] { + color: #D7D7FF +} +div.highlight .-Color[class*=-BGC189] { + background-color: #D7D7FF +} +div.highlight .-Color[class*=-C190] { + color: #D7FF00 +} +div.highlight .-Color[class*=-BGC190] { + background-color: #D7FF00 +} +div.highlight .-Color[class*=-C191] { + color: #D7FF5F +} +div.highlight .-Color[class*=-BGC191] { + background-color: #D7FF5F +} +div.highlight .-Color[class*=-C192] { + color: #D7FF87 +} +div.highlight .-Color[class*=-BGC192] { + background-color: #D7FF87 +} +div.highlight .-Color[class*=-C193] { + color: #D7FFAF +} +div.highlight .-Color[class*=-BGC193] { + background-color: #D7FFAF +} +div.highlight .-Color[class*=-C194] { + color: #D7FFD7 +} +div.highlight .-Color[class*=-BGC194] { + background-color: #D7FFD7 +} +div.highlight .-Color[class*=-C195] { + color: #D7FFFF +} +div.highlight .-Color[class*=-BGC195] { + background-color: #D7FFFF +} +div.highlight .-Color[class*=-C196] { + color: #FF0000 +} +div.highlight .-Color[class*=-BGC196] { + background-color: #FF0000 +} +div.highlight .-Color[class*=-C197] { + color: #FF005F +} +div.highlight .-Color[class*=-BGC197] { + background-color: #FF005F +} +div.highlight .-Color[class*=-C198] { + color: #FF0087 +} +div.highlight .-Color[class*=-BGC198] { + background-color: #FF0087 +} +div.highlight .-Color[class*=-C199] { + color: #FF00AF +} +div.highlight .-Color[class*=-BGC199] { + background-color: #FF00AF +} +div.highlight .-Color[class*=-C200] { + color: #FF00D7 +} +div.highlight .-Color[class*=-BGC200] { + background-color: #FF00D7 +} +div.highlight .-Color[class*=-C201] { + color: #FF00FF +} +div.highlight .-Color[class*=-BGC201] { + background-color: #FF00FF +} +div.highlight .-Color[class*=-C202] { + color: #FF5F00 +} +div.highlight .-Color[class*=-BGC202] { + background-color: #FF5F00 +} +div.highlight .-Color[class*=-C203] { + color: #FF5F5F +} +div.highlight .-Color[class*=-BGC203] { + background-color: #FF5F5F +} +div.highlight .-Color[class*=-C204] { + color: #FF5F87 +} +div.highlight .-Color[class*=-BGC204] { + background-color: #FF5F87 +} +div.highlight .-Color[class*=-C205] { + color: #FF5FAF +} +div.highlight .-Color[class*=-BGC205] { + background-color: #FF5FAF +} +div.highlight .-Color[class*=-C206] { + color: #FF5FD7 +} +div.highlight .-Color[class*=-BGC206] { + background-color: #FF5FD7 +} +div.highlight .-Color[class*=-C207] { + color: #FF5FFF +} +div.highlight .-Color[class*=-BGC207] { + background-color: #FF5FFF +} +div.highlight .-Color[class*=-C208] { + color: #FF8700 +} +div.highlight .-Color[class*=-BGC208] { + background-color: #FF8700 +} +div.highlight .-Color[class*=-C209] { + color: #FF875F +} +div.highlight .-Color[class*=-BGC209] { + background-color: #FF875F +} +div.highlight .-Color[class*=-C210] { + color: #FF8787 +} +div.highlight .-Color[class*=-BGC210] { + background-color: #FF8787 +} +div.highlight .-Color[class*=-C211] { + color: #FF87AF +} +div.highlight .-Color[class*=-BGC211] { + background-color: #FF87AF +} +div.highlight .-Color[class*=-C212] { + color: #FF87D7 +} +div.highlight .-Color[class*=-BGC212] { + background-color: #FF87D7 +} +div.highlight .-Color[class*=-C213] { + color: #FF87FF +} +div.highlight .-Color[class*=-BGC213] { + background-color: #FF87FF +} +div.highlight .-Color[class*=-C214] { + color: #FFAF00 +} +div.highlight .-Color[class*=-BGC214] { + background-color: #FFAF00 +} +div.highlight .-Color[class*=-C215] { + color: #FFAF5F +} +div.highlight .-Color[class*=-BGC215] { + background-color: #FFAF5F +} +div.highlight .-Color[class*=-C216] { + color: #FFAF87 +} +div.highlight .-Color[class*=-BGC216] { + background-color: #FFAF87 +} +div.highlight .-Color[class*=-C217] { + color: #FFAFAF +} +div.highlight .-Color[class*=-BGC217] { + background-color: #FFAFAF +} +div.highlight .-Color[class*=-C218] { + color: #FFAFD7 +} +div.highlight .-Color[class*=-BGC218] { + background-color: #FFAFD7 +} +div.highlight .-Color[class*=-C219] { + color: #FFAFFF +} +div.highlight .-Color[class*=-BGC219] { + background-color: #FFAFFF +} +div.highlight .-Color[class*=-C220] { + color: #FFD700 +} +div.highlight .-Color[class*=-BGC220] { + background-color: #FFD700 +} +div.highlight .-Color[class*=-C221] { + color: #FFD75F +} +div.highlight .-Color[class*=-BGC221] { + background-color: #FFD75F +} +div.highlight .-Color[class*=-C222] { + color: #FFD787 +} +div.highlight .-Color[class*=-BGC222] { + background-color: #FFD787 +} +div.highlight .-Color[class*=-C223] { + color: #FFD7AF +} +div.highlight .-Color[class*=-BGC223] { + background-color: #FFD7AF +} +div.highlight .-Color[class*=-C224] { + color: #FFD7D7 +} +div.highlight .-Color[class*=-BGC224] { + background-color: #FFD7D7 +} +div.highlight .-Color[class*=-C225] { + color: #FFD7FF +} +div.highlight .-Color[class*=-BGC225] { + background-color: #FFD7FF +} +div.highlight .-Color[class*=-C226] { + color: #FFFF00 +} +div.highlight .-Color[class*=-BGC226] { + background-color: #FFFF00 +} +div.highlight .-Color[class*=-C227] { + color: #FFFF5F +} +div.highlight .-Color[class*=-BGC227] { + background-color: #FFFF5F +} +div.highlight .-Color[class*=-C228] { + color: #FFFF87 +} +div.highlight .-Color[class*=-BGC228] { + background-color: #FFFF87 +} +div.highlight .-Color[class*=-C229] { + color: #FFFFAF +} +div.highlight .-Color[class*=-BGC229] { + background-color: #FFFFAF +} +div.highlight .-Color[class*=-C230] { + color: #FFFFD7 +} +div.highlight .-Color[class*=-BGC230] { + background-color: #FFFFD7 +} +div.highlight .-Color[class*=-C231] { + color: #FFFFFF +} +div.highlight .-Color[class*=-BGC231] { + background-color: #FFFFFF +} +div.highlight .-Color[class*=-C232] { + color: #080808 +} +div.highlight .-Color[class*=-BGC232] { + background-color: #080808 +} +div.highlight .-Color[class*=-C233] { + color: #121212 +} +div.highlight .-Color[class*=-BGC233] { + background-color: #121212 +} +div.highlight .-Color[class*=-C234] { + color: #1C1C1C +} +div.highlight .-Color[class*=-BGC234] { + background-color: #1C1C1C +} +div.highlight .-Color[class*=-C235] { + color: #262626 +} +div.highlight .-Color[class*=-BGC235] { + background-color: #262626 +} +div.highlight .-Color[class*=-C236] { + color: #303030 +} +div.highlight .-Color[class*=-BGC236] { + background-color: #303030 +} +div.highlight .-Color[class*=-C237] { + color: #3A3A3A +} +div.highlight .-Color[class*=-BGC237] { + background-color: #3A3A3A +} +div.highlight .-Color[class*=-C238] { + color: #444444 +} +div.highlight .-Color[class*=-BGC238] { + background-color: #444444 +} +div.highlight .-Color[class*=-C239] { + color: #4E4E4E +} +div.highlight .-Color[class*=-BGC239] { + background-color: #4E4E4E +} +div.highlight .-Color[class*=-C240] { + color: #585858 +} +div.highlight .-Color[class*=-BGC240] { + background-color: #585858 +} +div.highlight .-Color[class*=-C241] { + color: #626262 +} +div.highlight .-Color[class*=-BGC241] { + background-color: #626262 +} +div.highlight .-Color[class*=-C242] { + color: #6C6C6C +} +div.highlight .-Color[class*=-BGC242] { + background-color: #6C6C6C +} +div.highlight .-Color[class*=-C243] { + color: #767676 +} +div.highlight .-Color[class*=-BGC243] { + background-color: #767676 +} +div.highlight .-Color[class*=-C244] { + color: #808080 +} +div.highlight .-Color[class*=-BGC244] { + background-color: #808080 +} +div.highlight .-Color[class*=-C245] { + color: #8A8A8A +} +div.highlight .-Color[class*=-BGC245] { + background-color: #8A8A8A +} +div.highlight .-Color[class*=-C246] { + color: #949494 +} +div.highlight .-Color[class*=-BGC246] { + background-color: #949494 +} +div.highlight .-Color[class*=-C247] { + color: #9E9E9E +} +div.highlight .-Color[class*=-BGC247] { + background-color: #9E9E9E +} +div.highlight .-Color[class*=-C248] { + color: #A8A8A8 +} +div.highlight .-Color[class*=-BGC248] { + background-color: #A8A8A8 +} +div.highlight .-Color[class*=-C249] { + color: #B2B2B2 +} +div.highlight .-Color[class*=-BGC249] { + background-color: #B2B2B2 +} +div.highlight .-Color[class*=-C250] { + color: #BCBCBC +} +div.highlight .-Color[class*=-BGC250] { + background-color: #BCBCBC +} +div.highlight .-Color[class*=-C251] { + color: #C6C6C6 +} +div.highlight .-Color[class*=-BGC251] { + background-color: #C6C6C6 +} +div.highlight .-Color[class*=-C252] { + color: #D0D0D0 +} +div.highlight .-Color[class*=-BGC252] { + background-color: #D0D0D0 +} +div.highlight .-Color[class*=-C253] { + color: #DADADA +} +div.highlight .-Color[class*=-BGC253] { + background-color: #DADADA +} +div.highlight .-Color[class*=-C254] { + color: #E4E4E4 +} +div.highlight .-Color[class*=-BGC254] { + background-color: #E4E4E4 +} +div.highlight .-Color[class*=-C255] { + color: #EEEEEE +} +div.highlight .-Color[class*=-BGC255] { + background-color: #EEEEEE +} diff --git a/docs/_static/sbt-webpack-macros.html b/docs/_static/sbt-webpack-macros.html new file mode 100644 index 0000000..6cbf559 --- /dev/null +++ b/docs/_static/sbt-webpack-macros.html @@ -0,0 +1,11 @@ + +{% macro head_pre_bootstrap() %} + +{% endmacro %} + +{% macro body_post() %} + +{% endmacro %} diff --git a/docs/_static/scripts/pydata-sphinx-theme.js b/docs/_static/scripts/pydata-sphinx-theme.js new file mode 100644 index 0000000..0e00c4c --- /dev/null +++ b/docs/_static/scripts/pydata-sphinx-theme.js @@ -0,0 +1,32 @@ +!function(t){var e={};function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(i,o,function(e){return t[e]}.bind(null,o));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=2)}([function(t,e){t.exports=jQuery},function(t,e,n){"use strict";n.r(e),function(t){ +/**! + * @fileOverview Kickass library to create and place poppers near their reference elements. + * @version 1.16.1 + * @license + * Copyright (c) 2016 Federico Zivolo and contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +var n="undefined"!=typeof window&&"undefined"!=typeof document&&"undefined"!=typeof navigator,i=function(){for(var t=["Edge","Trident","Firefox"],e=0;e=0)return 1;return 0}();var o=n&&window.Promise?function(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then((function(){e=!1,t()})))}}:function(t){var e=!1;return function(){e||(e=!0,setTimeout((function(){e=!1,t()}),i))}};function r(t){return t&&"[object Function]"==={}.toString.call(t)}function a(t,e){if(1!==t.nodeType)return[];var n=t.ownerDocument.defaultView.getComputedStyle(t,null);return e?n[e]:n}function s(t){return"HTML"===t.nodeName?t:t.parentNode||t.host}function l(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=a(t),n=e.overflow,i=e.overflowX,o=e.overflowY;return/(auto|scroll|overlay)/.test(n+o+i)?t:l(s(t))}function u(t){return t&&t.referenceNode?t.referenceNode:t}var f=n&&!(!window.MSInputMethodContext||!document.documentMode),d=n&&/MSIE 10/.test(navigator.userAgent);function c(t){return 11===t?f:10===t?d:f||d}function h(t){if(!t)return document.documentElement;for(var e=c(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===a(n,"position")?h(n):n:t?t.ownerDocument.documentElement:document.documentElement}function p(t){return null!==t.parentNode?p(t.parentNode):t}function m(t,e){if(!(t&&t.nodeType&&e&&e.nodeType))return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?t:e,o=n?e:t,r=document.createRange();r.setStart(i,0),r.setEnd(o,0);var a,s,l=r.commonAncestorContainer;if(t!==l&&e!==l||i.contains(o))return"BODY"===(s=(a=l).nodeName)||"HTML"!==s&&h(a.firstElementChild)!==a?h(l):l;var u=p(t);return u.host?m(u.host,e):m(t,p(e).host)}function g(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===e?"scrollTop":"scrollLeft",i=t.nodeName;if("BODY"===i||"HTML"===i){var o=t.ownerDocument.documentElement,r=t.ownerDocument.scrollingElement||o;return r[n]}return t[n]}function v(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=g(e,"top"),o=g(e,"left"),r=n?-1:1;return t.top+=i*r,t.bottom+=i*r,t.left+=o*r,t.right+=o*r,t}function _(t,e){var n="x"===e?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+i+"Width"])}function b(t,e,n,i){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],c(10)?parseInt(n["offset"+t])+parseInt(i["margin"+("Height"===t?"Top":"Left")])+parseInt(i["margin"+("Height"===t?"Bottom":"Right")]):0)}function y(t){var e=t.body,n=t.documentElement,i=c(10)&&getComputedStyle(n);return{height:b("Height",e,n,i),width:b("Width",e,n,i)}}var w=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},E=function(){function t(t,e){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=c(10),o="HTML"===e.nodeName,r=N(t),s=N(e),u=l(t),f=a(e),d=parseFloat(f.borderTopWidth),h=parseFloat(f.borderLeftWidth);n&&o&&(s.top=Math.max(s.top,0),s.left=Math.max(s.left,0));var p=S({top:r.top-s.top-d,left:r.left-s.left-h,width:r.width,height:r.height});if(p.marginTop=0,p.marginLeft=0,!i&&o){var m=parseFloat(f.marginTop),g=parseFloat(f.marginLeft);p.top-=d-m,p.bottom-=d-m,p.left-=h-g,p.right-=h-g,p.marginTop=m,p.marginLeft=g}return(i&&!n?e.contains(u):e===u&&"BODY"!==u.nodeName)&&(p=v(p,e)),p}function k(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=t.ownerDocument.documentElement,i=D(t,n),o=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:g(n),s=e?0:g(n,"left"),l={top:a-i.top+i.marginTop,left:s-i.left+i.marginLeft,width:o,height:r};return S(l)}function A(t){var e=t.nodeName;if("BODY"===e||"HTML"===e)return!1;if("fixed"===a(t,"position"))return!0;var n=s(t);return!!n&&A(n)}function I(t){if(!t||!t.parentElement||c())return document.documentElement;for(var e=t.parentElement;e&&"none"===a(e,"transform");)e=e.parentElement;return e||document.documentElement}function O(t,e,n,i){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=o?I(t):m(t,u(e));if("viewport"===i)r=k(a,o);else{var f=void 0;"scrollParent"===i?"BODY"===(f=l(s(e))).nodeName&&(f=t.ownerDocument.documentElement):f="window"===i?t.ownerDocument.documentElement:i;var d=D(f,a,o);if("HTML"!==f.nodeName||A(a))r=d;else{var c=y(t.ownerDocument),h=c.height,p=c.width;r.top+=d.top-d.marginTop,r.bottom=h+d.top,r.left+=d.left-d.marginLeft,r.right=p+d.left}}var g="number"==typeof(n=n||0);return r.left+=g?n:n.left||0,r.top+=g?n:n.top||0,r.right-=g?n:n.right||0,r.bottom-=g?n:n.bottom||0,r}function x(t){return t.width*t.height}function j(t,e,n,i,o){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===t.indexOf("auto"))return t;var a=O(n,i,r,o),s={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},l=Object.keys(s).map((function(t){return C({key:t},s[t],{area:x(s[t])})})).sort((function(t,e){return e.area-t.area})),u=l.filter((function(t){var e=t.width,i=t.height;return e>=n.clientWidth&&i>=n.clientHeight})),f=u.length>0?u[0].key:l[0].key,d=t.split("-")[1];return f+(d?"-"+d:"")}function L(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=i?I(e):m(e,u(n));return D(n,o,i)}function P(t){var e=t.ownerDocument.defaultView.getComputedStyle(t),n=parseFloat(e.marginTop||0)+parseFloat(e.marginBottom||0),i=parseFloat(e.marginLeft||0)+parseFloat(e.marginRight||0);return{width:t.offsetWidth+i,height:t.offsetHeight+n}}function F(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,(function(t){return e[t]}))}function R(t,e,n){n=n.split("-")[0];var i=P(t),o={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",s=r?"left":"top",l=r?"height":"width",u=r?"width":"height";return o[a]=e[a]+e[l]/2-i[l]/2,o[s]=n===s?e[s]-i[u]:e[F(s)],o}function M(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function B(t,e,n){return(void 0===n?t:t.slice(0,function(t,e,n){if(Array.prototype.findIndex)return t.findIndex((function(t){return t[e]===n}));var i=M(t,(function(t){return t[e]===n}));return t.indexOf(i)}(t,"name",n))).forEach((function(t){t.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=t.function||t.fn;t.enabled&&r(n)&&(e.offsets.popper=S(e.offsets.popper),e.offsets.reference=S(e.offsets.reference),e=n(e,t))})),e}function H(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=L(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=j(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=R(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=B(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function q(t,e){return t.some((function(t){var n=t.name;return t.enabled&&n===e}))}function Q(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=Z.indexOf(t),i=Z.slice(n+1).concat(Z.slice(0,n));return e?i.reverse():i}var et="flip",nt="clockwise",it="counterclockwise";function ot(t,e,n,i){var o=[0,0],r=-1!==["right","left"].indexOf(i),a=t.split(/(\+|\-)/).map((function(t){return t.trim()})),s=a.indexOf(M(a,(function(t){return-1!==t.search(/,|\s/)})));a[s]&&-1===a[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return(u=u.map((function(t,i){var o=(1===i?!r:r)?"height":"width",a=!1;return t.reduce((function(t,e){return""===t[t.length-1]&&-1!==["+","-"].indexOf(e)?(t[t.length-1]=e,a=!0,t):a?(t[t.length-1]+=e,a=!1,t):t.concat(e)}),[]).map((function(t){return function(t,e,n,i){var o=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+o[1],a=o[2];if(!r)return t;if(0===a.indexOf("%")){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=i}return S(s)[e]/100*r}if("vh"===a||"vw"===a){return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r}return r}(t,o,e,n)}))}))).forEach((function(t,e){t.forEach((function(n,i){K(n)&&(o[e]+=n*("-"===t[i-1]?-1:1))}))})),o}var rt={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(t){var e=t.placement,n=e.split("-")[0],i=e.split("-")[1];if(i){var o=t.offsets,r=o.reference,a=o.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",f={start:T({},l,r[l]),end:T({},l,r[l]+r[u]-a[u])};t.offsets.popper=C({},a,f[i])}return t}},offset:{order:200,enabled:!0,fn:function(t,e){var n=e.offset,i=t.placement,o=t.offsets,r=o.popper,a=o.reference,s=i.split("-")[0],l=void 0;return l=K(+n)?[+n,0]:ot(n,r,a,s),"left"===s?(r.top+=l[0],r.left-=l[1]):"right"===s?(r.top+=l[0],r.left+=l[1]):"top"===s?(r.left+=l[0],r.top-=l[1]):"bottom"===s&&(r.left+=l[0],r.top+=l[1]),t.popper=r,t},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(t,e){var n=e.boundariesElement||h(t.instance.popper);t.instance.reference===n&&(n=h(n));var i=Q("transform"),o=t.instance.popper.style,r=o.top,a=o.left,s=o[i];o.top="",o.left="",o[i]="";var l=O(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);o.top=r,o.left=a,o[i]=s,e.boundaries=l;var u=e.priority,f=t.offsets.popper,d={primary:function(t){var n=f[t];return f[t]l[t]&&!e.escapeWithReference&&(i=Math.min(f[n],l[t]-("right"===t?f.width:f.height))),T({},n,i)}};return u.forEach((function(t){var e=-1!==["left","top"].indexOf(t)?"primary":"secondary";f=C({},f,d[e](t))})),t.offsets.popper=f,t},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(t){var e=t.offsets,n=e.popper,i=e.reference,o=t.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(o),s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]r(i[s])&&(t.offsets.popper[l]=r(i[s])),t}},arrow:{order:500,enabled:!0,fn:function(t,e){var n;if(!G(t.instance.modifiers,"arrow","keepTogether"))return t;var i=e.element;if("string"==typeof i){if(!(i=t.instance.popper.querySelector(i)))return t}else if(!t.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),t;var o=t.placement.split("-")[0],r=t.offsets,s=r.popper,l=r.reference,u=-1!==["left","right"].indexOf(o),f=u?"height":"width",d=u?"Top":"Left",c=d.toLowerCase(),h=u?"left":"top",p=u?"bottom":"right",m=P(i)[f];l[p]-ms[p]&&(t.offsets.popper[c]+=l[c]+m-s[p]),t.offsets.popper=S(t.offsets.popper);var g=l[c]+l[f]/2-m/2,v=a(t.instance.popper),_=parseFloat(v["margin"+d]),b=parseFloat(v["border"+d+"Width"]),y=g-t.offsets.popper[c]-_-b;return y=Math.max(Math.min(s[f]-m,y),0),t.arrowElement=i,t.offsets.arrow=(T(n={},c,Math.round(y)),T(n,h,""),n),t},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(t,e){if(q(t.instance.modifiers,"inner"))return t;if(t.flipped&&t.placement===t.originalPlacement)return t;var n=O(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),i=t.placement.split("-")[0],o=F(i),r=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case et:a=[i,o];break;case nt:a=tt(i);break;case it:a=tt(i,!0);break;default:a=e.behavior}return a.forEach((function(s,l){if(i!==s||a.length===l+1)return t;i=t.placement.split("-")[0],o=F(i);var u=t.offsets.popper,f=t.offsets.reference,d=Math.floor,c="left"===i&&d(u.right)>d(f.left)||"right"===i&&d(u.left)d(f.top)||"bottom"===i&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),v="left"===i&&h||"right"===i&&p||"top"===i&&m||"bottom"===i&&g,_=-1!==["top","bottom"].indexOf(i),b=!!e.flipVariations&&(_&&"start"===r&&h||_&&"end"===r&&p||!_&&"start"===r&&m||!_&&"end"===r&&g),y=!!e.flipVariationsByContent&&(_&&"start"===r&&p||_&&"end"===r&&h||!_&&"start"===r&&g||!_&&"end"===r&&m),w=b||y;(c||v||w)&&(t.flipped=!0,(c||v)&&(i=a[l+1]),w&&(r=function(t){return"end"===t?"start":"start"===t?"end":t}(r)),t.placement=i+(r?"-"+r:""),t.offsets.popper=C({},t.offsets.popper,R(t.instance.popper,t.offsets.reference,t.placement)),t=B(t.instance.modifiers,t,"flip"))})),t},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(t){var e=t.placement,n=e.split("-")[0],i=t.offsets,o=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return o[a?"left":"top"]=r[n]-(s?o[a?"width":"height"]:0),t.placement=F(e),t.offsets.popper=S(o),t}},hide:{order:800,enabled:!0,fn:function(t){if(!G(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=M(t.instance.modifiers,(function(t){return"preventOverflow"===t.name})).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&void 0!==arguments[2]?arguments[2]:{};w(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=o(this.update.bind(this)),this.options=C({},t.Defaults,a),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(C({},t.Defaults.modifiers,a.modifiers)).forEach((function(e){i.options.modifiers[e]=C({},t.Defaults.modifiers[e]||{},a.modifiers?a.modifiers[e]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(t){return C({name:t},i.options.modifiers[t])})).sort((function(t,e){return t.order-e.order})),this.modifiers.forEach((function(t){t.enabled&&r(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)})),this.update();var s=this.options.eventsEnabled;s&&this.enableEventListeners(),this.state.eventsEnabled=s}return E(t,[{key:"update",value:function(){return H.call(this)}},{key:"destroy",value:function(){return W.call(this)}},{key:"enableEventListeners",value:function(){return Y.call(this)}},{key:"disableEventListeners",value:function(){return z.call(this)}}]),t}();at.Utils=("undefined"!=typeof window?window:t).PopperUtils,at.placements=J,at.Defaults=rt,e.default=at}.call(this,n(4))},function(t,e,n){t.exports=n(5)},function(t,e,n){ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e,n){"use strict";function i(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var o=i(e),r=i(n);function a(t,e){for(var n=0;n=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}};d.jQueryDetection(),o.default.fn.emulateTransitionEnd=f,o.default.event.special[d.TRANSITION_END]={bindType:"transitionend",delegateType:"transitionend",handle:function(t){if(o.default(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}};var c=o.default.fn.alert,h=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.default.removeData(this._element,"bs.alert"),this._element=null},e._getRootElement=function(t){var e=d.getSelectorFromElement(t),n=!1;return e&&(n=document.querySelector(e)),n||(n=o.default(t).closest(".alert")[0]),n},e._triggerCloseEvent=function(t){var e=o.default.Event("close.bs.alert");return o.default(t).trigger(e),e},e._removeElement=function(t){var e=this;if(o.default(t).removeClass("show"),o.default(t).hasClass("fade")){var n=d.getTransitionDurationFromElement(t);o.default(t).one(d.TRANSITION_END,(function(n){return e._destroyElement(t,n)})).emulateTransitionEnd(n)}else this._destroyElement(t)},e._destroyElement=function(t){o.default(t).detach().trigger("closed.bs.alert").remove()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.alert");i||(i=new t(this),n.data("bs.alert",i)),"close"===e&&i[e](this)}))},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.alert.data-api",'[data-dismiss="alert"]',h._handleDismiss(new h)),o.default.fn.alert=h._jQueryInterface,o.default.fn.alert.Constructor=h,o.default.fn.alert.noConflict=function(){return o.default.fn.alert=c,h._jQueryInterface};var p=o.default.fn.button,m=function(){function t(t){this._element=t,this.shouldAvoidTriggerChange=!1}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=o.default(this._element).closest('[data-toggle="buttons"]')[0];if(n){var i=this._element.querySelector('input:not([type="hidden"])');if(i){if("radio"===i.type)if(i.checked&&this._element.classList.contains("active"))t=!1;else{var r=n.querySelector(".active");r&&o.default(r).removeClass("active")}t&&("checkbox"!==i.type&&"radio"!==i.type||(i.checked=!this._element.classList.contains("active")),this.shouldAvoidTriggerChange||o.default(i).trigger("change")),i.focus(),e=!1}}this._element.hasAttribute("disabled")||this._element.classList.contains("disabled")||(e&&this._element.setAttribute("aria-pressed",!this._element.classList.contains("active")),t&&o.default(this._element).toggleClass("active"))},e.dispose=function(){o.default.removeData(this._element,"bs.button"),this._element=null},t._jQueryInterface=function(e,n){return this.each((function(){var i=o.default(this),r=i.data("bs.button");r||(r=new t(this),i.data("bs.button",r)),r.shouldAvoidTriggerChange=n,"toggle"===e&&r[e]()}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=t.target,n=e;if(o.default(e).hasClass("btn")||(e=o.default(e).closest(".btn")[0]),!e||e.hasAttribute("disabled")||e.classList.contains("disabled"))t.preventDefault();else{var i=e.querySelector('input:not([type="hidden"])');if(i&&(i.hasAttribute("disabled")||i.classList.contains("disabled")))return void t.preventDefault();"INPUT"!==n.tagName&&"LABEL"===e.tagName||m._jQueryInterface.call(o.default(e),"toggle","INPUT"===n.tagName)}})).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',(function(t){var e=o.default(t.target).closest(".btn")[0];o.default(e).toggleClass("focus",/^focus(in)?$/.test(t.type))})),o.default(window).on("load.bs.button.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-toggle="buttons"] .btn')),e=0,n=t.length;e0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}var e=t.prototype;return e.next=function(){this._isSliding||this._slide("next")},e.nextWhenVisible=function(){var t=o.default(this._element);!document.hidden&&t.is(":visible")&&"hidden"!==t.css("visibility")&&this.next()},e.prev=function(){this._isSliding||this._slide("prev")},e.pause=function(t){t||(this._isPaused=!0),this._element.querySelector(".carousel-item-next, .carousel-item-prev")&&(d.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},e.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},e.to=function(t){var e=this;this._activeElement=this._element.querySelector(".active.carousel-item");var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)o.default(this._element).one("slid.bs.carousel",(function(){return e.to(t)}));else{if(n===t)return this.pause(),void this.cycle();var i=t>n?"next":"prev";this._slide(i,this._items[t])}},e.dispose=function(){o.default(this._element).off(v),o.default.removeData(this._element,"bs.carousel"),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},e._getConfig=function(t){return t=l({},b,t),d.typeCheckConfig(g,t,y),t},e._handleSwipe=function(){var t=Math.abs(this.touchDeltaX);if(!(t<=40)){var e=t/this.touchDeltaX;this.touchDeltaX=0,e>0&&this.prev(),e<0&&this.next()}},e._addEventListeners=function(){var t=this;this._config.keyboard&&o.default(this._element).on("keydown.bs.carousel",(function(e){return t._keydown(e)})),"hover"===this._config.pause&&o.default(this._element).on("mouseenter.bs.carousel",(function(e){return t.pause(e)})).on("mouseleave.bs.carousel",(function(e){return t.cycle(e)})),this._config.touch&&this._addTouchEventListeners()},e._addTouchEventListeners=function(){var t=this;if(this._touchSupported){var e=function(e){t._pointerEvent&&w[e.originalEvent.pointerType.toUpperCase()]?t.touchStartX=e.originalEvent.clientX:t._pointerEvent||(t.touchStartX=e.originalEvent.touches[0].clientX)},n=function(e){t._pointerEvent&&w[e.originalEvent.pointerType.toUpperCase()]&&(t.touchDeltaX=e.originalEvent.clientX-t.touchStartX),t._handleSwipe(),"hover"===t._config.pause&&(t.pause(),t.touchTimeout&&clearTimeout(t.touchTimeout),t.touchTimeout=setTimeout((function(e){return t.cycle(e)}),500+t._config.interval))};o.default(this._element.querySelectorAll(".carousel-item img")).on("dragstart.bs.carousel",(function(t){return t.preventDefault()})),this._pointerEvent?(o.default(this._element).on("pointerdown.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("pointerup.bs.carousel",(function(t){return n(t)})),this._element.classList.add("pointer-event")):(o.default(this._element).on("touchstart.bs.carousel",(function(t){return e(t)})),o.default(this._element).on("touchmove.bs.carousel",(function(e){return function(e){t.touchDeltaX=e.originalEvent.touches&&e.originalEvent.touches.length>1?0:e.originalEvent.touches[0].clientX-t.touchStartX}(e)})),o.default(this._element).on("touchend.bs.carousel",(function(t){return n(t)})))}},e._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},e._getItemIndex=function(t){return this._items=t&&t.parentNode?[].slice.call(t.parentNode.querySelectorAll(".carousel-item")):[],this._items.indexOf(t)},e._getItemByDirection=function(t,e){var n="next"===t,i="prev"===t,o=this._getItemIndex(e),r=this._items.length-1;if((i&&0===o||n&&o===r)&&!this._config.wrap)return e;var a=(o+("prev"===t?-1:1))%this._items.length;return-1===a?this._items[this._items.length-1]:this._items[a]},e._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(this._element.querySelector(".active.carousel-item")),r=o.default.Event("slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:n});return o.default(this._element).trigger(r),r},e._setActiveIndicatorElement=function(t){if(this._indicatorsElement){var e=[].slice.call(this._indicatorsElement.querySelectorAll(".active"));o.default(e).removeClass("active");var n=this._indicatorsElement.children[this._getItemIndex(t)];n&&o.default(n).addClass("active")}},e._updateInterval=function(){var t=this._activeElement||this._element.querySelector(".active.carousel-item");if(t){var e=parseInt(t.getAttribute("data-interval"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}},e._slide=function(t,e){var n,i,r,a=this,s=this._element.querySelector(".active.carousel-item"),l=this._getItemIndex(s),u=e||s&&this._getItemByDirection(t,s),f=this._getItemIndex(u),c=Boolean(this._interval);if("next"===t?(n="carousel-item-left",i="carousel-item-next",r="left"):(n="carousel-item-right",i="carousel-item-prev",r="right"),u&&o.default(u).hasClass("active"))this._isSliding=!1;else if(!this._triggerSlideEvent(u,r).isDefaultPrevented()&&s&&u){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(u),this._activeElement=u;var h=o.default.Event("slid.bs.carousel",{relatedTarget:u,direction:r,from:l,to:f});if(o.default(this._element).hasClass("slide")){o.default(u).addClass(i),d.reflow(u),o.default(s).addClass(n),o.default(u).addClass(n);var p=d.getTransitionDurationFromElement(s);o.default(s).one(d.TRANSITION_END,(function(){o.default(u).removeClass(n+" "+i).addClass("active"),o.default(s).removeClass("active "+i+" "+n),a._isSliding=!1,setTimeout((function(){return o.default(a._element).trigger(h)}),0)})).emulateTransitionEnd(p)}else o.default(s).removeClass("active"),o.default(u).addClass("active"),this._isSliding=!1,o.default(this._element).trigger(h);c&&this.cycle()}},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data("bs.carousel"),i=l({},b,o.default(this).data());"object"==typeof e&&(i=l({},i,e));var r="string"==typeof e?e:i.slide;if(n||(n=new t(this,i),o.default(this).data("bs.carousel",n)),"number"==typeof e)n.to(e);else if("string"==typeof r){if(void 0===n[r])throw new TypeError('No method named "'+r+'"');n[r]()}else i.interval&&i.ride&&(n.pause(),n.cycle())}))},t._dataApiClickHandler=function(e){var n=d.getSelectorFromElement(this);if(n){var i=o.default(n)[0];if(i&&o.default(i).hasClass("carousel")){var r=l({},o.default(i).data(),o.default(this).data()),a=this.getAttribute("data-slide-to");a&&(r.interval=!1),t._jQueryInterface.call(o.default(i),r),a&&o.default(i).data("bs.carousel").to(a),e.preventDefault()}}},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return b}}]),t}();o.default(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",E._dataApiClickHandler),o.default(window).on("load.bs.carousel.data-api",(function(){for(var t=[].slice.call(document.querySelectorAll('[data-ride="carousel"]')),e=0,n=t.length;e0&&(this._selector=a,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var e=t.prototype;return e.toggle=function(){o.default(this._element).hasClass("show")?this.hide():this.show()},e.show=function(){var e,n,i=this;if(!(this._isTransitioning||o.default(this._element).hasClass("show")||(this._parent&&0===(e=[].slice.call(this._parent.querySelectorAll(".show, .collapsing")).filter((function(t){return"string"==typeof i._config.parent?t.getAttribute("data-parent")===i._config.parent:t.classList.contains("collapse")}))).length&&(e=null),e&&(n=o.default(e).not(this._selector).data("bs.collapse"))&&n._isTransitioning))){var r=o.default.Event("show.bs.collapse");if(o.default(this._element).trigger(r),!r.isDefaultPrevented()){e&&(t._jQueryInterface.call(o.default(e).not(this._selector),"hide"),n||o.default(e).data("bs.collapse",null));var a=this._getDimension();o.default(this._element).removeClass("collapse").addClass("collapsing"),this._element.style[a]=0,this._triggerArray.length&&o.default(this._triggerArray).removeClass("collapsed").attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(a[0].toUpperCase()+a.slice(1)),l=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,(function(){o.default(i._element).removeClass("collapsing").addClass("collapse show"),i._element.style[a]="",i.setTransitioning(!1),o.default(i._element).trigger("shown.bs.collapse")})).emulateTransitionEnd(l),this._element.style[a]=this._element[s]+"px"}}},e.hide=function(){var t=this;if(!this._isTransitioning&&o.default(this._element).hasClass("show")){var e=o.default.Event("hide.bs.collapse");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",d.reflow(this._element),o.default(this._element).addClass("collapsing").removeClass("collapse show");var i=this._triggerArray.length;if(i>0)for(var r=0;r0},e._getOffset=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,t._config.offset(e.offsets,t._element)),e}:e.offset=this._config.offset,e},e._getPopperConfig=function(){var t={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(t.modifiers.applyStyle={enabled:!1}),l({},t,this._config.popperConfig)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this).data("bs.dropdown");if(n||(n=new t(this,"object"==typeof e?e:null),o.default(this).data("bs.dropdown",n)),"string"==typeof e){if(void 0===n[e])throw new TypeError('No method named "'+e+'"');n[e]()}}))},t._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=[].slice.call(document.querySelectorAll('[data-toggle="dropdown"]')),i=0,r=n.length;i0&&a--,40===e.which&&adocument.documentElement.clientHeight;n||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");var i=d.getTransitionDurationFromElement(this._dialog);o.default(this._element).off(d.TRANSITION_END),o.default(this._element).one(d.TRANSITION_END,(function(){t._element.classList.remove("modal-static"),n||o.default(t._element).one(d.TRANSITION_END,(function(){t._element.style.overflowY=""})).emulateTransitionEnd(t._element,i)})).emulateTransitionEnd(i),this._element.focus()}},e._showElement=function(t){var e=this,n=o.default(this._element).hasClass("fade"),i=this._dialog?this._dialog.querySelector(".modal-body"):null;this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),o.default(this._dialog).hasClass("modal-dialog-scrollable")&&i?i.scrollTop=0:this._element.scrollTop=0,n&&d.reflow(this._element),o.default(this._element).addClass("show"),this._config.focus&&this._enforceFocus();var r=o.default.Event("shown.bs.modal",{relatedTarget:t}),a=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,o.default(e._element).trigger(r)};if(n){var s=d.getTransitionDurationFromElement(this._dialog);o.default(this._dialog).one(d.TRANSITION_END,a).emulateTransitionEnd(s)}else a()},e._enforceFocus=function(){var t=this;o.default(document).off("focusin.bs.modal").on("focusin.bs.modal",(function(e){document!==e.target&&t._element!==e.target&&0===o.default(t._element).has(e.target).length&&t._element.focus()}))},e._setEscapeEvent=function(){var t=this;this._isShown?o.default(this._element).on("keydown.dismiss.bs.modal",(function(e){t._config.keyboard&&27===e.which?(e.preventDefault(),t.hide()):t._config.keyboard||27!==e.which||t._triggerBackdropTransition()})):this._isShown||o.default(this._element).off("keydown.dismiss.bs.modal")},e._setResizeEvent=function(){var t=this;this._isShown?o.default(window).on("resize.bs.modal",(function(e){return t.handleUpdate(e)})):o.default(window).off("resize.bs.modal")},e._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop((function(){o.default(document.body).removeClass("modal-open"),t._resetAdjustments(),t._resetScrollbar(),o.default(t._element).trigger("hidden.bs.modal")}))},e._removeBackdrop=function(){this._backdrop&&(o.default(this._backdrop).remove(),this._backdrop=null)},e._showBackdrop=function(t){var e=this,n=o.default(this._element).hasClass("fade")?"fade":"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",n&&this._backdrop.classList.add(n),o.default(this._backdrop).appendTo(document.body),o.default(this._element).on("click.dismiss.bs.modal",(function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._triggerBackdropTransition():e.hide())})),n&&d.reflow(this._backdrop),o.default(this._backdrop).addClass("show"),!t)return;if(!n)return void t();var i=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){o.default(this._backdrop).removeClass("show");var r=function(){e._removeBackdrop(),t&&t()};if(o.default(this._element).hasClass("fade")){var a=d.getTransitionDurationFromElement(this._backdrop);o.default(this._backdrop).one(d.TRANSITION_END,r).emulateTransitionEnd(a)}else r()}else t&&t()},e._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},e._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},e._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",customClass:"",sanitize:!0,sanitizeFn:null,whiteList:B,popperConfig:null},X={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string|function)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",whiteList:"object",popperConfig:"(null|object)"},$={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"},G=function(){function t(t,e){if(void 0===r.default)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var e=t.prototype;return e.enable=function(){this._isEnabled=!0},e.disable=function(){this._isEnabled=!1},e.toggleEnabled=function(){this._isEnabled=!this._isEnabled},e.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=o.default(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(o.default(this.getTipElement()).hasClass("show"))return void this._leave(null,this);this._enter(null,this)}},e.dispose=function(){clearTimeout(this._timeout),o.default.removeData(this.element,this.constructor.DATA_KEY),o.default(this.element).off(this.constructor.EVENT_KEY),o.default(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&o.default(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},e.show=function(){var t=this;if("none"===o.default(this.element).css("display"))throw new Error("Please use show on visible elements");var e=o.default.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){o.default(this.element).trigger(e);var n=d.findShadowRoot(this.element),i=o.default.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(e.isDefaultPrevented()||!i)return;var a=this.getTipElement(),s=d.getUID(this.constructor.NAME);a.setAttribute("id",s),this.element.setAttribute("aria-describedby",s),this.setContent(),this.config.animation&&o.default(a).addClass("fade");var l="function"==typeof this.config.placement?this.config.placement.call(this,a,this.element):this.config.placement,u=this._getAttachment(l);this.addAttachmentClass(u);var f=this._getContainer();o.default(a).data(this.constructor.DATA_KEY,this),o.default.contains(this.element.ownerDocument.documentElement,this.tip)||o.default(a).appendTo(f),o.default(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new r.default(this.element,a,this._getPopperConfig(u)),o.default(a).addClass("show"),o.default(a).addClass(this.config.customClass),"ontouchstart"in document.documentElement&&o.default(document.body).children().on("mouseover",null,o.default.noop);var c=function(){t.config.animation&&t._fixTransition();var e=t._hoverState;t._hoverState=null,o.default(t.element).trigger(t.constructor.Event.SHOWN),"out"===e&&t._leave(null,t)};if(o.default(this.tip).hasClass("fade")){var h=d.getTransitionDurationFromElement(this.tip);o.default(this.tip).one(d.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},e.hide=function(t){var e=this,n=this.getTipElement(),i=o.default.Event(this.constructor.Event.HIDE),r=function(){"show"!==e._hoverState&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),o.default(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(o.default(this.element).trigger(i),!i.isDefaultPrevented()){if(o.default(n).removeClass("show"),"ontouchstart"in document.documentElement&&o.default(document.body).children().off("mouseover",null,o.default.noop),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,o.default(this.tip).hasClass("fade")){var a=d.getTransitionDurationFromElement(n);o.default(n).one(d.TRANSITION_END,r).emulateTransitionEnd(a)}else r();this._hoverState=""}},e.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},e.isWithContent=function(){return Boolean(this.getTitle())},e.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-tooltip-"+t)},e.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},e.setContent=function(){var t=this.getTipElement();this.setElementContent(o.default(t.querySelectorAll(".tooltip-inner")),this.getTitle()),o.default(t).removeClass("fade show")},e.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Q(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?o.default(e).parent().is(t)||t.empty().append(e):t.text(o.default(e).text())},e.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},e._getPopperConfig=function(t){var e=this;return l({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:".arrow"},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},this.config.popperConfig)},e._getOffset=function(){var t=this,e={};return"function"==typeof this.config.offset?e.fn=function(e){return e.offsets=l({},e.offsets,t.config.offset(e.offsets,t.element)),e}:e.offset=this.config.offset,e},e._getContainer=function(){return!1===this.config.container?document.body:d.isElement(this.config.container)?o.default(this.config.container):o.default(document).find(this.config.container)},e._getAttachment=function(t){return z[t.toUpperCase()]},e._setListeners=function(){var t=this;this.config.trigger.split(" ").forEach((function(e){if("click"===e)o.default(t.element).on(t.constructor.Event.CLICK,t.config.selector,(function(e){return t.toggle(e)}));else if("manual"!==e){var n="hover"===e?t.constructor.Event.MOUSEENTER:t.constructor.Event.FOCUSIN,i="hover"===e?t.constructor.Event.MOUSELEAVE:t.constructor.Event.FOCUSOUT;o.default(t.element).on(n,t.config.selector,(function(e){return t._enter(e)})).on(i,t.config.selector,(function(e){return t._leave(e)}))}})),this._hideModalHandler=function(){t.element&&t.hide()},o.default(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},e._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},e._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),o.default(e.getTipElement()).hasClass("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout((function(){"show"===e._hoverState&&e.show()}),e.config.delay.show):e.show())},e._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||o.default(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),o.default(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout((function(){"out"===e._hoverState&&e.hide()}),e.config.delay.hide):e.hide())},e._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},e._getConfig=function(t){var e=o.default(this.element).data();return Object.keys(e).forEach((function(t){-1!==Y.indexOf(t)&&delete e[t]})),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d.typeCheckConfig(W,t,this.constructor.DefaultType),t.sanitize&&(t.template=Q(t.template,t.whiteList,t.sanitizeFn)),t},e._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},e._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(V);null!==e&&e.length&&t.removeClass(e.join(""))},e._handlePopperPlacementChange=function(t){this.tip=t.instance.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},e._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(o.default(t).removeClass("fade"),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tooltip"),r="object"==typeof e&&e;if((i||!/dispose|hide/.test(e))&&(i||(i=new t(this,r),n.data("bs.tooltip",i)),"string"==typeof e)){if(void 0===i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return K}},{key:"NAME",get:function(){return W}},{key:"DATA_KEY",get:function(){return"bs.tooltip"}},{key:"Event",get:function(){return $}},{key:"EVENT_KEY",get:function(){return".bs.tooltip"}},{key:"DefaultType",get:function(){return X}}]),t}();o.default.fn[W]=G._jQueryInterface,o.default.fn[W].Constructor=G,o.default.fn[W].noConflict=function(){return o.default.fn[W]=U,G._jQueryInterface};var J="popover",Z=o.default.fn[J],tt=new RegExp("(^|\\s)bs-popover\\S+","g"),et=l({},G.Default,{placement:"right",trigger:"click",content:"",template:''}),nt=l({},G.DefaultType,{content:"(string|element|function)"}),it={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"},ot=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),e.prototype.constructor=e,u(e,n);var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){o.default(this.getTipElement()).addClass("bs-popover-"+t)},r.getTipElement=function(){return this.tip=this.tip||o.default(this.config.template)[0],this.tip},r.setContent=function(){var t=o.default(this.getTipElement());this.setElementContent(t.find(".popover-header"),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(".popover-body"),e),t.removeClass("fade show")},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=o.default(this.getTipElement()),e=t.attr("class").match(tt);null!==e&&e.length>0&&t.removeClass(e.join(""))},i._jQueryInterface=function(t){return this.each((function(){var e=o.default(this).data("bs.popover"),n="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new i(this,n),o.default(this).data("bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError('No method named "'+t+'"');e[t]()}}))},s(i,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"Default",get:function(){return et}},{key:"NAME",get:function(){return J}},{key:"DATA_KEY",get:function(){return"bs.popover"}},{key:"Event",get:function(){return it}},{key:"EVENT_KEY",get:function(){return".bs.popover"}},{key:"DefaultType",get:function(){return nt}}]),i}(G);o.default.fn[J]=ot._jQueryInterface,o.default.fn[J].Constructor=ot,o.default.fn[J].noConflict=function(){return o.default.fn[J]=Z,ot._jQueryInterface};var rt="scrollspy",at=o.default.fn[rt],st={offset:10,method:"auto",target:""},lt={offset:"number",method:"string",target:"(string|element)"},ut=function(){function t(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" .nav-link,"+this._config.target+" .list-group-item,"+this._config.target+" .dropdown-item",this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,o.default(this._scrollElement).on("scroll.bs.scrollspy",(function(t){return n._process(t)})),this.refresh(),this._process()}var e=t.prototype;return e.refresh=function(){var t=this,e=this._scrollElement===this._scrollElement.window?"offset":"position",n="auto"===this._config.method?e:this._config.method,i="position"===n?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),[].slice.call(document.querySelectorAll(this._selector)).map((function(t){var e,r=d.getSelectorFromElement(t);if(r&&(e=document.querySelector(r)),e){var a=e.getBoundingClientRect();if(a.width||a.height)return[o.default(e)[n]().top+i,r]}return null})).filter((function(t){return t})).sort((function(t,e){return t[0]-e[0]})).forEach((function(e){t._offsets.push(e[0]),t._targets.push(e[1])}))},e.dispose=function(){o.default.removeData(this._element,"bs.scrollspy"),o.default(this._scrollElement).off(".bs.scrollspy"),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},e._getConfig=function(t){if("string"!=typeof(t=l({},st,"object"==typeof t&&t?t:{})).target&&d.isElement(t.target)){var e=o.default(t.target).attr("id");e||(e=d.getUID(rt),o.default(t.target).attr("id",e)),t.target="#"+e}return d.typeCheckConfig(rt,t,lt),t},e._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},e._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},e._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},e._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var o=this._offsets.length;o--;)this._activeTarget!==this._targets[o]&&t>=this._offsets[o]&&(void 0===this._offsets[o+1]||t li > .active":".active";n=(n=o.default.makeArray(o.default(i).find(a)))[n.length-1]}var s=o.default.Event("hide.bs.tab",{relatedTarget:this._element}),l=o.default.Event("show.bs.tab",{relatedTarget:n});if(n&&o.default(n).trigger(s),o.default(this._element).trigger(l),!l.isDefaultPrevented()&&!s.isDefaultPrevented()){r&&(e=document.querySelector(r)),this._activate(this._element,i);var u=function(){var e=o.default.Event("hidden.bs.tab",{relatedTarget:t._element}),i=o.default.Event("shown.bs.tab",{relatedTarget:n});o.default(n).trigger(e),o.default(t._element).trigger(i)};e?this._activate(e,e.parentNode,u):u()}}},e.dispose=function(){o.default.removeData(this._element,"bs.tab"),this._element=null},e._activate=function(t,e,n){var i=this,r=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?o.default(e).children(".active"):o.default(e).find("> li > .active"))[0],a=n&&r&&o.default(r).hasClass("fade"),s=function(){return i._transitionComplete(t,r,n)};if(r&&a){var l=d.getTransitionDurationFromElement(r);o.default(r).removeClass("show").one(d.TRANSITION_END,s).emulateTransitionEnd(l)}else s()},e._transitionComplete=function(t,e,n){if(e){o.default(e).removeClass("active");var i=o.default(e.parentNode).find("> .dropdown-menu .active")[0];i&&o.default(i).removeClass("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}o.default(t).addClass("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),d.reflow(t),t.classList.contains("fade")&&t.classList.add("show");var r=t.parentNode;if(r&&"LI"===r.nodeName&&(r=r.parentNode),r&&o.default(r).hasClass("dropdown-menu")){var a=o.default(t).closest(".dropdown")[0];if(a){var s=[].slice.call(a.querySelectorAll(".dropdown-toggle"));o.default(s).addClass("active")}t.setAttribute("aria-expanded",!0)}n&&n()},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.tab");if(i||(i=new t(this),n.data("bs.tab",i)),"string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'+e+'"');i[e]()}}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}}]),t}();o.default(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',(function(t){t.preventDefault(),dt._jQueryInterface.call(o.default(this),"show")})),o.default.fn.tab=dt._jQueryInterface,o.default.fn.tab.Constructor=dt,o.default.fn.tab.noConflict=function(){return o.default.fn.tab=ft,dt._jQueryInterface};var ct="toast",ht=o.default.fn[ct],pt={animation:!0,autohide:!0,delay:500},mt={animation:"boolean",autohide:"boolean",delay:"number"},gt=function(){function t(t,e){this._element=t,this._config=this._getConfig(e),this._timeout=null,this._setListeners()}var e=t.prototype;return e.show=function(){var t=this,e=o.default.Event("show.bs.toast");if(o.default(this._element).trigger(e),!e.isDefaultPrevented()){this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");var n=function(){t._element.classList.remove("showing"),t._element.classList.add("show"),o.default(t._element).trigger("shown.bs.toast"),t._config.autohide&&(t._timeout=setTimeout((function(){t.hide()}),t._config.delay))};if(this._element.classList.remove("hide"),d.reflow(this._element),this._element.classList.add("showing"),this._config.animation){var i=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,n).emulateTransitionEnd(i)}else n()}},e.hide=function(){if(this._element.classList.contains("show")){var t=o.default.Event("hide.bs.toast");o.default(this._element).trigger(t),t.isDefaultPrevented()||this._close()}},e.dispose=function(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),o.default(this._element).off("click.dismiss.bs.toast"),o.default.removeData(this._element,"bs.toast"),this._element=null,this._config=null},e._getConfig=function(t){return t=l({},pt,o.default(this._element).data(),"object"==typeof t&&t?t:{}),d.typeCheckConfig(ct,t,this.constructor.DefaultType),t},e._setListeners=function(){var t=this;o.default(this._element).on("click.dismiss.bs.toast",'[data-dismiss="toast"]',(function(){return t.hide()}))},e._close=function(){var t=this,e=function(){t._element.classList.add("hide"),o.default(t._element).trigger("hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){var n=d.getTransitionDurationFromElement(this._element);o.default(this._element).one(d.TRANSITION_END,e).emulateTransitionEnd(n)}else e()},e._clearTimeout=function(){clearTimeout(this._timeout),this._timeout=null},t._jQueryInterface=function(e){return this.each((function(){var n=o.default(this),i=n.data("bs.toast");if(i||(i=new t(this,"object"==typeof e&&e),n.data("bs.toast",i)),"string"==typeof e){if(void 0===i[e])throw new TypeError('No method named "'+e+'"');i[e](this)}}))},s(t,null,[{key:"VERSION",get:function(){return"4.6.1"}},{key:"DefaultType",get:function(){return mt}},{key:"Default",get:function(){return pt}}]),t}();o.default.fn[ct]=gt._jQueryInterface,o.default.fn[ct].Constructor=gt,o.default.fn[ct].noConflict=function(){return o.default.fn[ct]=ht,gt._jQueryInterface},t.Alert=h,t.Button=m,t.Carousel=E,t.Collapse=D,t.Dropdown=j,t.Modal=R,t.Popover=ot,t.Scrollspy=ut,t.Tab=dt,t.Toast=gt,t.Tooltip=G,t.Util=d,Object.defineProperty(t,"__esModule",{value:!0})}(e,n(0),n(1))},function(t,e){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(t){"object"==typeof window&&(n=window)}t.exports=n},function(t,e,n){"use strict";n.r(e);n(0),n(3),n.p;$((function(){var t=document.querySelector("div.bd-sidebar");let e=parseInt(sessionStorage.getItem("sidebar-scroll-top"),10);if(isNaN(e)){var n=document.getElementById("bd-docs-nav").querySelectorAll(".active");if(n.length>0){var i=n[n.length-1],o=i.getBoundingClientRect().y-t.getBoundingClientRect().y;if(i.getBoundingClientRect().y>.5*window.innerHeight){let e=.25;t.scrollTop=o-t.clientHeight*e,console.log("[PST]: Scrolled sidebar using last active link...")}}}else t.scrollTop=e,console.log("[PST]: Scrolled sidebar using stored browser position...");window.addEventListener("beforeunload",()=>{sessionStorage.setItem("sidebar-scroll-top",t.scrollTop)})})),$((function(){$(window).on("activate.bs.scrollspy",(function(){document.querySelectorAll("#bd-toc-nav a").forEach(t=>{t.parentElement.classList.remove("active")});document.querySelectorAll("#bd-toc-nav a.active").forEach(t=>{t.parentElement.classList.add("active")})}))}))}]); \ No newline at end of file diff --git a/docs/_static/scripts/sphinx-book-theme.js b/docs/_static/scripts/sphinx-book-theme.js new file mode 100644 index 0000000..a8a305e --- /dev/null +++ b/docs/_static/scripts/sphinx-book-theme.js @@ -0,0 +1,2 @@ +!function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){e.exports=n(1)},function(e,t,n){"use strict";n.r(t);n.p;var o=e=>{"loading"!=document.readyState?e():document.addEventListener?document.addEventListener("DOMContentLoaded",e):document.attachEvent("onreadystatechange",(function(){"complete"==document.readyState&&e()}))};window.initThebeSBT=()=>{var e=$("div.section h1")[0];$(e).next().hasClass("thebe-launch-button")||$("").insertAfter($(e)),initThebe()},window.printPdf=e=>{let t=$(e).attr("aria-describedby"),n=$("#"+t).detach();window.print(),$("body").append(n)},window.toggleFullScreen=()=>{var e=document.fullscreenElement&&null!==document.fullscreenElement||document.webkitFullscreenElement&&null!==document.webkitFullscreenElement;let t=document.documentElement;e?(console.log("[SBT]: Exiting full screen"),document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()):(console.log("[SBT]: Entering full screen"),t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullscreen&&t.webkitRequestFullscreen())},o(()=>{$(document).ready((function(){$('[data-toggle="tooltip"]').tooltip({trigger:"hover",delay:{show:500,hide:100}})}))}),o(()=>{var e=document.getElementById("site-navigation"),t=e.querySelectorAll(".active"),n=t[t.length-1];void 0!==n&&n.offsetTop>.5*$(window).height()&&(e.scrollTop=n.offsetTop-.2*$(window).height())}),o(()=>{var e=[];let t=new IntersectionObserver((t,n)=>{t.forEach(t=>{if(t.isIntersecting)e.push(t.target);else for(let n=0;n0?$("div.bd-toc").removeClass("show"):$("div.bd-toc").addClass("show")});let n=[];["marginnote","sidenote","margin","margin-caption","full-width","sidebar","popout"].forEach(e=>{n.push("."+e,".tag_"+e,"."+e.replace("-","_"),".tag_"+e.replace("-","_"))}),document.querySelectorAll(n.join(", ")).forEach(e=>{t.observe(e)}),new IntersectionObserver((e,t)=>{e[0].boundingClientRect.y<0?document.body.classList.add("scrolled"):document.body.classList.remove("scrolled")}).observe(document.querySelector(".sbt-scroll-pixel-helper"))}),o((function(){new MutationObserver((e,t)=>{e.forEach(e=>{0!==e.addedNodes.length&&void 0!==e.addedNodes[0].data&&-1!=e.addedNodes[0].data.search("Inserted RTD Footer")&&e.addedNodes.forEach(e=>{document.getElementById("rtd-footer-container").append(e)})})}).observe(document.body,{childList:!0})}))}]); +//# sourceMappingURL=sphinx-book-theme.js.map \ No newline at end of file diff --git a/docs/_static/scripts/sphinx-book-theme.js.map b/docs/_static/scripts/sphinx-book-theme.js.map new file mode 100644 index 0000000..dccd768 --- /dev/null +++ b/docs/_static/scripts/sphinx-book-theme.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/sphinx_book_theme/assets/styles/index.scss","webpack:///./src/sphinx_book_theme/assets/scripts/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","sbRunWhenDOMLoaded","cb","document","readyState","addEventListener","attachEvent","window","initThebeSBT","title","$","next","hasClass","insertAfter","initThebe","printPdf","el","tooltipID","attr","tooltipTextDiv","detach","print","append","toggleFullScreen","isInFullScreen","fullscreenElement","webkitFullscreenElement","docElm","documentElement","console","log","exitFullscreen","webkitExitFullscreen","requestFullscreen","webkitRequestFullscreen","ready","tooltip","trigger","delay","show","hide","navbar","getElementById","active_pages","querySelectorAll","active_page","length","undefined","offsetTop","height","scrollTop","onScreenItems","tocObserver","IntersectionObserver","entries","observer","forEach","entry","isIntersecting","push","target","ii","splice","removeClass","addClass","marginSelector","replace","join","observe","boundingClientRect","y","body","classList","add","remove","querySelector","MutationObserver","mutationList","mutation","addedNodes","data","search","node","childList"],"mappings":"aACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QAKfF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,GAIjBlC,EAAoBA,EAAoBmC,EAAI,G,sEClFtC,QCSXC,EAAsBC,IACG,WAAvBC,SAASC,WACXF,IACSC,SAASE,iBAClBF,SAASE,iBAAiB,mBAAoBH,GAE9CC,SAASG,YAAY,sBAAsB,WACd,YAAvBH,SAASC,YAA0BF,QAyM7CK,OAAOC,aAjDY,KACjB,IAAIC,EAAQC,EAAE,kBAAkB,GAC3BA,EAAED,GAAOE,OAAOC,SAAS,wBAC5BF,EAAE,iDAAiDG,YAAYH,EAAED,IAEnEK,aA6CFP,OAAOQ,SAhJSC,IAGd,IAAIC,EAAYP,EAAEM,GAAIE,KAAK,oBACvBC,EAAiBT,EAAE,IAAMO,GAAWG,SACxCb,OAAOc,QACPX,EAAE,QAAQY,OAAOH,IA2InBZ,OAAOgB,iBA/LgB,KACrB,IAAIC,EACDrB,SAASsB,mBAAoD,OAA/BtB,SAASsB,mBACvCtB,SAASuB,yBAC6B,OAArCvB,SAASuB,wBACb,IAAIC,EAASxB,SAASyB,gBACjBJ,GAQHK,QAAQC,IAAI,8BACR3B,SAAS4B,eACX5B,SAAS4B,iBACA5B,SAAS6B,sBAClB7B,SAAS6B,yBAXXH,QAAQC,IAAI,+BACRH,EAAOM,kBACTN,EAAOM,oBACEN,EAAOO,yBAChBP,EAAOO,4BAyLbjC,EA7CmB,KACjBS,EAAEP,UAAUgC,OAAM,WAChBzB,EAAE,2BAA2B0B,QAAQ,CACnCC,QAAS,QACTC,MAAO,CAAEC,KAAM,IAAKC,KAAM,YA0ChCvC,EAxKqB,KACnB,IAAIwC,EAAStC,SAASuC,eAAe,mBACjCC,EAAeF,EAAOG,iBAAiB,WACvCC,EAAcF,EAAaA,EAAaG,OAAS,QAGnCC,IAAhBF,GACAA,EAAYG,UAAiC,GAArBtC,EAAEH,QAAQ0C,WAElCR,EAAOS,UAAYL,EAAYG,UAAiC,GAArBtC,EAAEH,QAAQ0C,YAgKzDhD,EAjIkB,KAChB,IAAIkD,EAAgB,GACpB,IAkCIC,EAAc,IAAIC,qBAlCA,CAACC,EAASC,KAE9BD,EAAQE,QAASC,IACf,GAAIA,EAAMC,eAERP,EAAcQ,KAAKF,EAAMG,aAGzB,IAAK,IAAIC,EAAK,EAAGA,EAAKV,EAAcL,OAAQe,IAC1C,GAAIV,EAAcU,KAAQJ,EAAMG,OAAQ,CACtCT,EAAcW,OAAOD,EAAI,GACzB,SAOJV,EAAcL,OAAS,EACzBpC,EAAE,cAAcqD,YAAY,QAE5BrD,EAAE,cAAcsD,SAAS,UAwB7B,IAAIC,EAAiB,GATG,CACtB,aACA,WACA,SACA,iBACA,aACA,UACA,UAGcT,QAASK,IAEvBI,EAAeN,KAEX,IAAIE,EACJ,QAAQA,EACR,IAAIA,EAAGK,QAAQ,IAAK,KACpB,QAAQL,EAAGK,QAAQ,IAAK,QAI9B/D,SAASyC,iBAAiBqB,EAAeE,KAAK,OAAOX,QAASK,IAC5DT,EAAYgB,QAAQP,KAID,IAAIR,qBAtCO,CAACC,EAASC,KAEpCD,EAAQ,GAAGe,mBAAmBC,EAAI,EACpCnE,SAASoE,KAAKC,UAAUC,IAAI,YAE5BtE,SAASoE,KAAKC,UAAUE,OAAO,cAkCpBN,QAAQjE,SAASwE,cAAc,+BAiEhD1E,GApCA,WAkBmB,IAAI2E,iBAjBG,CAACC,EAActB,KACrCsB,EAAarB,QAASsB,IAEe,IAA/BA,EAASC,WAAWjC,aAGYC,IAAhC+B,EAASC,WAAW,GAAGC,OAGuC,GAA9DF,EAASC,WAAW,GAAGC,KAAKC,OAAO,wBACrCH,EAASC,WAAWvB,QAAS0B,IAC3B/E,SAASuC,eAAe,wBAAwBpB,OAAO4D,SAQtDd,QAAQjE,SAASoE,KADX,CAAEY,WAAW","file":"scripts/sphinx-book-theme.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","export default __webpack_public_path__ + \"styles/sphinx-book-theme.css\";","// Import CSS variables\n// ref: https://css-tricks.com/getting-javascript-to-talk-to-css-and-sass/\nimport \"../styles/index.scss\";\n\n/**\n * A helper function to load scripts when the DOM is loaded.\n * This waits for everything to be on the page first before running, since\n * some functionality doesn't behave properly until everything is ready.\n */\nvar sbRunWhenDOMLoaded = (cb) => {\n if (document.readyState != \"loading\") {\n cb();\n } else if (document.addEventListener) {\n document.addEventListener(\"DOMContentLoaded\", cb);\n } else {\n document.attachEvent(\"onreadystatechange\", function () {\n if (document.readyState == \"complete\") cb();\n });\n }\n};\n\n/**\n * Toggle full-screen with button\n *\n * There are some browser-specific hacks in here:\n * - Safari requires a `webkit` prefix, so this uses conditionals to check for that\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API\n */\nvar toggleFullScreen = () => {\n var isInFullScreen =\n (document.fullscreenElement && document.fullscreenElement !== null) ||\n (document.webkitFullscreenElement &&\n document.webkitFullscreenElement !== null);\n let docElm = document.documentElement;\n if (!isInFullScreen) {\n console.log(\"[SBT]: Entering full screen\");\n if (docElm.requestFullscreen) {\n docElm.requestFullscreen();\n } else if (docElm.webkitRequestFullscreen) {\n docElm.webkitRequestFullscreen();\n }\n } else {\n console.log(\"[SBT]: Exiting full screen\");\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n }\n }\n};\n\n/**\n * Sidebar scroll on load.\n *\n * Detect the active page in the sidebar, and scroll so that it is centered on\n * the screen.\n */\nvar scrollToActive = () => {\n var navbar = document.getElementById(\"site-navigation\");\n var active_pages = navbar.querySelectorAll(\".active\");\n var active_page = active_pages[active_pages.length - 1];\n // Only scroll the navbar if the active link is lower than 50% of the page\n if (\n active_page !== undefined &&\n active_page.offsetTop > $(window).height() * 0.5\n ) {\n navbar.scrollTop = active_page.offsetTop - $(window).height() * 0.2;\n }\n};\n\n/**\n * Called when the \"print to PDF\" button is clicked.\n * This is a hack to prevent tooltips from showing up in the printed PDF.\n */\nvar printPdf = (el) => {\n // Detach the tooltip text from DOM to hide in PDF\n // and then reattach it for HTML\n let tooltipID = $(el).attr(\"aria-describedby\");\n let tooltipTextDiv = $(\"#\" + tooltipID).detach();\n window.print();\n $(\"body\").append(tooltipTextDiv);\n};\n\n/**\n * Manage scrolling behavior. This is primarily two things:\n *\n * 1. Hide the Table of Contents any time sidebar content is on the screen.\n *\n * This will be triggered any time a sidebar item enters or exits the screen.\n * It adds/removes items from an array if they have entered the screen, and\n * removes them when they exit the screen. It hides the TOC if anything is\n * on-screen.\n *\n * ref: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API\n *\n * 2. Add a `scrolled` class to to trigger CSS changes.\n */\nvar initTocHide = () => {\n var onScreenItems = [];\n let hideTocCallback = (entries, observer) => {\n // Check whether any sidebar item is displayed\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n // If an element just came on screen, add it our list\n onScreenItems.push(entry.target);\n } else {\n // Otherwise, if it's in our list then remove it\n for (let ii = 0; ii < onScreenItems.length; ii++) {\n if (onScreenItems[ii] === entry.target) {\n onScreenItems.splice(ii, 1);\n break;\n }\n }\n }\n });\n\n // Hide the TOC if any margin content is displayed on the screen\n if (onScreenItems.length > 0) {\n $(\"div.bd-toc\").removeClass(\"show\");\n } else {\n $(\"div.bd-toc\").addClass(\"show\");\n }\n };\n let manageScrolledClassOnBody = (entries, observer) => {\n // The pixel is at the top, so if we're < 0 that it means we've scrolled\n if (entries[0].boundingClientRect.y < 0) {\n document.body.classList.add(\"scrolled\");\n } else {\n document.body.classList.remove(\"scrolled\");\n }\n };\n\n // Set up the intersection observer to watch all margin content\n let tocObserver = new IntersectionObserver(hideTocCallback);\n // TODO: deprecate popout after v0.5.0\n const selectorClasses = [\n \"marginnote\",\n \"sidenote\",\n \"margin\",\n \"margin-caption\",\n \"full-width\",\n \"sidebar\",\n \"popout\",\n ];\n let marginSelector = [];\n selectorClasses.forEach((ii) => {\n // Use three permutations of each class name because `tag_` and `_` used to be supported\n marginSelector.push(\n ...[\n `.${ii}`,\n `.tag_${ii}`,\n `.${ii.replace(\"-\", \"_\")}`,\n `.tag_${ii.replace(\"-\", \"_\")}`,\n ]\n );\n });\n document.querySelectorAll(marginSelector.join(\", \")).forEach((ii) => {\n tocObserver.observe(ii);\n });\n\n // Set up the observer to check if we've scrolled from top of page\n let scrollObserver = new IntersectionObserver(manageScrolledClassOnBody);\n scrollObserver.observe(document.querySelector(\".sbt-scroll-pixel-helper\"));\n};\n\n/**\n * Activate Thebe with a custom button click.\n */\nvar initThebeSBT = () => {\n var title = $(\"div.section h1\")[0];\n if (!$(title).next().hasClass(\"thebe-launch-button\")) {\n $(\"\").insertAfter($(title));\n }\n initThebe();\n};\n\n/**\n * Use Bootstrap helper function to enable tooltips.\n */\nvar initTooltips = () => {\n $(document).ready(function () {\n $('[data-toggle=\"tooltip\"]').tooltip({\n trigger: \"hover\",\n delay: { show: 500, hide: 100 },\n });\n });\n};\n\n/**\n * MutationObserver to move the ReadTheDocs button\n */\nfunction initRTDObserver() {\n const mutatedCallback = (mutationList, observer) => {\n mutationList.forEach((mutation) => {\n // Check whether the mutation is for RTD, which will have a specific structure\n if (mutation.addedNodes.length === 0) {\n return;\n }\n if (mutation.addedNodes[0].data === undefined) {\n return;\n }\n if (mutation.addedNodes[0].data.search(\"Inserted RTD Footer\") != -1) {\n mutation.addedNodes.forEach((node) => {\n document.getElementById(\"rtd-footer-container\").append(node);\n });\n }\n });\n };\n\n const observer = new MutationObserver(mutatedCallback);\n const config = { childList: true };\n observer.observe(document.body, config);\n}\n\n/**\n * Set up callback functions for UI click actions\n */\nwindow.initThebeSBT = initThebeSBT;\nwindow.printPdf = printPdf;\nwindow.toggleFullScreen = toggleFullScreen;\n\n/**\n * Set up functions to load when the DOM is ready\n */\nsbRunWhenDOMLoaded(initTooltips);\nsbRunWhenDOMLoaded(scrollToActive);\nsbRunWhenDOMLoaded(initTocHide);\nsbRunWhenDOMLoaded(initRTDObserver);\n"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/_static/searchtools.js b/docs/_static/searchtools.js index 58ff35c..0a44e85 100644 --- a/docs/_static/searchtools.js +++ b/docs/_static/searchtools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -172,10 +172,6 @@ var Search = { } // stem the word var word = stemmer.stemWord(tmp[i].toLowerCase()); - // prevent stemmer from cutting word smaller than two chars - if(word.length < 3 && tmp[i].length >= 3) { - word = tmp[i]; - } var toAppend; // select the correct list if (word[0] == '-') { @@ -276,7 +272,7 @@ var Search = { setTimeout(function() { displayNextItem(); }, 5); - } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) { + } else if (DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY) { $.ajax({url: requestUrl, dataType: "text", complete: function(jqxhr, textstatus) { @@ -293,7 +289,7 @@ var Search = { }, 5); }}); } else { - // no source available, just display title + // just display title Search.output.append(listItem); setTimeout(function() { displayNextItem(); @@ -328,7 +324,9 @@ var Search = { var results = []; for (var prefix in objects) { - for (var name in objects[prefix]) { + for (var iMatch = 0; iMatch != objects[prefix].length; ++iMatch) { + var match = objects[prefix][iMatch]; + var name = match[4]; var fullname = (prefix ? prefix + '.' : '') + name; var fullnameLower = fullname.toLowerCase() if (fullnameLower.indexOf(object) > -1) { @@ -342,7 +340,6 @@ var Search = { } else if (parts[parts.length - 1].indexOf(object) > -1) { score += Scorer.objPartialMatch; } - var match = objects[prefix][name]; var objname = objnames[match[1]][2]; var title = titles[match[0]]; // If more than one term searched for, we require other words to be diff --git a/docs/_static/sphinx-thebe.css b/docs/_static/sphinx-thebe.css index b19a7b0..1da2793 100644 --- a/docs/_static/sphinx-thebe.css +++ b/docs/_static/sphinx-thebe.css @@ -1,30 +1,30 @@ /* Thebelab Buttons */ .thebelab-button { - z-index: 999; - display: inline-block; - padding: 0.35em 1.2em; - margin: 0px 1px; - border-radius: 0.12em; - box-sizing: border-box; - text-decoration: none; - font-family: 'Roboto', sans-serif; - font-weight: 300; - text-align: center; - transition: all 0.2s; - background-color: #dddddd; - border: 0.05em solid white; - color: #000000; -} - -.thebelab-button:hover{ - border: 0.05em solid black; - background-color: #fcfcfc; + z-index: 999; + display: inline-block; + padding: 0.35em 1.2em; + margin: 0px 1px; + border-radius: 0.12em; + box-sizing: border-box; + text-decoration: none; + font-family: "Roboto", sans-serif; + font-weight: 300; + text-align: center; + transition: all 0.2s; + background-color: #dddddd; + border: 0.05em solid white; + color: #000000; +} + +.thebelab-button:hover { + border: 0.05em solid black; + background-color: #fcfcfc; } .thebe-launch-button { - height: 2.2em; - font-size: .8em; - border: 1px black solid; + height: 2.2em; + font-size: 0.8em; + border: 1px black solid; } /* Thebelab Cell */ @@ -33,88 +33,97 @@ } .thebelab-cell .thebelab-input { - padding-left: 1em; - margin-bottom: .5em; - margin-top: .5em; + padding-left: 1em; + margin-bottom: 0.5em; + margin-top: 0.5em; } .thebelab-cell .jp-OutputArea { - margin-top: .5em; - margin-left: 1em; + margin-top: 0.5em; + margin-left: 1em; } button.thebelab-button.thebelab-run-button { - margin-left: 1.5em; - margin-bottom: .5em; + margin-left: 1.5em; + margin-bottom: 0.5em; } /* Loading button */ button.thebe-launch-button div.spinner { - float: left; - margin-right: 1em; + float: left; + margin-right: 1em; } /* Remove the spinner when thebelab is ready */ .thebe-launch-button.thebe-status-ready .spinner { - display: none; + display: none; } .thebe-launch-button span.status { - font-family: monospace; - font-weight: bold; + font-family: monospace; + font-weight: bold; } .thebe-launch-button.thebe-status-ready span.status { - color: green; + color: green; } .spinner { - height: 2em; - text-align: center; - font-size: 0.7em; - } + height: 2em; + text-align: center; + font-size: 0.7em; +} - .spinner > div { - background-color: #F37726; - height: 100%; - width: 6px; - display: inline-block; +.spinner > div { + background-color: #f37726; + height: 100%; + width: 6px; + display: inline-block; - -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out; - animation: sk-stretchdelay 1.2s infinite ease-in-out; - } + -webkit-animation: sk-stretchdelay 1.2s infinite ease-in-out; + animation: sk-stretchdelay 1.2s infinite ease-in-out; +} - .spinner .rect2 { - -webkit-animation-delay: -1.1s; - animation-delay: -1.1s; - } +.spinner .rect2 { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} - .spinner .rect3 { - -webkit-animation-delay: -1.0s; - animation-delay: -1.0s; - } +.spinner .rect3 { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} - .spinner .rect4 { - -webkit-animation-delay: -0.9s; - animation-delay: -0.9s; - } +.spinner .rect4 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} - .spinner .rect5 { - -webkit-animation-delay: -0.8s; - animation-delay: -0.8s; - } +.spinner .rect5 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} - @-webkit-keyframes sk-stretchdelay { - 0%, 40%, 100% { -webkit-transform: scaleY(0.4) } - 20% { -webkit-transform: scaleY(1.0) } +@-webkit-keyframes sk-stretchdelay { + 0%, + 40%, + 100% { + -webkit-transform: scaleY(0.4); } + 20% { + -webkit-transform: scaleY(1); + } +} - @keyframes sk-stretchdelay { - 0%, 40%, 100% { - transform: scaleY(0.4); - -webkit-transform: scaleY(0.4); - } 20% { - transform: scaleY(1.0); - -webkit-transform: scaleY(1.0); - } +@keyframes sk-stretchdelay { + 0%, + 40%, + 100% { + transform: scaleY(0.4); + -webkit-transform: scaleY(0.4); } + 20% { + transform: scaleY(1); + -webkit-transform: scaleY(1); + } +} diff --git a/docs/_static/sphinx-thebe.js b/docs/_static/sphinx-thebe.js index 4842c44..7626dbb 100644 --- a/docs/_static/sphinx-thebe.js +++ b/docs/_static/sphinx-thebe.js @@ -1,30 +1,19 @@ /** * Add attributes to Thebe blocks to initialize thebe properly */ - -var initThebe = () => { - // If Thebelab hasn't loaded, wait a bit and try again. This - // happens because we load ClipboardJS asynchronously. - if (window.thebelab === undefined) { - console.log("thebe not loaded, retrying..."); - setTimeout(initThebe, 500) - return - } - - console.log("Adding thebe to code cells..."); - - // Load thebe config in case we want to update it as some point - thebe_config = $('script[type="text/x-thebe-config"]')[0] - - - // If we already detect a Thebe cell, don't re-run - if (document.querySelectorAll('div.thebe-cell').length > 0) { - return; - } - - // Update thebe buttons with loading message - $(".thebe-launch-button").each((ii, button) => { - button.innerHTML = ` +var configureThebe = () => { + // Load thebe config in case we want to update it as some point + console.log("[sphinx-thebe]: Loading thebe config..."); + thebe_config = $('script[type="text/x-thebe-config"]')[0]; + + // If we already detect a Thebe cell, don't re-run + if (document.querySelectorAll("div.thebe-cell").length > 0) { + return; + } + + // Update thebe buttons with loading message + $(".thebe-launch-button").each((ii, button) => { + button.innerHTML = `
@@ -32,65 +21,106 @@ var initThebe = () => {
`; - }) - - // Set thebe event hooks - var thebeStatus; - thebelab.on("status", function (evt, data) { - console.log("Status changed:", data.status, data.message); - - $(".thebe-launch-button ") - .removeClass("thebe-status-" + thebeStatus) - .addClass("thebe-status-" + data.status) - .find(".loading-text").html("Launching from mybinder.org: " + data.status + ""); + }); + + // Set thebe event hooks + var thebeStatus; + thebelab.on("status", function (evt, data) { + console.log("Status changed:", data.status, data.message); + + $(".thebe-launch-button ") + .removeClass("thebe-status-" + thebeStatus) + .addClass("thebe-status-" + data.status) + .find(".loading-text") + .html( + "Launching from mybinder.org: " + + data.status + + "" + ); + + // Now update our thebe status + thebeStatus = data.status; + + // Find any cells with an initialization tag and ask thebe to run them when ready + if (data.status === "ready") { + var thebeInitCells = document.querySelectorAll( + ".thebe-init, .tag_thebe-init" + ); + thebeInitCells.forEach((cell) => { + console.log("Initializing Thebe with cell: " + cell.id); + cell.querySelector(".thebelab-run-button").click(); + }); + } + }); +}; - // Now update our thebe status - thebeStatus = data.status; +/** + * Update the page DOM to use Thebe elements + */ +var modifyDOMForThebe = () => { + // Find all code cells, replace with Thebe interactive code cells + const codeCells = document.querySelectorAll(thebe_selector); + codeCells.forEach((codeCell, index) => { + const codeCellId = (index) => `codecell${index}`; + codeCell.id = codeCellId(index); + codeCellText = codeCell.querySelector(thebe_selector_input); + codeCellOutput = codeCell.querySelector(thebe_selector_output); + + // Clean up the language to make it work w/ CodeMirror and add it to the cell + dataLanguage = detectLanguage(kernelName); + + // Re-arrange the cell and add metadata + if (codeCellText) { + codeCellText.setAttribute("data-language", dataLanguage); + codeCellText.setAttribute("data-executable", "true"); + + // If we had an output, insert it just after the `pre` cell + if (codeCellOutput) { + $(codeCellOutput).attr("data-output", ""); + $(codeCellOutput).insertAfter(codeCellText); + } + } - // Find any cells with an initialization tag and ask thebe to run them when ready - if (data.status === "ready") { - var thebeInitCells = document.querySelectorAll('.thebe-init, .tag_thebe-init'); - thebeInitCells.forEach((cell) => { - console.log("Initializing Thebe with cell: " + cell.id); - cell.querySelector('.thebelab-run-button').click(); - }); - } + // Remove sphinx-copybutton blocks, which are common in Sphinx + codeCell.querySelectorAll("button.copybtn").forEach((el) => { + el.remove(); }); + }); +}; - - // Find all code cells, replace with Thebe interactive code cells - const codeCells = document.querySelectorAll(thebe_selector) - codeCells.forEach((codeCell, index) => { - const codeCellId = index => `codecell${index}`; - codeCell.id = codeCellId(index); - codeCellText = codeCell.querySelector(thebe_selector_input); - codeCellOutput = codeCell.querySelector(thebe_selector_output); - - // Clean up the language to make it work w/ CodeMirror and add it to the cell - dataLanguage = detectLanguage(kernelName); - - if (codeCellText) { - codeCellText.setAttribute('data-language', dataLanguage); - codeCellText.setAttribute('data-executable', 'true'); - - // If we had an output, insert it just after the `pre` cell - if (codeCellOutput) { - $(codeCellOutput).attr("data-output", ""); - $(codeCellOutput).insertAfter(codeCellText); - } - } +var initThebe = () => { + // Load thebe dynamically if it's not already loaded + if (typeof thebelab === "undefined") { + console.log("[sphinx-thebe]: Loading thebe from CDN..."); + $(".thebe-launch-button ").text("Loading thebe from CDN..."); + + const script = document.createElement("script"); + script.src = `${THEBE_JS_URL}`; + document.head.appendChild(script); + + // Runs once the script has finished loading + script.addEventListener("load", () => { + console.log("[sphinx-thebe]: Finished loading thebe from CDN..."); + configureThebe(); + modifyDOMForThebe(); + thebelab.bootstrap(); }); - - // Init thebe + } else { + console.log( + "[sphinx-thebe]: thebe already loaded, not loading from CDN..." + ); + configureThebe(); + modifyDOMForThebe(); thebelab.bootstrap(); -} + } +}; // Helper function to munge the language name var detectLanguage = (language) => { - if (language.indexOf('python') > -1) { - language = "python"; - } else if (language === 'ir') { - language = "r" - } - return language; -} + if (language.indexOf("python") > -1) { + language = "python"; + } else if (language === "ir") { + language = "r"; + } + return language; +}; diff --git a/docs/_static/styles/pydata-sphinx-theme.css b/docs/_static/styles/pydata-sphinx-theme.css new file mode 100644 index 0000000..cad3221 --- /dev/null +++ b/docs/_static/styles/pydata-sphinx-theme.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v4.6.1 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:540px;--breakpoint-md:720px;--breakpoint-lg:960px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,:after,:before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-size:1rem;line-height:1.5;color:#212529;text-align:left}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;text-decoration:underline dotted;cursor:help;border-bottom:0;text-decoration-skip-ink:none}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;background-color:transparent}a:hover{color:#0056b3}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{border-style:none}img,svg{vertical-align:middle}svg{overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem}.display-1,.display-2{font-weight:300;line-height:1.2}.display-2{font-size:5.5rem}.display-3{font-size:4.5rem}.display-3,.display-4{font-weight:300;line-height:1.2}.display-4{font-size:3.5rem}hr{margin-top:1rem;margin-bottom:1rem;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer:before{content:"\2014\00A0"}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:540px){.container,.container-sm{max-width:540px}}@media (min-width:720px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:960px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1400px}}.row{display:flex;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-10,.col-11,.col-12,.col-auto,.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-auto,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-md-auto,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-auto{position:relative;width:100%;padding-right:15px;padding-left:15px}.col{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-1>*{flex:0 0 100%;max-width:100%}.row-cols-2>*{flex:0 0 50%;max-width:50%}.row-cols-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-4>*{flex:0 0 25%;max-width:25%}.row-cols-5>*{flex:0 0 20%;max-width:20%}.row-cols-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-auto{flex:0 0 auto;width:auto;max-width:100%}.col-1{flex:0 0 8.33333%;max-width:8.33333%}.col-2{flex:0 0 16.66667%;max-width:16.66667%}.col-3{flex:0 0 25%;max-width:25%}.col-4{flex:0 0 33.33333%;max-width:33.33333%}.col-5{flex:0 0 41.66667%;max-width:41.66667%}.col-6{flex:0 0 50%;max-width:50%}.col-7{flex:0 0 58.33333%;max-width:58.33333%}.col-8{flex:0 0 66.66667%;max-width:66.66667%}.col-9{flex:0 0 75%;max-width:75%}.col-10{flex:0 0 83.33333%;max-width:83.33333%}.col-11{flex:0 0 91.66667%;max-width:91.66667%}.col-12{flex:0 0 100%;max-width:100%}.order-first{order:-1}.order-last{order:13}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-6{order:6}.order-7{order:7}.order-8{order:8}.order-9{order:9}.order-10{order:10}.order-11{order:11}.order-12{order:12}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}@media (min-width:540px){.col-sm{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-sm-1>*{flex:0 0 100%;max-width:100%}.row-cols-sm-2>*{flex:0 0 50%;max-width:50%}.row-cols-sm-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-sm-4>*{flex:0 0 25%;max-width:25%}.row-cols-sm-5>*{flex:0 0 20%;max-width:20%}.row-cols-sm-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-auto{flex:0 0 auto;width:auto;max-width:100%}.col-sm-1{flex:0 0 8.33333%;max-width:8.33333%}.col-sm-2{flex:0 0 16.66667%;max-width:16.66667%}.col-sm-3{flex:0 0 25%;max-width:25%}.col-sm-4{flex:0 0 33.33333%;max-width:33.33333%}.col-sm-5{flex:0 0 41.66667%;max-width:41.66667%}.col-sm-6{flex:0 0 50%;max-width:50%}.col-sm-7{flex:0 0 58.33333%;max-width:58.33333%}.col-sm-8{flex:0 0 66.66667%;max-width:66.66667%}.col-sm-9{flex:0 0 75%;max-width:75%}.col-sm-10{flex:0 0 83.33333%;max-width:83.33333%}.col-sm-11{flex:0 0 91.66667%;max-width:91.66667%}.col-sm-12{flex:0 0 100%;max-width:100%}.order-sm-first{order:-1}.order-sm-last{order:13}.order-sm-0{order:0}.order-sm-1{order:1}.order-sm-2{order:2}.order-sm-3{order:3}.order-sm-4{order:4}.order-sm-5{order:5}.order-sm-6{order:6}.order-sm-7{order:7}.order-sm-8{order:8}.order-sm-9{order:9}.order-sm-10{order:10}.order-sm-11{order:11}.order-sm-12{order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:720px){.col-md{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-md-1>*{flex:0 0 100%;max-width:100%}.row-cols-md-2>*{flex:0 0 50%;max-width:50%}.row-cols-md-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-md-4>*{flex:0 0 25%;max-width:25%}.row-cols-md-5>*{flex:0 0 20%;max-width:20%}.row-cols-md-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-md-auto{flex:0 0 auto;width:auto;max-width:100%}.col-md-1{flex:0 0 8.33333%;max-width:8.33333%}.col-md-2{flex:0 0 16.66667%;max-width:16.66667%}.col-md-3{flex:0 0 25%;max-width:25%}.col-md-4{flex:0 0 33.33333%;max-width:33.33333%}.col-md-5{flex:0 0 41.66667%;max-width:41.66667%}.col-md-6{flex:0 0 50%;max-width:50%}.col-md-7{flex:0 0 58.33333%;max-width:58.33333%}.col-md-8{flex:0 0 66.66667%;max-width:66.66667%}.col-md-9{flex:0 0 75%;max-width:75%}.col-md-10{flex:0 0 83.33333%;max-width:83.33333%}.col-md-11{flex:0 0 91.66667%;max-width:91.66667%}.col-md-12{flex:0 0 100%;max-width:100%}.order-md-first{order:-1}.order-md-last{order:13}.order-md-0{order:0}.order-md-1{order:1}.order-md-2{order:2}.order-md-3{order:3}.order-md-4{order:4}.order-md-5{order:5}.order-md-6{order:6}.order-md-7{order:7}.order-md-8{order:8}.order-md-9{order:9}.order-md-10{order:10}.order-md-11{order:11}.order-md-12{order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:960px){.col-lg{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-lg-1>*{flex:0 0 100%;max-width:100%}.row-cols-lg-2>*{flex:0 0 50%;max-width:50%}.row-cols-lg-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-lg-4>*{flex:0 0 25%;max-width:25%}.row-cols-lg-5>*{flex:0 0 20%;max-width:20%}.row-cols-lg-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-auto{flex:0 0 auto;width:auto;max-width:100%}.col-lg-1{flex:0 0 8.33333%;max-width:8.33333%}.col-lg-2{flex:0 0 16.66667%;max-width:16.66667%}.col-lg-3{flex:0 0 25%;max-width:25%}.col-lg-4{flex:0 0 33.33333%;max-width:33.33333%}.col-lg-5{flex:0 0 41.66667%;max-width:41.66667%}.col-lg-6{flex:0 0 50%;max-width:50%}.col-lg-7{flex:0 0 58.33333%;max-width:58.33333%}.col-lg-8{flex:0 0 66.66667%;max-width:66.66667%}.col-lg-9{flex:0 0 75%;max-width:75%}.col-lg-10{flex:0 0 83.33333%;max-width:83.33333%}.col-lg-11{flex:0 0 91.66667%;max-width:91.66667%}.col-lg-12{flex:0 0 100%;max-width:100%}.order-lg-first{order:-1}.order-lg-last{order:13}.order-lg-0{order:0}.order-lg-1{order:1}.order-lg-2{order:2}.order-lg-3{order:3}.order-lg-4{order:4}.order-lg-5{order:5}.order-lg-6{order:6}.order-lg-7{order:7}.order-lg-8{order:8}.order-lg-9{order:9}.order-lg-10{order:10}.order-lg-11{order:11}.order-lg-12{order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl{flex-basis:0;flex-grow:1;max-width:100%}.row-cols-xl-1>*{flex:0 0 100%;max-width:100%}.row-cols-xl-2>*{flex:0 0 50%;max-width:50%}.row-cols-xl-3>*{flex:0 0 33.33333%;max-width:33.33333%}.row-cols-xl-4>*{flex:0 0 25%;max-width:25%}.row-cols-xl-5>*{flex:0 0 20%;max-width:20%}.row-cols-xl-6>*{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-auto{flex:0 0 auto;width:auto;max-width:100%}.col-xl-1{flex:0 0 8.33333%;max-width:8.33333%}.col-xl-2{flex:0 0 16.66667%;max-width:16.66667%}.col-xl-3{flex:0 0 25%;max-width:25%}.col-xl-4{flex:0 0 33.33333%;max-width:33.33333%}.col-xl-5{flex:0 0 41.66667%;max-width:41.66667%}.col-xl-6{flex:0 0 50%;max-width:50%}.col-xl-7{flex:0 0 58.33333%;max-width:58.33333%}.col-xl-8{flex:0 0 66.66667%;max-width:66.66667%}.col-xl-9{flex:0 0 75%;max-width:75%}.col-xl-10{flex:0 0 83.33333%;max-width:83.33333%}.col-xl-11{flex:0 0 91.66667%;max-width:91.66667%}.col-xl-12{flex:0 0 100%;max-width:100%}.order-xl-first{order:-1}.order-xl-last{order:13}.order-xl-0{order:0}.order-xl-1{order:1}.order-xl-2{order:2}.order-xl-3{order:3}.order-xl-4{order:4}.order-xl-5{order:5}.order-xl-6{order:6}.order-xl-7{order:7}.order-xl-8{order:8}.order-xl-9{order:9}.order-xl-10{order:10}.order-xl-11{order:11}.order-xl-12{order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;margin-bottom:1rem;color:#212529}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{color:#212529;background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-primary tbody+tbody,.table-primary td,.table-primary th,.table-primary thead th{border-color:#7abaff}.table-hover .table-primary:hover,.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-secondary tbody+tbody,.table-secondary td,.table-secondary th,.table-secondary thead th{border-color:#b3b7bb}.table-hover .table-secondary:hover,.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-success tbody+tbody,.table-success td,.table-success th,.table-success thead th{border-color:#8fd19e}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-info tbody+tbody,.table-info td,.table-info th,.table-info thead th{border-color:#86cfda}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-warning tbody+tbody,.table-warning td,.table-warning th,.table-warning thead th{border-color:#ffdf7e}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-danger tbody+tbody,.table-danger td,.table-danger th,.table-danger thead th{border-color:#ed969e}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-light tbody+tbody,.table-light td,.table-light th,.table-light thead th{border-color:#fbfcfc}.table-hover .table-light:hover,.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#95999c}.table-hover .table-dark:hover,.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#343a40;border-color:#454d55}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#343a40}.table-dark td,.table-dark th,.table-dark thead th{border-color:#454d55}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:hsla(0,0%,100%,.05)}.table-dark.table-hover tbody tr:hover{color:#fff;background-color:hsla(0,0%,100%,.075)}@media (max-width:539.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:719.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-md>.table-bordered{border:0}}@media (max-width:959.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}input[type=date].form-control,input[type=datetime-local].form-control,input[type=month].form-control,input[type=time].form-control{appearance:none}select.form-control:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;font-size:1rem;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.form-control-lg{height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}select.form-control[multiple],select.form-control[size],textarea.form-control{height:auto}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:flex;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:inline-flex;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(40,167,69,.9);border-radius:.25rem}.form-row>.col>.valid-tooltip,.form-row>[class*=col-]>.valid-tooltip{left:5px}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#28a745;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.was-validated select.form-control:valid,select.form-control.is-valid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-valid,.was-validated .custom-select:valid{border-color:#28a745;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-valid:focus,.was-validated .custom-select:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label:before,.was-validated .custom-control-input:valid~.custom-control-label:before{border-color:#28a745}.custom-control-input.is-valid:checked~.custom-control-label:before,.was-validated .custom-control-input:valid:checked~.custom-control-label:before{border-color:#34ce57;background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label:before,.was-validated .custom-control-input:valid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-control-input.is-valid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-control-input:valid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;left:0;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;line-height:1.5;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.25rem}.form-row>.col>.invalid-tooltip,.form-row>[class*=col-]>.invalid-tooltip{left:5px}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem)!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.was-validated select.form-control:invalid,select.form-control.is-invalid{padding-right:3rem!important;background-position:right 1.5rem center}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.custom-select.is-invalid,.was-validated .custom-select:invalid{border-color:#dc3545;padding-right:calc(.75em + 2.3125rem)!important;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat,#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545'%3E%3Ccircle cx='6' cy='6' r='4.5'/%3E%3Cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3E%3Ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3E%3C/svg%3E") center right 1.75rem/calc(.75em + .375rem) calc(.75em + .375rem) no-repeat}.custom-select.is-invalid:focus,.was-validated .custom-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label:before,.was-validated .custom-control-input:invalid~.custom-control-label:before{border-color:#dc3545}.custom-control-input.is-invalid:checked~.custom-control-label:before,.was-validated .custom-control-input:invalid:checked~.custom-control-label:before{border-color:#e4606d;background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label:before,.was-validated .custom-control-input:invalid:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-control-input.is-invalid:focus:not(:checked)~.custom-control-label:before,.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-control-input:invalid:focus:not(:checked)~.custom-control-label:before,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:flex;flex-flow:row wrap;align-items:center}.form-inline .form-check{width:100%}@media (min-width:540px){.form-inline label{justify-content:center}.form-inline .form-group,.form-inline label{display:flex;align-items:center;margin-bottom:0}.form-inline .form-group{flex:0 0 auto;flex-flow:row wrap}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:flex;align-items:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;flex-shrink:0;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{align-items:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;color:#212529;text-align:center;vertical-align:middle;user-select:none;background-color:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:#212529;text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(130,138,145,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(72,180,97,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(58,176,195,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(222,170,12,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(225,83,97,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light.focus,.btn-light:focus,.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(216,217,219,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark.focus,.btn-dark:focus,.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(82,88,93,.5)}.btn-outline-primary{color:#007bff;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;text-decoration:none}.btn-link:hover{color:#0056b3}.btn-link.focus,.btn-link:focus,.btn-link:hover{text-decoration:underline}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty:after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-left{right:auto;left:0}.dropdown-menu-right{right:0;left:auto}@media (min-width:540px){.dropdown-menu-sm-left{right:auto;left:0}.dropdown-menu-sm-right{right:0;left:auto}}@media (min-width:720px){.dropdown-menu-md-left{right:auto;left:0}.dropdown-menu-md-right{right:0;left:auto}}@media (min-width:960px){.dropdown-menu-lg-left{right:auto;left:0}.dropdown-menu-lg-right{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-left{right:auto;left:0}.dropdown-menu-xl-right{right:0;left:auto}}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty:after{margin-left:0}.dropright .dropdown-toggle:after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle:after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropleft .dropdown-toggle:before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty:after{margin-left:0}.dropleft .dropdown-toggle:before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#e9ecef}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#adb5bd;pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split:after,.dropright .dropdown-toggle-split:after,.dropup .dropdown-toggle-split:after{margin-left:0}.dropleft .dropdown-toggle-split:before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio],.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control,.input-group>.form-control-plaintext{position:relative;flex:1 1 auto;width:1%;min-width:0;margin-bottom:0}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control,.input-group>.form-control-plaintext+.custom-file,.input-group>.form-control-plaintext+.custom-select,.input-group>.form-control-plaintext+.form-control{margin-left:-1px}.input-group>.custom-file .custom-file-input:focus~.custom-file-label,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file .custom-file-input:focus{z-index:4}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:flex;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label:after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label,.input-group.has-validation>.custom-file:nth-last-child(n+3) .custom-file-label:after,.input-group.has-validation>.custom-select:nth-last-child(n+3),.input-group.has-validation>.form-control:nth-last-child(n+3),.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label,.input-group:not(.has-validation)>.custom-file:not(:last-child) .custom-file-label:after,.input-group:not(.has-validation)>.custom-select:not(:last-child),.input-group:not(.has-validation)>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-append,.input-group-prepend{display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn:focus,.input-group-prepend .btn:focus{z-index:3}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group-lg>.custom-select,.input-group-lg>.form-control:not(textarea){height:calc(1.5em + 1rem + 2px)}.input-group-lg>.custom-select,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-sm>.custom-select,.input-group-sm>.form-control:not(textarea){height:calc(1.5em + .5rem + 2px)}.input-group-sm>.custom-select,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-lg>.custom-select,.input-group-sm>.custom-select{padding-right:1.75rem}.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.btn,.input-group.has-validation>.input-group-append:nth-last-child(n+3)>.input-group-text,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.btn,.input-group:not(.has-validation)>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;z-index:1;display:block;min-height:1.5rem;padding-left:1.5rem;color-adjust:exact}.custom-control-inline{display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;left:0;z-index:-1;width:1rem;height:1.25rem;opacity:0}.custom-control-input:checked~.custom-control-label:before{color:#fff;border-color:#007bff;background-color:#007bff}.custom-control-input:focus~.custom-control-label:before{box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:focus:not(:checked)~.custom-control-label:before{border-color:#80bdff}.custom-control-input:not(:disabled):active~.custom-control-label:before{color:#fff;background-color:#b3d7ff;border-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label,.custom-control-input[disabled]~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label:before,.custom-control-input[disabled]~.custom-control-label:before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0;vertical-align:top}.custom-control-label:before{pointer-events:none;background-color:#fff;border:1px solid #adb5bd}.custom-control-label:after,.custom-control-label:before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:""}.custom-control-label:after{background:50%/50% 50% no-repeat}.custom-checkbox .custom-control-label:before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26l2.974 2.99L8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:before{border-color:#007bff;background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label:before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-switch{padding-left:2.25rem}.custom-switch .custom-control-label:before{left:-2.25rem;width:1.75rem;pointer-events:all;border-radius:.5rem}.custom-switch .custom-control-label:after{top:calc(.25rem + 2px);left:calc(-2.25rem + 2px);width:calc(1rem - 4px);height:calc(1rem - 4px);background-color:#adb5bd;border-radius:.5rem;transition:transform .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-switch .custom-control-label:after{transition:none}}.custom-switch .custom-control-input:checked~.custom-control-label:after{background-color:#fff;transform:translateX(.75rem)}.custom-switch .custom-control-input:disabled:checked~.custom-control-label:before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(1.5em + .75rem + 2px);padding:.375rem 1.75rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") right .75rem center/8px 10px no-repeat;border:1px solid #ced4da;border-radius:.25rem;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{display:none}.custom-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #495057}.custom-select-sm{height:calc(1.5em + .5rem + 2px);padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem}.custom-select-lg{height:calc(1.5em + 1rem + 2px);padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}.custom-file{display:inline-block;margin-bottom:0}.custom-file,.custom-file-input{position:relative;width:100%;height:calc(1.5em + .75rem + 2px)}.custom-file-input{z-index:2;margin:0;overflow:hidden;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:disabled~.custom-file-label,.custom-file-input[disabled]~.custom-file-label{background-color:#e9ecef}.custom-file-input:lang(en)~.custom-file-label:after{content:"Browse"}.custom-file-input~.custom-file-label[data-browse]:after{content:attr(data-browse)}.custom-file-label{left:0;z-index:1;height:calc(1.5em + .75rem + 2px);overflow:hidden;font-weight:400;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label,.custom-file-label:after{position:absolute;top:0;right:0;padding:.375rem .75rem;line-height:1.5;color:#495057}.custom-file-label:after{bottom:0;z-index:3;display:block;height:calc(1.5em + .75rem);content:"Browse";background-color:#e9ecef;border-left:inherit;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;height:1.4rem;padding:0;background-color:transparent;appearance:none}.custom-range:focus{outline:0}.custom-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range:focus::-ms-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-webkit-slider-thumb{transition:none}}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-moz-range-thumb{transition:none}}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;margin-top:0;margin-right:.2rem;margin-left:.2rem;background-color:#007bff;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media (prefers-reduced-motion:reduce){.custom-range::-ms-thumb{transition:none}}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower,.custom-range::-ms-fill-upper{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px}.custom-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.custom-range:disabled::-webkit-slider-runnable-track{cursor:default}.custom-range:disabled::-moz-range-thumb{background-color:#adb5bd}.custom-range:disabled::-moz-range-track{cursor:default}.custom-range:disabled::-ms-thumb{background-color:#adb5bd}.custom-control-label:before,.custom-file-label,.custom-select{transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.custom-control-label:before,.custom-file-label,.custom-select{transition:none}}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d;pointer-events:none;cursor:default}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-link{margin-bottom:-1px;border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar,.navbar .container,.navbar .container-fluid,.navbar .container-lg,.navbar .container-md,.navbar .container-sm,.navbar .container-xl{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:50%/100% 100% no-repeat}.navbar-nav-scroll{max-height:75vh;overflow-y:auto}@media (max-width:539.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{padding-right:0;padding-left:0}}@media (min-width:540px){.navbar-expand-sm{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid,.navbar-expand-sm>.container-lg,.navbar-expand-sm>.container-md,.navbar-expand-sm>.container-sm,.navbar-expand-sm>.container-xl{flex-wrap:nowrap}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:719.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{padding-right:0;padding-left:0}}@media (min-width:720px){.navbar-expand-md{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid,.navbar-expand-md>.container-lg,.navbar-expand-md>.container-md,.navbar-expand-md>.container-sm,.navbar-expand-md>.container-xl{flex-wrap:nowrap}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:959.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{padding-right:0;padding-left:0}}@media (min-width:960px){.navbar-expand-lg{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid,.navbar-expand-lg>.container-lg,.navbar-expand-lg>.container-md,.navbar-expand-lg>.container-sm,.navbar-expand-lg>.container-xl{flex-wrap:nowrap}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid,.navbar-expand-xl>.container-lg,.navbar-expand-xl>.container-md,.navbar-expand-xl>.container-sm,.navbar-expand-xl>.container-xl{flex-wrap:nowrap}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{flex-flow:row nowrap;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid,.navbar-expand>.container-lg,.navbar-expand>.container-md,.navbar-expand>.container-sm,.navbar-expand>.container-xl{flex-wrap:nowrap}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(0,0,0,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a,.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:hsla(0,0%,100%,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:hsla(0,0%,100%,.5);border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30'%3E%3Cpath stroke='rgba(255,255,255,0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-text a,.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;min-height:1px;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem;border-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom,.card-img-top{flex-shrink:0;width:100%}.card-img,.card-img-top{border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img,.card-img-bottom{border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck .card{margin-bottom:15px}@media (min-width:540px){.card-deck{display:flex;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{flex:1 0 0%;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group>.card{margin-bottom:15px}@media (min-width:540px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:540px){.card-columns{column-count:3;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion{overflow-anchor:none}.accordion>.card{overflow:hidden}.accordion>.card:not(:last-of-type){border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion>.card:not(:first-of-type){border-top-left-radius:0;border-top-right-radius:0}.accordion>.card>.card-header{border-radius:0;margin-bottom:-1px}.breadcrumb{display:flex;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item:before{float:left;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:3;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:3;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.badge{transition:none}}a.badge:focus,a.badge:hover{text-decoration:none}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}a.badge-primary:focus,a.badge-primary:hover{color:#fff;background-color:#0062cc}a.badge-primary.focus,a.badge-primary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.badge-secondary{color:#fff;background-color:#6c757d}a.badge-secondary:focus,a.badge-secondary:hover{color:#fff;background-color:#545b62}a.badge-secondary.focus,a.badge-secondary:focus{outline:0;box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.badge-success{color:#fff;background-color:#28a745}a.badge-success:focus,a.badge-success:hover{color:#fff;background-color:#1e7e34}a.badge-success.focus,a.badge-success:focus{outline:0;box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.badge-info{color:#fff;background-color:#17a2b8}a.badge-info:focus,a.badge-info:hover{color:#fff;background-color:#117a8b}a.badge-info.focus,a.badge-info:focus{outline:0;box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.badge-warning{color:#212529;background-color:#ffc107}a.badge-warning:focus,a.badge-warning:hover{color:#212529;background-color:#d39e00}a.badge-warning.focus,a.badge-warning:focus{outline:0;box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.badge-danger{color:#fff;background-color:#dc3545}a.badge-danger:focus,a.badge-danger:hover{color:#fff;background-color:#bd2130}a.badge-danger.focus,a.badge-danger:focus{outline:0;box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.badge-light{color:#212529;background-color:#f8f9fa}a.badge-light:focus,a.badge-light:hover{color:#212529;background-color:#dae0e5}a.badge-light.focus,a.badge-light:focus{outline:0;box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.badge-dark{color:#fff;background-color:#343a40}a.badge-dark:focus,a.badge-dark:hover{color:#fff;background-color:#1d2124}a.badge-dark.focus,a.badge-dark:focus{outline:0;box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:540px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;z-index:2;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{height:1rem;line-height:0;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress,.progress-bar{display:flex;overflow:hidden}.progress-bar{flex-direction:column;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-bar-animated{animation:progress-bar-stripes 1s linear infinite}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.media{display:flex;align-items:flex-start}.media-body{flex:1}.list-group{display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:.25rem}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;pointer-events:none;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:-1px;border-top-width:1px}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}@media (min-width:540px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:720px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:960px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:.25rem;border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:.25rem;border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:1px;border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:-1px;border-left-width:1px}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 1px}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:hover{color:#000;text-decoration:none}.close:not(:disabled):not(.disabled):focus,.close:not(:disabled):not(.disabled):hover{opacity:.75}button.close{padding:0;background-color:transparent;border:0}a.close.disabled{pointer-events:none}.toast{flex-basis:350px;max-width:350px;font-size:.875rem;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border:1px solid rgba(0,0,0,.1);box-shadow:0 .25rem .75rem rgba(0,0,0,.1);opacity:0;border-radius:.25rem}.toast:not(:last-child){margin-bottom:.75rem}.toast.showing{opacity:1}.toast.show{display:block;opacity:1}.toast.hide{display:none}.toast-header{display:flex;align-items:center;padding:.25rem .75rem;color:#6c757d;background-color:hsla(0,0%,100%,.85);background-clip:padding-box;border-bottom:1px solid rgba(0,0,0,.05);border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.toast-body{padding:.75rem}.modal-open{overflow:hidden}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal{position:fixed;top:0;left:0;z-index:1050;display:none;width:100%;height:100%;overflow:hidden;outline:0}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translateY(-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{display:flex;max-height:calc(100% - 1rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 1rem);overflow:hidden}.modal-dialog-scrollable .modal-footer,.modal-dialog-scrollable .modal-header{flex-shrink:0}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - 1rem)}.modal-dialog-centered:before{display:block;height:calc(100vh - 1rem);height:min-content;content:""}.modal-dialog-centered.modal-dialog-scrollable{flex-direction:column;justify-content:center;height:100%}.modal-dialog-centered.modal-dialog-scrollable .modal-content{max-height:none}.modal-dialog-centered.modal-dialog-scrollable:before{content:none}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:1rem;border-bottom:1px solid #dee2e6;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;flex:1 1 auto;padding:1rem}.modal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:.75rem;border-top:1px solid #dee2e6;border-bottom-right-radius:calc(.3rem - 1px);border-bottom-left-radius:calc(.3rem - 1px)}.modal-footer>*{margin:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:540px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-scrollable{max-height:calc(100% - 3.5rem)}.modal-dialog-scrollable .modal-content{max-height:calc(100vh - 3.5rem)}.modal-dialog-centered{min-height:calc(100% - 3.5rem)}.modal-dialog-centered:before{height:calc(100vh - 3.5rem);height:min-content}.modal-sm{max-width:300px}}@media (min-width:960px){.modal-lg,.modal-xl{max-width:800px}}@media (min-width:1200px){.modal-xl{max-width:1140px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow:before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow:before,.bs-tooltip-top .arrow:before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow:before,.bs-tooltip-right .arrow:before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow:before,.bs-tooltip-bottom .arrow:before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow:before,.bs-tooltip-left .arrow:before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{top:0;left:0;z-index:1060;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover,.popover .arrow{position:absolute;display:block}.popover .arrow{width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow:after,.popover .arrow:before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top]>.arrow,.bs-popover-top>.arrow{bottom:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=top]>.arrow:before,.bs-popover-top>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top]>.arrow:after,.bs-popover-top>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right]>.arrow,.bs-popover-right>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right]>.arrow:before,.bs-popover-right>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right]>.arrow:after,.bs-popover-right>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom]>.arrow,.bs-popover-bottom>.arrow{top:calc(-.5rem - 1px)}.bs-popover-auto[x-placement^=bottom]>.arrow:before,.bs-popover-bottom>.arrow:before{top:0;border-width:0 .5rem .5rem;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom]>.arrow:after,.bs-popover-bottom>.arrow:after{top:1px;border-width:0 .5rem .5rem;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header:before,.bs-popover-bottom .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left]>.arrow,.bs-popover-left>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left]>.arrow:before,.bs-popover-left>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left]>.arrow:after,.bs-popover-left>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner:after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-right,.carousel-item-next:not(.carousel-item-left){transform:translateX(100%)}.active.carousel-item-left,.carousel-item-prev:not(.carousel-item-right){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:50%/100% 100% no-repeat}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5L4.25 4l2.5-2.5L5.25 0z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' width='8' height='8'%3E%3Cpath d='M2.75 0l-1.5 1.5L3.75 4l-2.5 2.5L2.75 8l4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:15;display:flex;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators li{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}@keyframes spinner-border{to{transform:rotate(1turn)}}.spinner-border{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;border:.25em solid;border-right:.25em solid transparent;border-radius:50%;animation:spinner-border .75s linear infinite}.spinner-border-sm{width:1rem;height:1rem;border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{display:inline-block;width:2rem;height:2rem;vertical-align:-.125em;background-color:currentColor;border-radius:50%;opacity:0;animation:spinner-grow .75s linear infinite}.spinner-grow-sm{width:1rem;height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{animation-duration:1.5s}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded-sm{border-radius:.2rem!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important}.rounded-right,.rounded-top{border-top-right-radius:.25rem!important}.rounded-bottom,.rounded-right{border-bottom-right-radius:.25rem!important}.rounded-bottom,.rounded-left{border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important}.rounded-lg{border-radius:.3rem!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:50rem!important}.rounded-0{border-radius:0!important}.clearfix:after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}@media (min-width:540px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}}@media (min-width:720px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}}@media (min-width:960px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive:before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9:before{padding-top:42.85714%}.embed-responsive-16by9:before{padding-top:56.25%}.embed-responsive-4by3:before{padding-top:75%}.embed-responsive-1by1:before{padding-top:100%}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-fill{flex:1 1 auto!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}@media (min-width:540px){.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}}@media (min-width:720px){.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}}@media (min-width:960px){.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:540px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:720px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:960px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.user-select-all{user-select:all!important}.user-select-auto{user-select:auto!important}.user-select-none{user-select:none!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:sticky!important}.fixed-top{top:0}.fixed-bottom,.fixed-top{position:fixed;right:0;left:0;z-index:1030}.fixed-bottom{bottom:0}@supports (position:sticky){.sticky-top{position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.min-vw-100{min-width:100vw!important}.min-vh-100{min-height:100vh!important}.vw-100{width:100vw!important}.vh-100{height:100vh!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-n1{margin:-.25rem!important}.mt-n1,.my-n1{margin-top:-.25rem!important}.mr-n1,.mx-n1{margin-right:-.25rem!important}.mb-n1,.my-n1{margin-bottom:-.25rem!important}.ml-n1,.mx-n1{margin-left:-.25rem!important}.m-n2{margin:-.5rem!important}.mt-n2,.my-n2{margin-top:-.5rem!important}.mr-n2,.mx-n2{margin-right:-.5rem!important}.mb-n2,.my-n2{margin-bottom:-.5rem!important}.ml-n2,.mx-n2{margin-left:-.5rem!important}.m-n3{margin:-1rem!important}.mt-n3,.my-n3{margin-top:-1rem!important}.mr-n3,.mx-n3{margin-right:-1rem!important}.mb-n3,.my-n3{margin-bottom:-1rem!important}.ml-n3,.mx-n3{margin-left:-1rem!important}.m-n4{margin:-1.5rem!important}.mt-n4,.my-n4{margin-top:-1.5rem!important}.mr-n4,.mx-n4{margin-right:-1.5rem!important}.mb-n4,.my-n4{margin-bottom:-1.5rem!important}.ml-n4,.mx-n4{margin-left:-1.5rem!important}.m-n5{margin:-3rem!important}.mt-n5,.my-n5{margin-top:-3rem!important}.mr-n5,.mx-n5{margin-right:-3rem!important}.mb-n5,.my-n5{margin-bottom:-3rem!important}.ml-n5,.mx-n5{margin-left:-3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:540px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-n1{margin:-.25rem!important}.mt-sm-n1,.my-sm-n1{margin-top:-.25rem!important}.mr-sm-n1,.mx-sm-n1{margin-right:-.25rem!important}.mb-sm-n1,.my-sm-n1{margin-bottom:-.25rem!important}.ml-sm-n1,.mx-sm-n1{margin-left:-.25rem!important}.m-sm-n2{margin:-.5rem!important}.mt-sm-n2,.my-sm-n2{margin-top:-.5rem!important}.mr-sm-n2,.mx-sm-n2{margin-right:-.5rem!important}.mb-sm-n2,.my-sm-n2{margin-bottom:-.5rem!important}.ml-sm-n2,.mx-sm-n2{margin-left:-.5rem!important}.m-sm-n3{margin:-1rem!important}.mt-sm-n3,.my-sm-n3{margin-top:-1rem!important}.mr-sm-n3,.mx-sm-n3{margin-right:-1rem!important}.mb-sm-n3,.my-sm-n3{margin-bottom:-1rem!important}.ml-sm-n3,.mx-sm-n3{margin-left:-1rem!important}.m-sm-n4{margin:-1.5rem!important}.mt-sm-n4,.my-sm-n4{margin-top:-1.5rem!important}.mr-sm-n4,.mx-sm-n4{margin-right:-1.5rem!important}.mb-sm-n4,.my-sm-n4{margin-bottom:-1.5rem!important}.ml-sm-n4,.mx-sm-n4{margin-left:-1.5rem!important}.m-sm-n5{margin:-3rem!important}.mt-sm-n5,.my-sm-n5{margin-top:-3rem!important}.mr-sm-n5,.mx-sm-n5{margin-right:-3rem!important}.mb-sm-n5,.my-sm-n5{margin-bottom:-3rem!important}.ml-sm-n5,.mx-sm-n5{margin-left:-3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:720px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-n1{margin:-.25rem!important}.mt-md-n1,.my-md-n1{margin-top:-.25rem!important}.mr-md-n1,.mx-md-n1{margin-right:-.25rem!important}.mb-md-n1,.my-md-n1{margin-bottom:-.25rem!important}.ml-md-n1,.mx-md-n1{margin-left:-.25rem!important}.m-md-n2{margin:-.5rem!important}.mt-md-n2,.my-md-n2{margin-top:-.5rem!important}.mr-md-n2,.mx-md-n2{margin-right:-.5rem!important}.mb-md-n2,.my-md-n2{margin-bottom:-.5rem!important}.ml-md-n2,.mx-md-n2{margin-left:-.5rem!important}.m-md-n3{margin:-1rem!important}.mt-md-n3,.my-md-n3{margin-top:-1rem!important}.mr-md-n3,.mx-md-n3{margin-right:-1rem!important}.mb-md-n3,.my-md-n3{margin-bottom:-1rem!important}.ml-md-n3,.mx-md-n3{margin-left:-1rem!important}.m-md-n4{margin:-1.5rem!important}.mt-md-n4,.my-md-n4{margin-top:-1.5rem!important}.mr-md-n4,.mx-md-n4{margin-right:-1.5rem!important}.mb-md-n4,.my-md-n4{margin-bottom:-1.5rem!important}.ml-md-n4,.mx-md-n4{margin-left:-1.5rem!important}.m-md-n5{margin:-3rem!important}.mt-md-n5,.my-md-n5{margin-top:-3rem!important}.mr-md-n5,.mx-md-n5{margin-right:-3rem!important}.mb-md-n5,.my-md-n5{margin-bottom:-3rem!important}.ml-md-n5,.mx-md-n5{margin-left:-3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:960px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-n1{margin:-.25rem!important}.mt-lg-n1,.my-lg-n1{margin-top:-.25rem!important}.mr-lg-n1,.mx-lg-n1{margin-right:-.25rem!important}.mb-lg-n1,.my-lg-n1{margin-bottom:-.25rem!important}.ml-lg-n1,.mx-lg-n1{margin-left:-.25rem!important}.m-lg-n2{margin:-.5rem!important}.mt-lg-n2,.my-lg-n2{margin-top:-.5rem!important}.mr-lg-n2,.mx-lg-n2{margin-right:-.5rem!important}.mb-lg-n2,.my-lg-n2{margin-bottom:-.5rem!important}.ml-lg-n2,.mx-lg-n2{margin-left:-.5rem!important}.m-lg-n3{margin:-1rem!important}.mt-lg-n3,.my-lg-n3{margin-top:-1rem!important}.mr-lg-n3,.mx-lg-n3{margin-right:-1rem!important}.mb-lg-n3,.my-lg-n3{margin-bottom:-1rem!important}.ml-lg-n3,.mx-lg-n3{margin-left:-1rem!important}.m-lg-n4{margin:-1.5rem!important}.mt-lg-n4,.my-lg-n4{margin-top:-1.5rem!important}.mr-lg-n4,.mx-lg-n4{margin-right:-1.5rem!important}.mb-lg-n4,.my-lg-n4{margin-bottom:-1.5rem!important}.ml-lg-n4,.mx-lg-n4{margin-left:-1.5rem!important}.m-lg-n5{margin:-3rem!important}.mt-lg-n5,.my-lg-n5{margin-top:-3rem!important}.mr-lg-n5,.mx-lg-n5{margin-right:-3rem!important}.mb-lg-n5,.my-lg-n5{margin-bottom:-3rem!important}.ml-lg-n5,.mx-lg-n5{margin-left:-3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-n1{margin:-.25rem!important}.mt-xl-n1,.my-xl-n1{margin-top:-.25rem!important}.mr-xl-n1,.mx-xl-n1{margin-right:-.25rem!important}.mb-xl-n1,.my-xl-n1{margin-bottom:-.25rem!important}.ml-xl-n1,.mx-xl-n1{margin-left:-.25rem!important}.m-xl-n2{margin:-.5rem!important}.mt-xl-n2,.my-xl-n2{margin-top:-.5rem!important}.mr-xl-n2,.mx-xl-n2{margin-right:-.5rem!important}.mb-xl-n2,.my-xl-n2{margin-bottom:-.5rem!important}.ml-xl-n2,.mx-xl-n2{margin-left:-.5rem!important}.m-xl-n3{margin:-1rem!important}.mt-xl-n3,.my-xl-n3{margin-top:-1rem!important}.mr-xl-n3,.mx-xl-n3{margin-right:-1rem!important}.mb-xl-n3,.my-xl-n3{margin-bottom:-1rem!important}.ml-xl-n3,.mx-xl-n3{margin-left:-1rem!important}.m-xl-n4{margin:-1.5rem!important}.mt-xl-n4,.my-xl-n4{margin-top:-1.5rem!important}.mr-xl-n4,.mx-xl-n4{margin-right:-1.5rem!important}.mb-xl-n4,.my-xl-n4{margin-bottom:-1.5rem!important}.ml-xl-n4,.mx-xl-n4{margin-left:-1.5rem!important}.m-xl-n5{margin:-3rem!important}.mt-xl-n5,.my-xl-n5{margin-top:-3rem!important}.mr-xl-n5,.mx-xl-n5{margin-right:-3rem!important}.mb-xl-n5,.my-xl-n5{margin-bottom:-3rem!important}.ml-xl-n5,.mx-xl-n5{margin-left:-3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.stretched-link:after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:auto;content:"";background-color:transparent}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace!important}.text-justify{text-align:justify!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:540px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:720px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:960px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-lighter{font-weight:lighter!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-weight-bolder{font-weight:bolder!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0056b3!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#494f54!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#19692c!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#0f6674!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#ba8b00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#a71d2a!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#cbd3da!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#121416!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:hsla(0,0%,100%,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.text-decoration-none{text-decoration:none!important}.text-break{word-break:break-word!important;word-wrap:break-word!important}.text-reset{color:inherit!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,:after,:before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd}blockquote,img,pre,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}.container,body{min-width:960px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}html{font-size:var(--pst-font-size-base);scroll-padding-top:calc(var(--pst-header-height) + 12px)}body{padding-top:var(--pst-header-height);background-color:#fff;font-family:var(--pst-font-family-base);font-weight:400;line-height:1.65;color:rgba(var(--pst-color-text-base),1)}p{margin-bottom:1.15rem;font-size:1em;color:rgba(var(--pst-color-paragraph),1)}p.rubric{border-bottom:1px solid #c9c9c9}a{color:rgba(var(--pst-color-link),1);text-decoration:none}a:hover{color:rgba(var(--pst-color-link-hover),1);text-decoration:underline}a.headerlink{color:rgba(var(--pst-color-headerlink),1);opacity:.4;font-size:.8em;padding:0 4px;margin-left:.2em;text-decoration:none;transition:all .3s ease-out;user-select:none}a.headerlink:hover{opacity:1}.heading-style,h1,h2,h3,h4,h5,h6{margin:2.75rem 0 1.05rem;font-family:var(--pst-font-family-heading);font-weight:400;line-height:1.15}h1{margin-top:0;font-size:var(--pst-font-size-h1);color:rgba(var(--pst-color-h1),1)}h2{font-size:var(--pst-font-size-h2);color:rgba(var(--pst-color-h2),1)}h3{font-size:var(--pst-font-size-h3);color:rgba(var(--pst-color-h3),1)}h4{font-size:var(--pst-font-size-h4);color:rgba(var(--pst-color-h4),1)}h5{font-size:var(--pst-font-size-h5);color:rgba(var(--pst-color-h5),1)}h6{font-size:var(--pst-font-size-h6);color:rgba(var(--pst-color-h6),1)}.text_small,small{font-size:var(--pst-font-size-milli)}hr{border:0;border-top:1px solid #e5e5e5}code,kbd,pre,samp{font-family:var(--pst-font-family-monospace)}code{color:rgba(var(--pst-color-inline-code),1)}pre{margin:1.5em 0;padding:10px;background-color:rgba(var(--pst-color-preformatted-background),1);color:rgba(var(--pst-color-preformatted-text),1);line-height:1.2em;border:1px solid #c9c9c9;border-radius:.2rem;box-shadow:1px 1px 1px #d8d8d8}dd{margin-top:3px;margin-bottom:10px;margin-left:30px}dl.field-list{display:grid;grid-template-columns:fit-content(30%) minmax(0,1fr)}.navbar{position:fixed;min-height:var(--pst-header-height);width:100%;padding:0}.navbar .container-xl{height:100%}@media (max-width:1199.98px){.navbar #navbar-start{margin-left:1em}.navbar button.navbar-toggler{margin-right:1em}}@media (min-width:960px){.navbar #navbar-end>.navbar-end-item{display:inline-block}}.navbar-brand{position:relative;height:var(--pst-header-height);width:auto;padding:.5rem 0;display:flex;align-items:center}.navbar-brand p{margin-bottom:0}.navbar-brand img{max-width:100%;height:100%;width:auto}.navbar-light{background:#fff!important;box-shadow:0 .125rem .25rem 0 rgba(0,0,0,.11)}.navbar-light .navbar-nav li a.nav-link{padding:0 .5rem;color:rgba(var(--pst-color-navbar-link),1)}.navbar-light .navbar-nav li a.nav-link:hover{color:rgba(var(--pst-color-navbar-link-hover),1)}.navbar-light .navbar-nav>.active>.nav-link{font-weight:600;color:rgba(var(--pst-color-navbar-link-active),1)}.navbar-header a{padding:0 15px}.admonition,div.admonition{margin:1.5625em auto;padding:0 .6rem .8rem;overflow:hidden;page-break-inside:avoid;border-left:.2rem solid;border-left-color:rgba(var(--pst-color-admonition-default),1);border-bottom-color:rgba(var(--pst-color-admonition-default),1);border-right-color:rgba(var(--pst-color-admonition-default),1);border-top-color:rgba(var(--pst-color-admonition-default),1);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);transition:color .25s,background-color .25s,border-color .25s}.admonition :last-child,div.admonition :last-child{margin-bottom:0}.admonition p.admonition-title~*,div.admonition p.admonition-title~*{margin-left:1.4rem;margin-right:1.4rem}.admonition>ol,.admonition>ul,div.admonition>ol,div.admonition>ul{margin-left:1em}.admonition>.admonition-title,div.admonition>.admonition-title{position:relative;margin:0 -.6rem;padding:.4rem .6rem .4rem 2rem;font-weight:700;background-color:rgba(var(--pst-color-admonition-default),.1)}.admonition>.admonition-title:before,div.admonition>.admonition-title:before{position:absolute;left:.6rem;width:1rem;height:1rem;color:rgba(var(--pst-color-admonition-default),1);font-family:Font Awesome\ 5 Free;font-weight:900;content:var(--pst-icon-admonition-default)}.admonition>.admonition-title+*,div.admonition>.admonition-title+*{margin-top:.4em}.admonition.attention,div.admonition.attention{border-color:rgba(var(--pst-color-admonition-attention),1)}.admonition.attention>.admonition-title,div.admonition.attention>.admonition-title{background-color:rgba(var(--pst-color-admonition-attention),.1)}.admonition.attention>.admonition-title:before,div.admonition.attention>.admonition-title:before{color:rgba(var(--pst-color-admonition-attention),1);content:var(--pst-icon-admonition-attention)}.admonition.caution,div.admonition.caution{border-color:rgba(var(--pst-color-admonition-caution),1)}.admonition.caution>.admonition-title,div.admonition.caution>.admonition-title{background-color:rgba(var(--pst-color-admonition-caution),.1)}.admonition.caution>.admonition-title:before,div.admonition.caution>.admonition-title:before{color:rgba(var(--pst-color-admonition-caution),1);content:var(--pst-icon-admonition-caution)}.admonition.warning,div.admonition.warning{border-color:rgba(var(--pst-color-admonition-warning),1)}.admonition.warning>.admonition-title,div.admonition.warning>.admonition-title{background-color:rgba(var(--pst-color-admonition-warning),.1)}.admonition.warning>.admonition-title:before,div.admonition.warning>.admonition-title:before{color:rgba(var(--pst-color-admonition-warning),1);content:var(--pst-icon-admonition-warning)}.admonition.danger,div.admonition.danger{border-color:rgba(var(--pst-color-admonition-danger),1)}.admonition.danger>.admonition-title,div.admonition.danger>.admonition-title{background-color:rgba(var(--pst-color-admonition-danger),.1)}.admonition.danger>.admonition-title:before,div.admonition.danger>.admonition-title:before{color:rgba(var(--pst-color-admonition-danger),1);content:var(--pst-icon-admonition-danger)}.admonition.error,div.admonition.error{border-color:rgba(var(--pst-color-admonition-error),1)}.admonition.error>.admonition-title,div.admonition.error>.admonition-title{background-color:rgba(var(--pst-color-admonition-error),.1)}.admonition.error>.admonition-title:before,div.admonition.error>.admonition-title:before{color:rgba(var(--pst-color-admonition-error),1);content:var(--pst-icon-admonition-error)}.admonition.hint,div.admonition.hint{border-color:rgba(var(--pst-color-admonition-hint),1)}.admonition.hint>.admonition-title,div.admonition.hint>.admonition-title{background-color:rgba(var(--pst-color-admonition-hint),.1)}.admonition.hint>.admonition-title:before,div.admonition.hint>.admonition-title:before{color:rgba(var(--pst-color-admonition-hint),1);content:var(--pst-icon-admonition-hint)}.admonition.tip,div.admonition.tip{border-color:rgba(var(--pst-color-admonition-tip),1)}.admonition.tip>.admonition-title,div.admonition.tip>.admonition-title{background-color:rgba(var(--pst-color-admonition-tip),.1)}.admonition.tip>.admonition-title:before,div.admonition.tip>.admonition-title:before{color:rgba(var(--pst-color-admonition-tip),1);content:var(--pst-icon-admonition-tip)}.admonition.important,div.admonition.important{border-color:rgba(var(--pst-color-admonition-important),1)}.admonition.important>.admonition-title,div.admonition.important>.admonition-title{background-color:rgba(var(--pst-color-admonition-important),.1)}.admonition.important>.admonition-title:before,div.admonition.important>.admonition-title:before{color:rgba(var(--pst-color-admonition-important),1);content:var(--pst-icon-admonition-important)}.admonition.note,div.admonition.note{border-color:rgba(var(--pst-color-admonition-note),1)}.admonition.note>.admonition-title,div.admonition.note>.admonition-title{background-color:rgba(var(--pst-color-admonition-note),.1)}.admonition.note>.admonition-title:before,div.admonition.note>.admonition-title:before{color:rgba(var(--pst-color-admonition-note),1);content:var(--pst-icon-admonition-note)}table.field-list{border-collapse:separate;border-spacing:10px;margin-left:1px}table.field-list th.field-name{padding:1px 8px 1px 5px;white-space:nowrap;background-color:#eee}table.field-list td.field-body p{font-style:italic}table.field-list td.field-body p>strong{font-style:normal}table.field-list td.field-body blockquote{border-left:none;margin:0 0 .3em;padding-left:30px}.table.autosummary td:first-child{white-space:nowrap}.sig{font-family:var(--pst-font-family-monospace)}.sig-inline.c-texpr,.sig-inline.cpp-texpr{font-family:unset}.sig.c .k,.sig.c .kt,.sig.c .m,.sig.c .s,.sig.c .sc,.sig.cpp .k,.sig.cpp .kt,.sig.cpp .m,.sig.cpp .s,.sig.cpp .sc{color:rgba(var(--pst-color-text-base),1)}.sig-name{color:rgba(var(--pst-color-inline-code),1)}td.text-align\:left,th.text-align\:left{text-align:left}td.text-align\:right,th.text-align\:right{text-align:right}td.text-align\:center,th.text-align\:center{text-align:center}div.deprecated,div.versionadded,div.versionchanged{vertical-align:middle;margin:1.5625em auto;padding:0 .6rem;overflow:hidden;page-break-inside:avoid;border-left:.2rem solid;border-left-color:rgba(var(--pst-color-versionmodified-default),1);border-bottom-color:rgba(var(--pst-color-versionmodified-default),1);border-right-color:rgba(var(--pst-color-versionmodified-default),1);border-top-color:rgba(var(--pst-color-versionmodified-default),1);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);transition:color .25s,background-color .25s,border-color .25s;background-color:rgba(var(--pst-color-admonition-default),.1)}div.deprecated>p,div.versionadded>p,div.versionchanged>p{margin-bottom:.6rem;margin-top:.6rem}div.versionadded{border-color:rgba(var(--pst-color-versionmodified-added),1);background-color:rgba(var(--pst-color-versionmodified-added),.1)}div.versionchanged{border-color:rgba(var(--pst-color-versionmodified-changed),1);background-color:rgba(var(--pst-color-versionmodified-changed),.1)}div.deprecated{border-color:rgba(var(--pst-color-versionmodified-deprecated),1);background-color:rgba(var(--pst-color-versionmodified-deprecated),.1)}span.versionmodified{font-weight:700}span.versionmodified:before{font-style:normal;margin-right:.6rem;color:rgba(var(--pst-color-versionmodified-default),1);font-family:Font Awesome\ 5 Free;font-weight:900;content:var(--pst-icon-versionmodified-default)}span.versionmodified.added:before{color:rgba(var(--pst-color-versionmodified-added),1);content:var(--pst-icon-versionmodified-added)}span.versionmodified.changed:before{color:rgba(var(--pst-color-versionmodified-changed),1);content:var(--pst-icon-versionmodified-changed)}span.versionmodified.deprecated:before{color:rgba(var(--pst-color-versionmodified-deprecated),1);content:var(--pst-icon-versionmodified-deprecated)}blockquote{padding:0 1em;color:#6a737d;border-left:.25em solid #dfe2e5}dt.label>span.brackets:not(:only-child):before{content:"["}dt.label>span.brackets:not(:only-child):after{content:"]"}a.footnote-reference{vertical-align:super;font-size:small}.topic{background-color:#eee}.seealso dd{margin-top:0;margin-bottom:0}.viewcode-back{font-family:var(--pst-font-family-base)}.viewcode-block:target{background-color:#f4debf;border-top:1px solid #ac9;border-bottom:1px solid #ac9}span.guilabel{border:1px solid #7fbbe3;background:#e7f2fa;font-size:80%;font-weight:700;border-radius:4px;padding:2.4px 6px;margin:auto 2px}footer{width:100%;border-top:1px solid #ccc;padding:10px}footer .footer-item p{margin-bottom:0}.bd-search{position:relative;padding:1rem 15px;margin-right:-15px;margin-left:-15px}.bd-search .icon{position:absolute;color:#a4a6a7;left:25px}.bd-search input{border-radius:.2rem;border:1px solid #e5e5e5;padding-left:35px}.bd-toc{-ms-flex-order:2;order:2;height:calc(100vh - 2rem);overflow-y:auto}@supports (position:-webkit-sticky) or (position:sticky){.bd-toc{position:-webkit-sticky;position:sticky;top:var(--pst-header-height);height:calc(100vh - 5rem);overflow-y:auto}}.bd-toc .onthispage{color:#a4a6a7}.section-nav{padding-left:0;border-left:1px solid #eee;border-bottom:none}.section-nav ul{padding-left:1rem}.toc-entry,.toc-entry a{display:block}.toc-entry a{padding:.125rem 1.5rem;color:rgba(var(--pst-color-toc-link),1)}@media (min-width:1200px){.toc-entry a{padding-right:0}}.toc-entry a:hover{color:rgba(var(--pst-color-toc-link-hover),1);text-decoration:none}.bd-links{padding-top:1rem;padding-bottom:1rem;margin-right:-15px;margin-left:-15px}@media (min-width:720px){.bd-links{display:block}}.bd-sidenav{display:none}.bd-content{padding-top:20px}.bd-content .section{max-width:100%}.bd-content .section table{display:block;overflow:auto}.bd-toc-link{display:block;padding:.25rem 1.5rem;font-weight:600;color:rgba(0,0,0,.65)}.bd-toc-link:hover{color:rgba(0,0,0,.85);text-decoration:none}.bd-toc-item.active{margin-bottom:1rem}.bd-toc-item.active:not(:first-child){margin-top:1rem}.bd-toc-item.active>.bd-toc-link{color:rgba(0,0,0,.85)}.bd-toc-item.active>.bd-toc-link:hover{background-color:transparent}.bd-toc-item.active>.bd-sidenav{display:block}nav.bd-links p.caption{font-size:var(--pst-sidebar-caption-font-size);text-transform:uppercase;font-weight:700;position:relative;margin-top:1.25em;margin-bottom:.5em;padding:0 1.5rem;color:rgba(var(--pst-color-sidebar-caption),1)}nav.bd-links p.caption:first-child{margin-top:0}.bd-sidebar .nav{font-size:var(--pst-sidebar-font-size)}.bd-sidebar .nav ul{list-style:none;padding:0 0 0 1.5rem}.bd-sidebar .nav li>a{display:block;padding:.25rem 1.5rem;color:rgba(var(--pst-color-sidebar-link),1)}.bd-sidebar .nav li>a:hover{color:rgba(var(--pst-color-sidebar-link-hover),1);text-decoration:none;background-color:transparent}.bd-sidebar .nav li>a.reference.external:after{font-family:Font Awesome\ 5 Free;font-weight:900;content:"\f35d";font-size:.75em;margin-left:.3em}.bd-sidebar .nav .active:hover>a,.bd-sidebar .nav .active>a{font-weight:600;color:rgba(var(--pst-color-sidebar-link-active),1)}.toc-h2{font-size:.85rem}.toc-h3{font-size:.75rem}.toc-h4{font-size:.65rem}.toc-entry>.nav-link.active{font-weight:600;color:#130654;color:rgba(var(--pst-color-toc-link-active),1);background-color:transparent;border-left:2px solid rgba(var(--pst-color-toc-link-active),1)}.nav-link:hover{border-style:none}#navbar-main-elements li.nav-item i{font-size:.7rem;padding-left:2px;vertical-align:middle}.bd-toc .nav .nav,.list-caption .nav{display:none}.bd-toc .nav .nav.visible,.bd-toc .nav>.active>ul,.list-caption .nav.visible,.list-caption>.active>ul{display:block}.prev-next-area{margin:20px 0}.prev-next-area p{margin:0 .3em;line-height:1.3em}.prev-next-area i{font-size:1.2em}.prev-next-area a{display:flex;align-items:center;border:none;padding:10px;max-width:45%;overflow-x:hidden;color:rgba(0,0,0,.65);text-decoration:none}.prev-next-area a p.prev-next-title{color:rgba(var(--pst-color-link),1);font-weight:600;font-size:1.1em}.prev-next-area a:hover p.prev-next-title{text-decoration:underline}.prev-next-area a .prev-next-info{flex-direction:column;margin:0 .5em}.prev-next-area a .prev-next-info .prev-next-subtitle{text-transform:capitalize}.prev-next-area a.left-prev{float:left}.prev-next-area a.right-next{float:right}.prev-next-area a.right-next div.prev-next-info{text-align:right}.alert{padding-bottom:0}.alert-info a{color:#e83e8c}#navbar-icon-links i.fa,#navbar-icon-links i.fab,#navbar-icon-links i.far,#navbar-icon-links i.fas{vertical-align:middle;font-style:normal;font-size:1.5rem;line-height:1.25}#navbar-icon-links i.fa-github-square:before{color:#333}#navbar-icon-links i.fa-twitter-square:before{color:#55acee}#navbar-icon-links i.fa-gitlab:before{color:#548}#navbar-icon-links i.fa-bitbucket:before{color:#0052cc}#navbar-icon-links img.icon-link-image{height:1.5em}.tocsection{border-left:1px solid #eee;padding:.3rem 1.5rem}.tocsection i{padding-right:.5rem}.editthispage{padding-top:2rem}.editthispage a{color:var(--pst-color-sidebar-link-active)}.xr-wrap[hidden]{display:block!important}.toctree-checkbox{position:absolute;display:none}.toctree-checkbox~ul{display:none}.toctree-checkbox~label i{transform:rotate(0deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label i{transform:rotate(180deg)}.bd-sidebar{padding-top:1em;overflow-y:auto;display:flex;flex-direction:column}@media (min-width:720px){.bd-sidebar{border-right:1px solid rgba(0,0,0,.1)}@supports (position:-webkit-sticky) or (position:sticky){.bd-sidebar{position:-webkit-sticky;position:sticky;top:var(--pst-header-height);z-index:1000;height:calc(100vh - var(--pst-header-height))}}}.bd-sidebar.no-sidebar{border-right:0}.bd-sidebar .sidebar-end-items{margin-top:auto;margin-bottom:1em}.bd-sidebar .list-caption{list-style:none;padding-left:0}.bd-sidebar li{position:relative}.bd-sidebar li.has-children>.reference{padding-right:30px}.bd-sidebar label{position:absolute;top:0;right:0;height:30px;width:30px;cursor:pointer;display:flex;justify-content:center;align-items:center}.bd-sidebar label:hover{background:rgba(var(--pst-color-sidebar-expander-background-hover),1)}.bd-sidebar label i{display:inline-block;font-size:.75rem;text-align:center}.bd-sidebar label i:hover{color:rgba(var(--pst-color-sidebar-link-hover),1)}.bd-sidebar .label-parts{width:100%;height:100%}.bd-sidebar .label-parts:hover{background:none}.bd-sidebar .label-parts i{width:30px;position:absolute;top:.3em;right:0}div.doctest>div.highlight span.gp,span.linenos,table.highlighttable td.linenos{user-select:none;-webkit-user-select:text;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.docutils.container{padding-left:unset;padding-right:unset} \ No newline at end of file diff --git a/docs/_static/styles/sphinx-book-theme.css b/docs/_static/styles/sphinx-book-theme.css new file mode 100644 index 0000000..2dbb359 --- /dev/null +++ b/docs/_static/styles/sphinx-book-theme.css @@ -0,0 +1,8 @@ +/*! sphinx-book-theme CSS + * BSD 3-Clause License + * Copyright (c) 2020, EBP + * All rights reserved. + * + * This follows the 7-1 pattern described here: + * https://sass-guidelin.es/#architecture + */:root{--pst-font-size-base:none;--pst-color-primary:87,154,202;--pst-color-admonition-note:var(--pst-color-primary);--pst-color-admonition-default:var(--pst-color-primary);--pst-color-info:255,193,7;--pst-color-admonition-tip:var(--pst-color-info);--pst-color-admonition-hint:var(--pst-color-info);--pst-color-admonition-important:var(--pst-color-info);--pst-color-warning:245,162,82;--pst-color-danger:230,101,129;--pst-color-admonition-warning:var(--pst-color-danger);--pst-color-link:0,113,188;--sbt-font-size-regular:100%;--sbt-font-size-large:112.5%;--sbt-font-size-small-1:87.5%;--sbt-font-size-small-2:70%;--sbt-sidebar-font-size:var(--sbt-font-size-small-1);--sbt-header-article-font-size:var(--sbt-font-size-small-1);--sbt-prevnext-font-size:var(--sbt-font-size-small-1);--sbt-footer-font-size:var(--sbt-font-size-small-1)}.sbt-scroll-pixel-helper{position:absolute;width:0;height:0;top:0;left:0}.visually-hidden{clip:rect(0,0,0,0)!important;border:0!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}.d-n,.onlyprint{display:none}@media print{.onlyprint{display:block!important}}@media print{.noprint{display:none!important}}.col{min-width:0}.content-container a.headerlink{opacity:0;margin-left:.2em}.content-container a.headerlink:hover{background-color:transparent;color:rgba(var(--pst-color-link),1);opacity:1!important}.content-container a,.content-container a:visited{color:rgba(var(--pst-color-link),1)}.content-container h1,.content-container h2,.content-container h3,.content-container h4,.content-container h5{color:#000}.content-container h1:hover a.headerlink,.content-container h2:hover a.headerlink,.content-container h3:hover a.headerlink,.content-container h4:hover a.headerlink,.content-container h5:hover a.headerlink{opacity:.5}.content-container h1 a.toc-backref,.content-container h2 a.toc-backref,.content-container h3 a.toc-backref,.content-container h4 a.toc-backref,.content-container h5 a.toc-backref{color:inherit}.content-container h3,.content-container h4,.content-container h5,.content-container h6{margin-top:1em}.content-container ol p,.content-container ul p{margin-bottom:0}.content-container p.centered{text-align:center}.content-container .footnote-reference,.content-container a.bibtex.internal{font-size:1em}@media print{#jb-print-docs-body{max-width:90%;margin:auto}#jb-print-docs-body h1{font-size:3em;text-align:center;margin-bottom:0}#main-content{max-width:67%!important;margin-left:5%!important;padding-top:0}#main-content h1:first-of-type{display:none}.container{min-width:0!important}h1{margin-top:1em;margin-bottom:1em}h1,h2,h3,h4{break-after:avoid;color:#000}table{break-inside:avoid}pre{word-wrap:break-word}a.headerlink{display:none}blockquote.epigraph{border:none}.footer{margin-top:1em}}body{padding-top:0!important}#main-content,#print-main-content{transition:padding .25s ease-out;padding-top:1.5em}@media (min-width:768px){#main-content{max-width:70%}}footer.footer-article{border-top:none;padding:0}footer.footer-article .prev-next-area{font-size:var(--sbt-prevnext-font-size)}footer.footer-article .prev-next-area a{margin-bottom:1em;padding-left:0;padding-right:0}@media (min-width:768px){footer.footer-article .prev-next-area{max-width:70%}}footer{font-size:var(--sbt-font-size-small-1)}.header-article{height:3em;background-color:#fff;transition:left .2s;font-size:var(--sbt-header-article-font-size)}@media (max-width:768px){.header-article{height:3.75em}}.scrolled .header-article{box-shadow:0 6px 6px -6px rgba(0,0,0,.3)}.header-article .header-article-main{height:3em}@media (max-width:768px){.header-article .header-article-main{height:3.75em}}.header-article .header-article-main .header-article__left,.header-article .header-article-main .header-article__right{display:flex;align-items:center}.header-article .header-article-main .header-article__right{margin-left:auto}.header-item{width:100%;text-align:center}.header-item:empty{display:none}.header-item.announcement{background-color:#616161;color:#fff;padding:.4em 12.5%}@media (max-width:768px){.header-item.announcement{padding:.4em 2%}}#site-navigation{padding-top:0;width:275px;font-size:var(--sbt-sidebar-font-size);top:0!important;background:#fff;border-right:1px solid rgba(0,0,0,.1);transition:margin-left .25s ease 0s,opacity .25s ease 0s,visibility .25s ease 0s;overflow-y:unset;height:100vh}@media (max-width:768px){#site-navigation{height:100%;position:fixed;width:75%;max-width:300px;font-size:1.2em;z-index:1100}}#site-navigation .bd-sidebar__content{overflow-y:auto;flex-grow:1;display:flex;flex-direction:column}#site-navigation .bd-sidebar__content::-webkit-scrollbar{width:.3rem;height:.3rem}#site-navigation .bd-sidebar__content::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}#site-navigation .bd-sidebar__content::-webkit-scrollbar-thumb:hover{background:#a0a0a0}#site-navigation .bd-sidebar__content:not(:hover)::-webkit-scrollbar-thumb{visibility:hidden}#site-navigation .bd-sidebar__bottom,#site-navigation .bd-sidebar__top{padding:0 1rem 0 1.5rem}#site-navigation .bd-sidebar__bottom{margin-top:auto;margin-bottom:2em}#site-navigation nav ul.nav li a,#site-navigation nav ul.nav ul li a{color:#5a5a5a}#site-navigation nav ul.nav a:hover,#site-navigation nav ul.nav li.active>a,#site-navigation nav ul.nav li.active>a:hover{color:rgba(var(--pst-color-link),1)}#site-navigation nav ul.nav ul{padding-left:1rem}#site-navigation h1.site-logo{margin:.5em 0 0;font-size:1.1em;color:#000;text-align:center}#site-navigation div.navbar_extra_footer{text-align:center;font-size:.9em;color:#5a5a5a;margin-bottom:3em}#site-navigation.single-page{border-right:0}@media (min-width:768px){div.navbar-brand-box{padding-top:2em}}div.navbar-brand-box a.navbar-brand{width:100%;height:auto;flex-direction:column}div.navbar-brand-box a.navbar-brand img{display:block;height:auto;width:auto;max-height:10vh;max-width:100%;margin:0 auto}@media (min-width:768px){div.navbar-brand-box a.navbar-brand img{max-height:15vh!important}}nav.bd-links{margin-left:0;overflow-y:visible;max-height:none}nav.bd-links .toctree-l1 a,nav.bd-links p.caption{padding-left:0}.bd-toc{padding:0!important;right:-1em;height:auto;transition:margin-right .25s ease 0s,opacity .25s ease 0s,visibility .25s ease 0s}.bd-toc .toc-entry a,.bd-toc div.onthispage{color:#5a5a5a}@media (max-width:768px){.bd-toc{z-index:1100;top:0;right:0;position:fixed;height:100%;width:75%;max-width:300px;background-color:#fff;border-left:1px solid rgba(0,0,0,.1);font-size:1.4em}.bd-toc li{font-size:.8em}}.bd-toc nav{opacity:0;max-height:0;transition:opacity .2s ease,max-height .7s ease;overflow-y:hidden;background:#fff}.bd-toc nav::-webkit-scrollbar{width:.3rem;height:.3rem}.bd-toc nav::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}.bd-toc nav::-webkit-scrollbar-thumb:hover{background:#a0a0a0}.bd-toc nav:not(:hover)::-webkit-scrollbar-thumb{visibility:hidden}.bd-toc nav a:hover,.bd-toc nav li.active>a.active{color:rgba(var(--pst-color-link),1)}.bd-toc nav li.active>a.active{border-left:2px solid rgba(var(--pst-color-link),1)}.bd-toc nav>.nav{border-left:1px solid #eee}.bd-toc nav>.nav .nav{border-left:none}.bd-toc.show nav,.bd-toc:hover nav{max-height:90vh;opacity:1;overflow-y:auto}.bd-toc.show .tocsection:after,.bd-toc:hover .tocsection:after{opacity:0}@media (max-width:768px){.bd-toc nav{max-height:90vh;opacity:1;overflow-y:auto}.bd-toc .tocsection:after{opacity:0}}.bd-toc .tocsection{padding:.5rem 0 .5rem 1rem!important}.bd-toc .tocsection:after{content:"\f107";font-family:Font Awesome\ 5 Free;font-weight:900;padding-left:.5em;transition:opacity .3s ease}.bd-toc .toc-entry a{padding:.125rem 1rem!important}.bd-toc div.editthispage{display:none}input.sidebar-toggle{display:none;position:absolute}@media (min-width:768px){input#__navigation:checked~.container-xl #site-navigation{visibility:hidden;opacity:0;margin-left:-275px}input#__navigation:checked~.container-xl #main-content{padding-left:4rem;padding-right:4rem}}@media (max-width:768px){input#__navigation:not(:checked)~.container-xl #site-navigation{visibility:hidden;opacity:0;margin-left:-75%}}@media (max-width:768px){input#__page-toc:not(:checked)~.container-xl .bd-toc{visibility:hidden;opacity:0;margin-right:-75%}}label.overlay{height:0;opacity:0;position:fixed;top:0;transition:width 0ms,height 0ms,opacity .25s ease-out;width:0}label.overlay.overlay-navbar{background-color:rgba(0,0,0,.54)}@media (max-width:768px){input:checked+label.overlay{height:100%;opacity:1;width:100%}input:checked+label.overlay.overlay-navbar{z-index:1099}input:checked+label.overlay.overlay-pagetoc{z-index:1019}}.headerbtn{justify-content:center;background-color:#fff;color:#5a5a5a;cursor:pointer;border:none;padding:.1rem .5rem;margin:0 .1rem}.headerbtn,.headerbtn span{display:flex;align-items:center}.headerbtn i,.headerbtn img{margin:auto;width:1em;text-align:center;font-size:1.5em}.menu-dropdown__content:hover,.menu-dropdown__trigger:hover+.menu-dropdown__content{visibility:visible;opacity:1}.menu-dropdown__content{position:absolute;visibility:hidden;opacity:0;transform:translateX(-75%);transition:opacity .2s ease-out;width:10rem;border-radius:.4em;box-shadow:0 3px 10px 0 rgba(0,0,0,.25);padding:.5em;background-color:#fff}.menu-dropdown__content .headerbtn{justify-content:left;padding:.1rem 0}.menu-dropdown__content ul{list-style:none;padding-left:0;margin-bottom:0}.menu-dropdown__content span{display:flex}.menu-dropdown__content span.headerbtn__icon-container{width:2em}.menu-dropdown__content span.headerbtn__text-container{flex-grow:1;margin-left:.5em}.menu-dropdown__content i,.menu-dropdown__content img{font-size:1.2em}div.header-article-main .header-article__left a,div.header-article-main .header-article__left button,div.header-article-main .header-article__left label,div.header-article-main .header-article__right a,div.header-article-main .header-article__right button,div.header-article-main .header-article__right label{color:#5a5a5a}div.header-article-main .header-article__left a:focus,div.header-article-main .header-article__left a:hover,div.header-article-main .header-article__left button:focus,div.header-article-main .header-article__left button:hover,div.header-article-main .header-article__left label:focus,div.header-article-main .header-article__left label:hover,div.header-article-main .header-article__right a:focus,div.header-article-main .header-article__right a:hover,div.header-article-main .header-article__right button:focus,div.header-article-main .header-article__right button:hover,div.header-article-main .header-article__right label:focus,div.header-article-main .header-article__right label:hover{color:#000;box-shadow:none;text-decoration:none}.headerbtn-page-toc{display:block}@media (min-width:768px){.headerbtn-page-toc{display:none}}dt:target,span.highlighted{background-color:rgba(243,119,38,.25882352941176473)}.admonition{border-radius:.4em;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)}.admonition.seealso{border-color:#28a745}.admonition.seealso .admonition-title{background-color:rgba(40,167,70,.1)}.admonition.seealso .admonition-title:before{color:#28a745;content:"\f064"}code{font-size:87.5%!important}pre{border-radius:.4em}pre::-webkit-scrollbar{width:.3rem;height:.3rem}pre::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}pre::-webkit-scrollbar-thumb:hover{background:#a0a0a0}div[class*=highlight-],pre{clear:none}.highlighttable .linenos{vertical-align:baseline}div.highlight{background:none;margin-bottom:1em}.cm-s-default{font-family:var(--jp-code-font-family);font-size:var(--jp-code-font-size);line-height:var(--jp-code-line-height)}.CodeMirror-focused{background-color:var(--jp-cell-editor-active-background)!important;border:var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);margin:-1px}dl.field-list dd,dl.simple dd{margin-left:1.5em}dl.footnote span.fn-backref{font-size:1em;padding-left:.1em}dl.footnote dd{font-size:.9em;margin-left:3em}.footnote-reference,a.bibtex.internal{font-size:1em}dl.glossary dd{margin-left:1.5em}img{max-width:100%}img.align-center{margin-left:auto;margin-right:auto;display:block}img.align-left{clear:left;float:left;margin-right:1em}img.align-right{clear:right;float:right;margin-left:1em}div.figure{width:100%;margin-bottom:1em;text-align:center}div.figure.align-left{text-align:left}div.figure.align-left p.caption{margin-left:0}div.figure.align-right{text-align:right}div.figure.align-right p.caption{margin-right:0}div.figure p.caption{margin:.5em 10%}div.figure.margin-caption p.caption,div.figure.margin p.caption{margin:.5em 0}div.figure.margin-caption p.caption{text-align:left}div.figure span.caption-number{font-weight:700}div.figure span{font-size:.9rem}label.margin-toggle{margin-bottom:0}label.margin-toggle.marginnote-label{display:none}label.margin-toggle sup{user-select:none}@media (max-width:768px){label.margin-toggle{cursor:pointer;color:#0071bc}label.margin-toggle.marginnote-label{display:inline}label.margin-toggle.marginnote-label:after{content:"\2295"}}input.margin-toggle{display:none}@media (max-width:768px){input.margin-toggle:checked+.marginnote,input.margin-toggle:checked+.sidenote{display:block;float:left;left:1rem;clear:both;width:95%;margin:1rem 2.5%;position:relative}}span.marginnote,span.sidenote{width:40%;float:right;background-color:unset;font-size:.9em;border-left:none}span.marginnote sup,span.sidenote sup{user-select:none}@media (min-width:768px){span.marginnote,span.sidenote{border:none;width:39.85714%;margin:0 -42.85714% 0 0;clear:right}span.marginnote p.sidebar-title,span.sidenote p.sidebar-title{margin-bottom:.1em}}@media (max-width:768px){span.marginnote,span.sidenote{display:none}}.cell.tag_margin,.cell.tag_popout,aside.margin,div.margin,figure.margin{width:40%;float:right;background-color:unset;border-left:1px solid #a4a6a7;font-size:.9em}@media (min-width:768px){.cell.tag_margin,.cell.tag_popout,aside.margin,div.margin,figure.margin{border:none;width:39.85714%;margin:0 -42.85714% 0 0;clear:right}.cell.tag_margin p.sidebar-title,.cell.tag_popout p.sidebar-title,aside.margin p.sidebar-title,div.margin p.sidebar-title,figure.margin p.sidebar-title{margin-bottom:.1em}}.cell.tag_margin div.cell.tag_margin .cell_output,.cell.tag_popout div.cell.tag_margin .cell_output,aside.margin div.cell.tag_margin .cell_output,div.margin div.cell.tag_margin .cell_output,figure.margin div.cell.tag_margin .cell_output{padding-left:0}div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{width:40%;float:right;background-color:unset;border-left:1px solid #a4a6a7;font-size:.9em}@media (min-width:768px){div.figure.margin-caption figcaption,div.figure.margin-caption p.caption,figure.margin-caption figcaption{border:none;width:39.85714%;margin:0 -42.85714% 0 0;clear:right}div.figure.margin-caption figcaption p.sidebar-title,div.figure.margin-caption p.caption p.sidebar-title,figure.margin-caption figcaption p.sidebar-title{margin-bottom:.1em}}@media (min-width:768px){.full-width,.full_width,div.cell.tag_full-width,div.cell.tag_full_width{max-width:142.85714%;width:142.85714%}}.margin-caption figcaption{text-align:left}div.math{position:relative;display:flex;flex-direction:row-reverse;align-items:center}div.math .headerlink{font-size:1em;padding:0 .2em;margin-left:0}div.math .headerlink:hover{opacity:1}div.math:hover .headerlink{opacity:.5}span.eqno{font-size:1.2em;margin-left:.5em}.MathJax{overflow-x:auto;margin-right:auto!important;margin-left:auto!important;overflow-y:hidden}.MathJax::-webkit-scrollbar{width:.3rem;height:.3rem}.MathJax::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}.MathJax::-webkit-scrollbar-thumb:hover{background:#a0a0a0}p~div.math{margin-top:-1.15rem}blockquote{margin:1em;padding:.2em 1.5em;border-left:4px solid #ccc}blockquote.epigraph,blockquote.highlights,blockquote.pull-quote{font-size:1.25em;border-left:none}blockquote div>p{margin-bottom:.5em}blockquote div>p+p.attribution{font-style:normal;font-size:.9em;text-align:right;color:#6c757d;padding-right:2em}aside.sidebar:not(.margin),div.sidebar:not(.margin){background-color:unset;padding:1em;border-radius:.4em;border-color:#aaa}@media (min-width:992px){aside.sidebar:not(.margin),div.sidebar:not(.margin){width:65%;margin:0 -35% 0 3%}}div.tableofcontents-wrapper p.caption{font-weight:600!important;margin-bottom:0!important}div.toctree-wrapper p.caption{font-size:1.4em}div.toctree-wrapper>ul{padding-left:1.5em}div.toctree-wrapper>ul>li>a{font-size:1.1em}div.contents{border-radius:.4em;padding:1em 1em 2em}div.contents p.topic-title{font-size:1.5em;padding:0 0 0 .5em;margin-bottom:0}div.contents>ul{list-style:none;padding-left:1em}div.contents>ul>li>ul{padding-left:1.5em}div.contents>ul>li>p>a{font-size:1.2em;margin-bottom:.5em}@media print{#jb-print-toc{margin-bottom:1.5rem}#jb-print-toc .section-nav{border-left:0;list-style-type:disc;margin-left:3em}#jb-print-toc .section-nav a{text-decoration:none;padding-left:0}#jb-print-toc .section-nav li{display:list-item!important}#jb-print-toc .section-nav .nav{display:none}}ul.ablog-archive,ul.postlist{padding-left:0}ul.postlist>li>p:first-child{font-size:1.5em}ul.postlist li+li{margin-top:2em}ul.postlist li>p>a{font-style:normal;font-size:1.3em}div.bd-sidebar h2{font-size:1.5em}div.bd-sidebar h3{font-size:1.4em}div.bd-sidebar>ul{list-style:none;padding-left:0}@media only print{div.utterances,hypothesis-sidebar{display:none}}div.cell div.highlight{margin-bottom:0}div.cell div.cell_input,div.cell div.cell_output pre{border-radius:.4em;border:1px solid #ccc}div.cell div.cell_output{padding-right:0}div.cell.tag_output_scroll div.cell_output,div.cell.tag_scroll-output div.cell_output{max-height:24em;overflow-y:auto}div.cell.tag_output_scroll div.cell_output::-webkit-scrollbar,div.cell.tag_scroll-output div.cell_output::-webkit-scrollbar{width:.3rem;height:.3rem}div.cell.tag_output_scroll div.cell_output::-webkit-scrollbar-thumb,div.cell.tag_scroll-output div.cell_output::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}div.cell.tag_output_scroll div.cell_output::-webkit-scrollbar-thumb:hover,div.cell.tag_scroll-output div.cell_output::-webkit-scrollbar-thumb:hover{background:#a0a0a0}@media print{div.cell.tag_output_scroll div.cell_output,div.cell.tag_scroll-output div.cell_output{max-height:unset;overflow-y:visible}}div.cell.tag_scroll-input div.cell_input{max-height:24em;overflow-y:auto}div.cell.tag_scroll-input div.cell_input::-webkit-scrollbar{width:.3rem;height:.3rem}div.cell.tag_scroll-input div.cell_input::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:.25rem}div.cell.tag_scroll-input div.cell_input::-webkit-scrollbar-thumb:hover{background:#a0a0a0}@media print{div.cell.tag_scroll-input div.cell_input{max-height:unset;overflow-y:visible}}div.sphinx-tabs>div.sphinx-menu{padding:0}div.sphinx-tabs>div.sphinx-menu>a.item{width:auto;margin:0 0 -1px}.bd-sidebar div#rtd-footer-container{position:sticky;bottom:0}.bd-sidebar .rst-versions.rst-badge{position:unset;font-size:.9em}.bd-sidebar .rst-versions.rst-badge .rst-current-version{display:flex;align-items:center;gap:.2rem;height:2.5rem;transition:background-color .2s ease-out;background-color:#fff;color:#5a5a5a;border-top:1px solid rgba(0,0,0,.1)}@media (max-width:768px){.bd-sidebar .rst-versions.rst-badge .rst-current-version{height:3rem}}.bd-sidebar .rst-versions.rst-badge .rst-current-version:hover{background-color:rgba(var(--pst-color-sidebar-expander-background-hover),1);cursor:pointer}.bd-sidebar .rst-versions.rst-badge .rst-current-version .fa{color:#5a5a5a}.bd-sidebar .rst-versions.rst-badge .rst-current-version .fa-book{float:unset;margin-right:auto}.bd-sidebar .rst-versions.rst-badge .rst-current-version .fa-book:after{content:"Read the Docs";font-family:sans-serif;font-weight:700;margin-left:.2em}.bd-sidebar .rst-versions.rst-badge .rst-other-versions dt{color:#ccc}.thebelab-cell{border:none!important;margin-right:.5em!important}.thebelab-cell .thebelab-input{padding-left:10px!important}.cell.docutils.container{padding-right:0!important}button.thebe-launch-button{height:2.5em;font-size:1em}#search-documentation,#search-documentation~form,#search-documentation~p{display:none}div#search-results>h2{margin-top:0}ul.search{margin:0;list-style:none}ul.search li{background-image:none;margin-bottom:1em;padding:0 0 1em;border-bottom:1px solid rgba(0,0,0,.1)}ul.search li>a{font-size:1.2em}ul.search li div.context,ul.search li p.context{margin:.5em 0 0}ul.search li div.context a:before,ul.search li p.context a:before{content:"#";padding-right:.2em;color:#aaa} \ No newline at end of file diff --git a/docs/_static/styles/theme.css b/docs/_static/styles/theme.css new file mode 100644 index 0000000..22779d9 --- /dev/null +++ b/docs/_static/styles/theme.css @@ -0,0 +1,134 @@ +/* Provided by Sphinx's 'basic' theme, and included in the final set of assets */ +@import "../basic.css"; + +:root { + /***************************************************************************** + * Theme config + **/ + --pst-header-height: 60px; + + /***************************************************************************** + * Font size + **/ + --pst-font-size-base: 15px; /* base font size - applied at body / html level */ + + /* heading font sizes */ + --pst-font-size-h1: 36px; + --pst-font-size-h2: 32px; + --pst-font-size-h3: 26px; + --pst-font-size-h4: 21px; + --pst-font-size-h5: 18px; + --pst-font-size-h6: 16px; + + /* smaller then heading font sizes*/ + --pst-font-size-milli: 12px; + + --pst-sidebar-font-size: 0.9em; + --pst-sidebar-caption-font-size: 0.9em; + + /***************************************************************************** + * Font family + **/ + /* These are adapted from https://systemfontstack.com/ */ + --pst-font-family-base-system: -apple-system, BlinkMacSystemFont, Segoe UI, + "Helvetica Neue", Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, + Segoe UI Symbol; + --pst-font-family-monospace-system: "SFMono-Regular", Menlo, Consolas, Monaco, + Liberation Mono, Lucida Console, monospace; + + --pst-font-family-base: var(--pst-font-family-base-system); + --pst-font-family-heading: var(--pst-font-family-base); + --pst-font-family-monospace: var(--pst-font-family-monospace-system); + + /***************************************************************************** + * Color + * + * Colors are defined in rgb string way, "red, green, blue" + **/ + --pst-color-primary: 19, 6, 84; + --pst-color-success: 40, 167, 69; + --pst-color-info: 0, 123, 255; /*23, 162, 184;*/ + --pst-color-warning: 255, 193, 7; + --pst-color-danger: 220, 53, 69; + --pst-color-text-base: 51, 51, 51; + + --pst-color-h1: var(--pst-color-primary); + --pst-color-h2: var(--pst-color-primary); + --pst-color-h3: var(--pst-color-text-base); + --pst-color-h4: var(--pst-color-text-base); + --pst-color-h5: var(--pst-color-text-base); + --pst-color-h6: var(--pst-color-text-base); + --pst-color-paragraph: var(--pst-color-text-base); + --pst-color-link: 0, 91, 129; + --pst-color-link-hover: 227, 46, 0; + --pst-color-headerlink: 198, 15, 15; + --pst-color-headerlink-hover: 255, 255, 255; + --pst-color-preformatted-text: 34, 34, 34; + --pst-color-preformatted-background: 250, 250, 250; + --pst-color-inline-code: 232, 62, 140; + + --pst-color-active-navigation: 19, 6, 84; + --pst-color-navbar-link: 77, 77, 77; + --pst-color-navbar-link-hover: var(--pst-color-active-navigation); + --pst-color-navbar-link-active: var(--pst-color-active-navigation); + --pst-color-sidebar-link: 77, 77, 77; + --pst-color-sidebar-link-hover: var(--pst-color-active-navigation); + --pst-color-sidebar-link-active: var(--pst-color-active-navigation); + --pst-color-sidebar-expander-background-hover: 244, 244, 244; + --pst-color-sidebar-caption: 77, 77, 77; + --pst-color-toc-link: 119, 117, 122; + --pst-color-toc-link-hover: var(--pst-color-active-navigation); + --pst-color-toc-link-active: var(--pst-color-active-navigation); + + /***************************************************************************** + * Icon + **/ + + /* font awesome icons*/ + --pst-icon-check-circle: "\f058"; + --pst-icon-info-circle: "\f05a"; + --pst-icon-exclamation-triangle: "\f071"; + --pst-icon-exclamation-circle: "\f06a"; + --pst-icon-times-circle: "\f057"; + --pst-icon-lightbulb: "\f0eb"; + + /***************************************************************************** + * Admonitions + **/ + + --pst-color-admonition-default: var(--pst-color-info); + --pst-color-admonition-note: var(--pst-color-info); + --pst-color-admonition-attention: var(--pst-color-warning); + --pst-color-admonition-caution: var(--pst-color-warning); + --pst-color-admonition-warning: var(--pst-color-warning); + --pst-color-admonition-danger: var(--pst-color-danger); + --pst-color-admonition-error: var(--pst-color-danger); + --pst-color-admonition-hint: var(--pst-color-success); + --pst-color-admonition-tip: var(--pst-color-success); + --pst-color-admonition-important: var(--pst-color-success); + + --pst-icon-admonition-default: var(--pst-icon-info-circle); + --pst-icon-admonition-note: var(--pst-icon-info-circle); + --pst-icon-admonition-attention: var(--pst-icon-exclamation-circle); + --pst-icon-admonition-caution: var(--pst-icon-exclamation-triangle); + --pst-icon-admonition-warning: var(--pst-icon-exclamation-triangle); + --pst-icon-admonition-danger: var(--pst-icon-exclamation-triangle); + --pst-icon-admonition-error: var(--pst-icon-times-circle); + --pst-icon-admonition-hint: var(--pst-icon-lightbulb); + --pst-icon-admonition-tip: var(--pst-icon-lightbulb); + --pst-icon-admonition-important: var(--pst-icon-exclamation-circle); + + /***************************************************************************** + * versionmodified + **/ + + --pst-color-versionmodified-default: var(--pst-color-info); + --pst-color-versionmodified-added: var(--pst-color-success); + --pst-color-versionmodified-changed: var(--pst-color-warning); + --pst-color-versionmodified-deprecated: var(--pst-color-danger); + + --pst-icon-versionmodified-default: var(--pst-icon-exclamation-circle); + --pst-icon-versionmodified-added: var(--pst-icon-exclamation-circle); + --pst-icon-versionmodified-changed: var(--pst-icon-exclamation-circle); + --pst-icon-versionmodified-deprecated: var(--pst-icon-exclamation-circle); +} diff --git a/docs/_static/togglebutton.css b/docs/_static/togglebutton.css index d55b5ca..54a6787 100644 --- a/docs/_static/togglebutton.css +++ b/docs/_static/togglebutton.css @@ -1,90 +1,160 @@ +/** + * Admonition-based toggles + */ + /* Visibility of the target */ -.toggle, div.admonition.toggle .admonition-title ~ * { - transition: opacity .5s, height .5s; +.admonition.toggle .admonition-title ~ * { + transition: opacity .3s, height .3s; } -.toggle-hidden:not(.admonition) { - visibility: hidden; - opacity: 0; - height: 1.5em; - margin: 0px; - padding: 0px; +/* Toggle buttons inside admonitions so we see the title */ +.admonition.toggle { + position: relative; } -/* Overrides for admonition toggles */ - /* Titles should cut off earlier to avoid overlapping w/ button */ -div.admonition.toggle p.admonition-title { +.admonition.toggle .admonition-title { padding-right: 25%; + cursor: pointer; } -/* hides all the content of a page until de-toggled */ -div.admonition.toggle-hidden .admonition-title ~ * { - height: 0; - margin: 0; - float: left; /* so they overlap when hidden */ - opacity: 0; - visibility: hidden; +/* Hovering will cause a slight shift in color to make it feel interactive */ +.admonition.toggle .admonition-title:hover { + box-shadow: inset 0 0 0px 20px rgb(0 0 0 / 1%); } -/* Toggle buttons inside admonitions so we see the title */ -.toggle.admonition { - position: relative; +/* Hovering will cause a slight shift in color to make it feel interactive */ +.admonition.toggle .admonition-title:active { + box-shadow: inset 0 0 0px 20px rgb(0 0 0 / 3%); } -.toggle.admonition.admonition-title:after { - content: "" !important; +/* Remove extra whitespace below the admonition title when hidden */ +.admonition.toggle-hidden { + padding-bottom: 0; } -/* Note, we'll over-ride this in sphinx-book-theme */ -.toggle.admonition button.toggle-button { - margin-right: 0.5em; - right: 0em; - position: absolute; - top: .2em; +.admonition.toggle-hidden .admonition-title { + margin-bottom: 0; +} + +/* hides all the content of a page until de-toggled */ +.admonition.toggle-hidden .admonition-title ~ * { + height: 0; + margin: 0; + opacity: 0; + visibility: hidden; } -/* General button style */ +/* General button style and position*/ button.toggle-button { - background: #999; + /** + * Background and shape. By default there's no background + * but users can style as they wish + */ + background: none; border: none; - z-index: 100; - right: -2.5em; - margin-left: -2.5em; /* A hack to keep code blocks from being pushed left */ - position: relative; - float: right; - border-radius: 100%; - width: 1.5em; - height: 1.5em; + outline: none; + + /* Positioning just inside the admonition title */ + position: absolute; + right: 0.5em; padding: 0px; + border: none; + outline: none; } +/* Display the toggle hint on wide screens */ @media (min-width: 768px) { button.toggle-button.toggle-button-hidden:before { - content: "Click to show"; - position: absolute; + content: attr(data-toggle-hint); /* This will be filled in by JS */ font-size: .8em; - left: -6.5em; - bottom: .4em; + align-self: center; } } +/* Icon behavior */ +.tb-icon { + transition: transform .2s ease-out; + height: 1.5em; + width: 1.5em; + stroke: currentColor; /* So that we inherit the color of other text */ +} -/* Plus / minus toggles */ -.toggle-button .bar { - background-color: white; - position: absolute; - left: 15%; - top: 43%; - width: 16px; - height: 3px; +/* The icon should point right when closed, down when open. */ +/* Open */ +.admonition.toggle button .tb-icon { + transform: rotate(90deg); +} + +/* Closed */ +.admonition.toggle button.toggle-button-hidden .tb-icon { + transform: rotate(0deg); +} + +/* With details toggles, we don't rotate the icon so it points right */ +details.toggle-details .tb-icon { + height: 1.4em; + width: 1.4em; + margin-top: 0.1em; /* To center the button vertically */ +} + + +/** + * Details-based toggles. + * In this case, we wrap elements with `.toggle` in a details block. + */ + +/* Details blocks */ +details.toggle-details { + margin: 1em 0; +} + + +details.toggle-details summary { + display: flex; + align-items: center; + cursor: pointer; + list-style: none; + border-radius: .2em; + border-left: 3px solid #1976d2; + background-color: rgb(204 204 204 / 10%); + padding: 0.2em 0.7em 0.3em 0.5em; /* Less padding on left because the SVG has left margin */ + font-size: 0.9em; +} + +details.toggle-details summary:hover { + background-color: rgb(204 204 204 / 20%); +} + +details.toggle-details summary:active { + background: rgb(204 204 204 / 28%); +} + +.toggle-details__summary-text { + margin-left: 0.2em; } -.toggle-button .vertical { - transition: all 0.25s ease-in-out; - transform-origin: center; +details.toggle-details[open] summary { + margin-bottom: .5em; } -.toggle-button-hidden .vertical { - transform: rotate(-90deg); +details.toggle-details[open] summary .tb-icon { + transform: rotate(90deg); +} + +details.toggle-details[open] summary ~ * { + animation: toggle-fade-in .3s ease-out; +} + +@keyframes toggle-fade-in { + from {opacity: 0%;} + to {opacity: 100%;} +} + +/* Print rules - we hide all toggle button elements at print */ +@media print { + /* Always hide the summary so the button doesn't show up */ + details.toggle-details summary { + display: none; + } } \ No newline at end of file diff --git a/docs/_static/togglebutton.js b/docs/_static/togglebutton.js index 19d38c1..215a7ee 100644 --- a/docs/_static/togglebutton.js +++ b/docs/_static/togglebutton.js @@ -1,33 +1,94 @@ +/** + * Add Toggle Buttons to elements + */ + +let toggleChevron = ` + + + +`; + var initToggleItems = () => { var itemsToToggle = document.querySelectorAll(togglebuttonSelector); - console.log(itemsToToggle, togglebuttonSelector) + console.log(`[togglebutton]: Adding toggle buttons to ${itemsToToggle.length} items`) // Add the button to each admonition and hook up a callback to toggle visibility itemsToToggle.forEach((item, index) => { - var toggleID = `toggle-${index}`; - var buttonID = `button-${toggleID}`; - var collapseButton = ` - `; + if (item.classList.contains("admonition")) { + // If it's an admonition block, then we'll add a button inside + // Generate unique IDs for this item + var toggleID = `toggle-${index}`; + var buttonID = `button-${toggleID}`; - item.setAttribute('id', toggleID); + item.setAttribute('id', toggleID); + if (!item.classList.contains("toggle")){ + item.classList.add("toggle"); + } + // This is the button that will be added to each item to trigger the toggle + var collapseButton = ` + `; - if (!item.classList.contains("toggle")){ - item.classList.add("toggle"); - } + title = item.querySelector(".admonition-title") + title.insertAdjacentHTML("beforeend", collapseButton); + thisButton = document.getElementById(buttonID); - // If it's an admonition block, then we'll add the button inside - if (item.classList.contains("admonition")) { - item.insertAdjacentHTML("afterbegin", collapseButton); + // Add click handlers for the button + admonition title (if admonition) + admonitionTitle = document.querySelector(`#${toggleID} > .admonition-title`) + if (admonitionTitle) { + // If an admonition, then make the whole title block clickable + admonitionTitle.addEventListener('click', toggleClickHandler); + admonitionTitle.dataset.target = toggleID + admonitionTitle.dataset.button = buttonID + } else { + // If not an admonition then we'll listen for the button click + thisButton.addEventListener('click', toggleClickHandler); + } + + // Now hide the item for this toggle button unless explicitly noted to show + if (!item.classList.contains("toggle-shown")) { + toggleHidden(thisButton); + } } else { - item.insertAdjacentHTML('beforebegin', collapseButton); - } + // If not an admonition, wrap the block in a
block + // Define the structure of the details block and insert it as a sibling + var detailsBlock = ` +
+ + ${toggleChevron} + ${toggleHintShow} + +
`; + item.insertAdjacentHTML("beforebegin", detailsBlock); - thisButton = $(`#${buttonID}`); - thisButton.on('click', toggleClickHandler); - if (!item.classList.contains("toggle-shown")) { - toggleHidden(thisButton[0]); + // Now move the toggle-able content inside of the details block + details = item.previousElementSibling + details.appendChild(item) + item.classList.add("toggle-details__container") + + // Set up a click trigger to change the text as needed + details.addEventListener('click', (click) => { + let parent = click.target.parentElement; + if (parent.tagName.toLowerCase() == "details") { + summary = parent.querySelector("summary"); + details = parent; + } else { + summary = parent; + details = parent.parentElement; + } + // Update the inner text for the proper hint + if (details.open) { + summary.querySelector("span.toggle-details__summary-text").innerText = toggleHintShow; + } else { + summary.querySelector("span.toggle-details__summary-text").innerText = toggleHintHide; + } + + }); + + // If we have a toggle-shown class, open details block should be open + if (item.classList.contains("toggle-shown")) { + details.click(); + } } }) }; @@ -46,8 +107,25 @@ var toggleHidden = (button) => { } var toggleClickHandler = (click) => { - button = document.getElementById(click.target.dataset['button']); - toggleHidden(button); + // Be cause the admonition title is clickable and extends to the whole admonition + // We only look for a click event on this title to trigger the toggle. + + if (click.target.classList.contains("admonition-title")) { + button = click.target.querySelector(".toggle-button"); + } else if (click.target.classList.contains("tb-icon")) { + // We've clicked the icon and need to search up one parent for the button + button = click.target.parentElement; + } else if (click.target.tagName == "polyline") { + // We've clicked the SVG elements inside the button, need to up 2 layers + button = click.target.parentElement.parentElement; + } else if (click.target.classList.contains("toggle-button")) { + // We've clicked the button itself and so don't need to do anything + button = click.target; + } else { + console.log(`[togglebutton]: Couldn't find button for ${click.target}`) + } + target = document.getElementById(button.dataset['button']); + toggleHidden(target); } // If we want to blanket-add toggle classes to certain cells @@ -74,3 +152,36 @@ const sphinxToggleRunWhenDOMLoaded = cb => { } sphinxToggleRunWhenDOMLoaded(addToggleToSelector) sphinxToggleRunWhenDOMLoaded(initToggleItems) + +/** Toggle details blocks to be open when printing */ +if (toggleOpenOnPrint == "true") { + window.addEventListener("beforeprint", () => { + // Open the details + document.querySelectorAll("details.toggle-details").forEach((el) => { + el.dataset["togglestatus"] = el.open; + el.open = true; + }); + + // Open the admonitions + document.querySelectorAll(".admonition.toggle.toggle-hidden").forEach((el) => { + console.log(el); + el.querySelector("button.toggle-button").click(); + el.dataset["toggle_after_print"] = "true"; + }); + }); + window.addEventListener("afterprint", () => { + // Re-close the details that were closed + document.querySelectorAll("details.toggle-details").forEach((el) => { + el.open = el.dataset["togglestatus"] == "true"; + delete el.dataset["togglestatus"]; + }); + + // Re-close the admonition toggle buttons + document.querySelectorAll(".admonition.toggle").forEach((el) => { + if (el.dataset["toggle_after_print"] == "true") { + el.querySelector("button.toggle-button").click(); + delete el.dataset["toggle_after_print"]; + } + }); + }); +} diff --git a/docs/_static/webpack-macros.html b/docs/_static/webpack-macros.html index 144f188..b51c16e 100644 --- a/docs/_static/webpack-macros.html +++ b/docs/_static/webpack-macros.html @@ -1,4 +1,8 @@ - + +{# Load FontAwesome icons #} {% macro head_pre_icons() %} @@ -8,18 +12,18 @@ href="{{ pathto('_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2', 1) }}"> {% endmacro %} -{% macro head_pre_fonts() %} -{% endmacro %} - -{% macro head_pre_bootstrap() %} - - +{% macro head_pre_assets() %} + + + {% endmacro %} {% macro head_js_preload() %} - + + {% endmacro %} {% macro body_post() %} - + + {% endmacro %} \ No newline at end of file diff --git a/docs/communicate/fable-from-py.html b/docs/communicate/fable-from-py.html index 5899a24..bfa6428 100644 --- a/docs/communicate/fable-from-py.html +++ b/docs/communicate/fable-from-py.html @@ -4,11 +4,13 @@ - + + Call Fable from Python — Fable Python - - + + + - - - - - + - - + - + + - + + + + + - - - + + - + + + + - + + + + + + + + +
+
+ @@ -66,9 +84,10 @@
-
+ + + + + - \ No newline at end of file diff --git a/docs/communicate/py-from-fable.html b/docs/communicate/py-from-fable.html index 309b8a8..0b83246 100644 --- a/docs/communicate/py-from-fable.html +++ b/docs/communicate/py-from-fable.html @@ -4,11 +4,13 @@ - + + Call Python from Fable — Fable Python - - + + + - - - - - + - - + - + + - + + + + + - - - + + - + + + + - + + + + + + + + +
+
+ @@ -66,9 +84,10 @@
-