From ce3d816f4ffe026e7ee8015118d68959653ae841 Mon Sep 17 00:00:00 2001 From: Nick Ulle Date: Tue, 10 Dec 2024 21:21:11 -0800 Subject: [PATCH] Update documentation --- .buildinfo | 4 + .nojekyll | 0 _images/logo_julia.svg | 1 + _images/logo_jupyter.svg | 90 + _images/logo_python_device.svg | 265 ++ _images/logo_quarto.svg | 56 + _images/logo_r.png | Bin 0 -> 32553 bytes _images/logo_rmarkdown.png | Bin 0 -> 21955 bytes _images/phd_scratch.gif | Bin 0 -> 59771 bytes _images/xkcd_documents.png | Bin 0 -> 26158 bytes _images/xkcd_goto.png | Bin 0 -> 26214 bytes _images/xkcd_is_it_worth_the_time.png | Bin 0 -> 64050 bytes _images/xkcd_iso_8601.png | Bin 0 -> 44160 bytes _images/xkcd_python_environment.png | Bin 0 -> 52253 bytes _sources/chapters/01_principles.md | 185 ++ _sources/chapters/02_primary_practices.md | 831 ++++++ _sources/chapters/03_secondary_practices.md | 419 +++ .../chapters/04_case_by_case_practices.md | 125 + _sources/chapters/index.md | 53 + _sources/chapters/references.md | 33 + _sphinx_design_static/design-tabs.js | 101 + _sphinx_design_static/sphinx-design.min.css | 1 + _static/basic.css | 925 +++++++ _static/check-solid.svg | 4 + _static/clipboard.min.js | 7 + _static/copy-button.svg | 5 + _static/copybutton.css | 94 + _static/copybutton.js | 248 ++ _static/copybutton_funcs.js | 73 + _static/datalab-logo-full-color-rgb-1.png | Bin 0 -> 53458 bytes _static/design-tabs.js | 101 + _static/doctools.js | 156 ++ _static/documentation_options.js | 13 + _static/file.png | Bin 0 -> 286 bytes _static/images/logo_binder.svg | 19 + _static/images/logo_colab.png | Bin 0 -> 7601 bytes _static/images/logo_deepnote.svg | 1 + _static/images/logo_jupyterhub.svg | 1 + _static/language_data.js | 199 ++ _static/locales/ar/LC_MESSAGES/booktheme.mo | Bin 0 -> 1541 bytes _static/locales/ar/LC_MESSAGES/booktheme.po | 75 + _static/locales/bg/LC_MESSAGES/booktheme.mo | Bin 0 -> 1708 bytes _static/locales/bg/LC_MESSAGES/booktheme.po | 75 + _static/locales/bn/LC_MESSAGES/booktheme.mo | Bin 0 -> 1646 bytes _static/locales/bn/LC_MESSAGES/booktheme.po | 63 + _static/locales/ca/LC_MESSAGES/booktheme.mo | Bin 0 -> 1246 bytes _static/locales/ca/LC_MESSAGES/booktheme.po | 66 + _static/locales/cs/LC_MESSAGES/booktheme.mo | Bin 0 -> 1405 bytes _static/locales/cs/LC_MESSAGES/booktheme.po | 75 + _static/locales/da/LC_MESSAGES/booktheme.mo | Bin 0 -> 1304 bytes _static/locales/da/LC_MESSAGES/booktheme.po | 75 + _static/locales/de/LC_MESSAGES/booktheme.mo | Bin 0 -> 1388 bytes _static/locales/de/LC_MESSAGES/booktheme.po | 75 + _static/locales/el/LC_MESSAGES/booktheme.mo | Bin 0 -> 1722 bytes _static/locales/el/LC_MESSAGES/booktheme.po | 75 + _static/locales/eo/LC_MESSAGES/booktheme.mo | Bin 0 -> 1337 bytes _static/locales/eo/LC_MESSAGES/booktheme.po | 75 + _static/locales/es/LC_MESSAGES/booktheme.mo | Bin 0 -> 1396 bytes _static/locales/es/LC_MESSAGES/booktheme.po | 75 + _static/locales/et/LC_MESSAGES/booktheme.mo | Bin 0 -> 1341 bytes _static/locales/et/LC_MESSAGES/booktheme.po | 75 + _static/locales/fi/LC_MESSAGES/booktheme.mo | Bin 0 -> 1368 bytes _static/locales/fi/LC_MESSAGES/booktheme.po | 75 + _static/locales/fr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1412 bytes _static/locales/fr/LC_MESSAGES/booktheme.po | 75 + _static/locales/hr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1402 bytes _static/locales/hr/LC_MESSAGES/booktheme.po | 75 + _static/locales/id/LC_MESSAGES/booktheme.mo | Bin 0 -> 1323 bytes _static/locales/id/LC_MESSAGES/booktheme.po | 75 + _static/locales/it/LC_MESSAGES/booktheme.mo | Bin 0 -> 1403 bytes _static/locales/it/LC_MESSAGES/booktheme.po | 75 + _static/locales/iw/LC_MESSAGES/booktheme.mo | Bin 0 -> 1445 bytes _static/locales/iw/LC_MESSAGES/booktheme.po | 75 + _static/locales/ja/LC_MESSAGES/booktheme.mo | Bin 0 -> 1471 bytes _static/locales/ja/LC_MESSAGES/booktheme.po | 75 + _static/locales/ko/LC_MESSAGES/booktheme.mo | Bin 0 -> 1375 bytes _static/locales/ko/LC_MESSAGES/booktheme.po | 75 + _static/locales/lt/LC_MESSAGES/booktheme.mo | Bin 0 -> 1413 bytes _static/locales/lt/LC_MESSAGES/booktheme.po | 75 + _static/locales/lv/LC_MESSAGES/booktheme.mo | Bin 0 -> 1404 bytes _static/locales/lv/LC_MESSAGES/booktheme.po | 75 + _static/locales/ml/LC_MESSAGES/booktheme.mo | Bin 0 -> 1883 bytes _static/locales/ml/LC_MESSAGES/booktheme.po | 66 + _static/locales/mr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1674 bytes _static/locales/mr/LC_MESSAGES/booktheme.po | 66 + _static/locales/ms/LC_MESSAGES/booktheme.mo | Bin 0 -> 1213 bytes _static/locales/ms/LC_MESSAGES/booktheme.po | 66 + _static/locales/nl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1356 bytes _static/locales/nl/LC_MESSAGES/booktheme.po | 75 + _static/locales/no/LC_MESSAGES/booktheme.mo | Bin 0 -> 1317 bytes _static/locales/no/LC_MESSAGES/booktheme.po | 75 + _static/locales/pl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1371 bytes _static/locales/pl/LC_MESSAGES/booktheme.po | 75 + _static/locales/pt/LC_MESSAGES/booktheme.mo | Bin 0 -> 1364 bytes _static/locales/pt/LC_MESSAGES/booktheme.po | 75 + _static/locales/ro/LC_MESSAGES/booktheme.mo | Bin 0 -> 1390 bytes _static/locales/ro/LC_MESSAGES/booktheme.po | 75 + _static/locales/ru/LC_MESSAGES/booktheme.mo | Bin 0 -> 1722 bytes _static/locales/ru/LC_MESSAGES/booktheme.po | 75 + _static/locales/sk/LC_MESSAGES/booktheme.mo | Bin 0 -> 1393 bytes _static/locales/sk/LC_MESSAGES/booktheme.po | 75 + _static/locales/sl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1374 bytes _static/locales/sl/LC_MESSAGES/booktheme.po | 75 + _static/locales/sr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1679 bytes _static/locales/sr/LC_MESSAGES/booktheme.po | 75 + _static/locales/sv/LC_MESSAGES/booktheme.mo | Bin 0 -> 1365 bytes _static/locales/sv/LC_MESSAGES/booktheme.po | 75 + _static/locales/ta/LC_MESSAGES/booktheme.mo | Bin 0 -> 1928 bytes _static/locales/ta/LC_MESSAGES/booktheme.po | 66 + _static/locales/te/LC_MESSAGES/booktheme.mo | Bin 0 -> 1806 bytes _static/locales/te/LC_MESSAGES/booktheme.po | 66 + _static/locales/tg/LC_MESSAGES/booktheme.mo | Bin 0 -> 1628 bytes _static/locales/tg/LC_MESSAGES/booktheme.po | 75 + _static/locales/th/LC_MESSAGES/booktheme.mo | Bin 0 -> 1766 bytes _static/locales/th/LC_MESSAGES/booktheme.po | 75 + _static/locales/tl/LC_MESSAGES/booktheme.mo | Bin 0 -> 1273 bytes _static/locales/tl/LC_MESSAGES/booktheme.po | 66 + _static/locales/tr/LC_MESSAGES/booktheme.mo | Bin 0 -> 1373 bytes _static/locales/tr/LC_MESSAGES/booktheme.po | 75 + _static/locales/uk/LC_MESSAGES/booktheme.mo | Bin 0 -> 1681 bytes _static/locales/uk/LC_MESSAGES/booktheme.po | 75 + _static/locales/ur/LC_MESSAGES/booktheme.mo | Bin 0 -> 1462 bytes _static/locales/ur/LC_MESSAGES/booktheme.po | 66 + _static/locales/vi/LC_MESSAGES/booktheme.mo | Bin 0 -> 1431 bytes _static/locales/vi/LC_MESSAGES/booktheme.po | 75 + .../locales/zh_CN/LC_MESSAGES/booktheme.mo | Bin 0 -> 1310 bytes .../locales/zh_CN/LC_MESSAGES/booktheme.po | 75 + .../locales/zh_TW/LC_MESSAGES/booktheme.mo | Bin 0 -> 1341 bytes .../locales/zh_TW/LC_MESSAGES/booktheme.po | 75 + _static/minus.png | Bin 0 -> 90 bytes ...69c37c29e427902b24a333a5f9fcb2f0b3ac41.css | 2342 +++++++++++++++++ _static/play-solid.svg | 1 + _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 152 ++ _static/sbt-webpack-macros.html | 11 + _static/scripts/bootstrap.js | 3 + _static/scripts/bootstrap.js.LICENSE.txt | 5 + _static/scripts/bootstrap.js.map | 1 + _static/scripts/pydata-sphinx-theme.js | 2 + _static/scripts/pydata-sphinx-theme.js.map | 1 + _static/scripts/sphinx-book-theme.js | 2 + _static/scripts/sphinx-book-theme.js.map | 1 + _static/searchtools.js | 620 +++++ _static/sphinx-design.min.css | 1 + _static/sphinx-thebe.css | 129 + _static/sphinx-thebe.js | 127 + _static/sphinx_highlight.js | 154 ++ _static/styles/bootstrap.css | 6 + _static/styles/bootstrap.css.map | 1 + _static/styles/pydata-sphinx-theme.css | 2 + _static/styles/pydata-sphinx-theme.css.map | 1 + _static/styles/sphinx-book-theme.css | 9 + _static/styles/sphinx-book-theme.css.map | 1 + _static/styles/theme.css | 2 + _static/togglebutton.css | 160 ++ _static/togglebutton.js | 187 ++ _static/vendor/fontawesome/6.5.2/LICENSE.txt | 165 ++ .../vendor/fontawesome/6.5.2/css/all.min.css | 5 + .../vendor/fontawesome/6.5.2/js/all.min.js | 2 + .../6.5.2/js/all.min.js.LICENSE.txt | 5 + .../6.5.2/webfonts/fa-brands-400.ttf | Bin 0 -> 209128 bytes .../6.5.2/webfonts/fa-brands-400.woff2 | Bin 0 -> 117852 bytes .../6.5.2/webfonts/fa-regular-400.ttf | Bin 0 -> 67860 bytes .../6.5.2/webfonts/fa-regular-400.woff2 | Bin 0 -> 25392 bytes .../6.5.2/webfonts/fa-solid-900.ttf | Bin 0 -> 420332 bytes .../6.5.2/webfonts/fa-solid-900.woff2 | Bin 0 -> 156400 bytes .../6.5.2/webfonts/fa-v4compatibility.ttf | Bin 0 -> 10832 bytes .../6.5.2/webfonts/fa-v4compatibility.woff2 | Bin 0 -> 4792 bytes _static/webpack-macros.html | 31 + chapters/01_principles.html | 662 +++++ chapters/02_primary_practices.html | 1262 +++++++++ chapters/03_secondary_practices.html | 907 +++++++ chapters/04_case_by_case_practices.html | 700 +++++ chapters/index.html | 538 ++++ chapters/references.html | 507 ++++ genindex.html | 413 +++ index.html | 1 + objects.inv | Bin 0 -> 847 bytes search.html | 425 +++ searchindex.js | 1 + 180 files changed, 16846 insertions(+) create mode 100644 .buildinfo create mode 100644 .nojekyll create mode 100644 _images/logo_julia.svg create mode 100644 _images/logo_jupyter.svg create mode 100644 _images/logo_python_device.svg create mode 100644 _images/logo_quarto.svg create mode 100644 _images/logo_r.png create mode 100644 _images/logo_rmarkdown.png create mode 100644 _images/phd_scratch.gif create mode 100644 _images/xkcd_documents.png create mode 100644 _images/xkcd_goto.png create mode 100644 _images/xkcd_is_it_worth_the_time.png create mode 100644 _images/xkcd_iso_8601.png create mode 100644 _images/xkcd_python_environment.png create mode 100644 _sources/chapters/01_principles.md create mode 100644 _sources/chapters/02_primary_practices.md create mode 100644 _sources/chapters/03_secondary_practices.md create mode 100644 _sources/chapters/04_case_by_case_practices.md create mode 100644 _sources/chapters/index.md create mode 100644 _sources/chapters/references.md create mode 100644 _sphinx_design_static/design-tabs.js create mode 100644 _sphinx_design_static/sphinx-design.min.css create mode 100644 _static/basic.css create mode 100644 _static/check-solid.svg create mode 100644 _static/clipboard.min.js create mode 100644 _static/copy-button.svg create mode 100644 _static/copybutton.css create mode 100644 _static/copybutton.js create mode 100644 _static/copybutton_funcs.js create mode 100644 _static/datalab-logo-full-color-rgb-1.png create mode 100644 _static/design-tabs.js create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/images/logo_binder.svg create mode 100644 _static/images/logo_colab.png create mode 100644 _static/images/logo_deepnote.svg create mode 100644 _static/images/logo_jupyterhub.svg create mode 100644 _static/language_data.js create mode 100644 _static/locales/ar/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ar/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/bg/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/bg/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/bn/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/bn/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ca/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ca/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/cs/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/cs/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/da/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/da/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/de/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/de/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/el/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/el/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/eo/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/eo/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/es/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/es/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/et/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/et/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/fi/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/fi/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/fr/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/fr/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/hr/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/hr/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/id/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/id/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/it/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/it/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/iw/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/iw/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ja/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ja/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ko/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ko/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/lt/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/lt/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/lv/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/lv/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ml/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ml/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/mr/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/mr/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ms/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ms/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/nl/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/nl/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/no/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/no/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/pl/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/pl/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/pt/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/pt/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ro/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ro/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ru/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ru/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/sk/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/sk/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/sl/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/sl/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/sr/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/sr/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/sv/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/sv/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ta/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ta/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/te/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/te/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/tg/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/tg/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/th/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/th/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/tl/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/tl/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/tr/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/tr/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/uk/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/uk/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/ur/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/ur/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/vi/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/vi/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/zh_CN/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/zh_CN/LC_MESSAGES/booktheme.po create mode 100644 _static/locales/zh_TW/LC_MESSAGES/booktheme.mo create mode 100644 _static/locales/zh_TW/LC_MESSAGES/booktheme.po create mode 100644 _static/minus.png create mode 100644 _static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css create mode 100644 _static/play-solid.svg create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/sbt-webpack-macros.html create mode 100644 _static/scripts/bootstrap.js create mode 100644 _static/scripts/bootstrap.js.LICENSE.txt create mode 100644 _static/scripts/bootstrap.js.map create mode 100644 _static/scripts/pydata-sphinx-theme.js create mode 100644 _static/scripts/pydata-sphinx-theme.js.map create mode 100644 _static/scripts/sphinx-book-theme.js create mode 100644 _static/scripts/sphinx-book-theme.js.map create mode 100644 _static/searchtools.js create mode 100644 _static/sphinx-design.min.css create mode 100644 _static/sphinx-thebe.css create mode 100644 _static/sphinx-thebe.js create mode 100644 _static/sphinx_highlight.js create mode 100644 _static/styles/bootstrap.css create mode 100644 _static/styles/bootstrap.css.map create mode 100644 _static/styles/pydata-sphinx-theme.css create mode 100644 _static/styles/pydata-sphinx-theme.css.map create mode 100644 _static/styles/sphinx-book-theme.css create mode 100644 _static/styles/sphinx-book-theme.css.map create mode 100644 _static/styles/theme.css create mode 100644 _static/togglebutton.css create mode 100644 _static/togglebutton.js create mode 100644 _static/vendor/fontawesome/6.5.2/LICENSE.txt create mode 100644 _static/vendor/fontawesome/6.5.2/css/all.min.css create mode 100644 _static/vendor/fontawesome/6.5.2/js/all.min.js create mode 100644 _static/vendor/fontawesome/6.5.2/js/all.min.js.LICENSE.txt create mode 100644 _static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.ttf create mode 100644 _static/vendor/fontawesome/6.5.2/webfonts/fa-brands-400.woff2 create mode 100644 _static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.ttf create mode 100644 _static/vendor/fontawesome/6.5.2/webfonts/fa-regular-400.woff2 create mode 100644 _static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.ttf create mode 100644 _static/vendor/fontawesome/6.5.2/webfonts/fa-solid-900.woff2 create mode 100644 _static/vendor/fontawesome/6.5.2/webfonts/fa-v4compatibility.ttf create mode 100644 _static/vendor/fontawesome/6.5.2/webfonts/fa-v4compatibility.woff2 create mode 100644 _static/webpack-macros.html create mode 100644 chapters/01_principles.html create mode 100644 chapters/02_primary_practices.html create mode 100644 chapters/03_secondary_practices.html create mode 100644 chapters/04_case_by_case_practices.html create mode 100644 chapters/index.html create mode 100644 chapters/references.html create mode 100644 genindex.html create mode 100644 index.html create mode 100644 objects.inv create mode 100644 search.html create mode 100644 searchindex.js diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..3d4e5ac --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: f8d5a8612a920fa29b2fd5dc586fc11e +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_images/logo_julia.svg b/_images/logo_julia.svg new file mode 100644 index 0000000..e54ed4f --- /dev/null +++ b/_images/logo_julia.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_images/logo_jupyter.svg b/_images/logo_jupyter.svg new file mode 100644 index 0000000..ab25508 --- /dev/null +++ b/_images/logo_jupyter.svg @@ -0,0 +1,90 @@ + +Group.svg +Created using Figma 0.90 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_images/logo_python_device.svg b/_images/logo_python_device.svg new file mode 100644 index 0000000..467b07b --- /dev/null +++ b/_images/logo_python_device.svg @@ -0,0 +1,265 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_images/logo_quarto.svg b/_images/logo_quarto.svg new file mode 100644 index 0000000..a4f067b --- /dev/null +++ b/_images/logo_quarto.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_images/logo_r.png b/_images/logo_r.png new file mode 100644 index 0000000000000000000000000000000000000000..bcbd6df404e1486538e4d12fd9d06cf38b30ca5d GIT binary patch literal 32553 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 Ra6DO+4~=qnYIMM4{1@__PxAl( literal 0 HcmV?d00001 diff --git a/_images/phd_scratch.gif b/_images/phd_scratch.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9be5a2b7e037e9160c7d4c6e1fa3e426327be32 GIT binary patch literal 59771 zcmWh!i9eKW7rtkG#uzhWAN!Df9YuD=5|T7_Ni~-DO(l&rgdQ^(Bu1%J(pZY5no2^d zv4l!Bq+UrimLy4&RNDA_&mVA~`&_^4oOA!K>pWf?J#FnG!;omi5AgqQWo6~#hlwn2 zZ(kGBY)>C75{t*;o$a0HXXlYftel+E`t|nq_Rb+8;lF+@fB*h#etuzgc7A$#_RX7# z7cWNj^i42W{LPm3D_5^e6XoQURM(iSbMf7}W#@i1tu=NV7^O{pX}tQdJqJy!9641j z@wpYA!BNp^MeCfsiZ0w$Qq|DVH6qF>=oy}ekHxm;f z;ak_++ae((RvIg(E~lceBBvy0?`&`7x7IId6Md)C-l~6P6bUg$cO=y93FidsSW=Ch z4cHvt%UAyG?N7yGk+HE(>(*)F@z~WPmzO^}JKKkchy4D%@csMz!ouwQ{A!$u<>eoF zd2B1Ib-uovu3Tx#%sdz$zi-c;-7zuIJ9qB*@$Jo*&!ZpSKRa2rr}@TZc{!Q(>qW{+ zvdcdw^mWy`T6xa~A3T24^ZM2Bi{Z!a&Sn~Fiq`AQ0{s1Yx;pOMzG-T#_jCTm^5W~1 z#JFGI=fAH8ot>zy;fMISew%r=Jpba?>`?UfpoRGvUk|&*$;T7V?p-^RvphT0*H*tg zKl*F-#q9L>lj}$SyM1P`<>W)b(fduMcj^l3O4C>|q0jH%cyj$j=Dr=wV4rp7M$5A= zCfG{pt-ixO`^xwQuebRCLx}_QM@~@?a^24qUcBf7pf85;}@8g;3=aUf_P#n1v zLL#FK3*1j!C)aoF+A5RY3=IuGd^qytNq9(zmZqj;cGkt&IVCyy zW^?n!hK941mCMV^zkdB%TwI)AO>1^`YHDh1Z0yC07ehls0|NuSy}eysU3c%^ZEtVS z&(9AJ4-X0o^6>Cj<*uozsjjZBs;a7z(rPq00)enfG$aza%6#pgXvAs>0Mq|h!vAZ6 zj#~jJoVvGw-^szr8%OjDs=K-5H9nQz*J|z`rmWjD)_<+GuaxRu8asjTv-m?Jah61`a@F^18a*LCW0TigPYMiljZ&F^#b6h zwh<$!Enq6wHmZ=a8zFQgP5d)e=EZh<%Kl;@^41lE9xd zS?=04Dro?6csc1jsv?HBi zhbf!9ABVX)dEb^41IR#r^pe&wLX;%c*cg~lFKjkD?@Wv*jrrm z@wz3-$g{_u#(l{BTH-q2oFuaS^W|$Km#f{kiSpviji(6d0e3%86DG!V5T>GCFC!coBrqBDWx8>X zlEO)at*mFIGWc}=z9KO$Xp8a~va-Zsc4}QbSYnce=!jN2QJIKS@T05)l0N#hkmIKj zK9aEogu}9~4zG*X5J4@PK}3!xyFW!sjYpNz)gVEM(;WZneW!P=)U^+k3Vg`spmNZw zu|a37u`BeBF|4@V_ltF7c97u64ZU?Hv;Vq-t??0)hGA1FrN zD6(^v{yHw@@)JHxu0=aJlYdE_nyip#*hJx<}f4ULly#$8E-zG`v?Lh@XOa}tqal&!8+ znMG!Udc@Lk+q*2HC7p@Iu{xEewawVY9EEokqfRSx)p^Spp!thbshxK1t9`~#Uq+Eao)dB;vCay~f+wRHr#M8^Y<1RavNPXn_7GoxLnrhsncrD_Cz*j1~RPq@;`cg&_YN&lMZ zbzW2~Q_L9;+NHh?xy8*SzjBhR(jc@2VtP(8LF3HYetT13ZZQ?@Ufdb1ocL7+o4H1# zrh%(8|0S=oU=p+nI?*o@+SzomW^ps*VxN0{j4D?9(V$2yN#P~nr?8ON&8dr3f`TJ8 zEiU2KVrMf?m#8ullDtFSo7)(uPQ&r6lxnGGvmg zzHzjeIDo+!Ka7u|hyJSI8g?Np*|Fp25X^>}(ausY{Ue+63~N=!liOtDujCpyju@7I z<2f16N-GA+IyavfNTT!ABP+N{-#bg=Go#%wvXF~p@Q682TI(lp4}5pcA~lm!a;SBn zNjP4Tuo-9-Z2Dkx_lsx2fcwFxV%7%>^K0bNVGQ6SK<>EoS4ye$f~*xs+_iei z0DB-RJ)Esgh#dLH#m_4z-d1cjJL9FcnO(X$2Nf|r!oH!&BSjQOS$?B?*?Cm!9sL`r zH6fBSTKICGyHZ)JwaAayd}dfwSXZmI`#e{6iXHn4BEG*29xB)u1N?MFM| z_Sa&yTd(~=7w-V|xmZ8hf();ji|>Ju)~Tn7Rl^W6y$b`$`|@0O@^AWoNR<-Vrs zV6CQStBwb1I~P}&;KR18nHC`reU}|cjuo(X&$($30UTdYi%A@(RPPlcY z{e$0j{J8%9Tu$3&J`?xZrvZbb4J?f0t)H&Osw;2I1 zSK=B~?<1QR*I6>tE~HiMR!l82DWHqhXBeN{<3Op)AH43i8Lk@M^;w(#Po@_3mEsj9 z>7?Dyp}J9&)`Gf$?k?h!yfpXY4o9N`Joaf!^wVvw_mq6;C2BDNe50#C#aw*tG)jd_ z!PRIdH%MzucwciEs3snStEGv#V8e$SvfA5Q2h~cXLF&G;)G%rdLz?bXsp!Dsg=xgf z&@m03#F}dgFD8ZH3MMg}T{o%OIOs;9GPv=rLJVtDpCg4?ngt{3bY!5yyPc(|h@cpR z@P4Sp(6mufSW@T=+POuYg-1** zh}8N?gB@QClCa6OnxzEDS#yAxUD2H+}4(=X%LoaMkBFAt5O%T_uEKII*wQj^Vgp9vjcLECv* zb&MRPw47Rjifk;jUxKXyPzeK<#lU33a4-`y2&G2t+HyMDb6>YoR!GWPTk^gjQkEF< znvOkn12f8(X@#NSfG|}AVjGCD5t4rM5er?UZ$iU}8*5})q`x$LXAOyU3~U;bu?!=R zGj~5jCPh$5$Z^B(WbCbO*+?`P280LiSwG)LE`tcdHR2&S9pg{@AR$V`CR$&^rfDwE z?h{E$U{->OOCi_5By&3BE3iDYl16;?Tm$=M-4Yr46AB|G*64+`G%ToL9x_?_*Cu7h zNs2+1D6dqPwmtd~B@|<#o4c-o{22gSkzJZn(WB6!w0|)rfVhRH7S80 zBzYEqKw(iu+WP$>(l!=I6&`9`$`9salKF>`3|ty>g8~4)2g)?3J;|=bZFI+sA2PCa zd!~Tv{0dC`z$e{95>>1VWpuHk$V_52ahZzshSqDnj5Ix!5JKIvlS!5r03l33QDp|< zlJK_UgYfZfKaVq2PDI(Ah-o`M+h5W=%xM)IF~XThFJi*`d?mDk@mN_|9^xxY5%395 z$ue8Fo(OF#Sqfbr#KHnT11C!?IS|sSv~e4QcufhLam(u+thSws-w6}{vcL~k90FEJ zTSxqLoRuQyuq-5Pqi>iRlBur6K(N&}K53Dk9`KU1M9tc4w0pku$dC8=8cIjkNUg8N z0tu~*$tzcW03F}OEl2}@%E52A0u_nyZzgVoQNp2%1M3968X~?_OxG6d`NxSdIEvJkZ4@D z_1~Qb=tm=MHUZ|jy}yp{^9lWP0K;Mde9>KDN9GpGEvF3#E&B4Cq8$A zMhpkUCT79wsZD8IDrYng^)9s z8MOUFP?i{5#~^JellvuzO=@pY+e4~fgEy7KEB95Q++}3LFX!0Ror%UIvsC_&>o>P0 z{AMwwzYsSY>R{Sf$OMwV0&zT;JWsbqY2%}4h|+Nf)s&>)e9}(60IVhHFI_;m=JqRt zcDkrAR0Iw8HSM2(vRR~EdrtH)|B(QIUV$$xoxbp2(M8ioRca3ja>g=G#nR=GH*8JivKVn z0$K5|7*ox|D7`Gt663a0u@@fdSCi}XK4A6zOP<@e)HDQEg%_PYRvp5Eas7~90bKa# zaLu4%swIuUK)h$Q$x`XbDi@{wiEdq_aR$3-E#ea$pTegGecLZB)Nd3z33t<`a^%*l zD*TmT;;A{?dAHjxsicafAlty|R6sX5kzGi*%aRic2wrDyz(%cYBRBr-fgr1nfmg?S zcv1|Z)adOyW3TSK`F&?}TlO9q z7v+@CD{Nz7f`ok2OO-$@-Ak?BGkZ5z1$rSS1@*N_%OW-Dypv*5uR}xFQNrW#T-^>u=Dyg_v zk8p=2=uFFibNT7GTdo%*LPR6idXq?wzyae496R=Ge2I(><1X%HzC$BF-7XU61NR`r|9wFgm zQ!-Eejv8KOvgzEQkPs^_T!<#$6yl2Mn7B<*XiEeT;%7{87hvcT4|kl0Q`kIsf=_sK z>3Cx0<%HRk1lASikj#V^lp(;j&7L3YXUN5*NW2g?F=-o^U&+|dfcS&Y_%0##Sd(X%h;uc1k<>JtCE_Qm3onaku)Eqn zU=1WPHrAnE0C5MIG^w+1qc#?*lWSt)Gs&2fVDEbdN&KrSM2w=Gy)Y;y+~q%)>Lfa$ z5z`FBClTf+3-2$uspvF#oGf*kN9bc*x8B~ppAQZ`emW!|M2yP7Oz9jR-aAbytLe$1 zxjwN8Zm$rR!NUC!;&WJ1e?$b8%YzO_j;KH8hcf$4kTHi@_>(Lg)3hHp?JeTt?r$H` z+lPYzrkIJ3WLF;F=Xs4yI@tDf$*5;v4c=`?#&=~}2>BC_pCla^RsIJ7Wp*m>JJx#m zRco*aD!lzlB{c9o89N6Nmnn!B9adz%;W{uh0TUONrf!j@s~2+ zfn%1GOk7)e046hFc_9Ln2!GmL*EWy#`dsv z8{m@Pt(76Ttt{*mr&RpunT!rtyOI}E1A|dT<<~=U5O6e3K!w-K?GfQm3a|wNsjFgq zRXjeb2|6q!#pR$x27GgA>|G&Y!nfLG2k8_;YIpI}-pac?np8PM>JoX72TN^smb%82 zdH`gCmk9$*LI_djA^m0SmGVtGmwP@E9`bNyJX|^b<4F9}QL@xAo>Uq&dzp#btu9qg zgC6tV&1AoO%76O4|J~kn%(#T2%R*|35k?}UxvKZBz|@@*Gz>sJ{buxC>|xQtAR!bY zmO3PW-qNJM0pbx~IQEHCfCOC#q|QkAaaHGRsw8QAIkCvoe)Aw{ z*ZgjF4aSB~+&QFwtxLvbkR%X)*r6reLWAlqLky<$_OB_-#>z`i2qJpN0AK0~U8<1x zDS78q8AA%qn-9J+H}GbzAqr!C=2_1rLKEvpxnwHk+*0Z}oQOG>aqis{aee$MBx)j@+|^&oRXn@$fr7aDrNMe@#%^UVAeBxJ{m{t}%!Gdb2r0^9H z=FBW^3PHRXJcI7!0lri|6L(37_hs<*xe^z^GgQt2Mb@{y`*cGH6Wi}JnQrB zq1ZK7Dq3oYgA<-JM(X<2g$+*JFAQD6kq8HF z#WlR&OK(29`?-(91>u9Edigwx%Fw>!Pd&=yuGOG72Iy?8(Aj#uT#Bdd7NrCL!vH?1 z`)>)^uE_I&-1?d;;b#9`*^bEoIBzwo*~{U^GuQTDgq$x*6gn zU1%8sQ$3_cJ3Yvq32|w}Ip&O1`$(qni8u{R<5(OjHXdGN_Feubdqpi5%Jo84XrQFx2v({Ng zjWu~*`SmP0(4@UG>m7yy);&roc-&kx^eJ*e7lpPgW=bVeNt2+inr?^$1Jq<~; z_;7Pc$EC3W1p<(U+)-LX1EtnvLc~1_M#mvp!xyZV{}?K1>)!V}EmqmTbsjKv@l zo7k|%fd#~bpJ$lyZO>#`K$dTuNf+=vdiNi zX<$}mzbiasTwkZ))`$Ss_$T?Xbp^BFA{Sv$PG5tI`MZ4koc=WR*US3;t@US9Sdqox zko3JE6Jor=m0U_VEi%ud1!fnShHG+)*FI!T5+g3~*PP29dbLa1T)5<>5aE4omsrV> zT%D`Fe+>deG=@~Zal4CvPxpT_E8O|#;FeDZdQEeXMMeY4+5C%Ut{yF?7~YVv zU@2`a;b?7%ef!&VNztUkRSO7mjb89qAXmZ!d5uCD@?$Num8#>BUUA=)qAhJTrnf7x z;vq_C*^t$PT2-W<3b8Lr4I0L!=;{;lB65$NZUWIO(@p-IkfcwmE(A;@p&`cnWiE`~ zB6@n^7f<>{9YhLX3Y8s?m0qyDul|v`fq3+tJylRG1#n$z+yAo>Vsf-TFl5HRL$u3N zYlsE6sT=T?L|SZQ24ss-@Qx|kJXX62DXLh@M;tlo%>kgHFIb<3??rbSx>35!kmE(c zizu1l{^PU)%iQwbZYiWYjCh(w&1~5wl;5$>M^GVKAV&Wd!5S@C zOsr?%>1TEST3H7A4V`9Vg*)C2h}^gyXg0dA$3Sx zEwfKDs+g{Dh760fgA6?a&;A;g-tf&WNW^p;?d*FTMAed)P#i`QNV>wyC!+7v%Cg}n z&dZ0ZdKN*naYd_1Zj|&1dXK7S9XC`msj!#fVQP$kQFtB2Yhm}D!cfw| zxEr*K@?47DIwtk@r}rH`YzCOpyVpRNE&!Oh4|Si65FN*je7kq+1u7KowW$&paZWLE z*!|u53*!Y-#p|M3Y3`hHW}b2JfX;6O3M@rR(HA*Uaz;IBZycn3f`WR?+GBNf2X!`f z=zwWHY`ZA?#MsyM@`-17wE_}xi&aP@5b8&9DL4yPp{uaf9U|pzhu+iu0Vd$ z*-x3f9ADWH0)S8-=UTAUF^8Pb?>>h>;5Pp`Mdo^9K)I_72%{5@U1+AvuIkpp)mO=z zMKXamV>dAIG=B!7E;kj%FP$Qv9zkES{kun3-Svf+sB@1=*2is0uK!hF^Vh=HrX{UE zA9u&+TvW`Ob9qFxJlrCvF**_#dl*3iLU#(T6ALK6pT1@yaBqq~WDaXToxG5wu~5A? z`D43gfWYhaYqPxljE|sg+D$_VRU9+5P38CWfqQ>H?PdPwt@V|RS|L)pk#f3~Xd_9B zO9fwQb3wi4@O7GU4?VtkS0?@|l@y)9D_vZ4&wg#&qStUgcTVru@Sg_g)WSgC970IW z=XDS4bxt}n89}tU^;2Ggz(#C49ex*8m-m5{TxYQTgJWO%v$G{%cR!7s9`S7L+6dSr z#x{azy8VVtekrZ)mex=GgD)Rvr#9Db|FqY_p{{T~ytQxpd{X_v*PpTvbiCjG`QZD5 zZ~rbI5JEd7$u4>8uE-Vb9MJ*SX}xuo6GwJ7MSVGP3qPfI@6_Hu6AIU7HcW&@5Voep zsT95KwJ1u+*jo44=v-Ld2gT0{iOpS8Nv7hWarJvax`gV!tX;CzIxH+qa(&T-{rf8h-oV4T5q`{$|j}K)p*6;lL zao3^WuUE2{`gSgVtv~el)1gCu-tS!bc2yQ-KQ09bbc8w`X-Y>q($T(jOavVpN5>HI zj-)%NMmMb_(WN`+gaNwD03AoLy)3zhoy%nuaMn@tXiTukARU^4vii9P1>F7ARtpKz zjKVdCp|mt^%19^P8%|nsrCLGS>RsAsH>w9$BLYelx~7q#2no^x*h5QLtN_jogDV0_ zSq%_thHZ<>!;cBU99=5r28rNq>FaJC;l5shzOuHmUJBi5m5Y)kV78=j9A?-C1eAGe zmFb^qj0nnP<(LT|bOXu}nc?)H0SmkW-4;eI0O;&MB?npzg?~ZU&5+O5{2wyP1jD7Gmu7SL}nWP-Z`5#U%AI`+e0Z zsMt54`6V6Ec==NXhav#6@>UWz*8Ea9MU<7%uPWXJ&% zGS`W9PU;3*MCM4gJ?uEl%W6eko+`cAY*yZcGog~wS{*V9jsYAu9>?uX#HX}!UC1aJ zj|-OaTQZ9>$k1~fl!*i8{ZQfvGQ*I2P`tL@P~pDE(U?jID`sbrQAw<#6k$#lc_4fW z%9=q-9V@tj?)5dwwFQrv{zoiExPY9Oo`%P_LTDkTo(^S-8|#;l(H(defGt{~m25sY zZ7Cn{xgF|xmqf_kC3ZbIFH6kL9Jw#m3Mscj79+^=jVf5c$whC@6k;Mo;KLv6(+>RD z)S9GLh(-r~iBR?klr_SR>A)ud*oaD2G4b)OW@m`FFEUPq#I0gKuo}#NhL8k<6aWQE z!Ra%PEyRyhTDkVNTv`L_0FIj}VyBHj=`3yv4ths`)0me*8uuU!Wx?F!f>p#ZX)HuN z1zJT47Y5;GhaH`X(K55{s2G6`8T z{#AeS{e?M6WR!b4H+czbMuSuN(Bcf&jO9C;4xNc08k@B@Hz8x{99Sby(wK0wD|A4R z^BCs3$U&FIY$JKj#y0gn0_RfxU!=C}V`3!5V5k7DVH1^cmgKI9wE8vA(lfBUJ=tNsws_CmP-RUZ^oqt8t->i`UrPG0i%usIAK*|m={kT zqyL5XWwX|CJrpbP+c2g|Gy`}BZ<^AfU|eH%BEe}SB*#^jo%;oUzJ z^u;!1h|WJQ0Mg=GsDT@o2QqO(zfj3(w<$bb|Lvot%eLEzX`>Fo+pVKs*VDKzBYv0Cz;it)b!nSj`ZGX<4y2Kj=-idIJI@X< zoOZpt{d+8YXfd3L1_ZF_eek;F;j3p9fU_+}<`?q6^BWQkq4_+p=Fc1I)Q)*fX{xt{ zIT;w^w!do_zIi&xNA6Xl5!yz=^*eogF8ByUd$21VP6><1%e&~Xxi&~{{jRQeF?~7kvnqkub*QJ1aaOspe?FnE(V8kOg4$76` z9He6UP@FeGM_gvGxC;1NKyADPDMtj>mm!)MiLO8lf66xluORdGUpF1h1&`|~7|Rq$ zeJNl0F=Ro9<42%Z1XVPnHnSf#<8hOjT>GW`gNhhMES%~MRy5xEYh|r=+WhBZulM6n zN;}|#Y21npTw2AZ-t%yxEtJ;E-FByuAm*|t-1e9!;Tj-(M}Q&&z@J|5fp`kp(tmIW0Ve2^yO zZizVu_@Fl|<}Ro0)9AEh28%y&J6%MmA3?4}#M)UthPN*dnzM@b3pS?;xOfpW#Zdfs zDgWG0k;@Y2AdZ_M0+9AGoOu$V&cU z{&k#5D~f$VgK|OPeQwdQpV-ydL%DCu|Dg26+#}g<+RuQ62Ix|qa{d*c!d9fM7*dVD_q-TRrbDS@alY(cNx@|O z40}SOqplg1FuV71zh-Om?Pd(Kp1&)jAIcJXW-{N`S14fjK><97Ma^S{aSw>PpS&X^ z;85CCFh0!9AO>cjks(3p#mD zOUS=(KL35eUbx=LXht0XbXy#T_=xAXJoT{(_bBzP(Lb|l%eQe$`DRQw1%nDIe3B{Q zew#oJDM81~ed}?7^=Z+4i%6Ltkg_*yMhmwfb5xkU_kKT4>ny;&MeZBP_qn+D_Or(a zaBmWYnCFiN65-WBR-0%Ta(j65!u`Ai7PmfS^b)*1BVZ0E#H?6z6Ua<|Nh5)|(0&j; zIK#CCdvH4{R|K!A*cs&C*DiPpW~Stc@(g5u^($9_BAQ~aP7B%re7Ob}8!!1{{`sny zlP==k`v(Gij&DnaGtBX^{4Z6w{l_MdJ`#8^je~9ZBDwPJ!*QS251`(bj~#m=+b;>kK-8Gb zi%F+I8U1j&@QKlXkl_2*fe`=1u-*0EUTI5M0&_ef>qOQNJE&gSMU0wO7{CY-EBSKC zg6By4rN!&P58)rs!wV-{M?G$vJSixfaS^^T<4>i+V5i~}dm-$CO4s%=`{b5UAHa zO>d}qd7n#-#Yow{-}Ot1ZOX4_{2pPH!Ow3{&wITrYJR5W!THbGpI5Ra@0agg4fz(8 z5~}t1-BKySl7~Ze+X^`A;I&>&oQ*x)ELOk6)4%rhUzI@t>ia{CVXT1J?n0b-KDfGi zdMtCP#k*R$SK25G6xb!Lr=D)+4c5pQ?q1M+Sgv}AV-QJ$ky7b`EEzHT=EM{EV7diN~4O&sM^4G}r2@52>9>c)!cef@(ddGRb5y_mG>>%ZF3BA3F!j- zI7yBYhV-G(sCbjQ<9u^%iTzAvw4a@aM$8lC-)*(b09hYf?Y#AHHwk>}==2KOYW7}p zb90`xQf6SVHWtLDxoM<^_-m8ETLxYGh;?dS)Y>8R$%sv#QWT>K%|dozh=2Hj49qea zuFBYK|1&0GEvY94KR)JSv>)?O znl{#Ho;8@~I$jXSv$GAN*E*20mZB@y98KA#ospQnT|0j9E8&=lZ1;WFso}||r}wEI z96Ceo&G@)4t0|?*svn3bwt(I}eXZ|E^S+jDJ?Trw2RH9}u9!74+o$-p6;F4LWVV`j ze0eBsLHV~OZG(3BB1-7^aRf!bv(+4`(5NKPUPT$5V@DoV4D7=muO*`2Jf^GwJA{wnDd%q;?X0G#$3@$0u_)RGE!#2( zyZOqmHTjD1;_Hy|5`|`A>)MsF!SJ=!Gn4Cm0Nw;>RsVguhJVx}=z0Fd_3cgLoWM@s7<~_DoKJS%Yr0@4BbOx|Ji?;GdPP!#~Fhl%mFNT)p%M zURP`XbA%G~DK7)RCG@(79ypWc`gz0sQQIGm$t2tH22}Nto6!|MDs%e;i4 z>MqAd$YOI3TQNkk#8J3arib@aS3qO6-TMh>^3Xv)zF9))RQR*CrDl32~?Lv7pVuQwSp_e1xtyBZcG@28$DLMc#`V;N> z&0agWfm%dSj46)5g@+X@!x>GD)Nf>WyCVHgJHMwOt)WlhE;-*mIa({NT_(K(I14s% zz-vL?TlAofD~>I@SHv-jDJ$G2$f0!Dk7a~6n9AmS@lCSaex_!eu+z%ZZKA@}zh4%$ zbtXrCFY~^-oc1H1Aohw}p+HZ*LfhG9w_F5K{UqobmkRJDk*+ag*5JP6l`H0|XVPOPDxBTn~AiZ)DyUMTaLo0=?NfM$oXVG}a3&%I_+kqgy zUuCUR0v>n#rYJc_`H0TkR zl$?rI$D(qL7Wp{8rB6zy`q8T7oPul+B~xEvn9%jIa;Nh!e!ma}n#zi{QM$-w9q2U? z>3EgJ9_rjmg-~hFLtG#uTJwDYsOulcfHYS{(|u*e-)E(x`;#x+>3QjXmsgHXuGMht z=__mHW7HOFwagn(wsT434Ax_6cmq^S6oB5558y{djeTz?$QX`Zb;u#}Rta2J(TxGE zDAkqGYRiS_4XuL@kx#xf>>o&#j$CqkinF({9R2{lEO_a}Uh}jrUZ)X7zOOa?vc|1r zTuPWDw@Fe4&JDAbGFp3V;I*81+=Sejh93QxFL;lEF1ZKbL8MA+!0R3N-EpSGjmegU zKu#bm6ZYuhDTToUIf}=_Ht4M?liMP6YLCQB>BUqRhSCB~7t?!;np}_UqSf~3XJc0i z$1gm`?vSdO-1t~)SX@*(RC z4W=9V9FaV5u5FJ}IW1Sgyt*K`gRFF(F{QdTQpRl{iuePE;ayEqlF8ic^q7{bK1DC| z(bbXXd80Ll8B*T#E`=5W+JsV#E5%32a77+QF9ZegVeTq=`j+eXgDvH=%E_+z_~#Nt zu_E3;^(g?>w%f)3kZ5vc-nn`+{6Y^$_At*@vW6xrRSfzO}}3YEh|8;yZxo)(4RGOh=PABZ!g?h{@i}^Oa6+3#2uwibCn9B{u(^C z1EWpJao6m^UP-#c-UDFguujIshsY))dJfK4i#>GgE?S3%Ak3D%q8{TY_*S5G6Y=o3 zi(ciov+IAxF03x++{p+Kxc4*$YXdfs)4!A3bj@jg&?EE+Apu;G=s^$ zBt!QyZNGK=t_fE+Jwcb0bCoWRv2e{*)i6hXUmnA2S zVT1;6bYr@FqKCWmvc}by)Q&}WitWjy$B)!OmodZ5RD4F?7oiyDs#S+oWE|m1T-9SS zb2+ZqCUkEY)-=U6*`;Ij^W{<4(nhN&{QAaxTKIu2&J} zSSO=2le^X9*xIp3lM$q8PuGi$%;v$SoigTyvCUDjMUcrkWCaA-Tib zM|DhQg1=SFwxDr*w<dI5*A6QCSeZx_ZxW!!Y7;T@VvdY?a4O9_N$C1iP)@O|D6%_1R^FP#7O z=KXGX_5Y65^ju=PLjp%h^RV#&v#o#S^$rYL-$ne*jFKHt+XS$ulZdjj~)LgbT zEe14jTxK|j@8s>B;zVJDPR(v6KZmIU$g#&mvPvUn?H*`ew-dwj5ZrA;2b&4+-tW`j zm3m=Uw*Ic76}nXM1^<#AxB>v^zWWL=#!a32VQvcjY(xc8f$SFiQen+&Bt;Nm*Th)_ zuCh3Uw`Pv|Faps~M?-g8@LipCUFG}hT=DfRqN_Z=^Wqk|X`IFm`XAH#d>*(%2 zhTNs1E|f(No{n6F49f%Nf)`3G7^;Yz$pZx;=RcpV_Ae4j2|?laDjZC& zK+_N4VZ}evmgF<6rPp8EMDBdHStT-~{h`@hj;XGq-7G@)HPW{S6*#8{idWdFcVf8; zY=c~ma;B@3h_l~+gQ7y0)>L;{ako5w^34pwL>Fn?-=)n*YBnR+40JVXYnit|gRwad zaHnBUS%;wzW4Nl_@0N}eLQO(!6M%RCmkdM2LL48iF>l;eB>bGEA9VT+4hU_nb_Yk~ ztZDVzY zchkr`?`Zd7Ur^4P zo;t@UM>#Zi+ta}Hf12+28GguvAwY);RyWT8sB}}JG%c8a?mU5z&lJuar+=C4F8w$*zX&T9^^F&?KMhUY1!vGs$Hlh$f_ z{WsULV(;)iB{QGrrO z>+r6Hcc))8e{%JpW9Ovh&<0MwP+QI;t$Uu1UqPz!YpFt{ah;p;`=F06_Oz)YNV>ZN z%H18r^Y<92b;Bl2V;?`40JVrPW7963o^Y!Vu9|UdL{H~Eq-j@1qCsh=DmhM}ymLMl zsZ$)SY07pffD7#BlzI?>bGj0@{D^s`mW_d_weEzZay3g^v8#C_C zi{1I!NEJ0$&y;O)+4bkIBW8;nr-6kkg(~f)t~+^?sugT~!6U6j*R2wS(Lg7)K~=4w z+i`1-;jp`j?n;-j!uX_Xm#qbGF|E6piFg-VAIfB5Nmj0_Hs1jn?l4QOxl_M`zN`KE zNNP7FdF@wxoI*#rv)G*?MmiU`JNBR)a|!mv&1i2}rhwx>UDY=XWt*Ef-LvxTv+`Y? z#B(sB*?r^tW;EX&y}RCc*@^+(WRR@=m2diMSqB*046v{cw7D7RVjbjlGiZx-aOln8 zoz_R1yVf>$S@?2HDX4Yt*p{qsVQQQ;l-#gmDJB)xj5LlV#oc0x?V8!Oc9CtCdD9FH zZ`@>X{XM#^DLvL86*Re7poQxz-3|V**MrwqQz>8sX@bVs@i=x(Zk7!z zW+FRIL?3#+DQev}wkcX@px_?)=%%SDYB16|uCFET>H2;Dwd{MlKK^}6{O9%if3)mh zSqL=PDF3s?H(HNO+M+6351+F&_ucM1(5)3$#Db*llRIS;HajJEmRY3tTK~*{-&%3b?sR?I z>1Vd5PA(n0YFGSwiN|#_v_+mp*{S!qs<(FjkE45!XY&330DkX$w9Q%BWfMRH}(2l~zeA<+tze|2_72?A~=> z_kCUO*ZX;C&mT7%hX_&4!Z#_D`QukUHW>mNFPSGA;g6r|IDY2d#*&s_+40azFCk{h zZPp$oH?+i%sZ@jopcyDRHQs3}O!YMQ0V{FQXmGJ#YBNecy-${^7~#WO+Z-cOG)tId ztLE%2&2=o>)A8-vAV#yI`D{hUT6Kx-64RzD)xLf(EzjkeGeb)pxV16WCJfZbf;Md5 zg=BYWrv1A8CgCE^uHwwbb9zm=lfRms5}V7HH;Ot=J0xW4joY=pzu)@h{)VMCHIEXf zsgC(vt_?mz<4MDT?Lf<0s12vhp#|r}ffataulPNk>wcGMI(OzZIe^edr;;zdZ$ArT zP-x)=FA2ycoa!g0AuG9c55(GLW8RVRzz9g)OD|h8!xnTYElG7uXtS252D8Kt3;I5D?TYSHG zVCmc*+sc7dv-_tVV_>l44*N97>MYpiqruRCp0W6g2Z~+bVRSpczo8%&8o|`@_i~W6 zYo|diDu1=;eE)B;Z6UZzNj~1aWf=|6;zkD#>kuxl{Le=aa58nwWzT=DEY)F+FjPUd zW6dWQhmq7~vbdMC!nTp|sHVdqFV&ubOl1Lx06;M`u0;>RI80$-hXyO%9%ODz?y$~+ z{k;g&S_%Y&9hxOBwj~8$%R7$vcKO&tDB~Rt(iF9dhre$xTZg+|oP^m(e`-oQtdk)p z-Z=g1b<)!Ea|9$;P!P0+RRSs4nTK1kAtrznqy+%2DX?heP`9(%4`mS1my-7X4~gmm z`#0x9Yb1lu241;bTz6=+{-UD2DEX4tt-xLTdmalg?ggJN)?uxI-H{s{7QqtVYwLO~ zli!=~t8(^8<*Ir5EMxQ60WB8x2O|TKTxAW33I8M2Axc$tcGBl)uLFS8kbPWu&$f$( zbRD+@*q1lPPegK_ha9CMxKqYkX-4J;fY?6~aGUp?+zZvnC*2)`NB6ZR?S~0{=}v#mLUIGzTA~oLsAo z&`K~2WMl3U?u(|!NQ)T^o9bu1TQBmR zl3zb}#(iI)^SBPUDE^hGia$tdjGNtzA}4i`?apnley@E(W?7|^Fb7E$#(%=lC?~Yo zsAcZom8b6!CQti+7*oExr<>^10Eh>RB@^vrGph{Xf-P2sm%?d~Mx050YuQzn*3(o~ ze7tqWU^li$KLdKwsM=jkT3HrLN?dcb`;~-mm}L1f=`DACV%T^gS+lkKU`ldh;|pN|Ak#hbTJYrU zlRk~LC}@1#`V4aH*s*7{xa(Y6DD})`6H44kqBy-&VnU?wCM~T2^ysdt{?teZ^ztP$ zj87k(12j%nPwM_V>pIaatK5}$i<5TXa z*tw$1{Q;B&NycZ;LWC&0GFL&3znH4p*!F6zFvoNpTn_;szYNo*n3FyRNBabgG+P^5 z0svL&UFvb5s@=@>sKEyoKs83zDsyvm{i+A#d!LbF8bit7=#-6W2L$mkZNBShU3+9H zICB$E1Mk&kHu~zou>^kHl6QvM*+S;Ugb6)XN2%u`4SW1a7-gl@&&GsNXe)#1czkkK zhatgybyq4dgW}JM0rL#lfe<#ez}Y9;wptG=`28rg830?wgHd(Mb&qc^B;+{m?iYB3 zqBnBbpta4-fH!x17pLd>=@$o7|7wk4aX#71Iu+v@D~~iW(9U|z$x~GYGZ%wX;-5_6 zf{om*C4;qQc^#DC8y)%W^tGvD2J64^?e+1F?aDxW zBS?PV_1IpJj(ZTiT4$<}SrzF_Fk9?U)ln(cioQmK*+kPPq>q27ur4Qg-0*o*?e0L3 z=AaO4Cwa=8emb9=DezFr-Sje)=(ZuMBUTWZ^$3RD>;i#tDr`Jhh8LNA># z?$ViqKs0S+_OVjN7pzJ}e(fX`k-~6%9W01lRH?9Lqa0=xNk1?J7iTa?Rw<8x4v(Q(ci%7hrPQQlVMlopJ8SJQ1T6%_L~?$}Y$;%wAB zcvg2PP3@49*rpjmjO$9(`6!1%+bs$A>8?TznUK-ZMhG+tCl_71{?Y5Yr?fTPS=(f# z!`eK8l8__%Me1;X^BXS0J#|VKNl}<(A2pypldigmtZeos#@2LDe~xkOZz1=jCA39N zSG%OQN~v0#>IkP8C|HqRHi|bvE$6t~vb8|`h@Nrjsye0%iOe(7kyZNnOat# z{~%On669+xFh@Bu7xMg!Th+Nk#I|>-+3;&1!o!e|oRyAqUKrha_V=r!9v5kBMFc@S zK~$t|sDznxWP2&WTi``sttvluzhvBe`;Tn@hHkv`B}iN!oBYXiUF9YfMVNJhc&^Da zZGl#G!t8nP66yW^kJ6mwqt&K5Y%8(j(%RF}8G7XMMW{o)m~iMC3|Jx9VN2Lj)R$~v zg>I^JYy`oR90+w{F;!C{1DynEIk1jd zj^=)4^g~Pvea$YzE269Zk^ScH=!B>ly;Rrn3Jp~fGAV(%+ZYbRZb6sje@_azK9=gV zV5*9*SxdbU^VPxP0b-Q>0te`2Xne{w7QEnfo5f8`dk3_lg9W^*v-8y$~SU=pPzVrCVTfp-gr7N*kNQr5eznpxg` z2v>FpCvSsFX!>s>oh)2@5_1D+V}3HF4;!%C-N<>o(9!0`9&Iy7*7|j6Ne%G$c7+X^#rjVAWQV( zTZD_hQ*`wEbe14m58JHS2SsX?*j?Q*oD?)h`9pR8#@7?nZ>5A~UD}ZY?$nt~n#o~Z z4I$wZ1nBwTN0#YX>_0`&g)L01?_=V_LUE&QWFz2V-$eA>1d8`4X2|r{KNzLCR7cFj zHF!@n2y+}i8jNwW63dAFY@I$xbt8yf0*GsTR^6iITOFZKrCM?5Pa=f423aY!it2-g zhFqnzv(>sf$W~&cu;v<`rnA^aT?iYWo3H?AI`H=>BA43nX>{SH+VFsFg`((JOFTbB zr^>a-^mlUtwLfQx`rOxk;e&(_GJq}Vp%=dBrw&1M+J)LPsmD2`6RmAH9}kL3woaZA z(9WEtv2lm56ukG8|zGxjBV8RNK%M;onGu-eurgX|z8**v4D)8l>AY`$jMy^;W!TF@x_|4s;SBY3ucwzgiX@dA4M0kbA=Ix9 zw}(W34S|hck1vB#BHcGFq>)FN*NU9Y-wd0_Mkzn>bvE?V<$PYMVIN)yCyx-V?P4yx zm0^(K&igYd1+cv4J4#y);g(O|3Rn^nXX(hjt0}Got*q2bfu*-K5I@Z(1WY%{7 zA>z*zYP%?RItw?FLj4^~&W^y<&p}YGl&l;Vc^kFvQ2#81(ki~#z;L@BLA)z2XvD8P z1BJ|%>dfAvx3cq{bz#4Qi%bk*7Sk2tHi|@6-(p~oP9N$kC2Lsi1a8wT7&=D7zB{h5 zhf1ju8k8nGY?MZ;-0a(b1Q!>k=mFqWK(kcxT?>vx+0?uI6}#LLlFq5SSk@C8M|NGg zi>;I4FEezOyAHel*PgY|M#xa#r1{Nmr3O~w4QX2pS>OMtob$NtbHk zYqnxG*^NqYeF@RJ=MT9$8h@7#yG_e6i8H36H05-F#ORq_MOl~_T#gHi7@@-+wvjz1 z+_c)s^GxzAduJ4H%j@8SADHCCEO>r2PfFKG4qj14Us*w4G5yR%qI^arM6D+cH`GVg z7}?n()E=U*pR@qP6Z;>wQAktdywgwuPz43|st{2g^mZx@f;I(^1ys2*Q_7T~-|qCF zr+k%TuLD`s*=>#=4kc)Q_%?cSXGqfm^CP;PS}0cfv=Cf?)7em9&;=ofZPQOj>8i@q z&1*6ba_u6{4{Ic-bwZS;IuET%kg3Rawm}HCrNpjhSme%=h$f@8Hn8Z)>@0T5HjO}fGHt6M;wtRn?HmAZP6Ak8O^|7X?Lwc_Cj z_7hWQL{6WX=yW_Xz%E;#T|;B-q<`x{&VpB0aH$)17kpW8_HM@7LNsUF{`-~UHj+g# zl9A(fb8|0HB*72&vUM|3fCA>qvWb!>&ogptZd^!Nfo7}#gLU`P&N|Sy{@0{!vl|GU zPa`pod+*}DNn2UMym9YE$?(O3vr?tyE@=Kh`)Vq~Lp!9#%W zH#%JE80DyIS{Lx(n{%!yLizSo&Z|%<{k3)O_U`1BI{qMG!p?|b%03!8U ztOmFT57oStMj12KAplgW*sY08`OVakmO?eeh$+Qw+x=)^!f6PC*kb^A&>#9sphc57 zvzDKWr7sB1wr=#CV|Pd)&(1G<)z`kCs*Ug9c%z}e%We+GZdmT4Td;8pZKgr^S1;%} zznQ<#BzFMF?3$pAY8=SBjgvuMom3;2g{VzGr;7pWu#KGu{{%0xslS=Wx7)1f`Ssu- zxvwLz?{V^tCOf;4qMJHR*czHzKjS~w$YU3_7cSGNE8lnNimyGqP3{kdMhsF4{4|N# zI%1$alH3hhq`#V@ zN9Ax*_fDpDrjlDzM(($b45rvErkolrw?7pMStzZ$X}_w5O|BFx@38K?!R|a!*4fDn za1EBYcvwSd>gsQa%kqh$%qO~ywUvg@t$8j~``ZMQ4oU;fxRsWByXxS3#j8RiJ*|`F z@0EA_@5#3C3)a1wRiP)v+_#e;2jSa9zR4`H z<-(R<49>mpx-O9TeCFWS6Za?Y-!IN0)>l!RZq)9cvBHz*x~jo*bZl)(n~)Si1kL`OSm9kD5x)f>TuI z--KU4R&txxvYF%O!Q-EOV^%H7lw$7x-H}0-G4UR6_0l9q-jqUBWF{Ma?e2!?4i-@U zF{leSXq!q^o2>-amrw3@BtEGQoZR`ybe7te1is6B@Wk=W^6NbluLTaw;w&mq)b``g z-kCdeJiZZLB&T_K_+YiJ;xG9Y> z5bR3(42#ls9-ep^_ZR`1LlueA#th5yN06a&kg@p4iKY`kMSwE6_G(YQ$)4t|hu$dx zfym{y#g*)1<^7lJlYTE@{6Zh+(ABfyqD{pc0$(!gQFgcWElXsJ&Tst@tHrWBZ!59HpS96u5gK&L2OAs2K`Wu23;e!*MF7249XkQ*akW=@2QFV6 zJoTJ@Rn6CH*8v1MW(oy5mL_YYJH^a-8frlkpy5I={cXkp%-&<0Tz|EwGPD5Dg{SlB z?D>7`mM&d8kaHTtL6CoQ+P0Ht4`uqOHv$&e?75hZK%1P`>%43~kGX7Ts>Q5hI)9ey zWox1{ln0`I)~`#^Sd3^RXa=Vp8-U_D%mJP65p*wLmMrpOe()n{A^v^}zq;(=STGw< z04>o!t!bj(?rsvQAGQW#tr8tF^ZroqF zGkc4%|D`#Xvzyc@Fi`VDy~v_N(_jDWx<0Gat!u@L=dL)7=(~VNy6h+MNB4WZ7d1vi z{WREe9fW}n@-g+zEy;v!F@vu0-}y}+{Rg|%eoe3eAY^`!Ut#>U6aoCRSQmY2y>{AF zKtYcpfHB!IBf2aoDB6gJq}2ghN^wZV2qnplcFk84+4eGhQ_KJ%c@hM5H{b@EynTOr&OH~S(ZjJ z$9T4zlMZOPF9i4?%u41An}gHW0<79+vHeb0_NX4KH&h?Gm>mr}gY53oRO9~Y&^R)7 zN&R+4=Sxed@);T&m{RmwlaA_5Z`oVi>}zZ{-Vy$HF@5=;vr3A20+U)!f;qz7JIZ(y z=^laI>bAMW(fP{YO(SZ1uCr0efRG?>6Y9Nk%XTu6d7lFLtIRV!xBd$zmyl6rEi#_@ zQVtbW&#;~^O>uaoN5+(*c2o<`k!DjV3)LN(tqfvfaw=6-in_v)UbV+YZy#-Rx0ZiB zYn}#6@}B6hH?Wq3M^y-jFa30`4y{%qxnw-ebz4_mia$~URnF?t)lfc`8Bk1DBhTgQiWNHI??1hf$n zZIP;n+_n`z4PCDS_142V6Oz*CWco$1QVU!}LS!IG#SPFKBk>qD!JId0}q)7eHBg+H9Xy;GCw|!;pCL2;vR;)>_0a+LA zYj^o!s%4q^u`{@A$+i!qPsI)4ow^#iUao~@YKZ}<2TxV;Uj%s*tHOCyxN^p>t`wCV zfy7=X1>@NlY*MnOJg#30>olILz1GUrB=A_~P@INx4THC8v^&$Mg{xlNHDJnypluyQ z>8$-GgwVyTE@)?i4jt_xttBqUk=-bSMS-S7nr$vmrM!_tHM5(tV=}JlG>#S9%IUSt)xJT1X zZ8N&-cFo$XYc?`5YE6r}_tCSb)j1*;E6-Fd1#z*l)(GuZ6Rhk20G10KuR6U7S1q@r z!m8AiLO76A4EnKVgT)p9jE49{sjIG$CB{?VStYj+ZrpnJ$=YM_SG=yZkB4=o?W|~z z&k*rU!;WEIevMSh2=82_Rm$H2fVeo0L~u>_+WPceo5wfh?rV8TNYF}Cv-L+IGm5~} zmQ-)WX74)&S5(gajb#tw= z!HNnfN`}&se9ev<1MnZmoUdcKxbx+KFqJx{L!Qfdz*R_|p5Z!rJP|aNJbCGFg9pBS zH3-n0f-D=kzP@$*Cb{Z8N-4iFjrt9L;h3BrqWT&2tYS*?d}3m1F+Azz_Wtxe0U_%7 z+p1Q3twHP=J>Z;fv(@N@<*dX@DI>sz17Y%a^+8cMVaKJ7ZD?O% z3TK7AI&GAFfBhI&DKmh#asv}>;gN#rZs_m)&u#i-zOnAFT|8=pV#)y6geqx=Zb33B z*5jskgcL@Rut zn{65ap&*Yd(o>c>pHVXHgA`P94?R6}El6DygEoqe_PkNjl)@90A&J&u{*2XtVA(&b z*8iOap)rKCk3)Pf-`>)&Hx^)KlF(B!WSuB%FNm85P^QR@WekJUkMX}rhjF=tKjb1%R1q?W)kNI>W>)f%|Kt2+BNB+TTy6m6Do#*<_nHr6JtS| zRZJb`0taU!{g08MqI%U3I=syxJod;W0VN`O{Pf5{Tj$jwLSbpArZiT!1y4&A78~I& zi}*{5_#q^;hG_vLhmj8AXA-2ZRL`{oUL-@j1&KUMNRY)cR>nc5WN7Z7!7Sa@!Nu6! zB22LemBqonV&m@KLDq;6rq$LVA`DlAtOBv=7U*;Vzm62itUPln4w20c^HABOXqi1s zLluazHy9WJ3sV4KE(#5cL3FABdsT$ICRHeD=m*~;n#<8;otSEMejR`i33dA9_{tRR zb>&BGU?&u#^{-SZ*a8KL4oEcwGZjh2!pP$rR67kaWYJoar@FN0#joCsDg;}#8e zDI~g!G~8b?R-p{~rN#f%68tqn7v&#Mr{NT?R8^?*xYoHfwd(**oP)Amx0ncmm|Xep z;_i!=exU`@{WmNyKhjVI78n6(yMTs1O~N$`@aDcN`)I{?Jc}{Mm6e+86PUK)7=hL` zyWVias9%L|G(37(=jk$>~3K<_B=_LN5T|Hm9E93^QHKD&*G|- z6Pb&t3=iAlN!8{FUNA6P~# z0ISBQTzeRpTR+g{o6AN1iRT#q6|cZteP1fXV9tpzd>y&=L?E~|dwnXk!YhS#lzsE4 z4D&X{$i(|bHGumwQ_QtMS96Gwu~$D0BK`@H+ZlTTPiKUx(>QXaUxP|Sw&Ks((QkO6 z;?6;=H$j7>H!JjgLt@vc0PO#{zKFLZNTY~29z~ib5vIk6e=Jip2arz?@GL@<8bmH4 zdNqV8i#fXm#A&(GPgzE@3O)33urh%B!vXdQqV?92_tv_FZBi16svkbRlP5x@iLjMI zxnGJC@%BHQy}03Y(P#mB751hm@myWvEu+$9>`sVM?mO3N5c6fn ze?Dg#=HW#e*t<30UFqhEM*@Q{huyZMpkg`yp4hdDHX4*oFpQxc+vC?8Ynh7qh6A0!5G8o$X9Z&(mYJJB|lG$95ca>5q` zAy&>NiV-+c%4Y##g?J4L2TaHau_4T&Z~{q4kco*iVgh0(DY_hCcHduFMku3Uzljik zgnrWs?AZ^sf1L}or`kbVm@h(CT}7pfmJxRjlMn2;hF;NNYq_h7jS1RNerQX1E~9K< zbH#x0u5kEnmZkO0$Ev+Z;0Ay>FT0^p)Bdeue}TM#v!?i`)xFiWJ3MQZ0);?g@4b_~ z9S$|nRSf7GcT6oS=c>56R*uaVV4{bV6p`Mfj~(9Q_g2xM6!r$}R^!TcUM|?i3pnO5 z*yfiRJ3NUf9j2m2@5fw!bPfr`(14>H)Eq6AB)vaL!~Q<9Evpo4vttThc)^*m5Q%VyBm2G^`!=S_Mma$AxjcC#VtB*Y~#Jc&zeBwbq*jL4R4KCgWF zNEY+6Jo+%Z{kHm^Xs#BU1AN(qVhfKPAJ<}AG(*LxgCO>3Ko`Gn=$a74;$VN#HYn@$ z2Fb(zfQke@hR;D?<)ABRxM%@hN?P|s4xMAK2^Yen0Jy6N79m#pZE>{B7W1JHlgT)H zgGN{(U50y#VQvfsq62pkz_-aCU`kVN<1K@qEo^k4;8E8w;j@@92f!>J1??_xn(ljU%y|Nk z^xo56D2wvdry+`*^QBiEGZ9cz5VcO}*mVFI!KxX2hkL{+sr`Qa*8RJoR}FswNV+od z4+voMbqql%s?6ZjPCeEth^fv$nkIv zQGv0avOsME;hPw6cN(gUL$F}rJ1p?+Bz%{Qm^I{gKmjkZ;UPhAdnr6hh%`Gy;+Kvd zPrk(ytS92zdclpwLiiQ{ZO4K$WbiFAxE6^J!9WMoaC_wNbP@Ie8~s^~I?2LKSwKDt ztOEt`0~~mH1bnOXU9>!0iLN+|%GLdMp8|I%zWHK0t6z_0`1%zAuy`_J(n%+E*4%{L z{ydSj|G;(@hKU7S7Rz++yqpiJcAdnDNV`h_`)>)$yLYFd!$mPcf6RXiqaYluVAjyj zT4G`d`V7$Ia~QKT2y;&K?DncRI>7|Jl=llP$Sd%@ej9|&=$y=Y@%+~3m;IloOrW|z zjC+5Fg4W z+ZgzH0l|SaY6pyln8ID<@Xc&A>O9Hk^-EFUySE&m58u`YZiI*dPzc{Df`$Br=?;L1 zwsq~YNk_s|w+Psh4`_CjsP56ka`dMu*jZ$rMVnfEMn3QuDb9 z3jjLc3pvZ<993XR0f__p+r+H@;{s@TVUE zu27v;Y@$ZImK;(g8MuQXzCfJhN}{TlM< zEX64u-vnqTf~=9Mp(f`=s_``#=WiMSV)2r}Ne^ zbG9d*axrL6BT3gSJ0o|s@7CT6-3LeWLRQVj%&wfAI`SxD3JmW9WNS2s&upV^3fG

Do*^%z6NPyb-o0{2;|NLYKX28jlAJ02@{~ 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 z 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%0D#uQT^Z|!{wU=4J4i`NI#mIFHCa$q#%lop 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 literal 0 HcmV?d00001 diff --git a/_images/xkcd_is_it_worth_the_time.png b/_images/xkcd_is_it_worth_the_time.png new file mode 100644 index 0000000000000000000000000000000000000000..d9ac46e84b6706c31bf757d96b593c5bddf9f65c GIT binary patch literal 64050 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 literal 0 HcmV?d00001 diff --git a/_images/xkcd_iso_8601.png b/_images/xkcd_iso_8601.png new file mode 100644 index 0000000000000000000000000000000000000000..5a3ea3eb614cc75d1d5cd17f54be40f1f289145a GIT binary patch literal 44160 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 + +(introduction)= +Principles of Reproducibility +============================= + +A research project is **reproducible** if a different researcher can carry out +the same analysis with the same data and produce the same overall result. +Reproducibility enables independent verification, a touchstone for all +research. Adopting good practices can also make it easier to collaborate on, +distribute, and reuse research. + +:::{tip} +You always have at least one collaborator: future you! Work you did in the past +can be as challenging to navigate as work from someone else. So even if you +don't plan to collaborate with anyone else, it can still be helpful to adopt +good practices for reproducible and collaborative research. +::: + +Almost all contemporary research projects involve computing---whether that +means creating and storing digital documents, developing code for small +analyses that run for a few minutes on a laptop, or developing code for large +analyses that run for a few days on a high-performance computing cluster. +Consequently, this reader focuses on practices related to computing. Many are +relevant regardless of whether your research involves writing lots of code. + +One way to think about reproducibility is in terms of five principles: + +1. **Documentation**: Get in the habit of writing documentation as you work. + Most details should be documented, including: + + + The scope of the project, in terms of goals, milestones, and a timeline + + Meetings---especially new tasks, decisions, and deferred discussions + + Your thought process as you work: what references did you find, what + approaches did you try, what results did you obtain, and what do you want + to try in the future? + + Data you collect, especially aspects which are not clearly documented + elsewhere + + Code you write (use comments!) + + Any other files and directories you create + + Documentation can be for you, your collaborators, or other researchers + interested in your work. Remember that not all documentation has to be for + all of these people, and that even if some information is only for you, it's + usually still a good idea to document it---it's easy to be too optimistic + about what you'll remember later. + +```{figure} ../img/phd_scratch.gif +--- +name: phd-scratch +alt: +--- +"Scratch" from ["Piled Higher and Deeper"][phd] by Jorge Cham. +``` + +[phd]: https://www.phdcomics.com/ + +2. **Artifact preservation**: Every file you produce is an **artifact** of your + research. Keep records so that you can revisit old results + or even "rewind" a project to an earlier state. Some things you might want + records of include: + + + Changes you make to (or different versions of) documents, code, and data + + Settings and other inputs you use to run computations such as analyses, + experiments, and simulations + + Outputs from computations---especially ones which are easy to overlook, + such as diagnostic information printed while a computation runs + + You never know what you'll need later, and digital file storage is cheap. + Keeping records is a big task, but there are many software tools available + to automate most of the work. + +```{figure} ../img/xkcd_documents.png +--- +figclass: margin +name: xkcd-documents +alt: "A comic of a person exclaiming, "Oh my god," while looking at a +long list of "untitled" documents on another person's computer. +Caption: never look in someone else's documents folder." +--- +"Documents" from ["xkcd"][xkcd] by Randall Munroe ([license][xkcd-license]). +``` + +[xkcd]: https://xkcd.com/ +[xkcd-license]: https://xkcd.com/license.html + +3. **Project organization**: Set conventions for how you'll organize a project + (often these should be documented) and then make sure to follow them. + These conventions should address details such as: + + + How you'll name things like files, functions, and modules + + Which directories you'll create and which kinds of files belong in each + directory + + Whether your code should be in notebooks, scripts, or a combination of + both + + How you'll organize code using functions, classes, modules, and other + programming abstractions + + Which structures and file formats you'll use to store data + + Whether you'll package your code or data for widespread distribution + + Try to cover the most common cases rather than every case, and leave some + flexibility for ambiguous cases. Good conventions establish single, + specific "correct" places for things to be, and encourage descriptive, + self-documenting names. This makes data, code, and results easier to find, + in contrast to the example in {numref}`Figure %s`. Finding + things quickly becomes especially important when collaborating with other + people. Good conventions also encourage using programming abstractions, + such as functions and modules, to make code easier to understand, verify, + and reuse. + +4. **Workflow automation**: Even when a project is well-documented and + organized, reproducing particular result can be complicated: it may be + necessary to run several different steps in a specific order and with + specific settings. You can use programming languages and other workflow + automation tools to automate a collection of steps, or **workflow**, so that + it's easy to run. You can also use workflow automation tools to avoid doing + tedious, repetitive tasks by hand and to run commands every time you take a + particular action. For example, you might want to run tests on your code + each time you upload it to share with collaborators. By using programming + languages and other workflow automation tools, you create an unambiguous + record of the steps in each computation and make it easier to reuse parts of + a project. + +5. **Environment management**: Make the hardware and software requirements, or + **environment**, for your project explicit and as easy as possible to + recreate. Environment management tools are especially helpful here, since + they allow you to install different versions of software for different + projects simultaneously, can record the software you install as you install + it, and can recreate recorded environments. It's much easier to start + working on a new machine, bring a new collaborator on board, or assist other + people interested in using your project when you can deploy the required + computing environment in just one or two commands. + +All of these principles are important. You can make sure your projects are +reproducible by adopting various practices that each address one or more of +these principles. The principles are often symbiotic: a good practice for one +may also be a good practice for others. + +Many different practices and tools exist, so it can be difficult to determine +which ones are the most important. In this reader, they're divided into three +groups: + +1. **Primary practices** are the ones you should always adopt for every + project. For example, you should always keep notes (documentation). +2. **Secondary practices** are the ones that are generally a good idea, but + aren't relevant to every project. For example, you don't need to use a + Python environment manager if you aren't writing any Python code, but you + almost always should if you are. +3. **Case-by-case practices** are the ones that have a low benefit-to-cost + ratio, so you should consider the details of your project carefully before + adopting them. For certain kinds of projects, they can be very important, + but for others, not so much. For example, turning your code into a + redistributable package is a great way to share it with others, but there's + a cost in additional effort and technical complexity. It might not be worth + it unless you expect to have many users. + +Each of the next three chapters addresses one of these groups. The practices +were sorted into these groups based on the author's and DataLab's research +projects and experiences. + +:::{note} +Most of the practices related to managing code are also software engineering +best practices and originated there. This reader attempts to translate the +software engineering jargon and perspective into something academic researchers +can understand and appreciate, while skipping over the parts that aren't +relevant to most research projects. +::: + + + diff --git a/_sources/chapters/02_primary_practices.md b/_sources/chapters/02_primary_practices.md new file mode 100644 index 0000000..bfa105a --- /dev/null +++ b/_sources/chapters/02_primary_practices.md @@ -0,0 +1,831 @@ +Primary Practices +================= + +This chapter covers primary practices for reproducibility. At DataLab, we adopt +these practices for every project, and we recommend that you do too. They'll +ensure that you can work on projects efficiently, without being slowed down by +trying to remember what you did last week, find that one file with the code +that actually works, or reorganizing your project so that it isn't embarrassing +to share with a collaborator. + +Of the five reproducibility principles introduced in {numref}`Chapter %s +`, only four appear here: documentation, artifact preservation, +project organization, and workflow automation. The first three of these are the +most critical principles. Neglecting them can make your projects impenetrable +to other people---and in some cases, even to future you. The subsequent +chapters will address the remaining principle: environment management. + +For all of the practices listed in this chapter, the benefits far outweigh the +costs. Most of them are practices you can adopt immediately, with minimal +training. Eventually, they become good habits that you don't even have to think +about. There are two practices listed here---version control +({numref}`use-version-control`) and computing with code +({numref}`use-a-programming-language`)---that do require substantial effort to +learn and use. However, they provide benefits for reproducibility, +collaboration, and distribution that we consider well worth the cost. + + +Documentation +------------- + + + +> Writing is a primary mechanism for *doing* research, not just for reporting +> it. +> +> – paraphrased from [Simon Peyton Jones][peyton-jones], computer scientist + +[peyton-jones]: https://simon.peytonjones.org/ + + +### Start with the Scope + +At the beginning of a project, write a **scope document** or research proposal +to lay out the research question and goals. The funding mechanisms in your +discipline may require this, but even if they don't, it's a excellent way to +clarify what you're trying to achieve and can help you identify potential +problems or gaps in reasoning early. The scope document will help you stay +focused and organized as you work. Later on, it can help you and your +collaborators understand the history of the project. + +This is also a good time to establish a timeline with milestones you'd like to +reach. The milestones should be specific, measurable, and concrete, so that you +can easily tell when you've completed one. Be generous with yourself and your +collaborators: it can be hard to predict the directions research will take you, +and tasks that seem short (especially programming tasks) can end up taking +longer than expected. It's almost always better to finish things earlier than +planned rather than later. + +For projects which involve data analysis, investigate potential data sources. +Sometimes a data set can sound promising, but lack the features you need, have +too few observations, or have too much missing data. If you'll collect the data +yourself, make a plan for data collection. You should have a clear picture of +which data sets will be available at the analysis stage and how they will be +structured. Pay particular attention to whether there are any biases, ethical +concerns, privacy concerns, licensing fees, or other issues. + +:::{tip} +If you use spreadsheet software like Microsoft Excel or Google Sheets to +collect or analyze data, check out DataLab's [Excelling with Excel workshop +reader][datalab-excel] to learn how to keep your data neat and tidy. + +To level-up your reproducibility, consider using a programming language like R +or Python to analyze data instead. Analyses you carry out in a spreadsheet can +be difficult for others to reproduce unless you meticulously document every +step. When you write code, anyone you share that code with can repeat your +steps. + +If you need to store a lot of data, especially many different closely related +tables, consider using a {ref}`database` to store the data. +::: + +[datalab-excel]: https://ucdavisdatalab.github.io/workshop_keeping_data_tidy/ + + +(keep-running-notes)= +### Keep Running Notes + +Set up one or more running notes documents when you set up your project. Use +the notes to keep track of things you've tried, things you want to try, +relevant references, and more. If you're working alone, these notes are just +for you---think of them as an external hard drive for your brain. Organize the +notes in whatever way works best for you. One thing that can be helpful is to +include the date whenever you add to the notes. + +:::{tip} +Reference management software like [Zotero][] are helpful for organizing and +searching references. +::: + +[Zotero]: https://www.zotero.org/ + + +Whether you take notes on paper or digitally, the important thing is that you +take notes. Paper notes are convenient for diagramming and doodling, and can be +digitized after the fact to share with the team. Digital notes are convenient +for collaborating with team members who aren't physically present, and can be +shared as they are being written. When you start a notes document, make sure to +consider whether you'll need to include figures, code, or other media, and +choose an appropriate format. At DataLab, we frequently use paper notes, Google +Docs, and [Markdown][]. + +[Markdown]: https://commonmark.org/ + + +#### For Collaborations + +If you have collaborators, take notes about your meetings. Record anything +there's a chance you'll want to remember later: results (positive or negative), +new ideas, new leads, decisions, changes of plan, action items, and scheduling +details. + +Consider what note-taking method works best for everyone. Some people like to +take notes during meetings, while others prefer to take summary notes +immediately after, so that they can be fully engaged. Collaborating on notes or +rotating who takes notes in each meeting can help lessen the burden, but having +a designated note-taker can help ensure consistency. + +It's usually a good idea to share the notes with everyone who attended the +meeting, so that misunderstandings can be corrected quickly. You can do this by +having a shared notes document or by sending out the notes after each meeting. +If you use a shared notes document, make sure it's in a format everyone can +access and edit; some collaborators may not be comfortable working with +Markdown or other plain-text formats. + + +(write-readmes)= +### Write READMEs + +:::{margin} +```{note} +A **directory** or folder is a container for files (and other directories) on a +computer's file system. It can be helpful to think of directories like folders +in a filing cabinet. +``` +::: + +A **README** is a document that introduces and explains a project or directory +within a project. READMEs should generally be plain-text (`.txt`) or Markdown +(`.md`) files, because these are non-proprietary formats accessible to anyone +with a text editor. READMEs help people---including future you---find and use +your project. + +```{tip} +Each time you start a new project, create a new directory for the project. Use +this **project directory** to store all files related to the project. This +directory is sometimes also called the **top-level** directory for the project, +since all files for the project exist beneath it. + +{numref}`establish-directory-structure` elaborates on this idea. +``` + +A project should always have a README in the top-level directory to serve as an +introduction. The top-level README will often be the first thing someone new to +the project sees. At a minimum, the top-level README should contain: + +* The project title +* A brief description of the project +* A list of the contributors and their affiliations +* A primary contact (typically a name and email address) +* A list of links to other project resources, including data sets and papers, + which are stored separately +* A {ref}`manifest that describes the files and directories` + +For projects with data or code, the top-level README should also contain +instructions for installation and use (more about this in {numref}`workflows`). + +:::{margin} +```{note} +A directory structure is **shallow** if there are not many sub-directories. +``` +::: + +A top-level README is usually sufficient documentation for projects with a +shallow directory structure and where methodology is published elsewhere (such +as journal articles or technical reports). For projects with a deep directory +structure, additional READMEs in important directories can be helpful for +understanding where files are. For projects with technical details that are not +explained elsewhere, it's a good idea to provide additional documentation in +the form of READMEs or other files. + +:::{seealso} +See DataLab's [README, Write Me! workshop reader][datalab-readme] for more +about how to write READMEs. +::: + +[datalab-readme]: https://ucdavisdatalab.github.io/workshop_how-to-data-documentation/ + +(file-manifests)= +#### File Manifests + +A **file manifest** is a description of the files and directories in a project. +For intuition, think of a shipping manifest on a box sent to you in the mail. A +file manifest serves two important purposes: + +1. It describes which files and directories are supposed to be included with + the project. If you, a collaborator, or an outside researcher thinks they + might be missing a file, consulting the file manifest is one way they can + check. +2. It documents the purpose of each directory (and often, each file). + +A good file manifest lists files and directories in alphabetical order, with +the exception that sometimes listing all of the directories first is clearer. +A manifest should also show the directory hierarchy through indentation, +symbols, or both. Here's an example of a manifest from a DataLab project: + +``` +data/ Models and images +docs/ Notes on the project as well as environment setup +log/ Slurm log files +src/ Image preprocessing, model training, and analysis +STEGO/ Code for creating STEGO models +tests/ Scripts for testing workflows, examining outputs, etc. +toy_data/ Very (very!) small pieces of data for dev testing +``` + +If a directory contains many files or subdirectories, consider whether it's +clearer to write a separate manifest specifically for that directory. + + +(workflows)= +#### Workflows + +A **workflow** is a way of using your project. Often this will be a series of +commands you can run to produce a specific output. For example, if your project +is a study of passenger rail systems in the U.S., you might have three scripts +that you run in a specific order and with specific parameters in order to +produce a plot that summarizes how often trains are late and how late they are +for lines in Chicago. Remembering the order in which to run commands and the +settings for each one might seem easy while your project only has a few +workflows and you use them frequently. If your project grows or you spend time +away from it, you may find it much harder to remember what to do. Moreover, +your collaborators may have a hard time remembering how to run a workflow you +set up, and vice-versa. Thus it's important to document your project's +workflows. + +There's one workflow that's essential to almost every project: downloading the +files and installing the necessary software. It's a good idea to provide +step-by-step installation instructions in your project's top-level README, even +if you're the only one working on the project. Installation instructions are +invaluable if you ever have to switch to a different computer or reactivate a +project you haven't worked on for a few months. + +:::{note} +As an example, see the [installation instructions for fd][fd-install], a +popular command-line tool for finding files. +::: + +[fd-install]: https://github.com/sharkdp/fd#installation + +Besides installation, you should also document workflows for using your +project. Explain the different ways to use your project, the settings +available, and common patterns of use. If your project contains mostly data +rather than code, explain how the data were collected, how they can be used, +built-in assumptions, and limitations. + +:::{note} +As an example, see the [user guide for ripgrep][rg-user-guide], a popular +command-line tool for searching within files. +::: + +[rg-user-guide]: https://github.com/BurntSushi/ripgrep/blob/master/GUIDE.md + +Although documenting workflows is listed here under the documentation +principle, it's also closely related to the workflow automation principle. +Documenting workflows is important because it enables you and other people to +repeat commands you used to get a particular output. Workflow automation +practices take this a step further by bundling all of the commands in a +workflow into a single command. + + +Artifact Preservation +--------------------- + +### Make Backups + +Hard drives can and do fail. Store at least one backup copy of each project on +a different computer, on an external hard drive, or in the cloud. This way, if +your hard drive stops working, you won't lose everything. Make a schedule for +when you'll update the backups, either daily or weekly, and stick to it. + +:::{important} +For projects which involve data, it's especially important to keep backup +copies of the original or source data sets. This way you can experiment with +multiple approaches to data processing and can recover if you accidentally +corrupt or delete a data set. +::: + +Cloud services such as [Google Drive][gdrive], [Dropbox][], [Box][], and +[OneDrive][] are convenient for backups because you can also easily share the +files with collaborators. If you {ref}`use-version-control`, then [GitHub][], +[BitBucket][], or [GitLab][] are similarly convenient. If your project has +specific privacy requirements, be careful to make sure they're satisfied when +choosing a cloud service. + +[gdrive]: https://drive.google.com/ +[Dropbox]: https://www.dropbox.com/ +[Box]: https://www.box.com/ +[OneDrive]: https://onedrive.com/ +[GitHub]: https://github.com/ +[BitBucket]: https://bitbucket.org/ +[GitLab]: https://about.gitlab.com/ + + + +(use-version-control)= +### Use Version Control + +A **version control system** is a system for tracking changes to documents, +code, or other data. You may already use copies of files with different names +as a kind of ad-hoc version control: `essay.doc`, `essay_edited.doc`, +`essay_final.doc`, `essay_final_for_real.doc`, and so on. A more consistent and +less error-prone approach is to use software specifically designed for version +control. In computing contexts, when people say "version control," it's often +implied that they mean version control software. In addition to helping you +keep track of different versions of files, most modern version control software +can also help you share and collaborate on files with others. + + +#### For Documents + +Cloud-based office suites such as Microsoft 365 and Google Office have version +control built-in. Consult the documentation for your preferred office suite to +learn more. A disadvantage of these services is that they typically save +documents in proprietary formats that may not be accessible to some people, and +they do not necessarily preserve version information when you download a +document from the cloud. For an open-source, desktop-based alternative, +consider using [LibreOffice][], which also has version control built-in. + +[LibreOffice]: https://www.libreoffice.org/ + +[Markdown][] provides basic formatting options, is supported by a wide variety +of editors and platforms, and can be used to produce publication-quality +documents with open-source tools like [Pandoc][]. Because Markdown is a +plain-text format, anyone with a text editor can read a Markdown document, and +you can manage versions with the same version control systems available for +code. For a more richer markup language that produces publication-quality +documents out-of-the-box, but has many of the same advantages as Markdown, +consider [LaTeX][]. + +[Pandoc]: https://pandoc.org/ +[LaTeX]: https://www.latex-project.org/ + +#### For Code + +Version control systems for code first appeared in the 1960s and are now widely +considered an essential part of every programmer's toolkit. One reason for this +is that code is usually developed incrementally: you write code for a new +feature, run tests to make sure it works, make corrections, and repeat, until +you can move on to the next feature. Occasionally, you might start to develop a +feature and then realize that it just won't work or that it isn't worth the +effort. In that situation, it's important to be able to go back to the most +recent version of the code before you started working on the feature---which is +exactly what version control allows you to do. If you suspect that some changes +to your code introduced a bug, you can also use version control to isolate the +changes that caused the bug by testing earlier versions. These capabilities +also make version control well-suited to research, because you never know when +you'll need to re-run an old experiment or hit a dead end on a particular line +of investigation. + +Many different version control systems exist, but a [recent StackOverflow +survey][so-vcs-survey] found that about 93% of developers use [git][], an +open-source distributed version control system. "Distributed" means that git is +flexible about where you store your code: there can be copies of the code on +your laptop, on a private server, on a hosting service like [GitHub][], and on +your collaborators' laptops, and git will help you keep all of them in +sync---if that's what you want. DataLab uses git for all of our projects, and +recommends that you do too. + +[so-vcs-survey]: https://stackoverflow.blog/2023/01/09/beyond-git-the-other-version-control-systems-developers-use/ +[git]: https://git-scm.com/ + + +:::{seealso} +See DataLab's [Introduction to Version Control workshop reader][datalab-git] +for a technical introduction to version control with git. +::: + +[datalab-git]: https://ucdavisdatalab.github.io/workshop_introduction_to_version_control/ + + +Project Organization +-------------------- + +### Use Naming Conventions + +> There are only two hard things in Computer Science: cache invalidation and +> naming things. +> +> -- [Phil Karlton][phil-karlton], software engineer at Netscape + +[phil-karlton]: https://www.karlton.org/ + +Names are the first thing you see when you skim through the files in a +directory or the expressions in a snippet of code. Well-chosen names serve as a +form of documentation, making it easier to guess the purpose of each file or +expression. With that in mind, naming things amounts to summarizing (often +complex) concepts in one or two words---so it's no surprise that it can be +challenging and easy to neglect. + +Adopting a naming convention and following it consistently can ease some of the +burden of naming things by reducing the number of decisions you have to make. +Different contexts often benefit from different naming conventions. For +instance, it's usually a helpful to have separate naming conventions for files +and for code. + + +#### File and Directory Names + +Choose filenames that are human-readable, machine-readable, and have a +meaningful order when sorted alphabetically. Many data scientists recommend the +following rules for naming files: + ++ Make the name descriptive (can someone guess the contents from the name?) ++ Avoid spaces, punctuation, accented characters, and other special characters ++ Use lowercase unless there is a compelling reason for uppercase ++ Use underscores `_` to separate fields (distinct pieces of information, such + as dates and descriptions) ++ Use dashes `-` to separate words within fields ++ Write dates and times in [ISO 8601 format][iso-8601], which orders units from + largest to smallest (for example, year-month-day as in `2023-09-20`; also see + {numref}`Figure %s`) ++ Pad numbers with leading zeros to the width of the largest number you + anticipate + +[iso-8601]: https://en.wikipedia.org/wiki/ISO_8601 + +At DataLab, we follow these rules for almost all of our projects, with some +simplifying exceptions around how we use underscores and dashes. + +```{figure} ../img/xkcd_iso_8601.png +--- +name: xkcd-iso-8601 +alt: +--- +"ISO 8601" from ["xkcd"][xkcd] by Randall Munroe ([license][xkcd-license]). +``` + +[xkcd]: https://xkcd.com/ +[xkcd-license]: https://xkcd.com/license.html + +:::{seealso} +The rules in this section are based on Jenny Bryan's [How to Name Files +presentation][how-to-name-files]. + +Prefer an essay over a presentation? See Douglas MacDonald's [On Naming +Things][on-naming-things]. +::: + +[how-to-name-files]: https://github.com/jennybc/how-to-name-files +[on-naming-things]: https://www.douganddata.com/2022/07/on-naming-things/ + + +#### Names in Code + +Most programming languages have a **style guide** with standards for how to +format code, either officially or by community consensus. Following a style +guide helps make your code intelligible to other programmers. Style guides +usually include naming conventions, which tend to focus on how to capitalize +and delimit words in multi-word names. Three common formats for names are: + +* `camelCase` delimits words by capitalizing the first letter of each word +* `snake_case` delimits words with underscores +* `kebab-case` delimits words with dashes + +Some style guides use several different formats to distinguish between +different kinds of objects. + +Among the languages widely used for data science: + +* R doesn't have an official style guide, but the [Tidyverse style + guide][tidy-style] is popular. It recommends `snake_case` for all names. In + the past, `camelCase` and R's unique `dot.case` were also popular. +* Python has an [official style guide called PEP 8][pep-8]. It recommends + `UpperCamelCase` for class names, `UPPER_SNAKE_CASE` for constants, and + `snake_case` for all other names. +* Julia has an [official style guide][julia-style]. It recommends + `UpperCamelCase` for module and type names, and `snake_case` for all other + names. + +[pep-8]: https://peps.python.org/pep-0008/ +[tidy-style]: https://style.tidyverse.org/ +[julia-style]: https://docs.julialang.org/en/v1/manual/style-guide/ + +:::{seealso} +Wikipedia's [naming conventions page][wiki-naming] describes the styles and +naming conventions for a wide variety of programming languages. +::: + +[wiki-naming]: https://en.wikipedia.org/wiki/Naming_convention_(programming) + +Besides how to format names in code, another detail to consider is how long +names should be. Longer names allow for richer descriptions, but can also make +code harder to read. Here's one code organization expert's recommendation: + +> The length of variable names should be proportional to their scope. Big +> scopes imply long names. +> +> The length of function and class names should be inversely proportional to +> their scope. Small scopes imply long names. +> +> -- [Robert "Uncle Bob" Martin][bob-martin], software engineer and author + +[bob-martin]: https://en.wikipedia.org/wiki/Robert_C._Martin + +In other words, the longer a variable is in use, the longer its name should be. +The rationale is that if a variable is in use for a long time, expressions that +use the variable may be far away from its definition, making it harder to infer +the meaning from context. So don't hesitate to name a variable `x` if it will +only be used in a couple of expressions and there's not an obviously better +name, but avoid naming a variable `x` if it's going to be used repeatedly +throughout all of your code; choose a longer, more descriptive name. + +:::{tip} +Some other naming conventions include: + +* Use `i`, `j`, and `k` for indexes in loops. +* Use verbs (action words) in function names, because functions do things. For + example: `read_data`, `add_offset`, `run_simulation`. +* Use `get_` and `set_` as prefixes for functions that get and set components + of a data structure. +* Use `is_` or `has_` as prefixes for functions that return a Boolean value. +::: + +:::{seealso} +See [How Patterns in Variable Names Can Make Code Easier to Read][how-patterns] +for Felienne Hermans' perspective as a computer science education researcher. +::: + +[how-patterns]: https://youtu.be/z7w2lKG8zWM + + +(establish-directory-structure)= +### Establish a Directory Structure + +Create a separate, dedicated directory, often called a **repository**, for each +of your projects. Store everything related to the project there. This will make +it easier to find files and also to share specific projects with others. Use +directories within each repository to further organize your files. At a +minimum, we recommend these directories: + +* `data/` for data sets +* `docs/` for documents +* `src/` for code in scripts (such as `.R` or `.py` files). The abbreviation + `src` is short for "source code". R scripts conventionally belong in `R/` + instead, because of how R's packaging mechanisms work +* `notebooks/` for code in notebooks (such as RMarkdown or Jupyter notebooks) +* `outputs/` for results (data, models, figures, etc.) + +Of course, if your project doesn't include any code then the `src/` and +`notebooks/` directories aren't necessary. If your project has lots of +outputs, it can also be helpful to replace or supplement the `outputs/` +directory with more specific directories such as `figures/` and `models/`. + +These recommendations are not necessarily appropriate for every project. When +choosing a directory structure, consider the specific needs of your project, +your collaborators, and your audience. Make sure to document whatever directory +structure you decide to use in your project's README (see +{numref}`file-manifests`). + +:::{seealso} +For more examples of directory structures, see: + +* DataLab's [Project Template][datalab-template] +* [Cookiecutter Data Science][cookiecutter] +* The Turing Way's [Creating Project Repositories guide][turing-repo] +::: + +[datalab-template]: https://github.com/datalab-dev/template_project +[cookiecutter]: https://github.com/drivendata/cookiecutter-data-science +[turing-repo]: https://the-turing-way.netlify.app/project-design/project-repo/project-repo-advanced + +(organize-the-code)= +### Organize the Code + +```{figure} ../img/xkcd_goto.png +--- +name: xkcd-goto +alt: +--- +"goto" from ["xkcd"][xkcd] by Randall Munroe ([license][xkcd-license]). +``` + +Whenever you're about to write code, take time to think about what its purpose +is and how it will be used in the future. Clarity on these points can make it +easier to decide where to put the code, break down the programming problem, and +choose appropriate programming abstractions. + +Is your code for a one-shot exploration, a prototype, or something highly +visual? Then it's probably a good idea to write and save your code in a +notebook format, such as [RMarkdown][], [Jupyter][], or [Quarto][]. Notebooks +display writing and results inline with code, so that you can try snippets of +code out, get immediate feedback, and take notes. Notebooks can also display +images, so you can inspect plots and other figures without opening another +window or file. + +[RMarkdown]: https://rmarkdown.rstudio.com/ +[Jupyter]: https://jupyter.org/ +[Quarto]: https://quarto.org/ + + +::::{grid} +:::{grid-item} +```{image} ../img/logo_rmarkdown.png +:alt: +:width: 50% +:align: center +``` +::: + +:::{grid-item} +```{image} ../img/logo_jupyter.svg +:alt: +:width: 50% +:align: center +``` +::: + +:::{grid-item} +```{image} ../img/logo_quarto.svg +:alt: +:width: 50% +:align: center +``` +::: +:::: + +On the other hand, if your code is likely to be reused many times over the +course of the project---and possibly in other projects or by other +people---then it's usually preferable to write and save your code in a script +format. Script formats are usually plain-text files with an extension like +`.R`, `.py`, or `.jl` to indicate the kind of code. + +A mix of notebooks and scripts can be an effective way to solve programming +problems and develop code. Don't feel locked in to one or the other, and +remember that generally notebooks can load functions and other code from +scripts. + +#### Write Functions + +To solve problems efficiently and better organize your code, try to break +programming tasks into small, manageable steps. Use writing (for instance, in +comments) to clarify and plan the steps. For each step, write the code to solve +a few small, simple cases. Once the code for a step seems to work correctly, +turn it into a function. Start by identifying the inputs and outputs. These +become the parameters and return value, respectively. Test the function still +works on the small, simple cases. Then scale up to larger, more complex cases. +Edit the function and add parameters as necessary to make it work correctly for +the new test cases, making sure that it also continues to work correctly for +the old ones. When you have functions for all of the small steps, combine them +(usually in sequence) to handle the larger task. + +:::{important} +How small is a "small step"? Small steps and functions should generally be +longer than a single expression---because in that case you might as well just +write the expression---and generally be shorter than one screen in your +editor---so that you can reason about what they do easily. Be flexible and +judicious with these guidelines; there are exceptions. + +When you write small steps, you can try to break them down into smaller +sub-steps as well. The sub-steps are usually individual expressions. +::: + +:::{tip} +It may be helpful to think of writing code or functions like writing an essay. +Start with an outline (describe the steps in comments). Sometimes the outline +will have multiple levels (sub-steps). Once you've written the outline, start +filling in the details (the code). As you write, you may occasionally need to +stop and adjust the outline as you uncover gaps in your reasoning. +::: + +#### Make It Modular + +Create separate scripts for separate parts of your project. For example, you +might have a script to clean the data, a script to train a model, a script to +generate predictions from the trained model, and a script to generate figures +summarizing the results. Dividing up responsibilities across multiple scripts +is helpful for isolating bugs and staying focused while you're working. Using +multiple scripts will also make it easier for you and your collaborators to +find things, provided the scripts have descriptive, unambiguous names. + +Structure your scripts so that they're **modules**: collections of functions +that can be imported and used by other code. Avoid writing code outside of +functions, with one exception: to define a constants (named values that do not +change, such as pi). Doing this ensures that importing a script won't cause +hard-to-predict side effects. + +If you want to be able to run a script from the command line, include a +function that serves as the entry point---the code that runs first. For many +programming languages, it's required or recommended to call this function +`main`. Regardless of what name you choose, use it consistently for the entry +point functions across all of your scripts. + + + + + +Workflow Automation +------------------- + +(use-a-programming-language)= +### Compute with Code + +:::{note} +This practice is recommended for projects that involve computations. If your +project doesn't, or if all computations are handled by specialized software, +then you might not need a programming language. + +Nevertheless, we've included writing code as a primary practice to emphasize +that it's uniquely important for reproducibility if your project does involve +computations. +::: + +Code is an explicit, unambiguous record of every step in a computation. This is +a major benefit for reproducible research. You can share your code with someone +else, and if they run it with all of the same inputs, they'll get the same +outputs. The same is difficult or impossible to achieve using software that has +a graphical user interface. + +Another benefit of programming is that code is reusable and often scalable. If +you write code to solve a general problem, you can then apply it to any number +of specific instances of that problem. The only constraints are time and the +computing resources available to you. Most popular programming languages have +supportive, active communities that create and distribute thousands of +user-contributed packages, so often it's not even necessary to solve a problem +yourself---you can reuse someone else's code. + +::::{grid} +:::{grid-item} +```{image} ../img/logo_r.png +:alt: +:width: 50% +:align: center +``` +::: + +:::{grid-item} +```{image} ../img/logo_python_device.svg +:alt: +:width: 40% +:align: center +``` +::: + +:::{grid-item} +```{image} ../img/logo_julia.svg +:alt: +:width: 50% +:align: center +``` +::: +:::: + +:::{margin} +```{note} +A **high-level** programming language is one which uses abstractions to hide +most of the details of the hardware. +``` +::: + +Choosing a programming language doesn't just mean choosing a particular syntax, +it also means choosing a community and ecosystem. Different languages have +different strengths, weaknesses, community cultures, and packages. We recommend +choosing an open-source, high-level language designed for research computing +and data analysis, such as: + +* [R][]: a "software environment for statistical computing and graphics," R is + especially well-suited to cleaning and analyzing tabular data, training + statistical models, and creating data visualizations. R has support for + missing values built-in, a friendly and active community, and tens of + thousands of user-contributed packages, mostly related to statistics and data + science. + +* [Python][]: a general-purpose programming language that "lets you work + quickly and integrate systems more effectively." The Python community + supports research computing through its user-contributed NumPy, SciPy, and + Pandas packages, as well as others. Python's syntax encourages well-organized + code, and its community is enormous and spans many different disciplines. + It's also one of the primary languages for deep learning. Python's facilities + for data analysis are not as mature as R's, with equivalent features and + stability but some rough edges. + +* [Julia][]: a relatively new programming language "appropriate for scientific + and numerical computing, with performance comparable to [languages like C]." + Julia is designed from the ground up for research computing and uses modern + optimizations to run substantially faster than R or Python for many tasks. + Julia's community is small but growing. Julia's facilities for data analysis + are not as mature as R's or Python's, with many still in early development. + Expect to occasionally have to develop things yourself when you wouldn't in + more mature languages. + +[R]: https://www.r-project.org/ +[Python]: https://www.python.org/ +[Julia]: https://julialang.org/ + +When choosing a language, always make sure to consider the specific needs of +your project. Projects with specific requirements for performance or other +features (for example, developing web applications) may benefit from using +other languages or a mix of languages. + +:::{seealso} +If you want to learn R, see DataLab's [R Basics workshop reader][r-basics] and +consider joining the [Davis R Users Group][drug]. + +If you want to learn Python, see DataLab's [Python Basics workshop +reader][py-basics] and consider joining the [Davis Python Users Group][dpug]. + +If you want to learn Julia, see the [official Julia documentation][julia-docs] +and consider joining the [UC Julia Users Group][ucjug]. +::: + +[r-basics]: https://ucdavisdatalab.github.io/workshop_r_basics/ +[drug]: https://d-rug.github.io/ +[py-basics]: https://ucdavisdatalab.github.io/workshop_python_basics/ +[dpug]: https://datalab.ucdavis.edu/davis-python-users-group/ +[julia-docs]: https://docs.julialang.org/ +[ucjug]: https://datalab.ucdavis.edu/julia-users-group/ diff --git a/_sources/chapters/03_secondary_practices.md b/_sources/chapters/03_secondary_practices.md new file mode 100644 index 0000000..e16c84c --- /dev/null +++ b/_sources/chapters/03_secondary_practices.md @@ -0,0 +1,419 @@ +Secondary Practices +=================== + +This chapter covers secondary practices for reproducibility. These are +practices which don't apply to every project, but are beneficial or even +essential when they do apply. For instance, projects that will never be +distributed do not necessarily need a license, so choosing a license is listed +here. DataLab adopts these practices for all projects for which they are +relevant, and we recommend you do too. + + +Documentation +------------- + +### Document the Data + +In a perfect world, every data set would come with detailed documentation or +**metadata** about how the data were collected, what assumptions were made, +what biases might be present, any ethical concerns, the overall structure, what +each observation means, what each feature means, and more. Good data +documentation guides researchers towards appropriate, responsible use of the +data. + +Collecting data as part of a project gives you and your collaborators control +over how the data are documented, so you can ensure there are no gaps. If your +project uses data collected earlier or by someone else, it's a good practice to +fill gaps in the existing documentation with your own. Thorough documentation +isn't just beneficial to other researchers, it's also beneficial to future +you---small details you notice and document about features could be important +later in the project. + +:::{seealso} +See DataLab's [README, Write Me! workshop reader][datalab-readme] for more +about how to document data. +::: + +[datalab-readme]: https://ucdavisdatalab.github.io/workshop_how-to-data-documentation/ + + +(document-every-experiment)= +### Document Every Experiment + +:::{note} +An "experiment" doesn't necessarily have to be an experiment done in a lab. +Doing an experiment could mean running a simulation, testing a model, or +something else. +::: + +Keep a record of every experiment that you do. Document parameters, the +results, and anything else you think is relevant for: + +* Repeating experiments in the future. Research projects are often + iterative---you may need to repeat an experiment to make adjustments to a few + parameters or because you discovered a bug in your code. + +* Comparing across experiments. Think of the documentation as a high-level + overview of your project. Use it to get a sense of which experiments had + promising results, which didn't, and which you might want to try next. + +* Avoiding redundant work. By keeping track of what's already been done, you + can avoid accidentally and unnecessarily repeating an experiment that you or + your collaborators have already done. + +Get in the habit of recording experiments as soon as you start to plan them, +and recording the results as soon as they finish. Assign a unique name or +number to each experiment so that you can reference specific experiments in +your other notes and files. If you have collaborators, make sure they can +access the documentation and understand how to use it. + +:::{tip} +Spreadsheets are often a good format for this kind of documentation, since +they're convenient for data entry. +::: + + +(choose-a-license)= +### Choose a License + +A **license** is a legal document that grants others permission to do, use, or +possess something. If you plan to make your project widely or publicly +available, it's a good idea to select a license so that you can retain some +control over how it's used and protect yourself against certain kinds of legal +claims. + +Different kinds of licenses are appropriate for different kinds of content. +There are licenses designed specifically for software and code, as well as +licenses for other media. + +An **open-source** license is one that mandates access to or distribution of +original sources for any derivative products. For software, this means that the +original source code must be accessible. Open-source licenses ensure that +software can continue to be maintained and extended even if the original +developers cease development. They also benefit transparency and collaboration, +since anyone with the software can inspect and modify the code. + +DataLab uses open-source licenses for a majority of our projects, whether they +consist of software or other materials (like this reader). + +:::{seealso} +For licensing software, see [choosealicense.com][gh-cal] (maintained by GitHub) +or the Open Source Initiative's [FAQ answer about which license to +choose][osi-cal]. + +For licensing data, writing, art, or other materials, see Creative Commons' +[Choose a License page][cc-cal]. +::: + +[gh-cal]: https://choosealicense.com/ +[osi-cal]: https://opensource.org/faq/#which-license +[cc-cal]: https://creativecommons.org/choose/ + + +Artifact Preservation +--------------------- + +### Use Configuration Files + +A **configuration file** is a file that stores accessory parameters for a +computation. Configuration files are distinct from data sets in that the data +they contain is usually under your control and not of primary interest. For +example, a configuration file for code that trains a statistical model might +specify where to find training data, where to find test data, which features to +include in the model, and where to save predictions. All of these could be +embedded in the code, but using a configuration file makes the code more +flexible. + +Configuration files also have another benefit: they serve as a record of your +parameter settings. When parameter settings are embedded in code, then you have +to edit the code each time you want to run it with different settings. Unless +you're meticulous about version control, it may be difficult to determine which +settings you used for past computations. Configuration files eliminate this +problem: when you want to use a new settings, create a new configuration file +(possibly by copying one you already have). Then you can easily find the +settings for any computation in its respective configuration file. + + + +:::{tip} +If you also {ref}`document-every-experiment`, include the name of the +configuration file(s) for each experiment in your documentation. +::: + +Plain-text formats are a good choice for configuration files because they can +be edited by anyone with a text editor. At DataLab, we particularly like to use +[TOML][] and [YAML][] formats for configuration files because they're +widely-used, human-readable, and there are well-supported functions for reading +them in R, Python, and Julia. + +[TOML]: https://toml.io/ +[YAML]: https://yaml.org/ + + +### Release the Data + +Publish or share your research data, so that other researchers can use it to +reproduce your work and possibly even do new work. In 2016, [Wilkinson et +al][wilkinson] suggested researchers should make their data **FAIR**: + +* Findable: uniquely identifiable and citable, such as with a DOI +* Accessible: freely and publicly available +* Interoperable: saved in open, non-proprietary formats +* Reusable: well-documented and with a clear license + +[wilkinson]: https://doi.org/10.1038/sdata.2016.18 + +The FAIR standards are now widely recommended as best practices. + +You can satisfy the "F" and "A" standards by publishing your data to an +[open-access repository][oar]. For example, UC Davis is a partner of the +[Dryad][] open-access repository, and all UC Davis researchers can use Dryad +for free to publish their data. + +[oar]: https://en.wikipedia.org/wiki/Open-access_repository +[Dryad]: https://datadryad.org/stash + +To satisfy the "I" standard, {ref}`use-file-formats-effectively`. To satisfy +the "R" standard, a good start is to {ref}`keep-running-notes`, +{ref}`write-readmes` and {ref}`choose-a-license`. + +:::{seealso} +See UC Davis Library's [Publish, Share, and Preserve Your Data +guide][library-publish-data] to learn more about how to release your data. +::: + +[library-publish-data]: https://library.ucdavis.edu/data-analysis-and-management/publish-share-and-preserve-your-data/ + + + +Project Organization +-------------------- + +### Save Clean Data + +Treat data cleaning and data analysis as distinct and equally important steps +in the research process. Write code to clean the data, and document *why* each +cleaning step was taken, so that cleaning is reproducible. Save a copy of the +clean data to use in analyses. This way: + +* Cleaning is consistent across all analyses. +* You only need to run the cleaning step once. For some data sets, cleaning is + a time-consuming and expensive computation. +* Cleaning and analysis concerns are kept separate, which makes it easier to + write simple code with clear goals. +* You can use different languages or software for the cleaning step and the + analyses. + +What it means for data to be "clean" will depend on your project's specific +data sources and analysis goals. Nevertheless, here are some things you should +almost always do: + +* Check that the structure of the data is appropriate. For instance, many tools + for analyzing tabular data require **tidy data**, where each row is an + observation and each column is a feature. +* Check that the types of the data are appropriate. In other words, make sure + the language or software you plan to use recognizes data for what they are. + For instance, dates often need to be explicitly converted to a date type. +* Investigate missing data. It's crucial to have a thorough understanding of + what's missing before moving to analysis. If you decide to remove or fill in + missing data, do so cautiously; it's not always necessary and can bias + analyses. +* Investigate extreme data and erroneous data. As with missing data, it's + important to understand the outliers in your data. + +:::{seealso} +See DataLab's [Intermediate R: Cleaning & Reshaping Data workshop +reader][datalab-r-clean] to learn how to clean data in R. +::: + +[datalab-r-clean]: https://ucdavisdatalab.github.io/workshop_intermediate_r/string-date-processing.html + +(use-file-formats-effectively)= +### Use File Formats Effectively + +Store data sets in file formats that: + +* Are accessible to you, your collaborators, and other researchers across a + variety of software + +* Preserve the data set's structure and types (including categories, dates, and + times) + +* Can be read and written efficiently + +Plain-text formats---such as comma-separated values (CSV)---satisfy the +accessibility requirement, and also have the advantage of being human-readable, +but usually fail on preservation and efficiency. Binary formats usually fare +better for preserving data set structure and types, as well as for fast read +and write times. + +For tabular data sets, both [Apache Arrow][arrow] (also known as [Feather][]) +and [Apache Parquet][parquet] satisfy all three requirements. Arrow and Parquet +are binary formats, so they aren't human-readable, but they are open standards, +so support for them can be implemented in any software. R, Python, and Julia +all already support both through various packages. The Arrow standard is +simpler but changes more frequently than the Parquet standard. As a result, +Arrow is faster to read and write and a good choice for short-term storage. +Parquet is a better choice for long-term storage because the standard is more +stable. + +[arrow]: https://arrow.apache.org/ +[feather]: https://arrow.apache.org/docs/python/feather.html +[parquet]: https://parquet.apache.org/ + + +(databases)= +#### Databases + +A **database** is a data set together with specialized software to help you +organize, query, and update that data set. Databases are usually more +computationally efficient than languages like R and Python. Most databases also +support querying large data sets (hundreds of gigabytes) without any extra +setup. Some databases support multiple users, which can be convenient for +collaborative work (this is also one reason why databases are widely used for +data storage in web applications). + + +:::{seealso} +See DataLab's [An Overview of Databases and Data Storage workshop +reader][datalab-db] for an introduction to the topic. Then see DataLab's +[Introduction to SQL for Querying Databases workshop reader][datalab-sql] to +learn how to query data in databases. +::: + +[datalab-db]: https://ucdavisdatalab.github.io/workshop_intro_to_databases/ +[datalab-sql]: https://ucdavisdatalab.github.io/workshop_intro_to_sql/ + + + +Workflow Automation +------------------- + +### Orchestrate with Shell Scripts + +Even if you {ref}`organize-the-code` carefully, it's likely you'll end up with +workflows that consist of running several commands in a specific order and with +specific settings. It's also likely you'll need to re-run these workflows many +times as you incrementally improve, extend, and adapt the code. To make this +more convenient and ensure that you don't accidentally skip commands or use the +incorrect settings, it's a good idea to automate your most frequently used +workflows. + +:::{note} +A **Unix shell** is a standardized way of interacting with a computer via text +commands---that is, via a command line. Unix shells are widely-used for +research computing. + +See DataLab's [Introduction to the Unix Command Line workshop +reader][datalab-shell] to get started with the command line and Unix shells. +::: + +If you run your workflows in a Unix shell, one way you can automate them is by +writing **shell scripts**. A shell script is a plain-text file with a sequence +of Unix shell commands (akin to scripts for other languages, such as R or +Python). You can create separate shell script for each workflow that you run +frequently. The technical effort is low, since this just amounts to writing +down the commands that you already run in a text file. Besides making it easier +to run specific workflows, you can also share shell scripts with your +collaborators or other researchers. This helps to ensure that they also run the +workflow correctly. + +:::{seealso} +See DataLab's and DIB Lab's [Automating Your Analyses and Executing +Long-running Analyses on Remote Computers workshop +reader][datalab-shell-scripts] for the technical details of writing shell +scripts. +::: + +[datalab-shell]: https://ucdavisdatalab.github.io/workshop_introduction_to_the_command_line/ +[datalab-shell-scripts]: https://ngs-docs.github.io/2021-august-remote-computing/automating-your-analyses-and-executing-long-running-analyses-on-remote-computers.html + + +Environment Management +---------------------- + +### Use an Environment Manager + +A **computing environment** is a collection of hardware and software used to +run computations. Whether a computation runs correctly or at all depends on the +computing environment, so an important part of making a project reproducible is +documenting the environment where the code was originally developed and tested. + +In high-level programming languages like R and Python, details of the hardware +are mostly hidden away. That is, hardware has little to no impact on how you +write code, with only a few exceptions. Hardware may affect how quickly your +code runs, but usually not the final result. As a consequence, for many +research computing projects, the hardware environment is of less concern than +the software environment. + +One of the major advantages of the open-source and open-science ecosystem is +the trove of packages and other software developed and published by members of +the community. As these are updated, projects that rely on older versions may +cease to work correctly unless they are also updated. So for most projects, +keeping track of the software environment means keeping track of the specific +versions of packages and other software with which the project was carried out. + +A **virtual environment** is a computing environment with specific software +versions that can coexist alongside other virtual environments with different +software versions. An **environment manager** is a software tool that can +create virtual environments. Environment managers can usually also install, +update, and remove software. + +```{figure} ../img/xkcd_python_environment.png +--- +name: xkcd-python +alt: +--- +"Python Environment" from ["xkcd"][xkcd] by Randall Munroe +([license][xkcd-license]). +``` + +[xkcd]: https://xkcd.com/ +[xkcd-license]: https://xkcd.com/license.html + +Many different open-source environment managers exist. Among those explicitly +designed for research computing, [conda][] is the de facto standard. Conda was +originally developed to manage Python environments, but now supports other +languages such as R and Julia. + +[conda]: https://docs.conda.io/ + +:::{tip} +A relatively new package manager, [pixi][], is faster and is better at +accurately reproducing environments than conda, while maintaining compatibility +with conda packages. Pixi also provides several other features that make it +pleasant to use. At DataLab, we are just starting to switch over to pixi. + +[pixi]: https://pixi.sh/ +::: + +:::{note} +If you exclusively use R and prefer to use an environment manager developed +specifically for R, check out the [renv][] package. + +[renv]: https://rstudio.github.io/renv/ +::: + +By using an environment manager like conda, you can ensure that the versions of +packages and software your projects depend on are recorded. Generally you +should create a new virtual environment for each project, and switch between +them as needed. Environment managers provide tools to save a description of a +virtual environment to a file and to recreate an environment from such a file. +This way you and your collaborators can set up a project on a new computer and +make sure it has the correct software environment. + + +:::{seealso} +See [the Setting Up Software chapter][datalab-micromamba] in DataLab's +Introduction to Remote Computing workshop reader for a technical introduction +to micromamba, a fast and efficient drop-in replacement for conda. + +If you prefer to use the original conda, instead see DataLab's [Making Python +Projects & Environments Reproducible workshop reader][datalab-conda]. Then see +DataLab's and DIB Lab's [Installing Software on Remote Computers with Conda +workshop reader][datalab-conda-remote] for even more technical details. +::: + +[datalab-micromamba]: https://ucdavisdatalab.github.io/workshop_intro_to_remote_computing/chapters/02_environment-setup.html +[datalab-conda]: https://ucdavisdatalab.github.io/workshop_intermediate_python/chapters/02_reproducible.html +[datalab-conda-remote]: https://ngs-docs.github.io/2021-august-remote-computing/installing-software-on-remote-computers-with-conda.html diff --git a/_sources/chapters/04_case_by_case_practices.md b/_sources/chapters/04_case_by_case_practices.md new file mode 100644 index 0000000..0ed8eae --- /dev/null +++ b/_sources/chapters/04_case_by_case_practices.md @@ -0,0 +1,125 @@ +Case-by-case Practices +====================== + +:::{attention} +This chapter is still a work-in-progress. Check back when you've got some +experience with research computing and are ready to learn more. +::: + +This chapter covers case-by-case practices for reproducibility. Many of these +practices require substantial effort to adopt or require specific technical +knowledge. They can be important and even essential for certain kinds of +projects, but we feel they aren't broadly applicable in the ways that primary +and secondary practices are. DataLab occasionally adopts these practices. Read +this chapter when you feel like you've mastered the practices in the previous +chapters and want to learn even more. + + + +Documentation +------------- + +### Make Workflow Diagrams + +:::{seealso} +See DataLab's [README, Write Me! workshop reader][datalab-readme] for +suggestions about how to create workflow diagrams. +::: + +[datalab-readme]: https://ucdavisdatalab.github.io/workshop_how-to-data-documentation/#workflow-diagrams + + +### Use Issue Tracking + + +### Make a Data Management Plan + +:::{seealso} +See DataLab's [Data Management Plan toolkit][datalab-dmp] for instructions +about how to make a data management plan. +::: + +[datalab-dmp]: https://datalab.ucdavis.edu/data-management-plans/ + + +Artifact Preservation +--------------------- + +### Log Output + +:::{seealso} +If you're using R, see DataLab's [Intermediate R: Outputs, Errors, and Bugs +workshop reader][datalab-r-output] for a brief overview of a how to manage log +files in R. + +If you're using Python, see DataLab's [Intermediate Python: Squashing Bugs with +Python's Debugging Tools workshop reader][datalab-py-output] for a brief +overview of how to manage log files in Python. +::: + +[datalab-r-output]: https://ucdavisdatalab.github.io/workshop_intermediate_r/output-errors-and-bugs.html#logging-output +[datalab-py-output]: https://ucdavisdatalab.github.io/workshop_intermediate_python/chapters/04_debugging.html#logging + + +### Use Version Control for Data + + + + +Project Organization +-------------------- + +### Make a Package + + +Workflow Automation +------------------- + +```{figure} ../img/xkcd_is_it_worth_the_time.png +--- +name: xkcd-worth +alt: +--- +"Is It Worth the Time?" from ["xkcd"][xkcd] by Randall Munroe +([license][xkcd-license]). +``` + +[xkcd]: https://xkcd.com/ +[xkcd-license]: https://xkcd.com/license.html + + + +### Use a Build System + +:::{seealso} +See DataLab's and DIB Lab's [Automating Your Analyses with the Snakemake +Workflow System workshop reader][datalab-snakemake] for a technical +introduction to snakemake. +::: + +[datalab-snakemake]: https://ngs-docs.github.io/2021-august-remote-computing/automating-your-analyses-with-the-snakemake-workflow-system.html + + +### Use Integration Tests + +#### On Unit Tests + +### Use Continuous Integration + +#### Lint the Code + +#### GitHub Actions + + +Environment Management +---------------------- + +### Use Virtualization + +#### Containers + +#### Virtual Machines + +### Go to the Cloud + + diff --git a/_sources/chapters/index.md b/_sources/chapters/index.md new file mode 100644 index 0000000..1d39a55 --- /dev/null +++ b/_sources/chapters/index.md @@ -0,0 +1,53 @@ +Overview +======== + +A research project is **reproducible** if a different researcher can carry out +the same analysis with the same data and produce the same overall result. To do +so, they need transparent, detailed documentation about _all_ of the steps in +the research process and access to the tools---especially code---with which the +steps were carried out. Reproducibility enables independent verification, a +touchstone for all research. + +There are myriad practices, often accompanied by software tools, that can help +ensure research projects are reproducible. This overview workshop will help you +decipher which to adopt and when to adopt them. The workshop also highlights +additional benefits many of these practices confer, such as making it easier to +collaborate with others. As an overview, this workshop is relatively +non-technical, but provides technical references, including other DataLab +workshops, for all of the practices covered. + +This workshop is intended for learners of at all experience levels, and may +benefit learners at different experience levels in different ways. + +:::{admonition} Learning Goals +:class: note dropdown +After completing this workshop, learners should be able to: + ++ Describe widely-used practices and tools for ensuring that research projects + are reproducible, such as: + - Writing documentation + - File and directory naming conventions + - Version control systems + - Software environment management + - Build systems + - Packaging + - Software testing + - Virtualization and containerization ++ Explain the advantages and disadvantages of these reproducibility practices ++ Evaluate whether a given reproducibility practice is relevant to their + research project ++ Identify references they can consult to learn technical details about + reproducibility practices ++ Explain the ways in which reproducibility practices can facilitate + collaboration for active research projects +::: + +:::{important} +We use [this slide deck][slides] when we present this workshop. + +[slides]: https://docs.google.com/presentation/d/1uez0jDi5itswL6La3hj9DUucjNR30EKLCeh8KIzK2WA/edit?usp=sharing + +The entire workshop is summarized by [this cheat sheet][cheat]. + +[cheat]: https://docs.google.com/document/d/1Ris4HHFZz_3yPJxvVw8vt_qS6WFxV9SlFQ86oznece8/edit?usp=sharing +::: diff --git a/_sources/chapters/references.md b/_sources/chapters/references.md new file mode 100644 index 0000000..fe2db40 --- /dev/null +++ b/_sources/chapters/references.md @@ -0,0 +1,33 @@ +References +========== + +Many other people have written excellent guides, articles, and blogs about +doing reproducible research computing. Here are a few of the ones we think +might be helpful: + +* [The Turing Way][turing] is an open-source, collaborative, and + community-driven online handbook about reproducible, ethical, and + collaborative data science. + +* [Good Enough Practices for Scientific Computing][good-enuff] is an + open-source journal article about the equivalent of "basic lab skills" for + research computing. + +* [Fourteen things you need to know about collaborating with data + scientists][fourteen] is a column that addresses many issues related to + reproducibility, written by several members of DataLab. + +* [Living in an Ivory Basement][idyll] is [C. Titus Brown][titus]'s blog, which often + touches on best practices for reproducible and collaborative research. + +:::{note} +This reader was inspired by a discussion with Fernando Pérez about UC +Berkeley's [Collaborative and Reproducible Data Science course][stat-159]. +::: + +[fourteen]: https://www.nature.com/articles/d41586-023-02291-4 +[turing]: https://the-turing-way.netlify.app/ +[good-enuff]: https://swcarpentry.github.io/good-enough-practices-in-scientific-computing/ +[idyll]: http://ivory.idyll.org/blog/ +[titus]: https://www.vetmed.ucdavis.edu/faculty/c-titus-brown +[stat-159]: https://ucb-stat-159-s22.github.io/site/ diff --git a/_sphinx_design_static/design-tabs.js b/_sphinx_design_static/design-tabs.js new file mode 100644 index 0000000..b25bd6a --- /dev/null +++ b/_sphinx_design_static/design-tabs.js @@ -0,0 +1,101 @@ +// @ts-check + +// Extra JS capability for selected tabs to be synced +// The selection is stored in local storage so that it persists across page loads. + +/** + * @type {Record} + */ +let sd_id_to_elements = {}; +const storageKeyPrefix = "sphinx-design-tab-id-"; + +/** + * Create a key for a tab element. + * @param {HTMLElement} el - The tab element. + * @returns {[string, string, string] | null} - The key. + * + */ +function create_key(el) { + let syncId = el.getAttribute("data-sync-id"); + let syncGroup = el.getAttribute("data-sync-group"); + if (!syncId || !syncGroup) return null; + return [syncGroup, syncId, syncGroup + "--" + syncId]; +} + +/** + * Initialize the tab selection. + * + */ +function ready() { + // Find all tabs with sync data + + /** @type {string[]} */ + let groups = []; + + document.querySelectorAll(".sd-tab-label").forEach((label) => { + if (label instanceof HTMLElement) { + let data = create_key(label); + if (data) { + let [group, id, key] = data; + + // add click event listener + // @ts-ignore + label.onclick = onSDLabelClick; + + // store map of key to elements + if (!sd_id_to_elements[key]) { + sd_id_to_elements[key] = []; + } + sd_id_to_elements[key].push(label); + + if (groups.indexOf(group) === -1) { + groups.push(group); + // Check if a specific tab has been selected via URL parameter + const tabParam = new URLSearchParams(window.location.search).get( + group + ); + if (tabParam) { + console.log( + "sphinx-design: Selecting tab id for group '" + + group + + "' from URL parameter: " + + tabParam + ); + window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); + } + } + + // Check is a specific tab has been selected previously + let previousId = window.sessionStorage.getItem( + storageKeyPrefix + group + ); + if (previousId === id) { + // console.log( + // "sphinx-design: Selecting tab from session storage: " + id + // ); + // @ts-ignore + label.previousElementSibling.checked = true; + } + } + } + }); +} + +/** + * Activate other tabs with the same sync id. + * + * @this {HTMLElement} - The element that was clicked. + */ +function onSDLabelClick() { + let data = create_key(this); + if (!data) return; + let [group, id, key] = data; + for (const label of sd_id_to_elements[key]) { + if (label === this) continue; + // @ts-ignore + label.previousElementSibling.checked = true; + } + window.sessionStorage.setItem(storageKeyPrefix + group, id); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_sphinx_design_static/sphinx-design.min.css b/_sphinx_design_static/sphinx-design.min.css new file mode 100644 index 0000000..860c36d --- /dev/null +++ b/_sphinx_design_static/sphinx-design.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative;font-size:var(--sd-fontsize-dropdown)}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary.sd-summary-title{padding:.5em .6em .5em 1em;font-size:var(--sd-fontsize-dropdown-title);font-weight:var(--sd-fontweight-dropdown-title);user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;list-style:none;display:inline-flex;justify-content:space-between}details.sd-dropdown summary.sd-summary-title::-webkit-details-marker{display:none}details.sd-dropdown summary.sd-summary-title:focus{outline:none}details.sd-dropdown summary.sd-summary-title .sd-summary-icon{margin-right:.6em;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary.sd-summary-title .sd-summary-text{flex-grow:1;line-height:1.5;padding-right:.5rem}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker{pointer-events:none;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker svg{opacity:.6}details.sd-dropdown summary.sd-summary-title:hover .sd-summary-state-marker svg{opacity:1;transform:scale(1.1)}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown .sd-summary-chevron-right{transition:.25s}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-right{transform:rotate(90deg)}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-down{transform:rotate(180deg)}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-bg: rgba(0, 113, 188, 0.2);--sd-color-secondary-bg: rgba(108, 117, 125, 0.2);--sd-color-success-bg: rgba(40, 167, 69, 0.2);--sd-color-info-bg: rgba(23, 162, 184, 0.2);--sd-color-warning-bg: rgba(240, 179, 126, 0.2);--sd-color-danger-bg: rgba(220, 53, 69, 0.2);--sd-color-light-bg: rgba(248, 249, 250, 0.2);--sd-color-muted-bg: rgba(108, 117, 125, 0.2);--sd-color-dark-bg: rgba(33, 37, 41, 0.2);--sd-color-black-bg: rgba(0, 0, 0, 0.2);--sd-color-white-bg: rgba(255, 255, 255, 0.2);--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem;--sd-fontsize-dropdown: inherit;--sd-fontsize-dropdown-title: 1rem;--sd-fontweight-dropdown-title: 700} diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000..2af6139 --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 270px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 0000000..92fad4b --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 0000000..54b3c46 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 0000000..f1916ec --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + 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); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + 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/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 0000000..2ea7ff3 --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + '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', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * 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 + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 0000000..dbe1aaa --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/datalab-logo-full-color-rgb-1.png b/_static/datalab-logo-full-color-rgb-1.png new file mode 100644 index 0000000000000000000000000000000000000000..62b61e07d591ee15e0d884b529562e21b6bdf864 GIT binary patch literal 53458 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 b`=$Q}2PlY@i1ox#00000NkvXXu0mjfYwUXc literal 0 HcmV?d00001 diff --git a/_static/design-tabs.js b/_static/design-tabs.js new file mode 100644 index 0000000..b25bd6a --- /dev/null +++ b/_static/design-tabs.js @@ -0,0 +1,101 @@ +// @ts-check + +// Extra JS capability for selected tabs to be synced +// The selection is stored in local storage so that it persists across page loads. + +/** + * @type {Record} + */ +let sd_id_to_elements = {}; +const storageKeyPrefix = "sphinx-design-tab-id-"; + +/** + * Create a key for a tab element. + * @param {HTMLElement} el - The tab element. + * @returns {[string, string, string] | null} - The key. + * + */ +function create_key(el) { + let syncId = el.getAttribute("data-sync-id"); + let syncGroup = el.getAttribute("data-sync-group"); + if (!syncId || !syncGroup) return null; + return [syncGroup, syncId, syncGroup + "--" + syncId]; +} + +/** + * Initialize the tab selection. + * + */ +function ready() { + // Find all tabs with sync data + + /** @type {string[]} */ + let groups = []; + + document.querySelectorAll(".sd-tab-label").forEach((label) => { + if (label instanceof HTMLElement) { + let data = create_key(label); + if (data) { + let [group, id, key] = data; + + // add click event listener + // @ts-ignore + label.onclick = onSDLabelClick; + + // store map of key to elements + if (!sd_id_to_elements[key]) { + sd_id_to_elements[key] = []; + } + sd_id_to_elements[key].push(label); + + if (groups.indexOf(group) === -1) { + groups.push(group); + // Check if a specific tab has been selected via URL parameter + const tabParam = new URLSearchParams(window.location.search).get( + group + ); + if (tabParam) { + console.log( + "sphinx-design: Selecting tab id for group '" + + group + + "' from URL parameter: " + + tabParam + ); + window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); + } + } + + // Check is a specific tab has been selected previously + let previousId = window.sessionStorage.getItem( + storageKeyPrefix + group + ); + if (previousId === id) { + // console.log( + // "sphinx-design: Selecting tab from session storage: " + id + // ); + // @ts-ignore + label.previousElementSibling.checked = true; + } + } + } + }); +} + +/** + * Activate other tabs with the same sync id. + * + * @this {HTMLElement} - The element that was clicked. + */ +function onSDLabelClick() { + let data = create_key(this); + if (!data) return; + let [group, id, key] = data; + for (const label of sd_id_to_elements[key]) { + if (label === this) continue; + // @ts-ignore + label.previousElementSibling.checked = true; + } + window.sessionStorage.setItem(storageKeyPrefix + group, id); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 0000000..4d67807 --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 0000000..44825a9 --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '', + LANGUAGE: 'en-us', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/images/logo_binder.svg b/_static/images/logo_binder.svg new file mode 100644 index 0000000..45fecf7 --- /dev/null +++ b/_static/images/logo_binder.svg @@ -0,0 +1,19 @@ + + + + +logo + + + + + + + + diff --git a/_static/images/logo_colab.png b/_static/images/logo_colab.png new file mode 100644 index 0000000000000000000000000000000000000000..b7560ec216b2d1b6f77855525fe966c741833428 GIT binary patch literal 7601 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 diff --git a/_static/images/logo_jupyterhub.svg b/_static/images/logo_jupyterhub.svg new file mode 100644 index 0000000..60cfe9f --- /dev/null +++ b/_static/images/logo_jupyterhub.svg @@ -0,0 +1 @@ +logo_jupyterhubHub diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 0000000..367b8ed --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2024 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, if available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/locales/ar/LC_MESSAGES/booktheme.mo b/_static/locales/ar/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..15541a6a375f93efed3f410c2f892174ba91aaa0 GIT binary patch literal 1541 zcmZvaJ!}+56vrn40$lhsA5n;v39lh z&UUPnK|(?lfROD&7suGxxK0yMQ@o*|gesy+5vu&(?mBh?qn-WTn|=G<|NZw~b#1&Y zus*}?#(shQ752{`;fA&4V5qyTPS`e-!60i}(%5{r(0^;D!zP`#V66yFspV7<>kvF5*86z5`j$ z=8ez}?gu^a8}Li;DtHLIQScsk0P*i2&-V)CK7WC%Q*07qAJ7GU4juvd{a%p0tQWim zeu4N7$oY#!{2XK-Ul-?ZLAIP{VE@?5Oee^5uV0WLc46~8yjT}6*2P}4uiOhI#i!V; zXZ>RTx%Xyl*phu;(K~`m+PV^FjkZeL1V5sYI1K7moHI9c!}v9+ja5U&{2;G|4YhWh zm^7}c{~g+Tn8?Tvl<2F47Nu9i{l>4L9=6uy?FAD0FiY3w(=eiIKTWvQbqOe&{(Wd5^qM9YH}dGcsaNzja& zq-k29Wt#nO;9At7wwrWQc-|J&abpO^Bu%@f8>dB@7kE5QPu!GiO4q{asH8bJN^P3Y zvv7uYJM=8C@P0OzYSB}gLot+ZNt#(-bAo@Zj6?Yfp?anYnoPQR?;I# z{we#%LHPn31obOfkF`-+I9KUX>gUj zW@~ literal 0 HcmV?d00001 diff --git a/_static/locales/ar/LC_MESSAGES/booktheme.po b/_static/locales/ar/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..34d404c --- /dev/null +++ b/_static/locales/ar/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "طباعة إلى PDF" + +msgid "Theme by the" +msgstr "موضوع بواسطة" + +msgid "Download source file" +msgstr "تنزيل ملف المصدر" + +msgid "open issue" +msgstr "قضية مفتوحة" + +msgid "Contents" +msgstr "محتويات" + +msgid "previous page" +msgstr "الصفحة السابقة" + +msgid "Download notebook file" +msgstr "تنزيل ملف دفتر الملاحظات" + +msgid "Copyright" +msgstr "حقوق النشر" + +msgid "Download this page" +msgstr "قم بتنزيل هذه الصفحة" + +msgid "Source repository" +msgstr "مستودع المصدر" + +msgid "By" +msgstr "بواسطة" + +msgid "repository" +msgstr "مخزن" + +msgid "Last updated on" +msgstr "آخر تحديث في" + +msgid "Toggle navigation" +msgstr "تبديل التنقل" + +msgid "Sphinx Book Theme" +msgstr "موضوع كتاب أبو الهول" + +msgid "suggest edit" +msgstr "أقترح تحرير" + +msgid "Open an issue" +msgstr "افتح قضية" + +msgid "Launch" +msgstr "إطلاق" + +msgid "Fullscreen mode" +msgstr "وضع ملء الشاشة" + +msgid "Edit this page" +msgstr "قم بتحرير هذه الصفحة" + +msgid "By the" +msgstr "بواسطة" + +msgid "next page" +msgstr "الصفحة التالية" diff --git a/_static/locales/bg/LC_MESSAGES/booktheme.mo b/_static/locales/bg/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..da95120037f8d7c52ad1f166a7682ea55ca47a01 GIT binary patch literal 1708 zcmaKqOKcQJ5QaOv0vkhkhC?jT2nh&cNkBwFYxY90B_t3AOpcMpyUpy7b@wpSL+}lZ zc_s=RKte*|C2`<_7URcy7jLdPR->G9h;qvTamgjhjlX8bj}R-P?fIs=y6dm{dw*ZQ z?5@DG8KWEHSBxzfKYoB0o|Q|4z)!5gYX#T^t^_xLtH5sX6L34Y5iEo2!IR(`P=OzV zHs>hFdG3I#!TVqr_zYYJPUie2U;izi{|U0*KVSh|x->h#2IP4+$a!{vO>jTB41AmO zFOci|8~haPLhws)C%7B@Hs=rEKFpioR`3nD2VA{8JAV*le@=j0?>TT6cp2OVJ_ot4 z*WiBe50LY0LeuQ=S0K-igY45ea0fUFvgOv1JgO3NWrRpO`@TbYDa&#J04 z8uLU~YT|f^4W5=k94AWjM}bBXBl{2ciBp+gq(T!1)p!vCDOMX z%z7FyzF${Td*=h+vjIf3x?r>F4C`bfVWiFnCdtcQkUma)U!h8cPEd+Dt17m5q+0w& zMKQ9KWTsza{bH(IICkV%?|gjko-YcyvBiPmP?e-b0iTC;FVH=*QuCr%+4AXuzT$!T zeUYc*Gb$?f>WZlb+AqligMlp^^|YVB*ODCc3;p#Z^6JGt6Ai^Bsl#*{m-qF^?6bU6 z%dKU(_p_dYpa*V5&_n77dhBk}xVz~t(j+x#hMF`X=r)bH5$d>$?h>`ABk5bs2r;-dTfq#Q2#?t@q|9teP3*uNPWy^ACfqd~8<8}Y{+a1%CJzCK zxEruG6KALRIVJ-U$3Yy!~NpG7AK|w8QyPuG1485SvTmo%i zrHNb3JL61fEcXDLQBPwL`;mLLOPayeL#0F0B5ju4Yr5-c6aTq5cjf(V=MS}!0~aLI KlK*|VZ0$SA#iddJ literal 0 HcmV?d00001 diff --git a/_static/locales/bg/LC_MESSAGES/booktheme.po b/_static/locales/bg/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..7420c19 --- /dev/null +++ b/_static/locales/bg/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Печат в PDF" + +msgid "Theme by the" +msgstr "Тема от" + +msgid "Download source file" +msgstr "Изтеглете изходния файл" + +msgid "open issue" +msgstr "отворен брой" + +msgid "Contents" +msgstr "Съдържание" + +msgid "previous page" +msgstr "предишна страница" + +msgid "Download notebook file" +msgstr "Изтеглете файла на бележника" + +msgid "Copyright" +msgstr "Авторско право" + +msgid "Download this page" +msgstr "Изтеглете тази страница" + +msgid "Source repository" +msgstr "Хранилище на източника" + +msgid "By" +msgstr "От" + +msgid "repository" +msgstr "хранилище" + +msgid "Last updated on" +msgstr "Последна актуализация на" + +msgid "Toggle navigation" +msgstr "Превключване на навигацията" + +msgid "Sphinx Book Theme" +msgstr "Тема на книгата Sphinx" + +msgid "suggest edit" +msgstr "предложи редактиране" + +msgid "Open an issue" +msgstr "Отворете проблем" + +msgid "Launch" +msgstr "Стартиране" + +msgid "Fullscreen mode" +msgstr "Режим на цял екран" + +msgid "Edit this page" +msgstr "Редактирайте тази страница" + +msgid "By the" +msgstr "По" + +msgid "next page" +msgstr "Следваща страница" diff --git a/_static/locales/bn/LC_MESSAGES/booktheme.mo b/_static/locales/bn/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..6b96639b726a2fa959a6419b6f8b7e0dfcce33ae GIT binary patch literal 1646 zcmbV~&5IOA7>8S2xE{WN>)mqrjbP_+ zD|`%n|9`+8@Gtlc{Cs5;eF=|2zkdOGUHYZ{3U0$*$xxrd?Ipj1NbvXay{#>+)sQwK zLc@BGr=Q8s@3s2pVyti%e$UVEm)Gmv@K$Kxb@iIkGQ)QH3Dc6%KAm>6q}ejje*L3r z>$oA5HgZzyAH?ybE$6p$-O1{5(WYr7xk%%tj7A!XA>+Uti*qA7X(KkWA+(Cd;*P4f zqC=@vB32^F^Nx(hvqTZ3#rXcw=x~uglc~-VqqA;wIBg~Bl-TQgnP|xqG73*IS+qW( zo6WWqDn6MsW0O!s$y282M*BKNku;Mh6WuA>9MAOkvTmve8r7pR%ZaLqqE6Ml~R{3$6RYz1^ zHxkvXiQSWlsf@*{*+H+Gm{gVVb|;J5)lr?D$ZJBS!OVxh8WP3p@HQnr8y3617^+0h zTGzYm>~GFKb#|8L(pyu`-gfp`;o|IhXQy$z<$9NR^WnYI&Q1wu?}S90&tc32?JEMg4wtZV(;LB0u<-^*y2)npB|JLL@f}SDrcO%Hi&xc%8I{oPgE$%7j?Kgl1>Fz ze@F9IjWZ|r@GsvuUE*t^AN05zoTs2{kFZmI~m25V-8`&>S^dPTx z$^cEyl^jJ+?oOKAsWhagj`qI>dC8~bzq_0hZSgC)LsF@U6+9F=tR`Ky;!WHMs_vF; z;&hv=3*2(}kGreju(wh1_KV>qMpKtu5HHORr>y#KY7MM6T^uJ&R^K(T z4hABYyJ6tQiOxVI^L*F1qO_S8am=vBunT>6i=$ATZdb3f&v8VJ2BK9Ft@hoIsQAhin!}wxzs(N*6pVu~DVqb08$hD1)Yjm|` zLS;tVxWMJrDAJYrr0_baPC1|EHL_WMn2%o?qrvC+h@~^*GMofV4`)o0LtLbidwpll9h6X)!5Y za@FKiW0X*mn3iX1k|l^w_?&_QX>NDCJM7-fGBbN{ zu90Yv ze2zJT`3vTkm``?L!Pxha5O~CXEFXgh!F}K{a6dQ$o&?W;$H6Xm6ub={0u}ff7#cnT z+0QfZQ*aGD2(E)iz#kj_+}M9>_J4vL?;Y3zckiz69|Czl1G1m9;7jl_xEK7Z;olA4 zfrnxL7yKGLyhn&Hz$@Tsa2Y%S-Uqp^$KWaO2ax0Z1af_E!2{s0AfNlAvHt_IJ_it- z&m9L@hqKN83dlMwfSm7Lkn7GsmYi+Vd*Crl_RV$g90)P3f&KE}ym+u5)|z$Y8sKu8 zBlmXaVEsAAPcR|Fw7=ro7!QS1iR;z`WrD|#V(fI1264kaFu9d685`8V+Kg6ouC~qI zmM&5s7(=Q(6*5s`F4h6A|KHA+dF~^pl%b)GmAEN=pt6W%P%&A9eQBapEEYH*4QcO7 zC3;R9II+~bF)xtNkjEETCX59u1`)=$+?iRns%x~9HOl3bCIBb~^g5yYs6 zq0Y{7oH|J1)JWU1NqdKTUnYq{mI{?16?;!bp}i2dzgNz~TZiiSZI0ibMsD3&xHY%^ z{^Gd{twz{(e_W^z1tf63$fY*36s6L66}rp)`S#WAb50t+qFj5Cn}I4y~Kg zBqen1P~=;^ymT^e&s#V29Wupq>${g`ss7ph#?V(?y7=vEOZ04vuGQ<}z{^y~66*P^ zno!}Y$w-Q&P)$-}%RuPqz&a}Is;MT!%#Nz{)Y2fgS=pT0Tnmc4rqvjN;Qj07&Ihjp zVvrB;Z*XvQD zxu;CEAr^xgZM{%PrEqqD`$N&!KBKt)RPHp%tyA?Xw}`Se37c!8k8_eTqth`htw3AZ zm~1S1a92z`@RU9C@Xu~NJj63$#L LZS{&p7>oY^Ev$2? literal 0 HcmV?d00001 diff --git a/_static/locales/cs/LC_MESSAGES/booktheme.po b/_static/locales/cs/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..c6ef469 --- /dev/null +++ b/_static/locales/cs/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Tisk do PDF" + +msgid "Theme by the" +msgstr "Téma od" + +msgid "Download source file" +msgstr "Stáhněte si zdrojový soubor" + +msgid "open issue" +msgstr "otevřené číslo" + +msgid "Contents" +msgstr "Obsah" + +msgid "previous page" +msgstr "předchozí stránka" + +msgid "Download notebook file" +msgstr "Stáhnout soubor poznámkového bloku" + +msgid "Copyright" +msgstr "autorská práva" + +msgid "Download this page" +msgstr "Stáhněte si tuto stránku" + +msgid "Source repository" +msgstr "Zdrojové úložiště" + +msgid "By" +msgstr "Podle" + +msgid "repository" +msgstr "úložiště" + +msgid "Last updated on" +msgstr "Naposledy aktualizováno" + +msgid "Toggle navigation" +msgstr "Přepnout navigaci" + +msgid "Sphinx Book Theme" +msgstr "Téma knihy Sfinga" + +msgid "suggest edit" +msgstr "navrhnout úpravy" + +msgid "Open an issue" +msgstr "Otevřete problém" + +msgid "Launch" +msgstr "Zahájení" + +msgid "Fullscreen mode" +msgstr "Režim celé obrazovky" + +msgid "Edit this page" +msgstr "Upravit tuto stránku" + +msgid "By the" +msgstr "Podle" + +msgid "next page" +msgstr "další strana" diff --git a/_static/locales/da/LC_MESSAGES/booktheme.mo b/_static/locales/da/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..f43157d70c63ff21b4385dc36cb73f5b14eb6b01 GIT binary patch literal 1304 zcmZ9KyKmG$5XKi02pkaJ&;+qGJPH$nD9}aMKoTh;K$JVu@15uDO?nzn&U>A+XM4Phfw-zKH#7 zA8uHO_6vba9LDV+coaMYo(2zt6W}@UGI$1TfTzGEa2zD?I2bB!f*j{Lcno|A9tB^6 zC&9NBKUV%PmHi!Ly?>3CQ(qR(uY!{wt8{eFL)2d+-GK0XzbJ2D#pEAm_OQa=bqv z>yEt{#_?I3XFI&O|2#v^6KxpGSKQga zB|}Q$t~G&7@Oa2KoKDgpX6$2=SrtoT1GTMPm0g|DuG`zfb!d+>q}t0|B_w8J9T57T zIag$v?>HhOdp0JqpnQ-;9;-mHv<7xzI;nV=;{#=+_P!vo=(Ir)D;H<{wy4q`3h#>~ zA!JFY1gY2+>V#-Mj+V)JM61hEKVto8pj^8@e}8uO{nYgvwW_gEYa^$+3`k%y&y+UP zvXd(3DKs9n=AzrX-#KM`ms~V!IyTlOsmt4K9cl~8BnA3fm$9lXW`$E(G-qAU*QLn^ zrf=MwmgQsPs*#r(a_ZW2O)OJ9*z+b%Z59igr)teR+B0C^wn>Bm@6LBsXEFWfiOCp} zUSoVqXi7p(4!JPl*su1tkyFr_56Z-%sbe(I4#o^g{#-PJazXT;wvB`*ceb5TPdvg| zr`IHo4yJvN)iV_A{*4(42I?u%!cD5KXs+sR7@qEf{)q=$-v3Mo~pNRgs6dB45A_~g;fK07nJ@Atd!PtN@)FuuTCzw-;3=>No&-0+;~;^bfwAQikaeDcpMpPw z$G{ih3Gh|R-`o9n?fMUp?fnCGz(a>7-ya8gy#TV#x8N_}HSiTa&9^9*#YUsChPKG9Ug3-wb>5ahNSoell`9^ zoCmHU$Afe<^%ebHTryT9ZaN#u#(;-<*Xy#1V#z(Q#;HPD7is9+wj60gd)vV!pVPk0 zSm_{ZRgzdPbcFPDxsr?txhJx6>8J8fdK zt=*csGQxpNwNctG%DhrOQ0(2=TFGwgz2}t;Bl6j@&0V2w*_AhjI(F8SEfezEl?8P+ zO!CTPE6$HYSK7K+hThdhIeF}TXXUw`ymDc&BbHF5O7u~OM`4rK)5Mn;Zwdn zburuA-y2y!aDY4^_ YHT)aX(-~_xf`&nTEYd88)4;9x4>RdeS^xk5 literal 0 HcmV?d00001 diff --git a/_static/locales/de/LC_MESSAGES/booktheme.po b/_static/locales/de/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..4925360 --- /dev/null +++ b/_static/locales/de/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "In PDF drucken" + +msgid "Theme by the" +msgstr "Thema von der" + +msgid "Download source file" +msgstr "Quelldatei herunterladen" + +msgid "open issue" +msgstr "offenes Thema" + +msgid "Contents" +msgstr "Inhalt" + +msgid "previous page" +msgstr "vorherige Seite" + +msgid "Download notebook file" +msgstr "Notebook-Datei herunterladen" + +msgid "Copyright" +msgstr "Urheberrechte ©" + +msgid "Download this page" +msgstr "Laden Sie diese Seite herunter" + +msgid "Source repository" +msgstr "Quell-Repository" + +msgid "By" +msgstr "Durch" + +msgid "repository" +msgstr "Repository" + +msgid "Last updated on" +msgstr "Zuletzt aktualisiert am" + +msgid "Toggle navigation" +msgstr "Navigation umschalten" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-Buch-Thema" + +msgid "suggest edit" +msgstr "vorschlagen zu bearbeiten" + +msgid "Open an issue" +msgstr "Öffnen Sie ein Problem" + +msgid "Launch" +msgstr "Starten" + +msgid "Fullscreen mode" +msgstr "Vollbildmodus" + +msgid "Edit this page" +msgstr "Bearbeite diese Seite" + +msgid "By the" +msgstr "Bis zum" + +msgid "next page" +msgstr "Nächste Seite" diff --git a/_static/locales/el/LC_MESSAGES/booktheme.mo b/_static/locales/el/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..fca6e9355f314677f2890f5679fd79dd67a7a5a2 GIT binary patch literal 1722 zcmZ{iPiS047{Euewt4U5n=fkKPHMz8X+JKcS{dGGPw+nU_c zCZPt>L)D-XMN9P{m<`*yO}BBoS3#I}@#Mj)Cp~!cBL2SFE!h-0?96ZHoA3Yk{@Ax; zMX{b{53_$`KhIu%fP=N`L8bVq-5d|WJ#ZJ?4|l_1_!N8@J_(C(AAASyg$6zb(>@oV z`1uSz3RmGC_yc?b-t6<2zWn$8{ZAG}N=-3*|lx#m@-51&_iV@GtlX{0B;& z|G|Us0FOuETkutwLXlsEZ^B>UVYqXrQitFhQ0g-9MK}YWfvbJC;B(wFD1G=Fz66IT z_E|X6=LsnC_o4J>9*)3IptM|SkT~LFKU;E^x(64jsmIx3FH7o|CH<3LOJ5JLNx{`F zvmIQ7ax;7w(hfIYb$phePOCsWALdpYv;G zOPqxDxMc1Trd2=DkykNltn8<_zIz?7*J?>AHYU*1VcDqDUXtp1RQ6I+)?vWC9+ax; z?Fa=g(0-ECjhcx404JfII61D)_Tt4R3KKsK<5_h!s`|lJua|GifioP~!B0M6o&VhxLBi1MZW0rDDj^PzkAoADB{_KUL1ZXW|5J z1>K9Em-u-XId|sNnX#?+BZm&>`i;#`&PJx7QxbSBs(F4es!LTbPE1;ScXB*`Y)dcp zg5;cu^J76NEc-#FppQ-YY3{TaRO_9ar-jjaZW8iNR~zWhPCd z!IGORj47br#qth1q_-xG*Y+m$QJl1ldYsi|#&y>pn)3O}2r<588%%~cb6DJv&M0zR z6Ju?!Gpp;aJ2H>n=Q;4)9QX)UBsQv>oVXExo49XqkvY35v_#)clq&D(UelG*<`bgE k?KNN}BbD^J+2#A$4_2dkCejtU)5(_TEbrUqDh*fv19*CpTMYflop9djWEuuR*>)1Ua4$Am958?gqbuT!-Hv=RLl? ztm83|e|Hk(lCvi7xt0eoxwahd<^hR9n|*n(9}lh{d$2y|1j)ji^V&Q(5ANYkOq8Lh zleoHqM}{7WYt{rZ!Q&-caXRS*F>UXd)T&q-8)(7WzFgEPZ5(@>yDt567<$^vOeG|m zu?~=4-?s8J^<76~z&terQmeydOn{H3s$Z$a!slCrhw4F8(v9dkg67!{> zqs)38tXmQDSx=k0@+!yH>Cu2hvC4%qr;bgMl%!G1I#EHx#L(SPMrYZlG|3z-YnxYL zZ<6X6Bk3-!Gg!U#kimbyhN}%YXpR zWvS9;N_Kn7c?ykNomO;Zym7(o#sxZQOml4 zuS=5^Ti>`iCCk^wX(LZG)Bqh@I0@tnvqcu0^K+ literal 0 HcmV?d00001 diff --git a/_static/locales/eo/LC_MESSAGES/booktheme.po b/_static/locales/eo/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..f7ed226 --- /dev/null +++ b/_static/locales/eo/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Presi al PDF" + +msgid "Theme by the" +msgstr "Temo de la" + +msgid "Download source file" +msgstr "Elŝutu fontodosieron" + +msgid "open issue" +msgstr "malferma numero" + +msgid "Contents" +msgstr "Enhavo" + +msgid "previous page" +msgstr "antaŭa paĝo" + +msgid "Download notebook file" +msgstr "Elŝutu kajeran dosieron" + +msgid "Copyright" +msgstr "Kopirajto" + +msgid "Download this page" +msgstr "Elŝutu ĉi tiun paĝon" + +msgid "Source repository" +msgstr "Fonto-deponejo" + +msgid "By" +msgstr "De" + +msgid "repository" +msgstr "deponejo" + +msgid "Last updated on" +msgstr "Laste ĝisdatigita la" + +msgid "Toggle navigation" +msgstr "Ŝalti navigadon" + +msgid "Sphinx Book Theme" +msgstr "Sfinksa Libro-Temo" + +msgid "suggest edit" +msgstr "sugesti redaktadon" + +msgid "Open an issue" +msgstr "Malfermu numeron" + +msgid "Launch" +msgstr "Lanĉo" + +msgid "Fullscreen mode" +msgstr "Plenekrana reĝimo" + +msgid "Edit this page" +msgstr "Redaktu ĉi tiun paĝon" + +msgid "By the" +msgstr "Per la" + +msgid "next page" +msgstr "sekva paĝo" diff --git a/_static/locales/es/LC_MESSAGES/booktheme.mo b/_static/locales/es/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..ba2ee4dc22148ed53f2aeba32c5965654d4a5a2f GIT binary patch literal 1396 zcmZ9Kzi$;s5XU#z;m3pU!zKwxjKJWQQZ~wEO{|$=X8*l*5%yj3EgEC(L#m|@E3-CIKPyLHQ^!@|o{A*Bj z4$La`8F(5z16~6q{%=5u|2}vYjQ#o}@F?a_K{@|BDEE2^ehj_>C4c{bvhUD`U0&uv z*?$p~_`U+=+!`qRz6aYpfs%6BBl;4{Ji6po;@;mNp-!U9Icai#X`&;(C9e__T(%nW zw)>mpL*DQZy5tBcRcdJ)pH3yKo8BdMDdMNz4yGuRTJ{f|^^|Mp6HmSWQEwW{d*1tzb%mTC1mCsq-qL_43=ae|t-eKOjtW>vaY#^sij18-e zU>uxyy|KKi?sj^CYadPWVO!m;OXD8uC5dfPa>c40^|ZUw#21BS?P$vslng{1KTKV8 zUUWKW55MCO;ccWl{h{a&Tjjy}+WN}g`qfKU z27O|OlkJ*EIw63|wI$;gbyiY{oW}PitHT?6`vSSR$zizSGM^h)jP#AENrPMDiUxTd zX^w*p+XS-1RUfK2(ynf&aeQr2cfaHFPM;g=s}~jrYQqQVnr;8cCiiNY181d=I%iD{ zk_k)9C=?Vlg{(ANUY4?kat==RzrVWKpj=Q5{Q{y&B&juy+NY=9viqbpt^2(7Sd&X+ zE$PfxwdF+Wo=v7AO<8KlnjOl_?lY%ZD#GnhWgz3#*VABvZk(=zpIWX+tyOg}6^wXC zsg65u%fhre9yJUf6KusrthQzv+672++(cecEV5X4sri<+xahTU@tQ2Tj8rs5BN4#T iU!*-mQ^Nsab@xTRCJqKkd{;ciD^w4Rh!536LH!R)!cyS? literal 0 HcmV?d00001 diff --git a/_static/locales/es/LC_MESSAGES/booktheme.po b/_static/locales/es/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..5e0029e --- /dev/null +++ b/_static/locales/es/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Imprimir en PDF" + +msgid "Theme by the" +msgstr "Tema por el" + +msgid "Download source file" +msgstr "Descargar archivo fuente" + +msgid "open issue" +msgstr "Tema abierto" + +msgid "Contents" +msgstr "Contenido" + +msgid "previous page" +msgstr "pagina anterior" + +msgid "Download notebook file" +msgstr "Descargar archivo de cuaderno" + +msgid "Copyright" +msgstr "Derechos de autor" + +msgid "Download this page" +msgstr "Descarga esta pagina" + +msgid "Source repository" +msgstr "Repositorio de origen" + +msgid "By" +msgstr "Por" + +msgid "repository" +msgstr "repositorio" + +msgid "Last updated on" +msgstr "Ultima actualización en" + +msgid "Toggle navigation" +msgstr "Navegación de palanca" + +msgid "Sphinx Book Theme" +msgstr "Tema del libro de la esfinge" + +msgid "suggest edit" +msgstr "sugerir editar" + +msgid "Open an issue" +msgstr "Abrir un problema" + +msgid "Launch" +msgstr "Lanzamiento" + +msgid "Fullscreen mode" +msgstr "Modo de pantalla completa" + +msgid "Edit this page" +msgstr "Edita esta página" + +msgid "By the" +msgstr "Por el" + +msgid "next page" +msgstr "siguiente página" diff --git a/_static/locales/et/LC_MESSAGES/booktheme.mo b/_static/locales/et/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..983b82391f499b67a9046c15d0dd8744650ad925 GIT binary patch literal 1341 zcmZ9Kzi%8x6vqb=^5gOYNC*@$VrY^ev%C-5~0q6cNoSQvQHcDIz*5N(ux8-*>yj7Nec{?37 zm@hCt!hG}w7K~$WDuqWK$8rQb2_6H_g2%xn@O|(C_#QX{&wyWnr$GYW22;<6py+%D zo&tXWPl7*z?}ESdeBSTB?Csw{@%I-v01qANzCR6$y#$KRMeqsu1$Y$v1AGho6Fdz5 z4az++J_JsIlKZFNIq(K3aoh#Zg45o90E(Y)LCNb!P;`Fo`2>{wpMm1IA0b zcW{Vb>7mpIdO`vjME%rCbb#Z zLB#9Ln`>&T^B1V~k&_R*YOAf;-PhM8wsB1jsl}?dyPU?psw`<|W?Y%XaN_8G>Z0@F zr*qN&8_XbscI- zgH4-*vBjDXO&n_1F3dRkd|7v|qf1VIJknP`Sstj{^T%OktXj#ancCu*yH}n+<|;=N z-jrOCj`OFMOqk`wddINU##;0GR19tBdvzi?e7zruw52+Aw>NT5Q%F&X%h*Lj=6f7z z8jNuq=-IE#jk<#c{m?m+L;rJ$825O_Nq(D^8CKl}zio+{#UD_z^uJ)WVl7Wi?YTr` zTRZHgk)aH+jLK4D)OfM3BNeE1ohJ(1utQX6H>rE`y-+P|2~e4t1fZw$r;!^}gUIe5 P_MW2m5}a<3ol*Y+f5$~k literal 0 HcmV?d00001 diff --git a/_static/locales/et/LC_MESSAGES/booktheme.po b/_static/locales/et/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..8680982 --- /dev/null +++ b/_static/locales/et/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Prindi PDF-i" + +msgid "Theme by the" +msgstr "Teema" + +msgid "Download source file" +msgstr "Laadige alla lähtefail" + +msgid "open issue" +msgstr "avatud küsimus" + +msgid "Contents" +msgstr "Sisu" + +msgid "previous page" +msgstr "eelmine leht" + +msgid "Download notebook file" +msgstr "Laadige sülearvuti fail alla" + +msgid "Copyright" +msgstr "Autoriõigus" + +msgid "Download this page" +msgstr "Laadige see leht alla" + +msgid "Source repository" +msgstr "Allikahoidla" + +msgid "By" +msgstr "Kõrval" + +msgid "repository" +msgstr "hoidla" + +msgid "Last updated on" +msgstr "Viimati uuendatud" + +msgid "Toggle navigation" +msgstr "Lülita navigeerimine sisse" + +msgid "Sphinx Book Theme" +msgstr "Sfinksiraamatu teema" + +msgid "suggest edit" +msgstr "soovita muuta" + +msgid "Open an issue" +msgstr "Avage probleem" + +msgid "Launch" +msgstr "Käivitage" + +msgid "Fullscreen mode" +msgstr "Täisekraanirežiim" + +msgid "Edit this page" +msgstr "Muutke seda lehte" + +msgid "By the" +msgstr "Autor" + +msgid "next page" +msgstr "järgmine leht" diff --git a/_static/locales/fi/LC_MESSAGES/booktheme.mo b/_static/locales/fi/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..d8ac054597c924e3010f629caeac1c748b7211cd GIT binary patch literal 1368 zcmZ9KJ#5r46vquMU&lA4Af!r|g^wXX5kqz52B58kprWEjclYv|xbfLh>>S*}#K;Cr ztS2O9B*cCTVrBw~l?gF1AR)y6B`K}2;{5K}=lB1=7k@o5`BGq<#+lRCrOA1CaQ!^kKlhsTrZJIH9K_^ryK`_q_#3i5+EIO9achW2 zhLpr@X9L;b@gpA=I!S|AaF48UDwfs-T6Zp!8`{wJvUg?CqyH8|s=drrLSix20jamb zrP3JRD~PP@yO_j1<%2BqSOtouvxrOEOU3;he^6Fx?@JOZg|3?XUWo3*(Ha#V+1j$!k61sdlv~SpmKV48XD?rEHI0qB!<^bOz`&KTmRqe+kV}^cf!#bT&>G1)AQnFuaA9SXR zO>~T6=Ywl@%y^W>^xt9_kNV@0^m3c4B9BMrgfh( zuVp?S>46Ru!ccTe7eieYS*GF0;G*3eAeplXnZCllffvOWA=>i5w+5yH-zgk~ao1dl zs44(@M0}Rt9Mp|iQ#yrKbuAq3msY|P`l$x0E<_Em{7-o?CS$aPMpfmO5T&sTb;r2u H66VBTf3Z^G literal 0 HcmV?d00001 diff --git a/_static/locales/fi/LC_MESSAGES/booktheme.po b/_static/locales/fi/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..34dac21 --- /dev/null +++ b/_static/locales/fi/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Tulosta PDF-tiedostoon" + +msgid "Theme by the" +msgstr "Teeman tekijä" + +msgid "Download source file" +msgstr "Lataa lähdetiedosto" + +msgid "open issue" +msgstr "avoin ongelma" + +msgid "Contents" +msgstr "Sisällys" + +msgid "previous page" +msgstr "Edellinen sivu" + +msgid "Download notebook file" +msgstr "Lataa muistikirjatiedosto" + +msgid "Copyright" +msgstr "Tekijänoikeus" + +msgid "Download this page" +msgstr "Lataa tämä sivu" + +msgid "Source repository" +msgstr "Lähteen arkisto" + +msgid "By" +msgstr "Tekijä" + +msgid "repository" +msgstr "arkisto" + +msgid "Last updated on" +msgstr "Viimeksi päivitetty" + +msgid "Toggle navigation" +msgstr "Vaihda navigointia" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-kirjan teema" + +msgid "suggest edit" +msgstr "ehdottaa muokkausta" + +msgid "Open an issue" +msgstr "Avaa ongelma" + +msgid "Launch" +msgstr "Tuoda markkinoille" + +msgid "Fullscreen mode" +msgstr "Koko näytön tila" + +msgid "Edit this page" +msgstr "Muokkaa tätä sivua" + +msgid "By the" +msgstr "Mukaan" + +msgid "next page" +msgstr "seuraava sivu" diff --git a/_static/locales/fr/LC_MESSAGES/booktheme.mo b/_static/locales/fr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..f663d39f0faa76c5b9bd504c51252eef74cca5de GIT binary patch literal 1412 zcmZ{jJ!}+56vv0pm9t{vhm&8^IIO`h6wqyy*798~B-FLeKdo!!~aIl*+ zlr)i&DosjGX-Sm+nxs!ffzqWyh>mpmzuUEJBQe_9-_FOq|NFX^vnPL27*{aoG5^N= z4D;zRyf9{tD}_g$!Rs`57MuYuf@i>a@G^KEoCEvdEO-|@2Qqjbj4hvlV&_NjBk*VN zEI0-~27hn)XS@HRUH=P;-hW^RJaMA={W(z9^Pt$d0saAg1L9Gy@DjZ@;0NGaQ2bFR zmAVF8043f<@DuPZcoBRAia+0jpMpPtqW^1q{u?N9{{>2%|FrAZpu~0hRC7KD%K8iN z5_lUFyPKf+qrt170VU-UgXB+gDSn8C=pG)BP!}*oSBAtdL+nayq9N(OOB9IrIvT`P%K$}>uh8j13v0qZ;CRi75AO3oX*L*$lK06qM@nyU^}?vGk#|? zmL^cG3s$SSi7>stTuW6IGS6&j2uDVy3#y+NH@oiA@h}HB>+f7UZR}>YK)jOup(LluVV6L*Ln| zlGjyt&G}L2k*%l8&|h4l=Cgm((zQMpFVk1~#tn>=qIhM|}`x`)$>jU}ieUbVvBn#nWIG%|r{ z@(VpgvBl*|+YE)ZQEjFj&wG?C)!uDalV>RR`l$A11nWA{5XsPS+9@lOaXon+Y2Ue0 zE>oVUGO*E>4ZSkmuAAH}>yV{N!q_?5zAzp!&O#! TA2+cw{Vw>h7Yg+MtLz81? literal 0 HcmV?d00001 diff --git a/_static/locales/fr/LC_MESSAGES/booktheme.po b/_static/locales/fr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..8991a1b --- /dev/null +++ b/_static/locales/fr/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Imprimer au format PDF" + +msgid "Theme by the" +msgstr "Thème par le" + +msgid "Download source file" +msgstr "Télécharger le fichier source" + +msgid "open issue" +msgstr "signaler un problème" + +msgid "Contents" +msgstr "Contenu" + +msgid "previous page" +msgstr "page précédente" + +msgid "Download notebook file" +msgstr "Télécharger le fichier notebook" + +msgid "Copyright" +msgstr "droits d'auteur" + +msgid "Download this page" +msgstr "Téléchargez cette page" + +msgid "Source repository" +msgstr "Dépôt source" + +msgid "By" +msgstr "Par" + +msgid "repository" +msgstr "dépôt" + +msgid "Last updated on" +msgstr "Dernière mise à jour le" + +msgid "Toggle navigation" +msgstr "Basculer la navigation" + +msgid "Sphinx Book Theme" +msgstr "Thème du livre Sphinx" + +msgid "suggest edit" +msgstr "suggestion de modification" + +msgid "Open an issue" +msgstr "Ouvrez un problème" + +msgid "Launch" +msgstr "lancement" + +msgid "Fullscreen mode" +msgstr "Mode plein écran" + +msgid "Edit this page" +msgstr "Modifier cette page" + +msgid "By the" +msgstr "Par le" + +msgid "next page" +msgstr "page suivante" diff --git a/_static/locales/hr/LC_MESSAGES/booktheme.mo b/_static/locales/hr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..eca4a1a2842830f06bd5f6235bf01d07bdd313d2 GIT binary patch literal 1402 zcmZ9KJ!~9B6vu}+kmLvh)-Bbu!YZ&sL*)#Wq0oOW>)iY z#I7UJKoJQlD$3MIh{}~uqNJdrprN2bqC$d-|Jz;1r;K*?xAU?8_kVBZ_tmrCDzsP8 z*U*1Oe;xg+XYfKhe?}=h>H=QRffvE^;1%!!xCXugz6HJv4#8FMQ}7bV;EQ1F_z)DG zZ@?G8@4$=TWAG*L$BsXD^S^cDKS7E2FW3WDR@(nBfihkLMdxksC-6Fmt?DmO{`(sg z-~WN)YvpX4?<)8j#_OQu@i8cQeBP}`P-^oC6rIQ5W$*{^dGHvNe1GZqM>qcuD0MvZ zY`gv@DF5B)#v@RCe+FI!b5KeyIf$NkxPmU8B<^y9bfYDCNE01tQa`D+)KxSg*?1KH z%T4MpwK#{4ax`^Pw+`@7ELnZzY-Ae)KI#K+iZZI(?h9Kvos)Hu_nn*4eN*x2ba2UM z{M2MDO`uvAtTuBKA$>9&rK$>r--+ODxdTQVUeRy*EU zh&bB0JyN@EJkPZYCOUthcI(pE2XsrkjZ2=fYTmTp<}`LiQ88IPH-(M{K`cLrtve@i z+90*(xpAqpy(Aw}Q7~LGGJzF0;VkyI^8P*c0crzk0e zJ5}W`eCg#p>R8HV8p8`ORd-?8+@kgmPE(NjB4ZRZpsbXo1{+%JywM17c0!7$ZS zdp+04j?>}H5RL>u+?)6`B(!QC;nQ(E%YYHwOi5)9EgF2Tundr{ymsm2Z;f2mKh k(#nYgw(f}olqHrfw@Z7L48TfWxy6y8Q4`jSBkXa^hFIaGO(a}_Drr&ngPIpyPhwkKtCW1zS zxtWoenhB;xBBn-yn24D8zwTalu&Ao9Uv<5s{`Yli#|wdR9BT&a6V_?0r`xb$Ol}tf zQ|!UE3)}}zg45t0a0WaEo&}G9U2qD#3myOoJP3w{Pe6|I9NZ7S1owfj!NcI&h98>q z&yD>JoIl_+xD%H+@5zQ2!9%dS z4R3=dU_S)+f*T;`dD8G1$o{WD_Im?z{P&Ih5#&5yK-S?0$ohz#wGPuD`<((=a*oaa zSxfd~Z8_ffK#0nR_2t3u=fQPw4%YQ37D84vb8p87>(4#hjm4TkQX%F>m@;G}=B){2 zg2zWWayrd|Sg?;xZdD?U4b-=GDA#mOTgTo;H=zFxL#DkfRZ3zp(E*`1&83*aj(wjsI*=O>qg>UnQ5~j z=eV|BMg@s#m;L%pJ)5RENuwU=R0WMBhBiW7o#i}rlG4#5ZDUjRSa=`Plu#w%B`C$N z(;&2$llB909??3o&fn(z?J9F?WqD;KhDS6Yp*?cS)QjtnT^a+xb_X5}DL&Qs{# z?=7`&Y~6Fp_%(9vMKiF8HfcxR=o0auv z_q>s3y7KCU*_ODI6J+IW*=v!hp&aNkC~@B;F{`@wufgMIJ{Em)%}J(mRd82~uKPNE zu!45VT#b~I5H)6^M@|hh?PQ`$a((5ZmR_kKRwzf4qZ=wC=HgJvLU}~a#5@JmHKeM~ zcQ+dhueyjH6-vS(Hi{zy4lKXvX09`YYnog=urAe8uFQH2W~4-u2I{*$(n5sIJAG7C T@Rc+s5Lgrh10CRyRonjp5+F85 literal 0 HcmV?d00001 diff --git a/_static/locales/id/LC_MESSAGES/booktheme.po b/_static/locales/id/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..b8d8d89 --- /dev/null +++ b/_static/locales/id/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Cetak ke PDF" + +msgid "Theme by the" +msgstr "Tema oleh" + +msgid "Download source file" +msgstr "Unduh file sumber" + +msgid "open issue" +msgstr "masalah terbuka" + +msgid "Contents" +msgstr "Isi" + +msgid "previous page" +msgstr "halaman sebelumnya" + +msgid "Download notebook file" +msgstr "Unduh file notebook" + +msgid "Copyright" +msgstr "hak cipta" + +msgid "Download this page" +msgstr "Unduh halaman ini" + +msgid "Source repository" +msgstr "Repositori sumber" + +msgid "By" +msgstr "Oleh" + +msgid "repository" +msgstr "gudang" + +msgid "Last updated on" +msgstr "Terakhir diperbarui saat" + +msgid "Toggle navigation" +msgstr "Alihkan navigasi" + +msgid "Sphinx Book Theme" +msgstr "Tema Buku Sphinx" + +msgid "suggest edit" +msgstr "menyarankan edit" + +msgid "Open an issue" +msgstr "Buka masalah" + +msgid "Launch" +msgstr "Meluncurkan" + +msgid "Fullscreen mode" +msgstr "Mode layar penuh" + +msgid "Edit this page" +msgstr "Edit halaman ini" + +msgid "By the" +msgstr "Oleh" + +msgid "next page" +msgstr "halaman selanjutnya" diff --git a/_static/locales/it/LC_MESSAGES/booktheme.mo b/_static/locales/it/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..53ba476edd2df2a802917e9df402257ceca1a130 GIT binary patch literal 1403 zcmZXSJ&aXF6vsyafhY1QYQiQS8W$5EU!j1vc?Gb$351Os-eM!oynD~ycVOPkWoGWm zTH9#}m5qrNiM6q@vN55xvLLatGO@6+(D*<1-gP%Hxii0e=Htvc|2Z#C?tf~~-bG(P z{{{Vh^sipSfOhD0WAK^77~TMnfQP_S;9+n9db5tC&9bmQINr7VD9+^sD7S+ zZ-HNfN5E&`3Gn-#Klk&$_V(|f-uE{+0Qc?d&L0KUUI5k4BKQM%1;keK2Z+!7i9yf* z1s(_g1vTGe`;B=I{0KY^u7H})r~P~cRhutC&HGzW&wmGM{6B(v?m2h{{0%$^{sW!` z4;<+7S_JjnwcfrBYTWn1Q(y(ER@tjRN(zMHIBUF`R@^(uqn+2D6ew@4L zg5J|zQb*pB(DY&Nai5y1VnoTv1fhfnT;$=ca`*|y1aBki?jP#?!}jLE+O4&f-Stc7 zFAjQPha1~9k0>L63$?T2m#CQ8m^hE`ZLAKj?(U1$r%jH-6<>r>d^Mu0Q^|un)>jR5 z9TALm*F@`vt0B(QhBFUgSr)TwUH`yMh9yxlG%Xix0~y&& z3LB-cB(8l-D%nxCMbU^4uPmkzD-_D^sYeYovZ|_hYt|6+raF6N+B(TUeM703ahwOj z!*UGfp34HuR+WV4?HsPL=1>m45R2fh*HNhPRL3xNJhx_&?Yu^?zAcKo|5pQ*LIIU4 z9%X=yZ5mFd5t*`cmL{7}b7xJ=^_*qP(gmDLw)@AXu2??D^RnquqSO=xr-aR>O-k3u a)*Q3l*@6-(xNK#4xqhOgLbT*tS;gN$Zm<*V0gr*F!6RT6JPeM4`#}XB0Byp@Am^!p`@mOV z7q|)@0zW4Fn)rVt_HU5uZGb6o$Bx$f{UF;tAm=#)eg-dtd%-^-*V_PDx7aDf37`|? zeoukD;5CqS=MqLB_wxkgxVgmt1?-0X4dj{qO1J@X+@W2qe$Rs(cQvs`6FUcTpOYZ# zd6M|6Adj4TU>#hW-}7v_@AidK;vhE9mlyZXi}UiVd9FvXkushE>ug^<53aoj8)J$8 zzT$crKWU3f+%VcIZ9^RVa^Sf|D{h)8T{2EVYGYN-m<~=w|xXST6$p^DKQdw8cB>C zxj87tTJ-|uo6xf+D2p+_=;?>@I%^v*stG0HugtZ28aJ+6Qc^pUp6gf-MYMWoTj~tg zX%+DUHR+isk=>R)j9gbir9vl=V(zQFO%D~)cU2G~TSm6(r@4MQuACYk8XnlX?>m1n zl?*mLUiMW+S_rt{mmE*`%Y4xZLS?ge#s||^w&DUuhxb&F9?*GH@U)weS8|?B-Ey=W zVXhhJO{GRkQQ(x)gC>{=GgAAp8D=l_%hoY_R?FV3>^s+=67+^$;pPAU literal 0 HcmV?d00001 diff --git a/_static/locales/iw/LC_MESSAGES/booktheme.po b/_static/locales/iw/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..dede9cb --- /dev/null +++ b/_static/locales/iw/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "הדפס לקובץ PDF" + +msgid "Theme by the" +msgstr "נושא מאת" + +msgid "Download source file" +msgstr "הורד את קובץ המקור" + +msgid "open issue" +msgstr "בעיה פתוחה" + +msgid "Contents" +msgstr "תוכן" + +msgid "previous page" +msgstr "עמוד קודם" + +msgid "Download notebook file" +msgstr "הורד קובץ מחברת" + +msgid "Copyright" +msgstr "זכויות יוצרים" + +msgid "Download this page" +msgstr "הורד דף זה" + +msgid "Source repository" +msgstr "מאגר המקורות" + +msgid "By" +msgstr "על ידי" + +msgid "repository" +msgstr "מאגר" + +msgid "Last updated on" +msgstr "עודכן לאחרונה ב" + +msgid "Toggle navigation" +msgstr "החלף ניווט" + +msgid "Sphinx Book Theme" +msgstr "נושא ספר ספינקס" + +msgid "suggest edit" +msgstr "מציע לערוך" + +msgid "Open an issue" +msgstr "פתח גיליון" + +msgid "Launch" +msgstr "לְהַשִׁיק" + +msgid "Fullscreen mode" +msgstr "מצב מסך מלא" + +msgid "Edit this page" +msgstr "ערוך דף זה" + +msgid "By the" +msgstr "דרך" + +msgid "next page" +msgstr "עמוד הבא" diff --git a/_static/locales/ja/LC_MESSAGES/booktheme.mo b/_static/locales/ja/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..1cefd29ce3cc08792667a82dc7ff47e9843107be GIT binary patch literal 1471 zcma))U2GIp6vr=uT2=%temyktnh+I|RZ$+uHv1sbO-LX%QhlH9-p&qe?;Yo((zoth z!EFJNkCxzqu~zx0SU`c+ubA-Uv++eAe7Tv~_Q5w};+y|7GulOC;?11-%{lkn^L6K! z-gVOq>v2dQu6IDn_Xk)2*RIXZZv;v211Zik;1ak4q&&ao z_TO@S&AKd35BL)Hd%6F@2|fYNfYiq|km|n!QoJ8>{U?y}t$^hJJGcehbZ=(g z0h0bQNasgDiZ_<)lR3|UkHUThq>)oh@}pU9hR|%O@9u?E>>&uvmlpL;i{?kUXs#3! zA=v{Ey4&tWeb61=55ZW{`(?Yv@$jH7*egl~LIyrQ+;Pvb>jB%X-jWSv)wooF7*^^a zA8{ID)$FU#tBQXZgSz8$*Rlm0s5t>b|D{&KM#HaqLP$QUYJ%;x{D6mU%?d<~D+xW6 z)jE6Cg@Yxz75=BO|)yDPjO+O|NI0-c}~bwE^u;+|UZ4dMBS zR^nOyBIPfpnG5^&>>F6!-~QYSg?zBZp>bD~cz^<)cN>-?`+2o)dAX*25Q`IlO*w3@i^0SgZ zRp#5b_7~Xl$+OE7hnZ=9YND2D&Y9*#)@d&!S7*EK+UR$U{>JE*(KAMC6J0ZU+C;M^ z`q*e3JZ1ERi7p!bh0&j-o|DW(-_lp~<^OPPo;J+|qu);tEd58ke>rs)FR!$Zu=w!h z&Y7=QE_`G(9#lEWlJgUtTT#-!nao^I&VIs{Z!N}0r&&CGVrBLi!p9%ph)+&2{5I%2 zK7KuJEq2#CZ}bHdEv5a=V6`%k-R^d(Xw}Jf>8QN5e!h zBbA`3bkQ)WS=dVKSy@;~B<{I88!P_b+$$|{a=-hV^ZNe(@4NG5)%+^MSdZvHd_rtS zROaA?v3M?Hcvu@=3&Ew}VsJIs26lk!z^&jKFbl2%PlD~B0GES0VHu=655Q&M6L2Xw z0j>n66Mjh6KPU5VAnE-CQ{cRL@%?s?<{cpA*#_Ef2kG3A zWc>t4Ehi1?A9+}fAZZd{dqh6EFS_D$EB?$Vqvj_EszTqMS+R^&H z>|hBG*9E~2DXE3jK7P0*&#?=d9aa}*QCWE|l@|R-n>7qsZZHEJ ziA7vbTyRv7*q)W%4{Te&r9dUHqRxq&PWR-~XN2b?TZYH_Y0^)(lvBrgj&;rK@7cLK zl{7ZpS8_#$YZ%z&7A;41@?634e4(?a`?}KyX3lw*^v?<}-6eA>??^kt5A-`ab<~n} zfWBto^Y9)w_0g!> zVBythE}X>$!Q{z_su`ZeFjL;phL~syBFa zXVlaiX8iI$xBl9S?ljH#2qeqqHLg5*5Kc5=W8s^|_vRD}$A^$29KXrU!@=^_j5Dv6%;4cA#sHtggl>eA))${_687xQDk?6`Kc@OWFO}WOS!3uO( zjPOmFMc3|`Ymgi(M~_AsRb8*l6oj5N!k1G#oNSsg^a1i?<=NZRz?N8C9`e*ob%^~2 D6Q!<* literal 0 HcmV?d00001 diff --git a/_static/locales/ko/LC_MESSAGES/booktheme.po b/_static/locales/ko/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..c9e13a4 --- /dev/null +++ b/_static/locales/ko/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "PDF로 인쇄" + +msgid "Theme by the" +msgstr "테마별" + +msgid "Download source file" +msgstr "소스 파일 다운로드" + +msgid "open issue" +msgstr "열린 문제" + +msgid "Contents" +msgstr "내용" + +msgid "previous page" +msgstr "이전 페이지" + +msgid "Download notebook file" +msgstr "노트북 파일 다운로드" + +msgid "Copyright" +msgstr "저작권" + +msgid "Download this page" +msgstr "이 페이지 다운로드" + +msgid "Source repository" +msgstr "소스 저장소" + +msgid "By" +msgstr "으로" + +msgid "repository" +msgstr "저장소" + +msgid "Last updated on" +msgstr "마지막 업데이트" + +msgid "Toggle navigation" +msgstr "탐색 전환" + +msgid "Sphinx Book Theme" +msgstr "스핑크스 도서 테마" + +msgid "suggest edit" +msgstr "편집 제안" + +msgid "Open an issue" +msgstr "이슈 열기" + +msgid "Launch" +msgstr "시작하다" + +msgid "Fullscreen mode" +msgstr "전체 화면으로보기" + +msgid "Edit this page" +msgstr "이 페이지 편집" + +msgid "By the" +msgstr "에 의해" + +msgid "next page" +msgstr "다음 페이지" diff --git a/_static/locales/lt/LC_MESSAGES/booktheme.mo b/_static/locales/lt/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..4468ba04bc134a84fea5e3c973461cf02c9c2da3 GIT binary patch literal 1413 zcmZvaJ*-qk6vsyag_RElKVp1=p+SgQ1!6(=Ws8Trm%IpJ!!Cq&-rn=>&feLX$$UJx zy>yfs3mYDtv7j(9R@&?)#@fol&{Y(AbXL(_rUwj`9qL(er@8vgIw=pko$cKo&XOVSm=ES z^8O^qK3oL({z?6$1#4Nz2(054oJ;=;JiGzE*_kpy=GszcBB+< zVRAov2m8<3><4U^|G(mLjYp;ti7%W@WK+ZsUk6=|lDOjTSmRV7txL4wTqQTPq1|wF zISlEQU>fNty(&qp7CIsI&UP&u6NiDw%84sTTvaj2>KHSL zUeFdvoa|j$6a9r=An&41F4Us$N7~+%m$|mVh$bZFtK3-hG;n2UNLsa}OO-T4EZt3u z>KyAVM0}tv?Q&E0p7b%7C80_}Cn&{@X_(sUMf(ENwtj7O_x!@A z=Ua`j?LqCSBNGbv%p0ZcvK)?7h?KfF2W#z1yZ3^!ag#!O)ec>uZP}5RHgsxTRkqCV zwIfYx^-K=RwAWmi#E!InzKz|B%X0Cvd)CU+U3uZ$a!agNntg;f8E)25tYny{XFsAC z9jD(SkfM$V#H6LA*|v6LHF0AnD>v~vCkoohO{LBB-b;69+sY(u|L3sMiR5g1`bhd5 zjq=k+;szC}%nlMS$9vjXC#gc)P6nF&q9-bfo{CjQZe*xbNYi^#C9ConpM%1oLFKH0 za&)0WJ=gQWZ5W!M$i7!O!aIl|0e?HQ2Ro%kmCL#^O7u6its3{(8W!QLNCjg(=>2Jsvw ClWZvf literal 0 HcmV?d00001 diff --git a/_static/locales/lt/LC_MESSAGES/booktheme.po b/_static/locales/lt/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..35eabd9 --- /dev/null +++ b/_static/locales/lt/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Spausdinti į PDF" + +msgid "Theme by the" +msgstr "Tema" + +msgid "Download source file" +msgstr "Atsisiųsti šaltinio failą" + +msgid "open issue" +msgstr "atviras klausimas" + +msgid "Contents" +msgstr "Turinys" + +msgid "previous page" +msgstr "Ankstesnis puslapis" + +msgid "Download notebook file" +msgstr "Atsisiųsti nešiojamojo kompiuterio failą" + +msgid "Copyright" +msgstr "Autorių teisės" + +msgid "Download this page" +msgstr "Atsisiųskite šį puslapį" + +msgid "Source repository" +msgstr "Šaltinio saugykla" + +msgid "By" +msgstr "Iki" + +msgid "repository" +msgstr "saugykla" + +msgid "Last updated on" +msgstr "Paskutinį kartą atnaujinta" + +msgid "Toggle navigation" +msgstr "Perjungti naršymą" + +msgid "Sphinx Book Theme" +msgstr "Sfinkso knygos tema" + +msgid "suggest edit" +msgstr "pasiūlyti redaguoti" + +msgid "Open an issue" +msgstr "Atidarykite problemą" + +msgid "Launch" +msgstr "Paleiskite" + +msgid "Fullscreen mode" +msgstr "Pilno ekrano režimas" + +msgid "Edit this page" +msgstr "Redaguoti šį puslapį" + +msgid "By the" +msgstr "Prie" + +msgid "next page" +msgstr "Kitas puslapis" diff --git a/_static/locales/lv/LC_MESSAGES/booktheme.mo b/_static/locales/lv/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..74aa4d8985d96a07c4c9be96f006f3b58d884342 GIT binary patch literal 1404 zcmZ9K&5ImG7{*_dsL7ZQP5eMvump*E7&XB|oMjFhcNYS?IAk~8Yi8c*sqUVtras2( zdKwT<9)#7Cr{GC*^B|r)^?-kXCk3y9;7t%O;`2^-vdb1-{p+f(exK)k=-;oN`-(7L z!d%1r1@l$R&!4~zPs;uHG2 zUH=1$um8Z;!As|eUIA~m+y%w|6qJ5G0bd5c0G|fGYu|qlzJT=-lzP8`lHs4A_&D=q zlgkxQ>Rkt~f$z861tmufO5Zssk;}JoUbN-BWGj829FU-AF-2E~^e;o|NY;|8ctc5g z22*^U9FmJ@OFxKVl@HxMz@_4p=>umY+Zgar9e9&XBW=2mZRzw_Sr>WeT%jhWmHkCxl1EW^k%TQzfIrX3xkO4V3L9xG?DPIfe<4=WtdR+$hI z)4&^xB2Eo9w`s4@^IW-LqVor|S51w*uWpOC{VC6wR(CaQdfIncRMGG) zBv*eURUdB+Oli45Wvi9v9Ia6vne84ZIht?0o$f< A2mk;8 literal 0 HcmV?d00001 diff --git a/_static/locales/lv/LC_MESSAGES/booktheme.po b/_static/locales/lv/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..ee1bd08 --- /dev/null +++ b/_static/locales/lv/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Drukāt PDF formātā" + +msgid "Theme by the" +msgstr "Autora tēma" + +msgid "Download source file" +msgstr "Lejupielādēt avota failu" + +msgid "open issue" +msgstr "atklāts jautājums" + +msgid "Contents" +msgstr "Saturs" + +msgid "previous page" +msgstr "iepriekšējā lapa" + +msgid "Download notebook file" +msgstr "Lejupielādēt piezīmju grāmatiņu" + +msgid "Copyright" +msgstr "Autortiesības" + +msgid "Download this page" +msgstr "Lejupielādējiet šo lapu" + +msgid "Source repository" +msgstr "Avota krātuve" + +msgid "By" +msgstr "Autors" + +msgid "repository" +msgstr "krātuve" + +msgid "Last updated on" +msgstr "Pēdējoreiz atjaunināts" + +msgid "Toggle navigation" +msgstr "Pārslēgt navigāciju" + +msgid "Sphinx Book Theme" +msgstr "Sfinksa grāmatas tēma" + +msgid "suggest edit" +msgstr "ieteikt rediģēt" + +msgid "Open an issue" +msgstr "Atveriet problēmu" + +msgid "Launch" +msgstr "Uzsākt" + +msgid "Fullscreen mode" +msgstr "Pilnekrāna režīms" + +msgid "Edit this page" +msgstr "Rediģēt šo lapu" + +msgid "By the" +msgstr "Ar" + +msgid "next page" +msgstr "nākamā lapaspuse" diff --git a/_static/locales/ml/LC_MESSAGES/booktheme.mo b/_static/locales/ml/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..2736e8fcf6f9e923c2403307f0b366086d37b335 GIT binary patch literal 1883 zcmbW0%ZnUE9LGydG>*^22ObnFl0!U=*`!Gj=35eWDu@Vn6%SYIC#v~L=<+PV8oUUd{}t%`e}*gYclZSS_^!ZZxSjb`_!_(p zTd=uFh;ewl;wqeG{x{qKTbqR#gE5?hpTno&U(oq&;Si6(7JLc50p0#-xD$R4pMlrl zez^G_At=eHx!OEj&F+K95`^|`3%xs|tB0$dYp$lQaXj&eABB3jp*ug}eRDN&btbLg zC_?O6*AzH~{-A|&9)JdV{ljJRVAnvQRl4{_?&D7b7KD1k z&HJ`jzT)e&M4gbqlB?mhqaXMpAZg<;-hlh5ZiX1=e36nUswzgb&SN${bnp4Gv=IQ6$P05hgaiFop^2w W+5FkQ^s?wV7=JSkIl3Km4aE({iDO&< literal 0 HcmV?d00001 diff --git a/_static/locales/ml/LC_MESSAGES/booktheme.po b/_static/locales/ml/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..d471277 --- /dev/null +++ b/_static/locales/ml/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: ml\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Print to PDF" +msgstr "PDF- ലേക്ക് പ്രിന്റുചെയ്യുക" + +msgid "Theme by the" +msgstr "പ്രമേയം" + +msgid "Download source file" +msgstr "ഉറവിട ഫയൽ ഡൗൺലോഡുചെയ്യുക" + +msgid "open issue" +msgstr "തുറന്ന പ്രശ്നം" + +msgid "previous page" +msgstr "മുൻപത്തെ താൾ" + +msgid "Download notebook file" +msgstr "നോട്ട്ബുക്ക് ഫയൽ ഡൺലോഡ് ചെയ്യുക" + +msgid "Copyright" +msgstr "പകർപ്പവകാശം" + +msgid "Download this page" +msgstr "ഈ പേജ് ഡൗൺലോഡുചെയ്യുക" + +msgid "Source repository" +msgstr "ഉറവിട ശേഖരം" + +msgid "By" +msgstr "എഴുതിയത്" + +msgid "Last updated on" +msgstr "അവസാനം അപ്‌ഡേറ്റുചെയ്‌തത്" + +msgid "Toggle navigation" +msgstr "നാവിഗേഷൻ ടോഗിൾ ചെയ്യുക" + +msgid "Sphinx Book Theme" +msgstr "സ്ഫിങ്ക്സ് പുസ്തക തീം" + +msgid "suggest edit" +msgstr "എഡിറ്റുചെയ്യാൻ നിർദ്ദേശിക്കുക" + +msgid "Open an issue" +msgstr "ഒരു പ്രശ്നം തുറക്കുക" + +msgid "Launch" +msgstr "സമാരംഭിക്കുക" + +msgid "Edit this page" +msgstr "ഈ പേജ് എഡിറ്റുചെയ്യുക" + +msgid "By the" +msgstr "എഴുതിയത്" + +msgid "next page" +msgstr "അടുത്ത പേജ്" diff --git a/_static/locales/mr/LC_MESSAGES/booktheme.mo b/_static/locales/mr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..fe530100d7715cdc19a6f9db33a971665835f3c4 GIT binary patch literal 1674 zcma))-D_M$7>7rVU#qnriYO?KB2uYGt)hetL1>ylCBZ;a@uD{;yVJ8rH#3KG&bG~6 zRisua;ze5NO^wW!;71IF+EldSwKo+61wrPsjrLTQ<5nO9X$iPPmDi?R5_3f- z*T>{OU(0+)Eh-V7av_#JZ?debq)w0ISz70aXmzZP)flf6MT$}#$xUxiX4T6wMQMt1 z(Km0ZR-GJZC$ForB1Kb1(Zq`;L9Q`#U}kc-zxUba8xuy?O4rH!QlXl%M)kR(o922< zwmNB9se1h2{8TbJJXfZ=I;_fMQnySy*I84JF64D%I@MVZ^O|z8Y|M6hW!g=qOu1M! zr7ps>8h>F-#@F%PT0TB5_dY$=5YC=={Zr0fboPp~>pX9~wCwsPo&DVPkH=Hao^bXY zXIEYSL*AVI()HhVc3C?6MacEOvlp1GgbA^$%){9gR+l%mHiEnj&-JixH&Y;SGbt{+ z{t03z?p+g;%KlU0jXnJ;6hm+E zO4d<`2T4o{Hn?Oyg$)#jm)Q^UYaHJCp>S-t$!CBi7ej)}A>Wy>@(p%y@Lc$O&cyp1 zdP#?v^I4GaH+|g|B8k!Ldl%Wfwrg(}`)i>kl#a*D@zz$^*>a1%2AcIZ5x;fu4@Sqm A6951J literal 0 HcmV?d00001 diff --git a/_static/locales/mr/LC_MESSAGES/booktheme.po b/_static/locales/mr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..f3694ac --- /dev/null +++ b/_static/locales/mr/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: mr\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Print to PDF" +msgstr "पीडीएफवर मुद्रित करा" + +msgid "Theme by the" +msgstr "द्वारा थीम" + +msgid "Download source file" +msgstr "स्त्रोत फाइल डाउनलोड करा" + +msgid "open issue" +msgstr "खुला मुद्दा" + +msgid "previous page" +msgstr "मागील पान" + +msgid "Download notebook file" +msgstr "नोटबुक फाईल डाउनलोड करा" + +msgid "Copyright" +msgstr "कॉपीराइट" + +msgid "Download this page" +msgstr "हे पृष्ठ डाउनलोड करा" + +msgid "Source repository" +msgstr "स्त्रोत भांडार" + +msgid "By" +msgstr "द्वारा" + +msgid "Last updated on" +msgstr "अखेरचे अद्यतनित" + +msgid "Toggle navigation" +msgstr "नेव्हिगेशन टॉगल करा" + +msgid "Sphinx Book Theme" +msgstr "स्फिंक्स बुक थीम" + +msgid "suggest edit" +msgstr "संपादन सुचवा" + +msgid "Open an issue" +msgstr "एक मुद्दा उघडा" + +msgid "Launch" +msgstr "लाँच करा" + +msgid "Edit this page" +msgstr "हे पृष्ठ संपादित करा" + +msgid "By the" +msgstr "द्वारा" + +msgid "next page" +msgstr "पुढील पृष्ठ" diff --git a/_static/locales/ms/LC_MESSAGES/booktheme.mo b/_static/locales/ms/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..f02603fa2522a40060bd3f1b5d65052c77530de6 GIT binary patch literal 1213 zcmZXRJ8Km|6vs!6uj@1M0TG1}Eworov@58TBL2_ajS)TU%x`DrywA6>k!K8Y7V9F`8>~xM5BFh% zd;s@@AHhT5C-5lv6+91q2g&v)I0lYF`6PH1JO$nc$*v2Y0Pldu!3W?dC>w4z_m7+N zHb`+^fGzM9NcL|*vVRZ02ETwK;L`&&w?VSo0ms4TAm#b4;b-tP&Og8l;4hH$$Kizh zUTHW1Qhptf^p`=>djwK_>)<(X03HLMfK>lZ^ZpV{}g%EROCaZxzWLzM_G6K*tH6hX%sTdt($LUZL@kZi>& z4I{%>X6M;z?cd7EIOUBUu+=J4dW+9cF1<{ak_~s>uT$@tG%Y08Vne0ED+JMU%h%Z$ zic<%vtlUs0G-K1wUB*6INTU1FI=E=_I%q^eqhYw#(!$c*-uvW@iB{KW zFSU<)gG#o!N7S2DA(WoxaVD&jzH_fPA5HD)S)tvUw9%Z7O`>$#=2Ly;TZ=-c0nKak z(zRBKU_}wl8(X?I*VXXoI=7~I{oA>w`Q;9uyguDx%Y{TQY0E^;V^w*;2yki7=)(TYV{?8_pQ^c*8Iog%4v$iD&q$RjNP literal 0 HcmV?d00001 diff --git a/_static/locales/ms/LC_MESSAGES/booktheme.po b/_static/locales/ms/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..65b7c60 --- /dev/null +++ b/_static/locales/ms/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: ms\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Print to PDF" +msgstr "Cetak ke PDF" + +msgid "Theme by the" +msgstr "Tema oleh" + +msgid "Download source file" +msgstr "Muat turun fail sumber" + +msgid "open issue" +msgstr "isu terbuka" + +msgid "previous page" +msgstr "halaman sebelumnya" + +msgid "Download notebook file" +msgstr "Muat turun fail buku nota" + +msgid "Copyright" +msgstr "hak cipta" + +msgid "Download this page" +msgstr "Muat turun halaman ini" + +msgid "Source repository" +msgstr "Repositori sumber" + +msgid "By" +msgstr "Oleh" + +msgid "Last updated on" +msgstr "Terakhir dikemas kini pada" + +msgid "Toggle navigation" +msgstr "Togol navigasi" + +msgid "Sphinx Book Theme" +msgstr "Tema Buku Sphinx" + +msgid "suggest edit" +msgstr "cadangkan edit" + +msgid "Open an issue" +msgstr "Buka masalah" + +msgid "Launch" +msgstr "Lancarkan" + +msgid "Edit this page" +msgstr "Edit halaman ini" + +msgid "By the" +msgstr "Oleh" + +msgid "next page" +msgstr "muka surat seterusnya" diff --git a/_static/locales/nl/LC_MESSAGES/booktheme.mo b/_static/locales/nl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..e59e7ecb308a7648cd23aa6342a9ad98a61d0009 GIT binary patch literal 1356 zcmZXTJ5Los6vqcag)1TtUj+$cqf)Gju^^CJh(JODkqBZvyL;~La`(<`W@dTSmfC47 z`~-XfW8nv|v9q$Ewb8~-3*-OXUAP1%JNw%?Gxz+@WA4%Tz*~WF19KAdE9MmDt3JFi z2G0qBM-1V00UQPg!3l5(oCL3fx52Am6C4Mhfg>P+S3qC$CCGl>fS1Ad;4pXyj)5O) zey;7`>h*V!^?rj5u)n|h{RqhGNs#^A0Y8F|zya_lcoF;svhE*{ng4G|2HU zfE@n|kmKI2*9Rc$zXmzZceVWx9L4%m%`YJ5bp-OcA0YetTieIZSNl^S#~pwZ;4H`` z=N$Mv$HI25E$f~haMji1Jb17l9<0YPv;H+qxD=N#xwoeW*MWP;bwN40{S^!Qc%)BB zJTcmn_6{G#zRi--xzS!`5#mI~uCZ|uI< zDAG*t$pwyWGo=oR?puacPMao4a*|r@WQp<_L^SRBDmueDl}KS}Co^Ro_9^$SOcFwr zgiH{M*`~+`D{-(z*1_AHtn>rc54y^YwUxD{-u}$J2aUS0!RCHJbJ8P#`$euYJujnF zSx3J4d~-RN?VYnqyB67CNk=BmbTTJr!^}5Ul}<|3bx!KMv7VP!<-xMC9S1|vUApGO zd0Bln?`nCgDQBkV8|as@-IqkwS9EI1Sg6udX`Q7gMb~>RJ??afw3Uu~8!34iTBHBl zi0Od1qM24Aq+POY$n;EGCeKm6M7k&?+d-F=M@18=IxkHDla2^|PO9GX1u3ivbE1xT z+=^}4Zo{ONva*On--8-OUjI=r94V1Y}`N=IHv19Ut jbWAeLReX?b<52fDoT%;?`~gm~I(s23S;SN2irW1H>^?=m literal 0 HcmV?d00001 diff --git a/_static/locales/nl/LC_MESSAGES/booktheme.po b/_static/locales/nl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..71bd1cd --- /dev/null +++ b/_static/locales/nl/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Afdrukken naar pdf" + +msgid "Theme by the" +msgstr "Thema door de" + +msgid "Download source file" +msgstr "Download het bronbestand" + +msgid "open issue" +msgstr "open probleem" + +msgid "Contents" +msgstr "Inhoud" + +msgid "previous page" +msgstr "vorige pagina" + +msgid "Download notebook file" +msgstr "Download notebookbestand" + +msgid "Copyright" +msgstr "auteursrechten" + +msgid "Download this page" +msgstr "Download deze pagina" + +msgid "Source repository" +msgstr "Bronopslagplaats" + +msgid "By" +msgstr "Door" + +msgid "repository" +msgstr "repository" + +msgid "Last updated on" +msgstr "Laatst geupdate op" + +msgid "Toggle navigation" +msgstr "Schakel navigatie" + +msgid "Sphinx Book Theme" +msgstr "Sphinx-boekthema" + +msgid "suggest edit" +msgstr "suggereren bewerken" + +msgid "Open an issue" +msgstr "Open een probleem" + +msgid "Launch" +msgstr "Lancering" + +msgid "Fullscreen mode" +msgstr "Volledig scherm" + +msgid "Edit this page" +msgstr "bewerk deze pagina" + +msgid "By the" +msgstr "Door de" + +msgid "next page" +msgstr "volgende bladzijde" diff --git a/_static/locales/no/LC_MESSAGES/booktheme.mo b/_static/locales/no/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..6cd15c88de675226c00ca4d0430171075e5559ff GIT binary patch literal 1317 zcmZ9KJ#5r46vxeXdz6pzxm3a|d<+2!3{|TeDD*@{E2`eX#NxZWChjG6WIIQ@F#r=I zh=CaiW+cQ+7sSlefekSsA;E&g!2exRwZe-1i=UnMe;@gJZ0`$!aT;?1^9$w~%xAl> zV2tb*0*@HQvL74+N5JFYC^!M00?&abz$SPMTm}z=1ReoH&Bq}7c@7=|Ux8!bTW}nF zU-MIK->moFLDu^NHo!f5s_zejyq^Hs&w20zcpb!5@dLyoequQQ{ss?%e?g9WWG`|7 z&ww2NwR(RWJc|7Tkn_pGec+?o{vnrOx2I^Ydmn%A>ZL_zf>(PJ4kZLarm5`W=b%5)w zZL7>O-*ZGp<~Am=pnQ;J5vxG4v+R9LTr zb?c&Cq}r^>S&prfQchyH%5IfY$0kWe(x`z>RL~GHv=*x9EbCMvg`Y>jh2AfB-HRnbKxP z_EP0Mh336ZE1KHA=alg)i!%*zV<7HREar_#Z59h#6sa0`M0_gBf~5&B$u(bn(=RqnJ4d{?xCazSi7Dd36F5NEp? z<)YnpdLTAmS7{(1PP{Mcl94asi9}+1PF;uA{A!sWqQCgLP1e#J@rEvuCjIeG)u_ z_zHL&oC3+mBarlB@FchjQl1we?OzAU{{~3=--1+!&*l7gkoNrokAjC_hW4EWNq-dF z2i^p!UUxt$Ipw67YDs=blg_=fL9(w&^`%C>sF5z^AYYUllKnH&-R^8uf4W1;k81~m7!h)9ylfZ~^CgwY?O|s!8_53#eN#D}ib%4l zPdl`G0* zrR^Q^E{h@wml7v|6|*b@U!4i752bZbtMMX#mGW2nnJcq1vs2siW24t9Wnrs}c`9q% z!@$)v5lT<+ped}AzW!iwx;nnS&I;|8q^(Zrz=TRiH9p=@zH(RSC_`OqJWVR|NoGY- zoi?`RYFwxN(ABR`V3KC)moz_L=VO;ADlp!Wow9!{+QNF%d)$vmWXUlwR2&%HTrgJW19E;7l zzACcDJ`;)Rh+tW;2Q~|urlsI%&bL2qk_T%ViEOb+o5j!ziwCfPoA2cCtFji~wj$ZA z@p+raPIaI5KE$fLmvXo`p>N|Ts6=nA`!wj_O|+>xW d^Crc{P^+yKEfI-Mu31OGXlgVp$}sP%{Q=l!SrY&N literal 0 HcmV?d00001 diff --git a/_static/locales/pl/LC_MESSAGES/booktheme.po b/_static/locales/pl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..1b7233f --- /dev/null +++ b/_static/locales/pl/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Drukuj do PDF" + +msgid "Theme by the" +msgstr "Motyw autorstwa" + +msgid "Download source file" +msgstr "Pobierz plik źródłowy" + +msgid "open issue" +msgstr "otwarty problem" + +msgid "Contents" +msgstr "Zawartość" + +msgid "previous page" +msgstr "Poprzednia strona" + +msgid "Download notebook file" +msgstr "Pobierz plik notatnika" + +msgid "Copyright" +msgstr "prawa autorskie" + +msgid "Download this page" +msgstr "Pobierz tę stronę" + +msgid "Source repository" +msgstr "Repozytorium źródłowe" + +msgid "By" +msgstr "Przez" + +msgid "repository" +msgstr "magazyn" + +msgid "Last updated on" +msgstr "Ostatnia aktualizacja" + +msgid "Toggle navigation" +msgstr "Przełącz nawigację" + +msgid "Sphinx Book Theme" +msgstr "Motyw książki Sphinx" + +msgid "suggest edit" +msgstr "zaproponuj edycję" + +msgid "Open an issue" +msgstr "Otwórz problem" + +msgid "Launch" +msgstr "Uruchomić" + +msgid "Fullscreen mode" +msgstr "Pełny ekran" + +msgid "Edit this page" +msgstr "Edytuj tę strone" + +msgid "By the" +msgstr "Przez" + +msgid "next page" +msgstr "Następna strona" diff --git a/_static/locales/pt/LC_MESSAGES/booktheme.mo b/_static/locales/pt/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..d0ddb8728e1d5ef72dddc1537f66aa32251a83c8 GIT binary patch literal 1364 zcmZ9KJ!lj`6vsyszs~RYi3A)AKVkhsL@peXm>dKW4Dqy|yM5Uk-JMxyXV09qrC4bb zE3pu<6hyS##>&dd!p6cz!N$T$|8I9gLWZ0D-MpQB@BjWY-^NCt35+9{h16S(zZ$SR;BglC^gY3_DkUjkg^8V2+RlY+YuTO%k z_iDYq0kY*B<9wX!0496Oy4Me+EOW5GJh*=z>>q1pUk_m-WvQ8UtRL(@Yuttj8%m$V z)DS=E`y_5yrAF9A~6$c zkJPKnb{@xB&k-4!*pS4W%Dl|ePxSZ1+Sg`TPO-L5pAr(~Q+BJKIyQ=8l12@5q`XEEL(9HWXSq&QBy}{>iJ+c4DOK2kgX}J`T^Gu%F2!T+4-5Z_m|FJY}CdEoncB%=^@}k z8Y^ukWUsGWM!t2s(+;k!?Q_axOXPwX)3c#AQBz*)YTuYsCd%P!Q>MPL5a&+CLEE|{ zYf6)r%dB;ILRNoUXN)}2l9$d-G{iJ)q}Wy`Tzm+v2(=>^C{+#@RV=2IURF*jcR$wy zD??aTpZLaCOMFYpAW1l*WLmt4v{B_@b0}L2&D+qT-&mnh(n=I7vDb-`%I7N94^{E1 zcxfdiIC)dNQVDLK6_Z`3WS+>>*=|gU60=F_bfO(LmX~0$I{o6U(^gh;I@l*sE7k*N z>oXB$Fttuh#-5x(d)$^9P*fEbsVm+tv!2x!?&s);C8;hsuS6ZkWkdpvO!dtuOAFi$ LL?J8GWh3H0!r)O_ literal 0 HcmV?d00001 diff --git a/_static/locales/pt/LC_MESSAGES/booktheme.po b/_static/locales/pt/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..1b27314 --- /dev/null +++ b/_static/locales/pt/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Imprimir em PDF" + +msgid "Theme by the" +msgstr "Tema por" + +msgid "Download source file" +msgstr "Baixar arquivo fonte" + +msgid "open issue" +msgstr "questão aberta" + +msgid "Contents" +msgstr "Conteúdo" + +msgid "previous page" +msgstr "página anterior" + +msgid "Download notebook file" +msgstr "Baixar arquivo de notebook" + +msgid "Copyright" +msgstr "direito autoral" + +msgid "Download this page" +msgstr "Baixe esta página" + +msgid "Source repository" +msgstr "Repositório fonte" + +msgid "By" +msgstr "De" + +msgid "repository" +msgstr "repositório" + +msgid "Last updated on" +msgstr "Última atualização em" + +msgid "Toggle navigation" +msgstr "Alternar de navegação" + +msgid "Sphinx Book Theme" +msgstr "Tema do livro Sphinx" + +msgid "suggest edit" +msgstr "sugerir edição" + +msgid "Open an issue" +msgstr "Abra um problema" + +msgid "Launch" +msgstr "Lançamento" + +msgid "Fullscreen mode" +msgstr "Modo tela cheia" + +msgid "Edit this page" +msgstr "Edite essa página" + +msgid "By the" +msgstr "Pelo" + +msgid "next page" +msgstr "próxima página" diff --git a/_static/locales/ro/LC_MESSAGES/booktheme.mo b/_static/locales/ro/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..3c36ab1df7c589ad82614599b8c91f072a25d4a6 GIT binary patch literal 1390 zcmZ{jxo;Ce6vhX_5zG}5ZUr$kT#~s&fgHI>97~Z1L||yB#=9@;f%VL44!~(cNeM!T zzkmW7Bt%b&NVHTGv{Xn`NHmD=truc}813$F=kWX9`}X8CsJNO-Bou44rIk82E zW8ekwD0mG#0%~vyTm=t+&p?jz3S_U|fL!MXkn8*mPJmxQ*7*st&Nlprc^KsLXDc>A z&U>kv-vQZju7S_7m#oj;a^0f?p-U~+<-u`yunv38zH-h8DR$!Kd`AcS&)<;qgbk%n zVs?N_h8~GIYXX_z@lp(&&U!(#>;scql}cj+b*;T8mvv4X%iczp&|iz8r@bsxMq)nI z0il0S+cD35;)smw+mysr<%5hxssg3b8qA|fdg6M41IkG4eI&8uv_TLnms)LcbExO2 zuwDo22I6MX)8?U^<=i?w>XRs+vOBD)W3wzLY1Dn4sh}ZZ=wTRUXIW<`QaHM=ZLHEB z3GZW;5wavyf>i8XN#8^5U79nrN}tCR1WA7O>Nc7D^1!X_=B#5k}&OPu5mlqSjw% ze9!ggnq18PeE0wD`{?}IYPqW%0!Wn*zA9eO0NP-Sd!P*Z&(5Mvp+E_$mG57h;3yNf z@}T<)Q9@L?UQv!@t~hzGN|ByUi8HjaaJHLM9|{Y76xA;^5T@*t78+y)y;r5zA;cW% z6j3gq1Ltf%1{N7Mh$B&^tz>kF94xj(C8Xe$PteOytPUysU!2AvEWuE6Fj7Z>o*_qS K1txIYaExD}s9q8P literal 0 HcmV?d00001 diff --git a/_static/locales/ro/LC_MESSAGES/booktheme.po b/_static/locales/ro/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..1783ad2 --- /dev/null +++ b/_static/locales/ro/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Imprimați în PDF" + +msgid "Theme by the" +msgstr "Tema de" + +msgid "Download source file" +msgstr "Descărcați fișierul sursă" + +msgid "open issue" +msgstr "problema deschisă" + +msgid "Contents" +msgstr "Cuprins" + +msgid "previous page" +msgstr "pagina anterioară" + +msgid "Download notebook file" +msgstr "Descărcați fișierul notebook" + +msgid "Copyright" +msgstr "Drepturi de autor" + +msgid "Download this page" +msgstr "Descarcă această pagină" + +msgid "Source repository" +msgstr "Depozit sursă" + +msgid "By" +msgstr "De" + +msgid "repository" +msgstr "repertoriu" + +msgid "Last updated on" +msgstr "Ultima actualizare la" + +msgid "Toggle navigation" +msgstr "Comutare navigare" + +msgid "Sphinx Book Theme" +msgstr "Tema Sphinx Book" + +msgid "suggest edit" +msgstr "sugerează editare" + +msgid "Open an issue" +msgstr "Deschideți o problemă" + +msgid "Launch" +msgstr "Lansa" + +msgid "Fullscreen mode" +msgstr "Modul ecran întreg" + +msgid "Edit this page" +msgstr "Editați această pagină" + +msgid "By the" +msgstr "Langa" + +msgid "next page" +msgstr "pagina următoare" diff --git a/_static/locales/ru/LC_MESSAGES/booktheme.mo b/_static/locales/ru/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..6b8ca41f36ebf869818399a9584cdb15619bea78 GIT binary patch literal 1722 zcmZ{iPiz!b9LJx6N>>C0{~WCHj6uL;MNkv6buUP3NFY{Oy-#-^yQABg$;>R!8?=By zpk6eZkcjo>ZEd^jw#)9`jK?>LiHQeq#*-Is-2D7zrnWZnvTr^!zxmDY_x*j}{=RSL zmx}cqdz}3X`vCjaLtI$99#)E<8sqXP+zofZ{csG9!)M_u@M&0v```y~4>WKujB{Rv zQs)c!1iS-x!|&l!u$%MeJpNn${3n!t_hA9<*pYp|2g>s}lsboC555U^!oQ&C`x}bB zF@i6^7vWp*ZFm@l@KtyR9)~}{gYZ5)1P?rt)qfX0&vOMzodC-FMW|sH%3Qy~Bk&LS zGTh71lK%!g2;Ya|(?xg`eg?&InL*;Bbw69Q%iLQRlGKxI@mH42FH8IruciMpY+9?w z*>bj97p>AWd<Owguyc8|lEQ8#P&TV@hv4PPLlNs2UpM=~=&K)EOs=bt|Yjv8id_3$EYFWp61Twd!?)O2Z^b@jo`zxOlo&{K$k6 z)k-?+UzGmEv~%I?>9doY?~lFqdLcKqSeXk!s4V?^=qzIFXM1NyDcB~ z^h;%Z?8rnx*}Ha_UXm-xW!tfr6}wJC zN81q@gr(9Fv3Bw)dp^0PldHtnY+u_Sxf$6W-wgO>O_L_|y0EwXD@jYPrM(BqO_Ddt zDEk#lk9`p%b*uDr%Zu6PU zG_bh>@urJlTp^1w`f2$AR}2{1AJVy&({OH-XdNXBVw1Appn{Ug&D59FU~!E~qO?uY z2%}Tqa+P*D{a@R!x0@kSMzqWv;2@B-rtEiw@7eZ-vn#fz?Gn!QP_`~@{!JJr^D>2; zYX|@P$s&z$lLI4H4zg!gP;s5$q8v^-E0ZiHHwb^e&1~CN%&|G1oY;Q{yqk7fcCfJk literal 0 HcmV?d00001 diff --git a/_static/locales/ru/LC_MESSAGES/booktheme.po b/_static/locales/ru/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..b1176b7 --- /dev/null +++ b/_static/locales/ru/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Распечатать в PDF" + +msgid "Theme by the" +msgstr "Тема от" + +msgid "Download source file" +msgstr "Скачать исходный файл" + +msgid "open issue" +msgstr "открытый вопрос" + +msgid "Contents" +msgstr "Содержание" + +msgid "previous page" +msgstr "Предыдущая страница" + +msgid "Download notebook file" +msgstr "Скачать файл записной книжки" + +msgid "Copyright" +msgstr "авторское право" + +msgid "Download this page" +msgstr "Загрузите эту страницу" + +msgid "Source repository" +msgstr "Исходный репозиторий" + +msgid "By" +msgstr "По" + +msgid "repository" +msgstr "хранилище" + +msgid "Last updated on" +msgstr "Последнее обновление" + +msgid "Toggle navigation" +msgstr "Переключить навигацию" + +msgid "Sphinx Book Theme" +msgstr "Тема книги Сфинкс" + +msgid "suggest edit" +msgstr "предложить редактировать" + +msgid "Open an issue" +msgstr "Открыть вопрос" + +msgid "Launch" +msgstr "Запуск" + +msgid "Fullscreen mode" +msgstr "Полноэкранный режим" + +msgid "Edit this page" +msgstr "Редактировать эту страницу" + +msgid "By the" +msgstr "Посредством" + +msgid "next page" +msgstr "Следующая страница" diff --git a/_static/locales/sk/LC_MESSAGES/booktheme.mo b/_static/locales/sk/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..59bd0ddfa341477cf5ccfdc88f4c3e6127046f7a GIT binary patch literal 1393 zcmZ9KKWrRD6vijSKyrit=ARHoJeoj?1A-``v#uc6mLesxmAg<-Am(Iw==v>7a08THd<;rm`=IpY4k&eh2g>u`gW~ryD0Tk|O5J~fa_(Nc zzXDUK|0PiBy9|o{Iw-jZpgi{xC@mLFS&OFRlMGV#=>h3w2I;R1(UBqg;w6239ut!4 z2~6=jJ)|#^@o`MFWBGp7wHbaCb5`#=8`;KyKjqAuERSl#ePRozQ?f4d$hk4?nu1TZ zgR6YP4{gTW1S)mLYBMzv(*G~Fs-g&qXSOtPDXSYgM5@YEM^4FEtSg)3YP-Y%ZOMdC zvD)#*Ld4O|#+Dj1ex6GgOmu#x24!ySK3$V+!<;9qmRA}zH4R;s6--u7O{SxPiRJy+ zq;ulan3SHU##L?XQ}Ut8GDb>9C5YnoIEmfsY4-#60ct&J{JY}cT{?GeUcb3{a{tPk zZ+F_pc89Z)dlV7it+LR@u2Yh0A2{}J54XBkPtJL5!!G;orcGRGY}TWzBNIC}w9P8? zwMSvx*(oZoi|&^5lh7kuE|;PI&N?-J`)^o!txs1juXogY6?)ZEJ1#xCtJU@>=)Bnr zU1l0t--9arjh>CyA! zZ|R}^TYP-iOeo=k_sEUBK5*0V4ADZtsjcUv$Fb6dIjHA}(Ucy4hGb%cXdqT-thpkjw8w z94mEnM;EAFODWoF<;0UM`ZS%T+8S2)Skfe~=jnmos~5@rll9m4U7_dmM!H@|Co1(H Di}h+h literal 0 HcmV?d00001 diff --git a/_static/locales/sk/LC_MESSAGES/booktheme.po b/_static/locales/sk/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..6501288 --- /dev/null +++ b/_static/locales/sk/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Tlač do PDF" + +msgid "Theme by the" +msgstr "Téma od" + +msgid "Download source file" +msgstr "Stiahnite si zdrojový súbor" + +msgid "open issue" +msgstr "otvorené vydanie" + +msgid "Contents" +msgstr "Obsah" + +msgid "previous page" +msgstr "predchádzajúca strana" + +msgid "Download notebook file" +msgstr "Stiahnite si zošit" + +msgid "Copyright" +msgstr "Autorské práva" + +msgid "Download this page" +msgstr "Stiahnite si túto stránku" + +msgid "Source repository" +msgstr "Zdrojové úložisko" + +msgid "By" +msgstr "Autor:" + +msgid "repository" +msgstr "Úložisko" + +msgid "Last updated on" +msgstr "Posledná aktualizácia dňa" + +msgid "Toggle navigation" +msgstr "Prepnúť navigáciu" + +msgid "Sphinx Book Theme" +msgstr "Téma knihy Sfinga" + +msgid "suggest edit" +msgstr "navrhnúť úpravu" + +msgid "Open an issue" +msgstr "Otvorte problém" + +msgid "Launch" +msgstr "Spustiť" + +msgid "Fullscreen mode" +msgstr "Režim celej obrazovky" + +msgid "Edit this page" +msgstr "Upraviť túto stránku" + +msgid "By the" +msgstr "Podľa" + +msgid "next page" +msgstr "ďalšia strana" diff --git a/_static/locales/sl/LC_MESSAGES/booktheme.mo b/_static/locales/sl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..87bf26de683cb18c73bd23c2b4c57ef6a02545ec GIT binary patch literal 1374 zcmZ9KyKfXR5XQ}$9PjWFC=#aOAvj*5h%UN@MVlwf1j4YtMW$vtK7Sz7QA(F{dy;VIIMJx(*A* z*7ZW*5ffN8gWJKa;9hV7oB|Jk$H0AH8=M61fIC3~cY(3y6OjEp2X}z4!0q5`a1Z#l z=EvIprQUx7Io@xu0dCk(-QNlFehOqi$H8~tMQ{`NqvlU=3--Uk-Qc>7LL34o!NcHb zkab@J`TGNq^T|Ly_ZVc|FG1Eh0$KkXa4+~CYpSj^k88a!&*8idy!V z`%t7QK_wv*NO67Y#^!v|yiY#BTT52)n;gGcMsD1kzd5`1{rs78jk>VS#g&{|GD5)F z+$e2lWVfe$pxC~*IM2jgT5~@lP4MDpz zCx-(XW@_w<9uAzh?%#>APv}sH5H9X{E*5diD#H~rZm5EBHe?#D`0z|yaZ3$VV*3d1 zf=gV-^ojji64%jMWljW5^x#&@4 literal 0 HcmV?d00001 diff --git a/_static/locales/sl/LC_MESSAGES/booktheme.po b/_static/locales/sl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..3c7e3a8 --- /dev/null +++ b/_static/locales/sl/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Natisni v PDF" + +msgid "Theme by the" +msgstr "Tema avtorja" + +msgid "Download source file" +msgstr "Prenesite izvorno datoteko" + +msgid "open issue" +msgstr "odprto vprašanje" + +msgid "Contents" +msgstr "Vsebina" + +msgid "previous page" +msgstr "Prejšnja stran" + +msgid "Download notebook file" +msgstr "Prenesite datoteko zvezka" + +msgid "Copyright" +msgstr "avtorske pravice" + +msgid "Download this page" +msgstr "Prenesite to stran" + +msgid "Source repository" +msgstr "Izvorno skladišče" + +msgid "By" +msgstr "Avtor" + +msgid "repository" +msgstr "odlagališče" + +msgid "Last updated on" +msgstr "Nazadnje posodobljeno dne" + +msgid "Toggle navigation" +msgstr "Preklopi navigacijo" + +msgid "Sphinx Book Theme" +msgstr "Tema knjige Sphinx" + +msgid "suggest edit" +msgstr "predlagajte urejanje" + +msgid "Open an issue" +msgstr "Odprite številko" + +msgid "Launch" +msgstr "Kosilo" + +msgid "Fullscreen mode" +msgstr "Celozaslonski način" + +msgid "Edit this page" +msgstr "Uredite to stran" + +msgid "By the" +msgstr "Avtor" + +msgid "next page" +msgstr "Naslednja stran" diff --git a/_static/locales/sr/LC_MESSAGES/booktheme.mo b/_static/locales/sr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..ec740f4852f3973fa72ed0c7f7cf59273b8dba41 GIT binary patch literal 1679 zcmZ{i&2Jk;7>5TMpf#n12FigTrXZCM$qB70R5|j2(nPA%iiifpt=iZVd#SU#+K*9wix4UV%CCk|YD;tzleJn!xzyAg~$`^-$R zf|BP7d;(sF`{57pDcCFcOL6{NvA++c-k-1p_w32;FeHVeLgQ7^hJ zGdzy`B&?ZThjG)5bl^0MnyI@nssG*1CaqRf3ytygl3zFKtP{mL3F=O4>e~0%Ctj_o z-VO+GJncqNV$@vddL;4n-04|$KCc&=z>nP650};Xpy_&-^(oOd-!w}`WnaCJdz$wf zjh4}#bIENuu}cxpT#j>fzSPN!1fjX)`bi;sBz=@L8U~dHCrI%>FtxaRre1!}gb~>) zID-xfGsC|hn|!@gG`2jy9GHrZ5ik|B9M_xHwWbqBCa%6aKU+RIj0+tv zS~OvK#;f^t*K1Vt$ptqqoproMLSHL73QKdXBy?KkSwCEgD%uOOZB#uzt@CB|6;B_j z>SM1?mz2F>J33uW*U}Z+wmY_)ohZA>uESZ+w$lw|zev~9H9JUG(p9@{2io4t;AJmR@7g|5U2Qwul5jS5J6+fI7K$b?*B^Gym(vvm#N%kCu@EWomq3c>6awm HD*E*gL}ZXP literal 0 HcmV?d00001 diff --git a/_static/locales/sr/LC_MESSAGES/booktheme.po b/_static/locales/sr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..773b8ad --- /dev/null +++ b/_static/locales/sr/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Испис у ПДФ" + +msgid "Theme by the" +msgstr "Тхеме би" + +msgid "Download source file" +msgstr "Преузми изворну датотеку" + +msgid "open issue" +msgstr "отворено издање" + +msgid "Contents" +msgstr "Садржај" + +msgid "previous page" +msgstr "Претходна страница" + +msgid "Download notebook file" +msgstr "Преузмите датотеку бележнице" + +msgid "Copyright" +msgstr "Ауторско право" + +msgid "Download this page" +msgstr "Преузмите ову страницу" + +msgid "Source repository" +msgstr "Изворно спремиште" + +msgid "By" +msgstr "Од стране" + +msgid "repository" +msgstr "спремиште" + +msgid "Last updated on" +msgstr "Последње ажурирање" + +msgid "Toggle navigation" +msgstr "Укључи / искључи навигацију" + +msgid "Sphinx Book Theme" +msgstr "Тема књиге Спхинк" + +msgid "suggest edit" +msgstr "предложи уређивање" + +msgid "Open an issue" +msgstr "Отворите издање" + +msgid "Launch" +msgstr "Лансирање" + +msgid "Fullscreen mode" +msgstr "Режим целог екрана" + +msgid "Edit this page" +msgstr "Уредите ову страницу" + +msgid "By the" +msgstr "Од" + +msgid "next page" +msgstr "Следећа страна" diff --git a/_static/locales/sv/LC_MESSAGES/booktheme.mo b/_static/locales/sv/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..b07dc76ff21128244172d2e415cc899555d8b49d GIT binary patch literal 1365 zcmZ9Ky>App7{XZ}|d=zQVMY>d0>TJUwK!GS|siLHd(&c$~H~3(*Gryg$_j%@>d3o;WBZ2ZE>JsWR z)Jv%M7to-bct;3);v|}P!BgM~@H}`DTmmnGm%$If0eB9)11^FDo&i(GpFxiE5Ihb3 z0-geY1>Xk`IzH{jUv&LfAnW}L_P`@Y+Wm_l_m@D9a|Qez{0hWU@h8Z7e}laLACT8A z9Bq9sg6#KG@FQ>;^|ue&MB7Xc{&_$WV4fmrpPUX_NMBC1d<&HLVI2>ISM)cNT zDs_}z6(rVjoe=u}?s{cR90ejPCoU&(OT{EBpQ}W+2Kkatlh7xu)KFSXs3tL$x9(u73Q%I)?{Lst}rq*YU0sH7ocX*ad*9P6|q zKG0OVs2vT8zb&|U%F`w^(-Z1 zKF^i36kcC+hKrsX9@jHt-W)0~UWJ0RHRwJIJFG|WNq7Z50sn;0!@U&o7(5PV;9F4M{{RobKj41& z@a;;?!xtbeX@>OX{(5y6M3y47A9wJS8l@l7I~meb8I-3U@UzelnM(bH_d|LjeI~u4 zB&Ck5^3z4%s2P{8W=Y&H)T}#g2QKPq>k6~t+?)DDGB7*axf^C(bKPdqPja0`u~Boq zq#)vWxe(=r9;UshFg@+8T8M_W+gC58#_GuGB+rLNEoOcl%M6n_~Kv<@xsE9lI>D`3aM?=WN&Y5*v5);gzIlEkrgR(mY~Bt;NAGiw5m^ zmz~Tz+NOS)Pd_uI!*qJT)%&LPp{J%=sw%gu@~f)+wA%QnDo0iMT~%)Q%}sWAT~-@s zt8&XvWPPzJFLmFFj3kCLZVZKXbJg6qObpgpYXhKc{dPQvXD4*l1`&-oR|ZVWnD5S zLMPGk+4yL_MW)wWJ7GI+sWh)Cq}dE7ao%TGqX8uPK%$P%oUIVNaozG6uhIA~XTs-( z77E8j3VKIkNhd=@QrBItuMs9x^kr3kK4HautE;{2cexG}GQN=#P4;o6q{&7}8xZ++ zl w$ZZQ&WaeX;?9mtGBq&}escqTfGyJc(*W8(47(T)#0?{xcP9tpFr||Or2L57y?*IS* literal 0 HcmV?d00001 diff --git a/_static/locales/ta/LC_MESSAGES/booktheme.po b/_static/locales/ta/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..b48bdfa --- /dev/null +++ b/_static/locales/ta/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: ta\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Print to PDF" +msgstr "PDF இல் அச்சிடுக" + +msgid "Theme by the" +msgstr "வழங்கிய தீம்" + +msgid "Download source file" +msgstr "மூல கோப்பைப் பதிவிறக்குக" + +msgid "open issue" +msgstr "திறந்த பிரச்சினை" + +msgid "previous page" +msgstr "முந்தைய பக்கம்" + +msgid "Download notebook file" +msgstr "நோட்புக் கோப்பைப் பதிவிறக்கவும்" + +msgid "Copyright" +msgstr "பதிப்புரிமை" + +msgid "Download this page" +msgstr "இந்தப் பக்கத்தைப் பதிவிறக்கவும்" + +msgid "Source repository" +msgstr "மூல களஞ்சியம்" + +msgid "By" +msgstr "வழங்கியவர்" + +msgid "Last updated on" +msgstr "கடைசியாக புதுப்பிக்கப்பட்டது" + +msgid "Toggle navigation" +msgstr "வழிசெலுத்தலை நிலைமாற்று" + +msgid "Sphinx Book Theme" +msgstr "ஸ்பிங்க்ஸ் புத்தக தீம்" + +msgid "suggest edit" +msgstr "திருத்த பரிந்துரைக்கவும்" + +msgid "Open an issue" +msgstr "சிக்கலைத் திறக்கவும்" + +msgid "Launch" +msgstr "தொடங்க" + +msgid "Edit this page" +msgstr "இந்தப் பக்கத்தைத் திருத்தவும்" + +msgid "By the" +msgstr "மூலம்" + +msgid "next page" +msgstr "அடுத்த பக்கம்" diff --git a/_static/locales/te/LC_MESSAGES/booktheme.mo b/_static/locales/te/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..0a5f4b46adfda1551ae6791c3c3782525b61be04 GIT binary patch literal 1806 zcmbu8?`s@I7{^DgzpiR+74e1QD2kPOYU&G1LO_}((2{DPsaEjK=5D&TdYxHz_mbva zT2L$M3z1kXg(AcfwAS4~Neb5f0lujqQV?VieD5FN3qLcn=UrpK7cRH^*?DH3U*CQ1 zw_V$o1=qvek8yv`{W$mAxAEY*0dI#t!Motk@Lu>Ud<6aho$p_87u?C=2jJ6i2YeYi zzX^ChJOuB9$KXz=YA)3F59{^k(B)Z$4Y&rK|263Re}o(GCUki}y(4f1KFWF>z6o!@ z*Wm7LLQKL1xEEf7ufjj!vvA~2A@;zx;Pdc3_zYZw?)**o1l&$Dhu|Lg6r6|7{snaU zU4^f}Um%kFbGaHHtXJD1WeGz1>mHu2N2iC=&RtGZchR1B$iD?W+^g&V?%L)waXOPu z(25ZI7x~Geqr`+s7qcYp6yktc&|MR?r8b3{Gv-}+Jn5=|IXAtmr8XIhPLj(sij|mb zCj}Av%jqaDWG`(;g=$Nq#dOrut&Vs-Ra!<`CVAddVkS#8PDaigm=Z@q{7j`LPYRPQ ziX&+!(I@48SIcZiolwF*xU=VM^?@zFv*l@L zDz6jwvaMLG-4f{crQm*REN}ghN#a8coKPu>p z%YTFt$m|qAXTDh&g5gT~hljsJ*ry=A+<9Nb1sA(o5-xGw{Z;?6OlS@gI#jemLQG%z zrpf6>XY=H3-bW;Qrf>v2>%ZN4n4aM|U<|2-ZBn^mBghuhM0)Dv2+@ei()B(V2&(za uuMrF7ToguSy%w`N&3+IHSt#2LVBfiP)B5iT;9Jx)h5&elIS4O(ZT|-CPABOA literal 0 HcmV?d00001 diff --git a/_static/locales/te/LC_MESSAGES/booktheme.po b/_static/locales/te/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..952278f --- /dev/null +++ b/_static/locales/te/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: te\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Print to PDF" +msgstr "PDF కి ముద్రించండి" + +msgid "Theme by the" +msgstr "ద్వారా థీమ్" + +msgid "Download source file" +msgstr "మూల ఫైల్‌ను డౌన్‌లోడ్ చేయండి" + +msgid "open issue" +msgstr "ఓపెన్ ఇష్యూ" + +msgid "previous page" +msgstr "ముందు పేజి" + +msgid "Download notebook file" +msgstr "నోట్బుక్ ఫైల్ను డౌన్లోడ్ చేయండి" + +msgid "Copyright" +msgstr "కాపీరైట్" + +msgid "Download this page" +msgstr "ఈ పేజీని డౌన్‌లోడ్ చేయండి" + +msgid "Source repository" +msgstr "మూల రిపోజిటరీ" + +msgid "By" +msgstr "ద్వారా" + +msgid "Last updated on" +msgstr "చివరిగా నవీకరించబడింది" + +msgid "Toggle navigation" +msgstr "నావిగేషన్‌ను టోగుల్ చేయండి" + +msgid "Sphinx Book Theme" +msgstr "సింహిక పుస్తక థీమ్" + +msgid "suggest edit" +msgstr "సవరించమని సూచించండి" + +msgid "Open an issue" +msgstr "సమస్యను తెరవండి" + +msgid "Launch" +msgstr "ప్రారంభించండి" + +msgid "Edit this page" +msgstr "ఈ పేజీని సవరించండి" + +msgid "By the" +msgstr "ద్వారా" + +msgid "next page" +msgstr "తరువాతి పేజీ" diff --git a/_static/locales/tg/LC_MESSAGES/booktheme.mo b/_static/locales/tg/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..b21c6c6340194fdf35f7e5660deb42479c8dbff9 GIT binary patch literal 1628 zcmaiyO^6gn6vxZY=tNE8S5Q|hA#9RE$8XSGCI@vF1jR*HLCB?drtIlBTh(+|t9#pZ z_b^Dr#19Y@K@`-J?Yg?{x;qOwd8{6D@{o&%oP^*d#K?f}Wpw_pnH1Q&v@ z3%&tK*FWF}u!PNBU}wRfz%8&Zfe!dP_zn0sxE@@yD9?KJ9kAteKMU^WF zJC>CiI~?GEE4d#GJ20M-!R?)~ z>>S<1-6l7a<}oHySZKVs&CQhc{Mbyqb88w7X3RqzI{&F#*USvhMoiLrM6s>Hk4E|6 zc@o%qM9F2t?V4KSrinZf?58}t0JXzb84{b#Mr}$-{y{=+V#Xn)X(lNzTPtR6wl32O zGdJL5Bs-5oxB+T`zIGRrAt`^lPLZT?M?g!0angPB{%GR5vxHp0oR8Arqi zbZiRp&%w__8!lf*NbDpe;WA2%r?Xi$atSF8VXr;q_FB@_W_A(5kPfr&0p+;^8?eY= pg1vVOUqyoB&tBYSn9xh&7BjPW`v%MukJU629MMs5Ow+8v{s(GpYQg{j literal 0 HcmV?d00001 diff --git a/_static/locales/tg/LC_MESSAGES/booktheme.po b/_static/locales/tg/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..c33dc42 --- /dev/null +++ b/_static/locales/tg/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "Чоп ба PDF" + +msgid "Theme by the" +msgstr "Мавзӯъи аз" + +msgid "Download source file" +msgstr "Файли манбаъро зеркашӣ кунед" + +msgid "open issue" +msgstr "барориши кушод" + +msgid "Contents" +msgstr "Мундариҷа" + +msgid "previous page" +msgstr "саҳифаи қаблӣ" + +msgid "Download notebook file" +msgstr "Файли дафтарро зеркашӣ кунед" + +msgid "Copyright" +msgstr "Ҳуқуқи муаллиф" + +msgid "Download this page" +msgstr "Ин саҳифаро зеркашӣ кунед" + +msgid "Source repository" +msgstr "Анбори манбаъ" + +msgid "By" +msgstr "Бо" + +msgid "repository" +msgstr "анбор" + +msgid "Last updated on" +msgstr "Last навсозӣ дар" + +msgid "Toggle navigation" +msgstr "Гузаришро иваз кунед" + +msgid "Sphinx Book Theme" +msgstr "Сфинкс Мавзӯи китоб" + +msgid "suggest edit" +msgstr "пешниҳод вироиш" + +msgid "Open an issue" +msgstr "Масъаларо кушоед" + +msgid "Launch" +msgstr "Оғоз" + +msgid "Fullscreen mode" +msgstr "Ҳолати экрани пурра" + +msgid "Edit this page" +msgstr "Ин саҳифаро таҳрир кунед" + +msgid "By the" +msgstr "Бо" + +msgid "next page" +msgstr "саҳифаи оянда" diff --git a/_static/locales/th/LC_MESSAGES/booktheme.mo b/_static/locales/th/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..abede98aa11b163e580a26b545980ace31e61ccf GIT binary patch literal 1766 zcma)*-)|K~6vqcarB^@&)CU_K663GrYB9uM>wQ7mgal$EMW46#4trN`XEwWgD~&H; zNI=2(Qi7!k28|(VOaz2Z{{sC3d@_d21Bp*Q8{hn#*{fZQQ8%6a%*>u2-*e9G?VVdL zD4xeyEM|9;NtGW4!Kz+u&BX3y#5Y_$YiD?uH$>6TSg=Km#9y)rhB| z#94;h;VRq)zl0CNTOLHf&S01Tf9_gR-TKX!nk)j@8 z$!wbssp1UphqNWmR~=a5Pgi}TUURlGwkp}=OGTFUD|OJlYX>grY3nL8@7z23cs4K_ z*QFa4UGulgs-KlQPg0|%ds#*3KaVrR!JzCG##p`JdPW^i%1RIOUQ(H!c9!$dcKhn} z9D~H_tSpB{%@&y@h|{wNXVlR;Utw}rW|b?J)X}`3*%SJJXq)Ss1*76y&(}50xilRZ zZIi_;O{$C})|{wnbx!isN%F!hW^Oo=-3VU})6}5SPzh4p+ooH!5B1t_nxZ7yq^|R~ zC4W0+ZXG#vWP0QK-WMiXqsF%9mU1(xD+Iil50cDI>25zMN>g=?&CRs;Z`c)yEsvX` zJ#D+Lm)Ueu@1M`A*5SmaL;6aLert9xERsQc#uW?Yq_%lHmYtWTbiM67YxSOv-uv8C zONI6KgI^B*v*yl!75w$!KM(#=@YjO>NCp2z@ZSZGG2hr+4E__@te@u_{+M44euZ<4 z_;qwx4(q3b|5Wzei|3W#eYCFwuf#yNf&j$Yu0#;+cXcn64J%wUT=~$4O>SO5=h=^

cLPeiV0|6qlnFzL#U0qn`*`iT?nxl@xb2Mx-{rpyeF$L|PmGL73Xj zjT&US*r9DL+Oc6=XyNi4J`IP)4~3RpiSp}N5WkMWZ=`O(hjnrBo?i;ppCMASYj{fI qV*6MBqwc03(drtRAFXAoSBd=B?a4S*sk|OB^ZqtY{YJQZ;_45RC*i9A literal 0 HcmV?d00001 diff --git a/_static/locales/th/LC_MESSAGES/booktheme.po b/_static/locales/th/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..9d24294 --- /dev/null +++ b/_static/locales/th/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "พิมพ์เป็น PDF" + +msgid "Theme by the" +msgstr "ธีมโดย" + +msgid "Download source file" +msgstr "ดาวน์โหลดไฟล์ต้นฉบับ" + +msgid "open issue" +msgstr "เปิดปัญหา" + +msgid "Contents" +msgstr "สารบัญ" + +msgid "previous page" +msgstr "หน้าที่แล้ว" + +msgid "Download notebook file" +msgstr "ดาวน์โหลดไฟล์สมุดบันทึก" + +msgid "Copyright" +msgstr "ลิขสิทธิ์" + +msgid "Download this page" +msgstr "ดาวน์โหลดหน้านี้" + +msgid "Source repository" +msgstr "ที่เก็บซอร์ส" + +msgid "By" +msgstr "โดย" + +msgid "repository" +msgstr "ที่เก็บ" + +msgid "Last updated on" +msgstr "ปรับปรุงล่าสุดเมื่อ" + +msgid "Toggle navigation" +msgstr "ไม่ต้องสลับช่องทาง" + +msgid "Sphinx Book Theme" +msgstr "ธีมหนังสือสฟิงซ์" + +msgid "suggest edit" +msgstr "แนะนำแก้ไข" + +msgid "Open an issue" +msgstr "เปิดปัญหา" + +msgid "Launch" +msgstr "เปิด" + +msgid "Fullscreen mode" +msgstr "โหมดเต็มหน้าจอ" + +msgid "Edit this page" +msgstr "แก้ไขหน้านี้" + +msgid "By the" +msgstr "โดย" + +msgid "next page" +msgstr "หน้าต่อไป" diff --git a/_static/locales/tl/LC_MESSAGES/booktheme.mo b/_static/locales/tl/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..8df1b73310e0c606251d1abff7e6033d1f6b273f GIT binary patch literal 1273 zcmZ{iJ#P~+7{?8ixA4}MHz7bWh@lJz6qYJggw!_(YD=U9)PcpxxsJ)jKAr8h8TbH< zl>mt^fEW=h3@|dWP{DwN#01}fk%9knmnKyup2YV%`|Ricw;%r;A9>CYr_e5-eL%a2 z_Gk|th%ew?a0@&DeghAKKfp8KZ;;mh1;@cLOg;`?0Z)LpKw38o9s}=zN5K_v43vGY z_s5_1`!7J!c@37pw;-+m2-5n`;Ct{ph(FuhSLAyJ(z;h52j75~!7cDS_y;@-j*b-m zC%}W~-v&p)J0SUA0Z)SpJPAGlY2GGy4txoc|92qy`UKMYuOOYrFAzsE2s#`3PH_Yc zHrRgZAP%9?9w{GbQ&0{H+8gOp(7q^W|Kx>&wCSAbj3LR`Ob>tV+mg-Nw3lhs_H53s zo5YHk8|!7$+74gUi5w0)8?u(%HR#*g@l+_u=40)Val5-HoaZ5pg_kk6hAoOEtD7`fpKHxt1^q`P0PmGs4|~w zYF}CuMg<%mawMf%5;BoQ3pVSzGB;`7b(Ndbym+ll7=Ee3C$CPI*s^AIft_~oQ`+M| zjoMMlC845tP)?QC3^N9mW&fLyY9mxPB*L)jFaumd3$>sZlm_4E_)y1P<99=X&7mSu zQF#bj7^^11I1!U-GjxO_E86t}@}&6i_@% literal 0 HcmV?d00001 diff --git a/_static/locales/tl/LC_MESSAGES/booktheme.po b/_static/locales/tl/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..20e0d07 --- /dev/null +++ b/_static/locales/tl/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: tl\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Print to PDF" +msgstr "I-print sa PDF" + +msgid "Theme by the" +msgstr "Tema ng" + +msgid "Download source file" +msgstr "Mag-download ng file ng pinagmulan" + +msgid "open issue" +msgstr "bukas na isyu" + +msgid "previous page" +msgstr "Nakaraang pahina" + +msgid "Download notebook file" +msgstr "Mag-download ng file ng notebook" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Download this page" +msgstr "I-download ang pahinang ito" + +msgid "Source repository" +msgstr "Pinagmulan ng imbakan" + +msgid "By" +msgstr "Ni" + +msgid "Last updated on" +msgstr "Huling na-update noong" + +msgid "Toggle navigation" +msgstr "I-toggle ang pag-navigate" + +msgid "Sphinx Book Theme" +msgstr "Tema ng Sphinx Book" + +msgid "suggest edit" +msgstr "iminumungkahi i-edit" + +msgid "Open an issue" +msgstr "Magbukas ng isyu" + +msgid "Launch" +msgstr "Ilunsad" + +msgid "Edit this page" +msgstr "I-edit ang pahinang ito" + +msgid "By the" +msgstr "Sa pamamagitan ng" + +msgid "next page" +msgstr "Susunod na pahina" diff --git a/_static/locales/tr/LC_MESSAGES/booktheme.mo b/_static/locales/tr/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..029ae18afb5360a8c238a052e8d3971761759d3d GIT binary patch literal 1373 zcmZ{izi%8x6vqdWKynFz!~~?sQXUOIiX{o62)3@sVLOWA2n!$dC&=i7J19yL{j6T0W2%?d)gY?96-L@67yl{`g~s z_CESD`XA_*&>y~r7uw0!mBOP=;q?Z120RHafv3P_@ICND@LjMEo(I1M&w>oT4aSc5 zLCNz7d<%R6o&kRZ&w(7D`FN2cjBk&jSbMQ3yvf}|L z^-dgb=PiL35fdohSHUH48x$WIDEhw##oq%^>ihtT&YwW>`D+*d4$8W}!FRxeF7BOZ z>s|syPtwI-fS96gfHHp*lr0wzl2>wx9;q$97n`h;HKI?N=#nP7WUs~N1$3mG*A#z? zP4-{T@J)1V%lv%Rpus~iXZ5ACk!=k4s2XpwJgPPKoh_YC$-2lp&J{E^B_9n3SNjqF zXE5d_P^B|g>#2!IeHd=kWf?}E+0w+NtTuIsR9C5voRYJMYdgx-R~05`OD2Sx)s{CF zNgQphZK&MIp`-&XC zw^i0&m&u0nldwXznunqP*($Z4{f{ku(5I`PtoGDUdp(}*+f>_seb0WLJ~cMw0*C6= zkV`YBTo=V`U#;;tvZvIAMh7gN?Gt7i9EQ538>@@sDR7=_PxgBv?;s7aXZ*rps`o&(U<3tx~U_1rqYg?0^K7|^E%RsJ#t%4f8 zo6h$Ap{&BCl*;`;;xXGI&@B^nMMIv5kwyPFiiuV?c-PnoHwMdQd*;PnG+qT~k=xL= f7*f}zXhDUuwVFPIQ2d!&RZ>YE8iRKH#ZJBgJpfrQ literal 0 HcmV?d00001 diff --git a/_static/locales/tr/LC_MESSAGES/booktheme.po b/_static/locales/tr/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..a77eb02 --- /dev/null +++ b/_static/locales/tr/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "PDF olarak yazdır" + +msgid "Theme by the" +msgstr "Tarafından tema" + +msgid "Download source file" +msgstr "Kaynak dosyayı indirin" + +msgid "open issue" +msgstr "Açık konu" + +msgid "Contents" +msgstr "İçindekiler" + +msgid "previous page" +msgstr "önceki sayfa" + +msgid "Download notebook file" +msgstr "Defter dosyasını indirin" + +msgid "Copyright" +msgstr "Telif hakkı" + +msgid "Download this page" +msgstr "Bu sayfayı indirin" + +msgid "Source repository" +msgstr "Kaynak kod deposu" + +msgid "By" +msgstr "Tarafından" + +msgid "repository" +msgstr "depo" + +msgid "Last updated on" +msgstr "Son güncelleme tarihi" + +msgid "Toggle navigation" +msgstr "Gezinmeyi değiştir" + +msgid "Sphinx Book Theme" +msgstr "Sfenks Kitap Teması" + +msgid "suggest edit" +msgstr "düzenleme öner" + +msgid "Open an issue" +msgstr "Bir sorunu açın" + +msgid "Launch" +msgstr "Başlatmak" + +msgid "Fullscreen mode" +msgstr "Tam ekran modu" + +msgid "Edit this page" +msgstr "Bu sayfayı düzenle" + +msgid "By the" +msgstr "Tarafından" + +msgid "next page" +msgstr "sonraki Sayfa" diff --git a/_static/locales/uk/LC_MESSAGES/booktheme.mo b/_static/locales/uk/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..16ab78909cfbaba7fa199f47fdfc2934426ac699 GIT binary patch literal 1681 zcmZvaO>7%Q6vv0QKx#^WmXAw-X;52=V^7yhotb5Kwlue- zPJ@uD1fdWPh|e20*TKPc;zZ)a@r}d@A+B8DUJjM|f4dvvq>McK+j;xuef*#QJbLI0 zf%O{p5cY4_Z(`qj3JD;1Tdg@Fj3P=dZc__x$`9$oc*S3*fo^agnKo4Zexd+ydwLFH++H&9h3nhscvH3nP?w=Ry$GKV8 zSFn*%JcrG*?O#Zh&hS|fa-{PW7iaO4wx+~;Mq8zAjF)gW3jCTCm(0hyZoI10#;R#! zZps@$UG17A`bVb!y$DvicD z(UqEbKZJv)We~@S5))CN5yZ%eOXK2NmM>DFi34k*S#d3_1^TwU$hA$?)Ql48Q%+|+ zO&Q;>E2+I(f$!M>Nwm6cv+4}z$&!STx)qotFS{>%ocO*%l?t7p6!W2~*y81C@dFjb zh*pwW{vziurkM*@FJB$o{eEubY#|r6I5iuplC&t`Oj!2O`(TSv<;z`$dL~;A5u^%qBgBK^s=!h>rLI6)qdpT zRwLUoA{Qc+BL{@CNd#$~fM}{TM=rgzQV%n0sfS7&;BP2WpLe~9L#0ZLy!)G(eLtS} z@uTBCHyGACc;3gei{}G8S6;vi>pu7*_yBwvdd_{ zw7^~PH24qrDR`oXv3~FiknZO|ioXGV2*%(?;Gf{z;NRf8;J+FBUg~@w04eVRNO2|b zJ#Z2H7+e8i$-yFT-pWp-6LJ_r(sdMXnvv>}ceKb;S{N^_PkZu%7R~=ky6bpCK9k3g z$k@3h{CHRvY(#lWzU!1jHmVk6McE}TRVZeZy2@wWis)VkD)Nisnai;32Hdk9!Ny8% zh>H8iNjnI6>?(vD=Y%)au3|&?BFFX~vq4Jm5 zMX&72MShO7Oqazq!O}OM=}4bej#Cj_+Vieshc22(u^4vLDC*N`;`w6URZ%80h#W^i znt)vNS978mS`#JfvhV|x$n#E9i<(+#yWIJS^JCrbgJ(X=jVKuk8Cugzp2+hMT?f31 z?aE=i4%v6}~kli>l;GC(nmw+%Pw3ODBSPc^>(>sY>MA6>D7i z*MdBkUV01)pAYlSw$Ly6$pRnzWH`t4n!cr5?Pa~wuCipkz0CC=x@BmuW3xx+mX7tR z*NZtNFp)tbr@2L4}dj%B? z$~?F1e_~CYdU3r0$=I6uq5ePVO_Bn=P}riFSZ}qf6oE57w5w3K+FoX+hEW?y<4|&p zx|p)Aw=sGx%}Vw#el49X^(ARiaRizwH+vA!fH?=_BQ=JATO9Uo!rm6_g(Z9Fvrf~J ziFzY}!KTjO`w9hS|3mkKY2Z8hBsWpwH*$FgF5fip{lMp#&N|*Vkp4MHrJJsNw1%8D c^9?3>eEmE8GP@z_uy-`khW>?G>aA{%rxd0lq5uE@ literal 0 HcmV?d00001 diff --git a/_static/locales/ur/LC_MESSAGES/booktheme.po b/_static/locales/ur/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..2f77426 --- /dev/null +++ b/_static/locales/ur/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: ur\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Print to PDF" +msgstr "پی ڈی ایف پرنٹ کریں" + +msgid "Theme by the" +msgstr "کے ذریعہ تھیم" + +msgid "Download source file" +msgstr "سورس فائل ڈاؤن لوڈ کریں" + +msgid "open issue" +msgstr "کھلا مسئلہ" + +msgid "previous page" +msgstr "سابقہ ​​صفحہ" + +msgid "Download notebook file" +msgstr "نوٹ بک فائل ڈاؤن لوڈ کریں" + +msgid "Copyright" +msgstr "کاپی رائٹ" + +msgid "Download this page" +msgstr "اس صفحے کو ڈاؤن لوڈ کریں" + +msgid "Source repository" +msgstr "ماخذ ذخیرہ" + +msgid "By" +msgstr "بذریعہ" + +msgid "Last updated on" +msgstr "آخری بار تازہ کاری ہوئی" + +msgid "Toggle navigation" +msgstr "نیویگیشن ٹوگل کریں" + +msgid "Sphinx Book Theme" +msgstr "سپنکس بک تھیم" + +msgid "suggest edit" +msgstr "ترمیم کی تجویز کریں" + +msgid "Open an issue" +msgstr "ایک مسئلہ کھولیں" + +msgid "Launch" +msgstr "لانچ کریں" + +msgid "Edit this page" +msgstr "اس صفحے میں ترمیم کریں" + +msgid "By the" +msgstr "کی طرف" + +msgid "next page" +msgstr "اگلا صفحہ" diff --git a/_static/locales/vi/LC_MESSAGES/booktheme.mo b/_static/locales/vi/LC_MESSAGES/booktheme.mo new file mode 100644 index 0000000000000000000000000000000000000000..2bb32555c3ea0dab08ed37b71cb863fbe75698c6 GIT binary patch literal 1431 zcmZvb&x;&I6vr#s{2bR9catc(#OK8%htWiG2(!#(H#@MntBVvV&v#)!JFr^_{KP>F`@nJV05}OA1gF4b;9KAkunA6pAA*NK z3BCmSiq}An^CkEqxCxGf--9oMKUe&tTK}_}KL%Ov30MQi#>)GLK%P&59Onf13wRdX z3;qSN-ajCp`xj*0y?e@hC&AY-KMlSLE>x7&{%7EEtZ#xGrw?+zzkx4+4=O$aInLi8 z=P?fP6X0=>=PmFs_%X6t9{djXqq7H;REU`#e&m%Dv(|WNyu(A%OLe5YIB!2Su?;$8te4By zUZxct%bjIsvow_dS@cRfN`gp=xsLV-{cPIG;@E|$l!jJqM~a2OdCHPb;AMxb!8|je z5+5Wu5E#l0;esOMR|IFK`YgJ+E?Oq}qlDRK7TFmDND~hLNUKno*_5*I#duC ze1pUH?uya95XS7fK6vqb$6da&5d>$e(Tqr%5FL8(*`2r*YiH`^Z>aE(?ll6i#v)Y{nLNAmS zVZLM|@+Cqff{+L(H9>+X*h#n|&YXJarQWrDsNf1G{?EIRgwekJ?VFu>|Np%Cx20*2 zVQfXTBHkmmBW^Fl3uEes3ZOb zQk?;C9XJZE1)qXHfzuJ+M)Utfc@-qRPhbpOu_D~R9;Cb#q&h!?W$*w<>pw>P43chB zQ^;m;Gx8RY{OyX^7V!v3^?n6uod9Y7@6r5Kko@OC(isEk+)qHNR|2Y~glBh97KqDQIoyw}Q#g=trLPD*?? zsWX<#ZNn6-BW-Dv{+f1r*{qv#gpj;Xr3E`?xSD%*+R!4+l|=5zREC|jvA~era$Qfb zF2|B6qIlQgPIfxfbA+v2ODm_JowhTUyu=TZx9*JS6Rh#(J>i+Um1$-Lm&OIlG_(Z~ zDK6>Iog$r3#CF65OL>v)Mde-3GzDA=oCH?XIg!%wqv`lr;kc-l;Guq;^y3ZX*zu#s zI~M-$+r2jyH8$SeZ;J%iFtEqY8kTJ5sf^*cLMP93cgEWm);WfBdxaD4kSUe6q?zDt zJ(i9gGoRpuVl zu3Y;tdw+Y?BAIRa)rh7%Q6vqb|O6z_>OFs^gI=uiz7%1XUIrvhVNR?8ES{E)zXk$;;3!9nM?rdo| zg(?BJNt;NGU78fyR1pmy`2barI!U>5;l_yr7d&hG1XmCT{?EI?hS9$L&6|(+{`20i zd%MaE;~=aX_A~4-Y~m68Ft$C)7(TWgzpda-a2vP}+zxhw2f(Mnr@$<@7d!**1_ihW z)CosHiZc!F0%yUU;1}SN;CBgsOxAx%{5nYa{sdFtmM!u9-5~khAjNqGTmxSL>HHrF z{{ks*S695g10>!1LDKhp!dDaaCwv>+k9`-U`l4+X18A zb`E+6_3&{R%F^mDJ28xp>!M(W-N{d0I-s9&TSG1P{ z75aJczeQbi0`6J1V7&!LBlM=*7rJhc_l1yrNEHO@w*t*WuV86W;7Y;|WxmMX@NmGA z+zEnEumRtZ2%`AF$v$>A&gTnH1&&t!FgxoN9eI(TAZ@v#7!s`Y=Y#Q^a>}+{!KHP< zu`TT&i4+%gtWHs$IEm+r3yumC*&X47(6$9s3cLhT)Vm_D)29mQH-#S{T878@)098m z%A7iV>U3{=|JVyJrINy?bHkpi>0X&v z1xMN$etgi;seVh^A?ljp9~9roy_FhpL*H`KeaasSGF*BsH^{!+!{cf8S;>!N`LUxt zDOTIK)fgH3eSM~5R-avJPKqIR9T5`UTRjZlMYk9ZN|&2 zSsBNyvAEKln_#AN!(3g7N>iJPqMOUL)it`->9il( zoLjEXSEEv;IrB~9#-v%f*7$q_8AyL^bp+y>8T%Uf>ocRKJlP7gdS!Fx->lK(l=-+? P`(Y`Xeqh$BP|E%Rvo4ks literal 0 HcmV?d00001 diff --git a/_static/locales/zh_TW/LC_MESSAGES/booktheme.po b/_static/locales/zh_TW/LC_MESSAGES/booktheme.po new file mode 100644 index 0000000..beecb07 --- /dev/null +++ b/_static/locales/zh_TW/LC_MESSAGES/booktheme.po @@ -0,0 +1,75 @@ + +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 "Print to PDF" +msgstr "列印成 PDF" + +msgid "Theme by the" +msgstr "佈景主題作者:" + +msgid "Download source file" +msgstr "下載原始檔" + +msgid "open issue" +msgstr "公開的問題" + +msgid "Contents" +msgstr "目錄" + +msgid "previous page" +msgstr "上一頁" + +msgid "Download notebook file" +msgstr "下載 Notebook 檔案" + +msgid "Copyright" +msgstr "Copyright" + +msgid "Download this page" +msgstr "下載此頁面" + +msgid "Source repository" +msgstr "來源儲存庫" + +msgid "By" +msgstr "作者:" + +msgid "repository" +msgstr "儲存庫" + +msgid "Last updated on" +msgstr "最後更新時間:" + +msgid "Toggle navigation" +msgstr "顯示或隱藏導覽列" + +msgid "Sphinx Book Theme" +msgstr "Sphinx Book 佈景主題" + +msgid "suggest edit" +msgstr "提出修改建議" + +msgid "Open an issue" +msgstr "開啟議題" + +msgid "Launch" +msgstr "啟動" + +msgid "Fullscreen mode" +msgstr "全螢幕模式" + +msgid "Edit this page" +msgstr "編輯此頁面" + +msgid "By the" +msgstr "作者:" + +msgid "next page" +msgstr "下一頁" diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css b/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css new file mode 100644 index 0000000..3356631 --- /dev/null +++ b/_static/mystnb.4510f1fc1dee50b3e5859aac5469c37c29e427902b24a333a5f9fcb2f0b3ac41.css @@ -0,0 +1,2342 @@ +/* Variables */ +:root { + --mystnb-source-bg-color: #f7f7f7; + --mystnb-stdout-bg-color: #fcfcfc; + --mystnb-stderr-bg-color: #fdd; + --mystnb-traceback-bg-color: #fcfcfc; + --mystnb-source-border-color: #ccc; + --mystnb-source-margin-color: green; + --mystnb-stdout-border-color: #f7f7f7; + --mystnb-stderr-border-color: #f7f7f7; + --mystnb-traceback-border-color: #ffd6d6; + --mystnb-hide-prompt-opacity: 70%; + --mystnb-source-border-radius: .4em; + --mystnb-source-border-width: 1px; +} + +/* Whole cell */ +div.container.cell { + padding-left: 0; + margin-bottom: 1em; +} + +/* Removing all background formatting so we can control at the div level */ +.cell_input div.highlight, +.cell_output pre, +.cell_input pre, +.cell_output .output { + border: none; + box-shadow: none; +} + +.cell_output .output pre, +.cell_input pre { + margin: 0px; +} + +/* Input cells */ +div.cell div.cell_input, +div.cell details.above-input>summary { + padding-left: 0em; + padding-right: 0em; + border: var(--mystnb-source-border-width) var(--mystnb-source-border-color) solid; + background-color: var(--mystnb-source-bg-color); + border-left-color: var(--mystnb-source-margin-color); + border-left-width: medium; + border-radius: var(--mystnb-source-border-radius); +} + +div.cell_input>div, +div.cell_output div.output>div.highlight { + margin: 0em !important; + border: none !important; +} + +/* All cell outputs */ +.cell_output { + padding-left: 1em; + padding-right: 0em; + margin-top: 1em; +} + +/* Text outputs from cells */ +.cell_output .output.text_plain, +.cell_output .output.traceback, +.cell_output .output.stream, +.cell_output .output.stderr { + margin-top: 1em; + margin-bottom: 0em; + box-shadow: none; +} + +.cell_output .output.text_plain, +.cell_output .output.stream { + background: var(--mystnb-stdout-bg-color); + border: 1px solid var(--mystnb-stdout-border-color); +} + +.cell_output .output.stderr { + background: var(--mystnb-stderr-bg-color); + border: 1px solid var(--mystnb-stderr-border-color); +} + +.cell_output .output.traceback { + background: var(--mystnb-traceback-bg-color); + border: 1px solid var(--mystnb-traceback-border-color); +} + +/* Collapsible cell content */ +div.cell details.above-input div.cell_input { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-top: var(--mystnb-source-border-width) var(--mystnb-source-border-color) dashed; +} + +div.cell div.cell_input.above-output-prompt { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +div.cell details.above-input>summary { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-bottom: var(--mystnb-source-border-width) var(--mystnb-source-border-color) dashed; + padding-left: 1em; + margin-bottom: 0; +} + +div.cell details.above-output>summary { + background-color: var(--mystnb-source-bg-color); + padding-left: 1em; + padding-right: 0em; + border: var(--mystnb-source-border-width) var(--mystnb-source-border-color) solid; + border-radius: var(--mystnb-source-border-radius); + border-left-color: var(--mystnb-source-margin-color); + border-left-width: medium; +} + +div.cell details.below-input>summary { + background-color: var(--mystnb-source-bg-color); + padding-left: 1em; + padding-right: 0em; + border: var(--mystnb-source-border-width) var(--mystnb-source-border-color) solid; + border-top: none; + border-bottom-left-radius: var(--mystnb-source-border-radius); + border-bottom-right-radius: var(--mystnb-source-border-radius); + border-left-color: var(--mystnb-source-margin-color); + border-left-width: medium; +} + +div.cell details.hide>summary>span { + opacity: var(--mystnb-hide-prompt-opacity); +} + +div.cell details.hide[open]>summary>span.collapsed { + display: none; +} + +div.cell details.hide:not([open])>summary>span.expanded { + display: none; +} + +@keyframes collapsed-fade-in { + 0% { + opacity: 0; + } + + 100% { + opacity: 1; + } +} +div.cell details.hide[open]>summary~* { + -moz-animation: collapsed-fade-in 0.3s ease-in-out; + -webkit-animation: collapsed-fade-in 0.3s ease-in-out; + animation: collapsed-fade-in 0.3s ease-in-out; +} + +/* Math align to the left */ +.cell_output .MathJax_Display { + text-align: left !important; +} + +/* Pandas tables. Pulled from the Jupyter / nbsphinx CSS */ +div.cell_output table { + border: none; + border-collapse: collapse; + border-spacing: 0; + color: black; + font-size: 1em; + table-layout: fixed; +} + +div.cell_output thead { + border-bottom: 1px solid black; + vertical-align: bottom; +} + +div.cell_output tr, +div.cell_output th, +div.cell_output td { + text-align: right; + vertical-align: middle; + padding: 0.5em 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; +} + +div.cell_output th { + font-weight: bold; +} + +div.cell_output tbody tr:nth-child(odd) { + background: #f5f5f5; +} + +div.cell_output tbody tr:hover { + background: rgba(66, 165, 245, 0.2); +} + +/** source code line numbers **/ +span.linenos { + opacity: 0.5; +} + +/* Inline text from `paste` operation */ + +span.pasted-text { + font-weight: bold; +} + +span.pasted-inline img { + max-height: 2em; +} + +tbody span.pasted-inline img { + max-height: none; +} + +/* Font colors for translated ANSI escape sequences +Color values are copied from Jupyter Notebook +https://github.com/jupyter/notebook/blob/52581f8eda9b319eb0390ac77fe5903c38f81e3e/notebook/static/notebook/less/ansicolors.less#L14-L21 +Background colors from +https://nbsphinx.readthedocs.io/en/latest/code-cells.html#ANSI-Colors +*/ +div.highlight .-Color-Bold { + font-weight: bold; +} + +div.highlight .-Color[class*=-Black] { + color: #3E424D +} + +div.highlight .-Color[class*=-Red] { + color: #E75C58 +} + +div.highlight .-Color[class*=-Green] { + color: #00A250 +} + +div.highlight .-Color[class*=-Yellow] { + color: #DDB62B +} + +div.highlight .-Color[class*=-Blue] { + color: #208FFB +} + +div.highlight .-Color[class*=-Magenta] { + color: #D160C4 +} + +div.highlight .-Color[class*=-Cyan] { + color: #60C6C8 +} + +div.highlight .-Color[class*=-White] { + color: #C5C1B4 +} + +div.highlight .-Color[class*=-BGBlack] { + background-color: #3E424D +} + +div.highlight .-Color[class*=-BGRed] { + background-color: #E75C58 +} + +div.highlight .-Color[class*=-BGGreen] { + background-color: #00A250 +} + +div.highlight .-Color[class*=-BGYellow] { + background-color: #DDB62B +} + +div.highlight .-Color[class*=-BGBlue] { + background-color: #208FFB +} + +div.highlight .-Color[class*=-BGMagenta] { + background-color: #D160C4 +} + +div.highlight .-Color[class*=-BGCyan] { + background-color: #60C6C8 +} + +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/_static/play-solid.svg b/_static/play-solid.svg new file mode 100644 index 0000000..bcd81f7 --- /dev/null +++ b/_static/play-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 0000000..012e6a0 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,152 @@ +html[data-theme="light"] .highlight pre { line-height: 125%; } +html[data-theme="light"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="light"] .highlight .hll { background-color: #fae4c2 } +html[data-theme="light"] .highlight { background: #fefefe; color: #080808 } +html[data-theme="light"] .highlight .c { color: #515151 } /* Comment */ +html[data-theme="light"] .highlight .err { color: #a12236 } /* Error */ +html[data-theme="light"] .highlight .k { color: #6730c5 } /* Keyword */ +html[data-theme="light"] .highlight .l { color: #7f4707 } /* Literal */ +html[data-theme="light"] .highlight .n { color: #080808 } /* Name */ +html[data-theme="light"] .highlight .o { color: #00622f } /* Operator */ +html[data-theme="light"] .highlight .p { color: #080808 } /* Punctuation */ +html[data-theme="light"] .highlight .ch { color: #515151 } /* Comment.Hashbang */ +html[data-theme="light"] .highlight .cm { color: #515151 } /* Comment.Multiline */ +html[data-theme="light"] .highlight .cp { color: #515151 } /* Comment.Preproc */ +html[data-theme="light"] .highlight .cpf { color: #515151 } /* Comment.PreprocFile */ +html[data-theme="light"] .highlight .c1 { color: #515151 } /* Comment.Single */ +html[data-theme="light"] .highlight .cs { color: #515151 } /* Comment.Special */ +html[data-theme="light"] .highlight .gd { color: #005b82 } /* Generic.Deleted */ +html[data-theme="light"] .highlight .ge { font-style: italic } /* Generic.Emph */ +html[data-theme="light"] .highlight .gh { color: #005b82 } /* Generic.Heading */ +html[data-theme="light"] .highlight .gs { font-weight: bold } /* Generic.Strong */ +html[data-theme="light"] .highlight .gu { color: #005b82 } /* Generic.Subheading */ +html[data-theme="light"] .highlight .kc { color: #6730c5 } /* Keyword.Constant */ +html[data-theme="light"] .highlight .kd { color: #6730c5 } /* Keyword.Declaration */ +html[data-theme="light"] .highlight .kn { color: #6730c5 } /* Keyword.Namespace */ +html[data-theme="light"] .highlight .kp { color: #6730c5 } /* Keyword.Pseudo */ +html[data-theme="light"] .highlight .kr { color: #6730c5 } /* Keyword.Reserved */ +html[data-theme="light"] .highlight .kt { color: #7f4707 } /* Keyword.Type */ +html[data-theme="light"] .highlight .ld { color: #7f4707 } /* Literal.Date */ +html[data-theme="light"] .highlight .m { color: #7f4707 } /* Literal.Number */ +html[data-theme="light"] .highlight .s { color: #00622f } /* Literal.String */ +html[data-theme="light"] .highlight .na { color: #912583 } /* Name.Attribute */ +html[data-theme="light"] .highlight .nb { color: #7f4707 } /* Name.Builtin */ +html[data-theme="light"] .highlight .nc { color: #005b82 } /* Name.Class */ +html[data-theme="light"] .highlight .no { color: #005b82 } /* Name.Constant */ +html[data-theme="light"] .highlight .nd { color: #7f4707 } /* Name.Decorator */ +html[data-theme="light"] .highlight .ni { color: #00622f } /* Name.Entity */ +html[data-theme="light"] .highlight .ne { color: #6730c5 } /* Name.Exception */ +html[data-theme="light"] .highlight .nf { color: #005b82 } /* Name.Function */ +html[data-theme="light"] .highlight .nl { color: #7f4707 } /* Name.Label */ +html[data-theme="light"] .highlight .nn { color: #080808 } /* Name.Namespace */ +html[data-theme="light"] .highlight .nx { color: #080808 } /* Name.Other */ +html[data-theme="light"] .highlight .py { color: #005b82 } /* Name.Property */ +html[data-theme="light"] .highlight .nt { color: #005b82 } /* Name.Tag */ +html[data-theme="light"] .highlight .nv { color: #a12236 } /* Name.Variable */ +html[data-theme="light"] .highlight .ow { color: #6730c5 } /* Operator.Word */ +html[data-theme="light"] .highlight .pm { color: #080808 } /* Punctuation.Marker */ +html[data-theme="light"] .highlight .w { color: #080808 } /* Text.Whitespace */ +html[data-theme="light"] .highlight .mb { color: #7f4707 } /* Literal.Number.Bin */ +html[data-theme="light"] .highlight .mf { color: #7f4707 } /* Literal.Number.Float */ +html[data-theme="light"] .highlight .mh { color: #7f4707 } /* Literal.Number.Hex */ +html[data-theme="light"] .highlight .mi { color: #7f4707 } /* Literal.Number.Integer */ +html[data-theme="light"] .highlight .mo { color: #7f4707 } /* Literal.Number.Oct */ +html[data-theme="light"] .highlight .sa { color: #00622f } /* Literal.String.Affix */ +html[data-theme="light"] .highlight .sb { color: #00622f } /* Literal.String.Backtick */ +html[data-theme="light"] .highlight .sc { color: #00622f } /* Literal.String.Char */ +html[data-theme="light"] .highlight .dl { color: #00622f } /* Literal.String.Delimiter */ +html[data-theme="light"] .highlight .sd { color: #00622f } /* Literal.String.Doc */ +html[data-theme="light"] .highlight .s2 { color: #00622f } /* Literal.String.Double */ +html[data-theme="light"] .highlight .se { color: #00622f } /* Literal.String.Escape */ +html[data-theme="light"] .highlight .sh { color: #00622f } /* Literal.String.Heredoc */ +html[data-theme="light"] .highlight .si { color: #00622f } /* Literal.String.Interpol */ +html[data-theme="light"] .highlight .sx { color: #00622f } /* Literal.String.Other */ +html[data-theme="light"] .highlight .sr { color: #a12236 } /* Literal.String.Regex */ +html[data-theme="light"] .highlight .s1 { color: #00622f } /* Literal.String.Single */ +html[data-theme="light"] .highlight .ss { color: #005b82 } /* Literal.String.Symbol */ +html[data-theme="light"] .highlight .bp { color: #7f4707 } /* Name.Builtin.Pseudo */ +html[data-theme="light"] .highlight .fm { color: #005b82 } /* Name.Function.Magic */ +html[data-theme="light"] .highlight .vc { color: #a12236 } /* Name.Variable.Class */ +html[data-theme="light"] .highlight .vg { color: #a12236 } /* Name.Variable.Global */ +html[data-theme="light"] .highlight .vi { color: #a12236 } /* Name.Variable.Instance */ +html[data-theme="light"] .highlight .vm { color: #7f4707 } /* Name.Variable.Magic */ +html[data-theme="light"] .highlight .il { color: #7f4707 } /* Literal.Number.Integer.Long */ +html[data-theme="dark"] .highlight pre { line-height: 125%; } +html[data-theme="dark"] .highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +html[data-theme="dark"] .highlight .hll { background-color: #ffd9002e } +html[data-theme="dark"] .highlight { background: #2b2b2b; color: #f8f8f2 } +html[data-theme="dark"] .highlight .c { color: #ffd900 } /* Comment */ +html[data-theme="dark"] .highlight .err { color: #ffa07a } /* Error */ +html[data-theme="dark"] .highlight .k { color: #dcc6e0 } /* Keyword */ +html[data-theme="dark"] .highlight .l { color: #ffd900 } /* Literal */ +html[data-theme="dark"] .highlight .n { color: #f8f8f2 } /* Name */ +html[data-theme="dark"] .highlight .o { color: #abe338 } /* Operator */ +html[data-theme="dark"] .highlight .p { color: #f8f8f2 } /* Punctuation */ +html[data-theme="dark"] .highlight .ch { color: #ffd900 } /* Comment.Hashbang */ +html[data-theme="dark"] .highlight .cm { color: #ffd900 } /* Comment.Multiline */ +html[data-theme="dark"] .highlight .cp { color: #ffd900 } /* Comment.Preproc */ +html[data-theme="dark"] .highlight .cpf { color: #ffd900 } /* Comment.PreprocFile */ +html[data-theme="dark"] .highlight .c1 { color: #ffd900 } /* Comment.Single */ +html[data-theme="dark"] .highlight .cs { color: #ffd900 } /* Comment.Special */ +html[data-theme="dark"] .highlight .gd { color: #00e0e0 } /* Generic.Deleted */ +html[data-theme="dark"] .highlight .ge { font-style: italic } /* Generic.Emph */ +html[data-theme="dark"] .highlight .gh { color: #00e0e0 } /* Generic.Heading */ +html[data-theme="dark"] .highlight .gs { font-weight: bold } /* Generic.Strong */ +html[data-theme="dark"] .highlight .gu { color: #00e0e0 } /* Generic.Subheading */ +html[data-theme="dark"] .highlight .kc { color: #dcc6e0 } /* Keyword.Constant */ +html[data-theme="dark"] .highlight .kd { color: #dcc6e0 } /* Keyword.Declaration */ +html[data-theme="dark"] .highlight .kn { color: #dcc6e0 } /* Keyword.Namespace */ +html[data-theme="dark"] .highlight .kp { color: #dcc6e0 } /* Keyword.Pseudo */ +html[data-theme="dark"] .highlight .kr { color: #dcc6e0 } /* Keyword.Reserved */ +html[data-theme="dark"] .highlight .kt { color: #ffd900 } /* Keyword.Type */ +html[data-theme="dark"] .highlight .ld { color: #ffd900 } /* Literal.Date */ +html[data-theme="dark"] .highlight .m { color: #ffd900 } /* Literal.Number */ +html[data-theme="dark"] .highlight .s { color: #abe338 } /* Literal.String */ +html[data-theme="dark"] .highlight .na { color: #ffd900 } /* Name.Attribute */ +html[data-theme="dark"] .highlight .nb { color: #ffd900 } /* Name.Builtin */ +html[data-theme="dark"] .highlight .nc { color: #00e0e0 } /* Name.Class */ +html[data-theme="dark"] .highlight .no { color: #00e0e0 } /* Name.Constant */ +html[data-theme="dark"] .highlight .nd { color: #ffd900 } /* Name.Decorator */ +html[data-theme="dark"] .highlight .ni { color: #abe338 } /* Name.Entity */ +html[data-theme="dark"] .highlight .ne { color: #dcc6e0 } /* Name.Exception */ +html[data-theme="dark"] .highlight .nf { color: #00e0e0 } /* Name.Function */ +html[data-theme="dark"] .highlight .nl { color: #ffd900 } /* Name.Label */ +html[data-theme="dark"] .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ +html[data-theme="dark"] .highlight .nx { color: #f8f8f2 } /* Name.Other */ +html[data-theme="dark"] .highlight .py { color: #00e0e0 } /* Name.Property */ +html[data-theme="dark"] .highlight .nt { color: #00e0e0 } /* Name.Tag */ +html[data-theme="dark"] .highlight .nv { color: #ffa07a } /* Name.Variable */ +html[data-theme="dark"] .highlight .ow { color: #dcc6e0 } /* Operator.Word */ +html[data-theme="dark"] .highlight .pm { color: #f8f8f2 } /* Punctuation.Marker */ +html[data-theme="dark"] .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ +html[data-theme="dark"] .highlight .mb { color: #ffd900 } /* Literal.Number.Bin */ +html[data-theme="dark"] .highlight .mf { color: #ffd900 } /* Literal.Number.Float */ +html[data-theme="dark"] .highlight .mh { color: #ffd900 } /* Literal.Number.Hex */ +html[data-theme="dark"] .highlight .mi { color: #ffd900 } /* Literal.Number.Integer */ +html[data-theme="dark"] .highlight .mo { color: #ffd900 } /* Literal.Number.Oct */ +html[data-theme="dark"] .highlight .sa { color: #abe338 } /* Literal.String.Affix */ +html[data-theme="dark"] .highlight .sb { color: #abe338 } /* Literal.String.Backtick */ +html[data-theme="dark"] .highlight .sc { color: #abe338 } /* Literal.String.Char */ +html[data-theme="dark"] .highlight .dl { color: #abe338 } /* Literal.String.Delimiter */ +html[data-theme="dark"] .highlight .sd { color: #abe338 } /* Literal.String.Doc */ +html[data-theme="dark"] .highlight .s2 { color: #abe338 } /* Literal.String.Double */ +html[data-theme="dark"] .highlight .se { color: #abe338 } /* Literal.String.Escape */ +html[data-theme="dark"] .highlight .sh { color: #abe338 } /* Literal.String.Heredoc */ +html[data-theme="dark"] .highlight .si { color: #abe338 } /* Literal.String.Interpol */ +html[data-theme="dark"] .highlight .sx { color: #abe338 } /* Literal.String.Other */ +html[data-theme="dark"] .highlight .sr { color: #ffa07a } /* Literal.String.Regex */ +html[data-theme="dark"] .highlight .s1 { color: #abe338 } /* Literal.String.Single */ +html[data-theme="dark"] .highlight .ss { color: #00e0e0 } /* Literal.String.Symbol */ +html[data-theme="dark"] .highlight .bp { color: #ffd900 } /* Name.Builtin.Pseudo */ +html[data-theme="dark"] .highlight .fm { color: #00e0e0 } /* Name.Function.Magic */ +html[data-theme="dark"] .highlight .vc { color: #ffa07a } /* Name.Variable.Class */ +html[data-theme="dark"] .highlight .vg { color: #ffa07a } /* Name.Variable.Global */ +html[data-theme="dark"] .highlight .vi { color: #ffa07a } /* Name.Variable.Instance */ +html[data-theme="dark"] .highlight .vm { color: #ffd900 } /* Name.Variable.Magic */ +html[data-theme="dark"] .highlight .il { color: #ffd900 } /* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_static/sbt-webpack-macros.html b/_static/sbt-webpack-macros.html new file mode 100644 index 0000000..6cbf559 --- /dev/null +++ b/_static/sbt-webpack-macros.html @@ -0,0 +1,11 @@ + +{% macro head_pre_bootstrap() %} + +{% endmacro %} + +{% macro body_post() %} + +{% endmacro %} diff --git a/_static/scripts/bootstrap.js b/_static/scripts/bootstrap.js new file mode 100644 index 0000000..c8178de --- /dev/null +++ b/_static/scripts/bootstrap.js @@ -0,0 +1,3 @@ +/*! For license information please see bootstrap.js.LICENSE.txt */ +(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>E,afterRead:()=>v,afterWrite:()=>C,applyStyles:()=>$,arrow:()=>J,auto:()=>a,basePlacements:()=>l,beforeMain:()=>y,beforeRead:()=>_,beforeWrite:()=>A,bottom:()=>s,clippingParents:()=>d,computeStyles:()=>it,createPopper:()=>Dt,createPopperBase:()=>St,createPopperLite:()=>$t,detectOverflow:()=>_t,end:()=>h,eventListeners:()=>st,flip:()=>bt,hide:()=>wt,left:()=>r,main:()=>w,modifierPhases:()=>O,offset:()=>Et,placements:()=>g,popper:()=>f,popperGenerator:()=>Lt,popperOffsets:()=>At,preventOverflow:()=>Tt,read:()=>b,reference:()=>p,right:()=>o,start:()=>c,top:()=>n,variationPlacements:()=>m,viewport:()=>u,write:()=>T});var i={};t.r(i),t.d(i,{Alert:()=>Oe,Button:()=>ke,Carousel:()=>li,Collapse:()=>Ei,Dropdown:()=>Ki,Modal:()=>Ln,Offcanvas:()=>Kn,Popover:()=>bs,ScrollSpy:()=>Ls,Tab:()=>Js,Toast:()=>po,Tooltip:()=>fs});var n="top",s="bottom",o="right",r="left",a="auto",l=[n,s,o,r],c="start",h="end",d="clippingParents",u="viewport",f="popper",p="reference",m=l.reduce((function(t,e){return t.concat([e+"-"+c,e+"-"+h])}),[]),g=[].concat(l,[a]).reduce((function(t,e){return t.concat([e,e+"-"+c,e+"-"+h])}),[]),_="beforeRead",b="read",v="afterRead",y="beforeMain",w="main",E="afterMain",A="beforeWrite",T="write",C="afterWrite",O=[_,b,v,y,w,E,A,T,C];function x(t){return t?(t.nodeName||"").toLowerCase():null}function k(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function L(t){return t instanceof k(t).Element||t instanceof Element}function S(t){return t instanceof k(t).HTMLElement||t instanceof HTMLElement}function D(t){return"undefined"!=typeof ShadowRoot&&(t instanceof k(t).ShadowRoot||t instanceof ShadowRoot)}const $={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];S(s)&&x(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});S(n)&&x(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function I(t){return t.split("-")[0]}var N=Math.max,P=Math.min,M=Math.round;function j(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function F(){return!/^((?!chrome|android).)*safari/i.test(j())}function H(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&S(t)&&(s=t.offsetWidth>0&&M(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&M(n.height)/t.offsetHeight||1);var r=(L(t)?k(t):window).visualViewport,a=!F()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function B(t){var e=H(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function W(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&D(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function z(t){return k(t).getComputedStyle(t)}function R(t){return["table","td","th"].indexOf(x(t))>=0}function q(t){return((L(t)?t.ownerDocument:t.document)||window.document).documentElement}function V(t){return"html"===x(t)?t:t.assignedSlot||t.parentNode||(D(t)?t.host:null)||q(t)}function Y(t){return S(t)&&"fixed"!==z(t).position?t.offsetParent:null}function K(t){for(var e=k(t),i=Y(t);i&&R(i)&&"static"===z(i).position;)i=Y(i);return i&&("html"===x(i)||"body"===x(i)&&"static"===z(i).position)?e:i||function(t){var e=/firefox/i.test(j());if(/Trident/i.test(j())&&S(t)&&"fixed"===z(t).position)return null;var i=V(t);for(D(i)&&(i=i.host);S(i)&&["html","body"].indexOf(x(i))<0;){var n=z(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Q(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function X(t,e,i){return N(t,P(e,i))}function U(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function G(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const J={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,a=t.name,c=t.options,h=i.elements.arrow,d=i.modifiersData.popperOffsets,u=I(i.placement),f=Q(u),p=[r,o].indexOf(u)>=0?"height":"width";if(h&&d){var m=function(t,e){return U("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:G(t,l))}(c.padding,i),g=B(h),_="y"===f?n:r,b="y"===f?s:o,v=i.rects.reference[p]+i.rects.reference[f]-d[f]-i.rects.popper[p],y=d[f]-i.rects.reference[f],w=K(h),E=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,A=v/2-y/2,T=m[_],C=E-g[p]-m[b],O=E/2-g[p]/2+A,x=X(T,O,C),k=f;i.modifiersData[a]=((e={})[k]=x,e.centerOffset=x-O,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&W(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Z(t){return t.split("-")[1]}var tt={top:"auto",right:"auto",bottom:"auto",left:"auto"};function et(t){var e,i=t.popper,a=t.popperRect,l=t.placement,c=t.variation,d=t.offsets,u=t.position,f=t.gpuAcceleration,p=t.adaptive,m=t.roundOffsets,g=t.isFixed,_=d.x,b=void 0===_?0:_,v=d.y,y=void 0===v?0:v,w="function"==typeof m?m({x:b,y}):{x:b,y};b=w.x,y=w.y;var E=d.hasOwnProperty("x"),A=d.hasOwnProperty("y"),T=r,C=n,O=window;if(p){var x=K(i),L="clientHeight",S="clientWidth";x===k(i)&&"static"!==z(x=q(i)).position&&"absolute"===u&&(L="scrollHeight",S="scrollWidth"),(l===n||(l===r||l===o)&&c===h)&&(C=s,y-=(g&&x===O&&O.visualViewport?O.visualViewport.height:x[L])-a.height,y*=f?1:-1),l!==r&&(l!==n&&l!==s||c!==h)||(T=o,b-=(g&&x===O&&O.visualViewport?O.visualViewport.width:x[S])-a.width,b*=f?1:-1)}var D,$=Object.assign({position:u},p&&tt),I=!0===m?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:M(i*s)/s||0,y:M(n*s)/s||0}}({x:b,y},k(i)):{x:b,y};return b=I.x,y=I.y,f?Object.assign({},$,((D={})[C]=A?"0":"",D[T]=E?"0":"",D.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",D)):Object.assign({},$,((e={})[C]=A?y+"px":"",e[T]=E?b+"px":"",e.transform="",e))}const it={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:I(e.placement),variation:Z(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,et(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,et(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var nt={passive:!0};const st={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=k(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,nt)})),a&&l.addEventListener("resize",i.update,nt),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,nt)})),a&&l.removeEventListener("resize",i.update,nt)}},data:{}};var ot={left:"right",right:"left",bottom:"top",top:"bottom"};function rt(t){return t.replace(/left|right|bottom|top/g,(function(t){return ot[t]}))}var at={start:"end",end:"start"};function lt(t){return t.replace(/start|end/g,(function(t){return at[t]}))}function ct(t){var e=k(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ht(t){return H(q(t)).left+ct(t).scrollLeft}function dt(t){var e=z(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function ut(t){return["html","body","#document"].indexOf(x(t))>=0?t.ownerDocument.body:S(t)&&dt(t)?t:ut(V(t))}function ft(t,e){var i;void 0===e&&(e=[]);var n=ut(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=k(n),r=s?[o].concat(o.visualViewport||[],dt(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ft(V(r)))}function pt(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function mt(t,e,i){return e===u?pt(function(t,e){var i=k(t),n=q(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=F();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ht(t),y:l}}(t,i)):L(e)?function(t,e){var i=H(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):pt(function(t){var e,i=q(t),n=ct(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=N(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=N(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ht(t),l=-n.scrollTop;return"rtl"===z(s||i).direction&&(a+=N(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(q(t)))}function gt(t){var e,i=t.reference,a=t.element,l=t.placement,d=l?I(l):null,u=l?Z(l):null,f=i.x+i.width/2-a.width/2,p=i.y+i.height/2-a.height/2;switch(d){case n:e={x:f,y:i.y-a.height};break;case s:e={x:f,y:i.y+i.height};break;case o:e={x:i.x+i.width,y:p};break;case r:e={x:i.x-a.width,y:p};break;default:e={x:i.x,y:i.y}}var m=d?Q(d):null;if(null!=m){var g="y"===m?"height":"width";switch(u){case c:e[m]=e[m]-(i[g]/2-a[g]/2);break;case h:e[m]=e[m]+(i[g]/2-a[g]/2)}}return e}function _t(t,e){void 0===e&&(e={});var i=e,r=i.placement,a=void 0===r?t.placement:r,c=i.strategy,h=void 0===c?t.strategy:c,m=i.boundary,g=void 0===m?d:m,_=i.rootBoundary,b=void 0===_?u:_,v=i.elementContext,y=void 0===v?f:v,w=i.altBoundary,E=void 0!==w&&w,A=i.padding,T=void 0===A?0:A,C=U("number"!=typeof T?T:G(T,l)),O=y===f?p:f,k=t.rects.popper,D=t.elements[E?O:y],$=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=ft(V(t)),i=["absolute","fixed"].indexOf(z(t).position)>=0&&S(t)?K(t):t;return L(i)?e.filter((function(t){return L(t)&&W(t,i)&&"body"!==x(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=mt(t,i,n);return e.top=N(s.top,e.top),e.right=P(s.right,e.right),e.bottom=P(s.bottom,e.bottom),e.left=N(s.left,e.left),e}),mt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(L(D)?D:D.contextElement||q(t.elements.popper),g,b,h),I=H(t.elements.reference),M=gt({reference:I,element:k,strategy:"absolute",placement:a}),j=pt(Object.assign({},k,M)),F=y===f?j:I,B={top:$.top-F.top+C.top,bottom:F.bottom-$.bottom+C.bottom,left:$.left-F.left+C.left,right:F.right-$.right+C.right},R=t.modifiersData.offset;if(y===f&&R){var Y=R[a];Object.keys(B).forEach((function(t){var e=[o,s].indexOf(t)>=0?1:-1,i=[n,s].indexOf(t)>=0?"y":"x";B[t]+=Y[i]*e}))}return B}const bt={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var d=i.mainAxis,u=void 0===d||d,f=i.altAxis,p=void 0===f||f,_=i.fallbackPlacements,b=i.padding,v=i.boundary,y=i.rootBoundary,w=i.altBoundary,E=i.flipVariations,A=void 0===E||E,T=i.allowedAutoPlacements,C=e.options.placement,O=I(C),x=_||(O!==C&&A?function(t){if(I(t)===a)return[];var e=rt(t);return[lt(t),e,lt(e)]}(C):[rt(C)]),k=[C].concat(x).reduce((function(t,i){return t.concat(I(i)===a?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?g:c,d=Z(n),u=d?a?m:m.filter((function(t){return Z(t)===d})):l,f=u.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=u);var p=f.reduce((function(e,i){return e[i]=_t(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[I(i)],e}),{});return Object.keys(p).sort((function(t,e){return p[t]-p[e]}))}(e,{placement:i,boundary:v,rootBoundary:y,padding:b,flipVariations:A,allowedAutoPlacements:T}):i)}),[]),L=e.rects.reference,S=e.rects.popper,D=new Map,$=!0,N=k[0],P=0;P=0,B=H?"width":"height",W=_t(e,{placement:M,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=H?F?o:r:F?s:n;L[B]>S[B]&&(z=rt(z));var R=rt(z),q=[];if(u&&q.push(W[j]<=0),p&&q.push(W[z]<=0,W[R]<=0),q.every((function(t){return t}))){N=M,$=!1;break}D.set(M,q)}if($)for(var V=function(t){var e=k.find((function(e){var i=D.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return N=e,"break"},Y=A?3:1;Y>0&&"break"!==V(Y);Y--);e.placement!==N&&(e.modifiersData[h]._skip=!0,e.placement=N,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function vt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function yt(t){return[n,o,s,r].some((function(e){return t[e]>=0}))}const wt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=_t(e,{elementContext:"reference"}),a=_t(e,{altBoundary:!0}),l=vt(r,n),c=vt(a,s,o),h=yt(l),d=yt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},Et={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,s=t.name,a=i.offset,l=void 0===a?[0,0]:a,c=g.reduce((function(t,i){return t[i]=function(t,e,i){var s=I(t),a=[r,n].indexOf(s)>=0?-1:1,l="function"==typeof i?i(Object.assign({},e,{placement:t})):i,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[r,o].indexOf(s)>=0?{x:h,y:c}:{x:c,y:h}}(i,e.rects,l),t}),{}),h=c[e.placement],d=h.x,u=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[s]=c}},At={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=gt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},Tt={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,a=t.name,l=i.mainAxis,h=void 0===l||l,d=i.altAxis,u=void 0!==d&&d,f=i.boundary,p=i.rootBoundary,m=i.altBoundary,g=i.padding,_=i.tether,b=void 0===_||_,v=i.tetherOffset,y=void 0===v?0:v,w=_t(e,{boundary:f,rootBoundary:p,padding:g,altBoundary:m}),E=I(e.placement),A=Z(e.placement),T=!A,C=Q(E),O="x"===C?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,L=e.rects.popper,S="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,D="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),$=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(x){if(h){var j,F="y"===C?n:r,H="y"===C?s:o,W="y"===C?"height":"width",z=x[C],R=z+w[F],q=z-w[H],V=b?-L[W]/2:0,Y=A===c?k[W]:L[W],U=A===c?-L[W]:-k[W],G=e.elements.arrow,J=b&&G?B(G):{width:0,height:0},tt=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[F],it=tt[H],nt=X(0,k[W],J[W]),st=T?k[W]/2-V-nt-et-D.mainAxis:Y-nt-et-D.mainAxis,ot=T?-k[W]/2+V+nt+it+D.mainAxis:U+nt+it+D.mainAxis,rt=e.elements.arrow&&K(e.elements.arrow),at=rt?"y"===C?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(j=null==$?void 0:$[C])?j:0,ct=z+ot-lt,ht=X(b?P(R,z+st-lt-at):R,z,b?N(q,ct):q);x[C]=ht,M[C]=ht-z}if(u){var dt,ut="x"===C?n:r,ft="x"===C?s:o,pt=x[O],mt="y"===O?"height":"width",gt=pt+w[ut],bt=pt-w[ft],vt=-1!==[n,r].indexOf(E),yt=null!=(dt=null==$?void 0:$[O])?dt:0,wt=vt?gt:pt-k[mt]-L[mt]-yt+D.altAxis,Et=vt?pt+k[mt]+L[mt]-yt-D.altAxis:bt,At=b&&vt?function(t,e,i){var n=X(t,e,i);return n>i?i:n}(wt,pt,Et):X(b?wt:gt,pt,b?Et:bt);x[O]=At,M[O]=At-pt}e.modifiersData[a]=M}},requiresIfExists:["offset"]};function Ct(t,e,i){void 0===i&&(i=!1);var n,s,o=S(e),r=S(e)&&function(t){var e=t.getBoundingClientRect(),i=M(e.width)/t.offsetWidth||1,n=M(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=q(e),l=H(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==x(e)||dt(a))&&(c=(n=e)!==k(n)&&S(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:ct(n)),S(e)?((h=H(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ht(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Ot(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var xt={placement:"bottom",modifiers:[],strategy:"absolute"};function kt(){for(var t=arguments.length,e=new Array(t),i=0;iIt.has(t)&&It.get(t).get(e)||null,remove(t,e){if(!It.has(t))return;const i=It.get(t);i.delete(e),0===i.size&&It.delete(t)}},Pt="transitionend",Mt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),jt=t=>{t.dispatchEvent(new Event(Pt))},Ft=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ht=t=>Ft(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Mt(t)):null,Bt=t=>{if(!Ft(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Wt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),zt=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?zt(t.parentNode):null},Rt=()=>{},qt=t=>{t.offsetHeight},Vt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Yt=[],Kt=()=>"rtl"===document.documentElement.dir,Qt=t=>{var e;e=()=>{const e=Vt();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(Yt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Yt)t()})),Yt.push(e)):e()},Xt=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,Ut=(t,e,i=!0)=>{if(!i)return void Xt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(Pt,o),Xt(t))};e.addEventListener(Pt,o),setTimeout((()=>{s||jt(e)}),n)},Gt=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},Jt=/[^.]*(?=\..*)\.|.*/,Zt=/\..*/,te=/::\d+$/,ee={};let ie=1;const ne={mouseenter:"mouseover",mouseleave:"mouseout"},se=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function oe(t,e){return e&&`${e}::${ie++}`||t.uidEvent||ie++}function re(t){const e=oe(t);return t.uidEvent=e,ee[e]=ee[e]||{},ee[e]}function ae(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function le(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=ue(t);return se.has(o)||(o=t),[n,s,o]}function ce(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=le(e,i,n);if(e in ne){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=re(t),c=l[a]||(l[a]={}),h=ae(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=oe(r,e.replace(Jt,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return pe(s,{delegateTarget:r}),n.oneOff&&fe.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return pe(n,{delegateTarget:t}),i.oneOff&&fe.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function he(t,e,i,n,s){const o=ae(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function de(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&he(t,e,i,r.callable,r.delegationSelector)}function ue(t){return t=t.replace(Zt,""),ne[t]||t}const fe={on(t,e,i,n){ce(t,e,i,n,!1)},one(t,e,i,n){ce(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=le(e,i,n),a=r!==e,l=re(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))de(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(te,"");a&&!e.includes(s)||he(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;he(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=Vt();let s=null,o=!0,r=!0,a=!1;e!==ue(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=pe(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function pe(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function me(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function ge(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const _e={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${ge(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${ge(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=me(t.dataset[n])}return e},getDataAttribute:(t,e)=>me(t.getAttribute(`data-bs-${ge(e)}`))};class be{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=Ft(e)?_e.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...Ft(e)?_e.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],o=Ft(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}var i}}class ve extends be{constructor(t,e){super(),(t=Ht(t))&&(this._element=t,this._config=this._getConfig(e),Nt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){Nt.remove(this._element,this.constructor.DATA_KEY),fe.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Ut(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return Nt.get(Ht(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const ye=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e?e.split(",").map((t=>Mt(t))).join(","):null},we={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Wt(t)&&Bt(t)))},getSelectorFromElement(t){const e=ye(t);return e&&we.findOne(e)?e:null},getElementFromSelector(t){const e=ye(t);return e?we.findOne(e):null},getMultipleElementsFromSelector(t){const e=ye(t);return e?we.find(e):[]}},Ee=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;fe.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Wt(this))return;const s=we.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ae=".bs.alert",Te=`close${Ae}`,Ce=`closed${Ae}`;class Oe extends ve{static get NAME(){return"alert"}close(){if(fe.trigger(this._element,Te).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),fe.trigger(this._element,Ce),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Oe.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}Ee(Oe,"close"),Qt(Oe);const xe='[data-bs-toggle="button"]';class ke extends ve{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=ke.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}fe.on(document,"click.bs.button.data-api",xe,(t=>{t.preventDefault();const e=t.target.closest(xe);ke.getOrCreateInstance(e).toggle()})),Qt(ke);const Le=".bs.swipe",Se=`touchstart${Le}`,De=`touchmove${Le}`,$e=`touchend${Le}`,Ie=`pointerdown${Le}`,Ne=`pointerup${Le}`,Pe={endCallback:null,leftCallback:null,rightCallback:null},Me={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class je extends be{constructor(t,e){super(),this._element=t,t&&je.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Pe}static get DefaultType(){return Me}static get NAME(){return"swipe"}dispose(){fe.off(this._element,Le)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Xt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Xt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(fe.on(this._element,Ie,(t=>this._start(t))),fe.on(this._element,Ne,(t=>this._end(t))),this._element.classList.add("pointer-event")):(fe.on(this._element,Se,(t=>this._start(t))),fe.on(this._element,De,(t=>this._move(t))),fe.on(this._element,$e,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const Fe=".bs.carousel",He=".data-api",Be="ArrowLeft",We="ArrowRight",ze="next",Re="prev",qe="left",Ve="right",Ye=`slide${Fe}`,Ke=`slid${Fe}`,Qe=`keydown${Fe}`,Xe=`mouseenter${Fe}`,Ue=`mouseleave${Fe}`,Ge=`dragstart${Fe}`,Je=`load${Fe}${He}`,Ze=`click${Fe}${He}`,ti="carousel",ei="active",ii=".active",ni=".carousel-item",si=ii+ni,oi={[Be]:Ve,[We]:qe},ri={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},ai={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class li extends ve{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=we.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===ti&&this.cycle()}static get Default(){return ri}static get DefaultType(){return ai}static get NAME(){return"carousel"}next(){this._slide(ze)}nextWhenVisible(){!document.hidden&&Bt(this._element)&&this.next()}prev(){this._slide(Re)}pause(){this._isSliding&&jt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?fe.one(this._element,Ke,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void fe.one(this._element,Ke,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?ze:Re;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&fe.on(this._element,Qe,(t=>this._keydown(t))),"hover"===this._config.pause&&(fe.on(this._element,Xe,(()=>this.pause())),fe.on(this._element,Ue,(()=>this._maybeEnableCycle()))),this._config.touch&&je.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of we.find(".carousel-item img",this._element))fe.on(t,Ge,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(qe)),rightCallback:()=>this._slide(this._directionToOrder(Ve)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new je(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=oi[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=we.findOne(ii,this._indicatorsElement);e.classList.remove(ei),e.removeAttribute("aria-current");const i=we.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(ei),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===ze,s=e||Gt(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>fe.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Ye).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),qt(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(ei),i.classList.remove(ei,c,l),this._isSliding=!1,r(Ke)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return we.findOne(si,this._element)}_getItems(){return we.find(ni,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Kt()?t===qe?Re:ze:t===qe?ze:Re}_orderToDirection(t){return Kt()?t===Re?qe:Ve:t===Re?Ve:qe}static jQueryInterface(t){return this.each((function(){const e=li.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}fe.on(document,Ze,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=we.getElementFromSelector(this);if(!e||!e.classList.contains(ti))return;t.preventDefault();const i=li.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===_e.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),fe.on(window,Je,(()=>{const t=we.find('[data-bs-ride="carousel"]');for(const e of t)li.getOrCreateInstance(e)})),Qt(li);const ci=".bs.collapse",hi=`show${ci}`,di=`shown${ci}`,ui=`hide${ci}`,fi=`hidden${ci}`,pi=`click${ci}.data-api`,mi="show",gi="collapse",_i="collapsing",bi=`:scope .${gi} .${gi}`,vi='[data-bs-toggle="collapse"]',yi={parent:null,toggle:!0},wi={parent:"(null|element)",toggle:"boolean"};class Ei extends ve{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=we.find(vi);for(const t of i){const e=we.getSelectorFromElement(t),i=we.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return yi}static get DefaultType(){return wi}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Ei.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(fe.trigger(this._element,hi).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(gi),this._element.classList.add(_i),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(_i),this._element.classList.add(gi,mi),this._element.style[e]="",fe.trigger(this._element,di)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(fe.trigger(this._element,ui).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,qt(this._element),this._element.classList.add(_i),this._element.classList.remove(gi,mi);for(const t of this._triggerArray){const e=we.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(_i),this._element.classList.add(gi),fe.trigger(this._element,fi)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(mi)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ht(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(vi);for(const e of t){const t=we.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=we.find(bi,this._config.parent);return we.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Ei.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}fe.on(document,pi,vi,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of we.getMultipleElementsFromSelector(this))Ei.getOrCreateInstance(t,{toggle:!1}).toggle()})),Qt(Ei);const Ai="dropdown",Ti=".bs.dropdown",Ci=".data-api",Oi="ArrowUp",xi="ArrowDown",ki=`hide${Ti}`,Li=`hidden${Ti}`,Si=`show${Ti}`,Di=`shown${Ti}`,$i=`click${Ti}${Ci}`,Ii=`keydown${Ti}${Ci}`,Ni=`keyup${Ti}${Ci}`,Pi="show",Mi='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',ji=`${Mi}.${Pi}`,Fi=".dropdown-menu",Hi=Kt()?"top-end":"top-start",Bi=Kt()?"top-start":"top-end",Wi=Kt()?"bottom-end":"bottom-start",zi=Kt()?"bottom-start":"bottom-end",Ri=Kt()?"left-start":"right-start",qi=Kt()?"right-start":"left-start",Vi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Yi={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Ki extends ve{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=we.next(this._element,Fi)[0]||we.prev(this._element,Fi)[0]||we.findOne(Fi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return Vi}static get DefaultType(){return Yi}static get NAME(){return Ai}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Wt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!fe.trigger(this._element,Si,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))fe.on(t,"mouseover",Rt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Pi),this._element.classList.add(Pi),fe.trigger(this._element,Di,t)}}hide(){if(Wt(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!fe.trigger(this._element,ki,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))fe.off(t,"mouseover",Rt);this._popper&&this._popper.destroy(),this._menu.classList.remove(Pi),this._element.classList.remove(Pi),this._element.setAttribute("aria-expanded","false"),_e.removeDataAttribute(this._menu,"popper"),fe.trigger(this._element,Li,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!Ft(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${Ai.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===e)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:Ft(this._config.reference)?t=Ht(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig();this._popper=Dt(t,this._menu,i)}_isShown(){return this._menu.classList.contains(Pi)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Ri;if(t.classList.contains("dropstart"))return qi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?Bi:Hi:e?zi:Wi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(_e.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Xt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=we.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Bt(t)));i.length&&Gt(i,e,t===xi,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Ki.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=we.find(ji);for(const i of e){const e=Ki.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Oi,xi].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Mi)?this:we.prev(this,Mi)[0]||we.next(this,Mi)[0]||we.findOne(Mi,t.delegateTarget.parentNode),o=Ki.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}fe.on(document,Ii,Mi,Ki.dataApiKeydownHandler),fe.on(document,Ii,Fi,Ki.dataApiKeydownHandler),fe.on(document,$i,Ki.clearMenus),fe.on(document,Ni,Ki.clearMenus),fe.on(document,$i,Mi,(function(t){t.preventDefault(),Ki.getOrCreateInstance(this).toggle()})),Qt(Ki);const Qi="backdrop",Xi="show",Ui=`mousedown.bs.${Qi}`,Gi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Ji={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Zi extends be{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Gi}static get DefaultType(){return Ji}static get NAME(){return Qi}show(t){if(!this._config.isVisible)return void Xt(t);this._append();const e=this._getElement();this._config.isAnimated&&qt(e),e.classList.add(Xi),this._emulateAnimation((()=>{Xt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Xi),this._emulateAnimation((()=>{this.dispose(),Xt(t)}))):Xt(t)}dispose(){this._isAppended&&(fe.off(this._element,Ui),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Ht(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),fe.on(t,Ui,(()=>{Xt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Ut(t,this._getElement(),this._config.isAnimated)}}const tn=".bs.focustrap",en=`focusin${tn}`,nn=`keydown.tab${tn}`,sn="backward",on={autofocus:!0,trapElement:null},rn={autofocus:"boolean",trapElement:"element"};class an extends be{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return on}static get DefaultType(){return rn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),fe.off(document,tn),fe.on(document,en,(t=>this._handleFocusin(t))),fe.on(document,nn,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,fe.off(document,tn))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=we.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===sn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?sn:"forward")}}const ln=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",cn=".sticky-top",hn="padding-right",dn="margin-right";class un{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,hn,(e=>e+t)),this._setElementAttributes(ln,hn,(e=>e+t)),this._setElementAttributes(cn,dn,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,hn),this._resetElementAttributes(ln,hn),this._resetElementAttributes(cn,dn)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&_e.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=_e.getDataAttribute(t,e);null!==i?(_e.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(Ft(t))e(t);else for(const i of we.find(t,this._element))e(i)}}const fn=".bs.modal",pn=`hide${fn}`,mn=`hidePrevented${fn}`,gn=`hidden${fn}`,_n=`show${fn}`,bn=`shown${fn}`,vn=`resize${fn}`,yn=`click.dismiss${fn}`,wn=`mousedown.dismiss${fn}`,En=`keydown.dismiss${fn}`,An=`click${fn}.data-api`,Tn="modal-open",Cn="show",On="modal-static",xn={backdrop:!0,focus:!0,keyboard:!0},kn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class Ln extends ve{constructor(t,e){super(t,e),this._dialog=we.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new un,this._addEventListeners()}static get Default(){return xn}static get DefaultType(){return kn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||fe.trigger(this._element,_n,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Tn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(fe.trigger(this._element,pn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(Cn),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){fe.off(window,fn),fe.off(this._dialog,fn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Zi({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new an({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=we.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),qt(this._element),this._element.classList.add(Cn),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,fe.trigger(this._element,bn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){fe.on(this._element,En,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),fe.on(window,vn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),fe.on(this._element,wn,(t=>{fe.one(this._element,yn,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(Tn),this._resetAdjustments(),this._scrollBar.reset(),fe.trigger(this._element,gn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(fe.trigger(this._element,mn).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(On)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(On),this._queueCallback((()=>{this._element.classList.remove(On),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Kt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Kt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=Ln.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}fe.on(document,An,'[data-bs-toggle="modal"]',(function(t){const e=we.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),fe.one(e,_n,(t=>{t.defaultPrevented||fe.one(e,gn,(()=>{Bt(this)&&this.focus()}))}));const i=we.findOne(".modal.show");i&&Ln.getInstance(i).hide(),Ln.getOrCreateInstance(e).toggle(this)})),Ee(Ln),Qt(Ln);const Sn=".bs.offcanvas",Dn=".data-api",$n=`load${Sn}${Dn}`,In="show",Nn="showing",Pn="hiding",Mn=".offcanvas.show",jn=`show${Sn}`,Fn=`shown${Sn}`,Hn=`hide${Sn}`,Bn=`hidePrevented${Sn}`,Wn=`hidden${Sn}`,zn=`resize${Sn}`,Rn=`click${Sn}${Dn}`,qn=`keydown.dismiss${Sn}`,Vn={backdrop:!0,keyboard:!0,scroll:!1},Yn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Kn extends ve{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Vn}static get DefaultType(){return Yn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||fe.trigger(this._element,jn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new un).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Nn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(In),this._element.classList.remove(Nn),fe.trigger(this._element,Fn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(fe.trigger(this._element,Hn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Pn),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(In,Pn),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new un).reset(),fe.trigger(this._element,Wn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Zi({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():fe.trigger(this._element,Bn)}:null})}_initializeFocusTrap(){return new an({trapElement:this._element})}_addEventListeners(){fe.on(this._element,qn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():fe.trigger(this._element,Bn))}))}static jQueryInterface(t){return this.each((function(){const e=Kn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}fe.on(document,Rn,'[data-bs-toggle="offcanvas"]',(function(t){const e=we.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Wt(this))return;fe.one(e,Wn,(()=>{Bt(this)&&this.focus()}));const i=we.findOne(Mn);i&&i!==e&&Kn.getInstance(i).hide(),Kn.getOrCreateInstance(e).toggle(this)})),fe.on(window,$n,(()=>{for(const t of we.find(Mn))Kn.getOrCreateInstance(t).show()})),fe.on(window,zn,(()=>{for(const t of we.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&Kn.getOrCreateInstance(t).hide()})),Ee(Kn),Qt(Kn);const Qn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Xn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Un=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Gn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Xn.has(i)||Boolean(Un.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Jn={allowList:Qn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"

"},Zn={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},ts={entry:"(string|element|function|null)",selector:"(string|element)"};class es extends be{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Jn}static get DefaultType(){return Zn}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},ts)}_setContent(t,e,i){const n=we.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?Ft(e)?this._putElementInTemplate(Ht(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Gn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Xt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const is=new Set(["sanitize","allowList","sanitizeFn"]),ns="fade",ss="show",os=".tooltip-inner",rs=".modal",as="hide.bs.modal",ls="hover",cs="focus",hs={AUTO:"auto",TOP:"top",RIGHT:Kt()?"left":"right",BOTTOM:"bottom",LEFT:Kt()?"right":"left"},ds={allowList:Qn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},us={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class fs extends ve{constructor(t,i){if(void 0===e)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,i),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return ds}static get DefaultType(){return us}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),fe.off(this._element.closest(rs),as,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=fe.trigger(this._element,this.constructor.eventName("show")),e=(zt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),fe.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(ss),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))fe.on(t,"mouseover",Rt);this._queueCallback((()=>{fe.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!fe.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(ss),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))fe.off(t,"mouseover",Rt);this._activeTrigger.click=!1,this._activeTrigger[cs]=!1,this._activeTrigger[ls]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),fe.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ns,ss),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ns),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new es({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[os]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ns)}_isShown(){return this.tip&&this.tip.classList.contains(ss)}_createPopper(t){const e=Xt(this._config.placement,[this,t,this._element]),i=hs[e.toUpperCase()];return Dt(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Xt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Xt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)fe.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ls?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ls?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");fe.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?cs:ls]=!0,e._enter()})),fe.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?cs:ls]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},fe.on(this._element.closest(rs),as,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=_e.getDataAttributes(this._element);for(const t of Object.keys(e))is.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Ht(t.container),"number"==typeof 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()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=fs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Qt(fs);const ps=".popover-header",ms=".popover-body",gs={...fs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},_s={...fs.DefaultType,content:"(null|string|element|function)"};class bs extends fs{static get Default(){return gs}static get DefaultType(){return _s}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[ps]:this._getTitle(),[ms]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=bs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Qt(bs);const vs=".bs.scrollspy",ys=`activate${vs}`,ws=`click${vs}`,Es=`load${vs}.data-api`,As="active",Ts="[href]",Cs=".nav-link",Os=`${Cs}, .nav-item > ${Cs}, .list-group-item`,xs={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},ks={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Ls extends ve{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return xs}static get DefaultType(){return ks}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Ht(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(fe.off(this._config.target,ws),fe.on(this._config.target,ws,Ts,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=we.find(Ts,this._config.target);for(const e of t){if(!e.hash||Wt(e))continue;const t=we.findOne(decodeURI(e.hash),this._element);Bt(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(As),this._activateParents(t),fe.trigger(this._element,ys,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))we.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(As);else for(const e of we.parents(t,".nav, .list-group"))for(const t of we.prev(e,Os))t.classList.add(As)}_clearActiveClass(t){t.classList.remove(As);const e=we.find(`${Ts}.${As}`,t);for(const t of e)t.classList.remove(As)}static jQueryInterface(t){return this.each((function(){const e=Ls.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}fe.on(window,Es,(()=>{for(const t of we.find('[data-bs-spy="scroll"]'))Ls.getOrCreateInstance(t)})),Qt(Ls);const Ss=".bs.tab",Ds=`hide${Ss}`,$s=`hidden${Ss}`,Is=`show${Ss}`,Ns=`shown${Ss}`,Ps=`click${Ss}`,Ms=`keydown${Ss}`,js=`load${Ss}`,Fs="ArrowLeft",Hs="ArrowRight",Bs="ArrowUp",Ws="ArrowDown",zs="Home",Rs="End",qs="active",Vs="fade",Ys="show",Ks=".dropdown-toggle",Qs=`:not(${Ks})`,Xs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Us=`.nav-link${Qs}, .list-group-item${Qs}, [role="tab"]${Qs}, ${Xs}`,Gs=`.${qs}[data-bs-toggle="tab"], .${qs}[data-bs-toggle="pill"], .${qs}[data-bs-toggle="list"]`;class Js extends ve{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),fe.on(this._element,Ms,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?fe.trigger(e,Ds,{relatedTarget:t}):null;fe.trigger(t,Is,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(qs),this._activate(we.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),fe.trigger(t,Ns,{relatedTarget:e})):t.classList.add(Ys)}),t,t.classList.contains(Vs)))}_deactivate(t,e){t&&(t.classList.remove(qs),t.blur(),this._deactivate(we.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),fe.trigger(t,$s,{relatedTarget:e})):t.classList.remove(Ys)}),t,t.classList.contains(Vs)))}_keydown(t){if(![Fs,Hs,Bs,Ws,zs,Rs].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!Wt(t)));let i;if([zs,Rs].includes(t.key))i=e[t.key===zs?0:e.length-1];else{const n=[Hs,Ws].includes(t.key);i=Gt(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Js.getOrCreateInstance(i).show())}_getChildren(){return we.find(Us,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=we.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=we.findOne(t,i);s&&s.classList.toggle(n,e)};n(Ks,qs),n(".dropdown-menu",Ys),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(qs)}_getInnerElement(t){return t.matches(Us)?t:we.findOne(Us,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Js.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}fe.on(document,Ps,Xs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Wt(this)||Js.getOrCreateInstance(this).show()})),fe.on(window,js,(()=>{for(const t of we.find(Gs))Js.getOrCreateInstance(t)})),Qt(Js);const Zs=".bs.toast",to=`mouseover${Zs}`,eo=`mouseout${Zs}`,io=`focusin${Zs}`,no=`focusout${Zs}`,so=`hide${Zs}`,oo=`hidden${Zs}`,ro=`show${Zs}`,ao=`shown${Zs}`,lo="hide",co="show",ho="showing",uo={animation:"boolean",autohide:"boolean",delay:"number"},fo={animation:!0,autohide:!0,delay:5e3};class po extends ve{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return fo}static get DefaultType(){return uo}static get NAME(){return"toast"}show(){fe.trigger(this._element,ro).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(lo),qt(this._element),this._element.classList.add(co,ho),this._queueCallback((()=>{this._element.classList.remove(ho),fe.trigger(this._element,ao),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(fe.trigger(this._element,so).defaultPrevented||(this._element.classList.add(ho),this._queueCallback((()=>{this._element.classList.add(lo),this._element.classList.remove(ho,co),fe.trigger(this._element,oo)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(co),super.dispose()}isShown(){return this._element.classList.contains(co)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){fe.on(this._element,to,(t=>this._onInteraction(t,!0))),fe.on(this._element,eo,(t=>this._onInteraction(t,!1))),fe.on(this._element,io,(t=>this._onInteraction(t,!0))),fe.on(this._element,no,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=po.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}function mo(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t)}Ee(po),Qt(po),mo((function(){[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new fs(t,{delay:{show:500,hide:100}})}))})),mo((function(){document.getElementById("pst-back-to-top").addEventListener("click",(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0}))})),mo((function(){var t=document.getElementById("pst-back-to-top"),e=document.getElementsByClassName("bd-header")[0].getBoundingClientRect();window.addEventListener("scroll",(function(){this.oldScroll>this.scrollY&&this.scrollY>e.bottom?t.style.display="block":t.style.display="none",this.oldScroll=this.scrollY}))})),window.bootstrap=i})(); +//# sourceMappingURL=bootstrap.js.map \ No newline at end of file diff --git a/_static/scripts/bootstrap.js.LICENSE.txt b/_static/scripts/bootstrap.js.LICENSE.txt new file mode 100644 index 0000000..28755c2 --- /dev/null +++ b/_static/scripts/bootstrap.js.LICENSE.txt @@ -0,0 +1,5 @@ +/*! + * Bootstrap v5.3.3 (https://getbootstrap.com/) + * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ diff --git a/_static/scripts/bootstrap.js.map b/_static/scripts/bootstrap.js.map new file mode 100644 index 0000000..e9e8158 --- /dev/null +++ b/_static/scripts/bootstrap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/bootstrap.js","mappings":"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","sources":["webpack://pydata_sphinx_theme/webpack/bootstrap","webpack://pydata_sphinx_theme/webpack/runtime/define property getters","webpack://pydata_sphinx_theme/webpack/runtime/hasOwnProperty shorthand","webpack://pydata_sphinx_theme/webpack/runtime/make namespace object","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/enums.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/math.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/within.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/createPopper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://pydata_sphinx_theme/./node_modules/bootstrap/dist/js/bootstrap.esm.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/bootstrap.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/*!\n * Bootstrap v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n const instanceMap = elementMap.get(element);\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n instanceMap.set(key, instance);\n },\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n return null;\n },\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key);\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend';\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n if (selector && window.CSS && window.CSS.escape) {\n // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`);\n }\n return selector;\n};\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n return prefix;\n};\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n }\n\n // Get transition-duration of the element\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay);\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n return typeof object.nodeType !== 'undefined';\n};\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(parseSelector(object));\n }\n return null;\n};\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])');\n if (!closedDetails) {\n return elementIsVisible;\n }\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n if (summary === null) {\n return false;\n }\n }\n return elementIsVisible;\n};\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n if (element.classList.contains('disabled')) {\n return true;\n }\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n if (element instanceof ShadowRoot) {\n return element;\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null;\n }\n return findShadowRoot(element.parentNode);\n};\nconst noop = () => {};\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n return null;\n};\nconst DOMContentLoadedCallbacks = [];\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\nconst isRTL = () => document.documentElement.dir === 'rtl';\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n return typeof possibleCallback === 'function' ? possibleCallback(...args) : defaultValue;\n};\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement);\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n index += shouldGetNext ? 1 : -1;\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n return fn.apply(element, [event]);\n };\n}\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n hydrateObj(event, {\n delegateTarget: target\n });\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n return fn.apply(target, [event]);\n }\n }\n };\n}\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string';\n // TODO: tooltip passes `false` instead of selector, so we need to check\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n return [isDelegated, callable, typeEvent];\n}\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n\n // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n callable = wrapFunction(callable);\n }\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n if (!fn) {\n return;\n }\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n const evt = hydrateObj(new Event(event, {\n bubbles,\n cancelable: true\n }), args);\n if (defaultPrevented) {\n evt.preventDefault();\n }\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n return evt;\n }\n};\nfunction hydrateObj(obj, meta = {}) {\n for (const [key, value] of Object.entries(meta)) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n get() {\n return value;\n }\n });\n }\n }\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n if (value === 'false') {\n return false;\n }\n if (value === Number(value).toString()) {\n return Number(value);\n }\n if (value === '' || value === 'null') {\n return null;\n }\n if (typeof value !== 'string') {\n return value;\n }\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n return attributes;\n },\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n static get DefaultType() {\n return {};\n }\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n return config;\n }\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const [property, expectedTypes] of Object.entries(configTypes)) {\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst VERSION = '5.3.3';\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n if (!element) {\n return;\n }\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n }\n\n // Public\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n\n // Static\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n static get VERSION() {\n return VERSION;\n }\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href');\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null;\n};\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n return parents;\n },\n prev(element, selector) {\n let previous = element.previousElementSibling;\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n previous = previous.previousElementSibling;\n }\n return [];\n },\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n next = next.nextElementSibling;\n }\n return [];\n },\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n },\n getSelectorFromElement(element) {\n const selector = getSelector(element);\n if (selector) {\n return SelectorEngine.findOne(selector) ? selector : null;\n }\n return null;\n },\n getElementFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.findOne(selector) : null;\n },\n getMultipleElementsFromSelector(element) {\n const selector = getSelector(element);\n return selector ? SelectorEngine.find(selector) : [];\n }\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target);\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n }\n\n // Public\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n if (closeEvent.defaultPrevented) {\n return;\n }\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n }\n\n // Private\n _destroyElement() {\n this._element.remove();\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close');\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n }\n\n // Public\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n if (!element || !Swipe.isSupported()) {\n return;\n }\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n this._initEvents();\n }\n\n // Getters\n static get Default() {\n return Default$c;\n }\n static get DefaultType() {\n return DefaultType$c;\n }\n static get NAME() {\n return NAME$d;\n }\n\n // Public\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n }\n\n // Private\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n this._handleSwipe();\n execute(this._config.endCallback);\n }\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n if (!direction) {\n return;\n }\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n }\n\n // Static\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n this._addEventListeners();\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$b;\n }\n static get DefaultType() {\n return DefaultType$b;\n }\n static get NAME() {\n return NAME$c;\n }\n\n // Public\n next() {\n this._slide(ORDER_NEXT);\n }\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n prev() {\n this._slide(ORDER_PREV);\n }\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n this._clearInterval();\n }\n cycle() {\n this._clearInterval();\n this._updateInterval();\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n this.cycle();\n }\n to(index) {\n const items = this._getItems();\n if (index > items.length - 1 || index < 0) {\n return;\n }\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n const activeIndex = this._getItemIndex(this._getActive());\n if (activeIndex === index) {\n return;\n }\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n this._slide(order, items[index]);\n }\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause();\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n const direction = KEY_TO_DIRECTION[event.key];\n if (direction) {\n event.preventDefault();\n this._slide(this._directionToOrder(direction));\n }\n }\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n if (!element) {\n return;\n }\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n const activeElement = this._getActive();\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n if (nextElement === activeElement) {\n return;\n }\n const nextElementIndex = this._getItemIndex(nextElement);\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n const slideEvent = triggerEvent(EVENT_SLIDE);\n if (slideEvent.defaultPrevented) {\n return;\n }\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // TODO: change tests that use empty divs to avoid this check\n return;\n }\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n this._setActiveIndicatorElement(nextElementIndex);\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n if (isCycling) {\n this.cycle();\n }\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n if (slideIndex) {\n carousel.to(slideIndex);\n carousel._maybeEnableCycle();\n return;\n }\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n carousel._maybeEnableCycle();\n return;\n }\n carousel.prev();\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n for (const elem of toggleList) {\n const selector = SelectorEngine.getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n this._initializeChildren();\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n if (this._config.toggle) {\n this.toggle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$a;\n }\n static get DefaultType() {\n return DefaultType$a;\n }\n static get NAME() {\n return NAME$b;\n }\n\n // Public\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n let activeChildren = [];\n\n // find active children\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n const dimension = this._getDimension();\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.style[dimension] = 0;\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n this._queueCallback(complete, this._element, true);\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n if (startEvent.defaultPrevented) {\n return;\n }\n const dimension = this._getDimension();\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n for (const trigger of this._triggerArray) {\n const element = SelectorEngine.getElementFromSelector(trigger);\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n this._isTransitioning = true;\n const complete = () => {\n this._isTransitioning = false;\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n this._element.style[dimension] = '';\n this._queueCallback(complete, this._element, true);\n }\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n }\n\n // Private\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n config.parent = getElement(config.parent);\n return config;\n }\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n for (const element of children) {\n const selected = SelectorEngine.getElementFromSelector(element);\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n // remove children if greater depth\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n }\n\n // Static\n static jQueryInterface(config) {\n const _config = {};\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n }\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for
elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n }\n\n // Getters\n static get Default() {\n return Default$9;\n }\n static get DefaultType() {\n return DefaultType$9;\n }\n static get NAME() {\n return NAME$a;\n }\n\n // Public\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n if (showEvent.defaultPrevented) {\n return;\n }\n this._createPopper();\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n this._element.focus();\n this._element.setAttribute('aria-expanded', true);\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n this._element.classList.add(CLASS_NAME_SHOW$6);\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n const relatedTarget = {\n relatedTarget: this._element\n };\n this._completeHide(relatedTarget);\n }\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n super.dispose();\n }\n update() {\n this._inNavbar = this._detectNavbar();\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Private\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n if (this._popper) {\n this._popper.destroy();\n }\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n this._element.setAttribute('aria-expanded', 'false');\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n _getConfig(config) {\n config = super._getConfig(config);\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n return config;\n }\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n let referenceElement = this._element;\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n const popperConfig = this._getPopperConfig();\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n _getPlacement() {\n const parentDropdown = this._parent;\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n };\n\n // Disable Popper if we have a static display or Dropdown is in Navbar\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // TODO: v6 remove\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n if (!items.length) {\n return;\n }\n\n // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n if (!context || context._config.autoClose === false) {\n continue;\n }\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n }\n\n // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n const relatedTarget = {\n relatedTarget: context._element\n };\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n context._completeHide(relatedTarget);\n }\n }\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n if (isInput && !isEscapeEvent) {\n return;\n }\n event.preventDefault();\n\n // TODO: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.3/forms/input-group/\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n instance._selectMenuItem(event);\n return;\n }\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n};\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n }\n\n // Getters\n static get Default() {\n return Default$8;\n }\n static get DefaultType() {\n return DefaultType$8;\n }\n static get NAME() {\n return NAME$9;\n }\n\n // Public\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._append();\n const element = this._getElement();\n if (this._config.isAnimated) {\n reflow(element);\n }\n element.classList.add(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n dispose() {\n if (!this._isAppended) {\n return;\n }\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n this._element.remove();\n this._isAppended = false;\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n this._element = backdrop;\n }\n return this._element;\n }\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n _append() {\n if (this._isAppended) {\n return;\n }\n const element = this._getElement();\n this._config.rootElement.append(element);\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n};\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n }\n\n // Getters\n static get Default() {\n return Default$7;\n }\n static get DefaultType() {\n return DefaultType$7;\n }\n static get NAME() {\n return NAME$8;\n }\n\n // Public\n activate() {\n if (this._isActive) {\n return;\n }\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n deactivate() {\n if (!this._isActive) {\n return;\n }\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n }\n\n // Private\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n const elements = SelectorEngine.focusableChildren(trapElement);\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n }\n\n // Public\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n hide() {\n const width = this.getWidth();\n this._disableOverFlow();\n // give padding to element to balance the hidden scrollbar width\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n isOverflowing() {\n return this.getWidth() > 0;\n }\n\n // Private\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n this._element.style.overflow = 'hidden';\n }\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n this._saveInitialAttribute(element, styleProperty);\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty);\n // We only want to remove the property if the value is `null`; the value can also be zero\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$6;\n }\n static get DefaultType() {\n return DefaultType$6;\n }\n static get NAME() {\n return NAME$7;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._isTransitioning = true;\n this._scrollBar.hide();\n document.body.classList.add(CLASS_NAME_OPEN);\n this._adjustDialog();\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._isShown = false;\n this._isTransitioning = true;\n this._focustrap.deactivate();\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n dispose() {\n EventHandler.off(window, EVENT_KEY$4);\n EventHandler.off(this._dialog, EVENT_KEY$4);\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n handleUpdate() {\n this._adjustDialog();\n }\n\n // Private\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n this._element.style.display = 'block';\n this._element.removeAttribute('aria-hidden');\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n reflow(this._element);\n this._element.classList.add(CLASS_NAME_SHOW$4);\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n return;\n }\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n _hideModal() {\n this._element.style.display = 'none';\n this._element.setAttribute('aria-hidden', true);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n this._isTransitioning = false;\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n this._resetAdjustments();\n this._scrollBar.reset();\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n if (hideEvent.defaultPrevented) {\n return;\n }\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY;\n // return if the following background transition hasn't yet completed\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n this._element.classList.add(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n this._element.focus();\n }\n\n /**\n * The following methods are used to handle overflowing modals\n */\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const scrollbarWidth = this._scrollBar.getWidth();\n const isBodyOverflowing = scrollbarWidth > 0;\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n }\n\n // Static\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](relatedTarget);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n });\n\n // avoid conflict when clicking modal toggler while another one is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._addEventListeners();\n }\n\n // Getters\n static get Default() {\n return Default$5;\n }\n static get DefaultType() {\n return DefaultType$5;\n }\n static get NAME() {\n return NAME$6;\n }\n\n // Public\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n if (showEvent.defaultPrevented) {\n return;\n }\n this._isShown = true;\n this._backdrop.show();\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n this._element.setAttribute('aria-modal', true);\n this._element.setAttribute('role', 'dialog');\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n this._element.classList.add(CLASS_NAME_SHOW$3);\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n this._queueCallback(completeCallBack, this._element, true);\n }\n hide() {\n if (!this._isShown) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n if (hideEvent.defaultPrevented) {\n return;\n }\n this._focustrap.deactivate();\n this._element.blur();\n this._isShown = false;\n this._element.classList.add(CLASS_NAME_HIDING);\n this._backdrop.hide();\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n this._element.removeAttribute('aria-modal');\n this._element.removeAttribute('role');\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n this._queueCallback(completeCallback, this._element, true);\n }\n dispose() {\n this._backdrop.dispose();\n this._focustrap.deactivate();\n super.dispose();\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n this.hide();\n };\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n if (this._config.keyboard) {\n this.hide();\n return;\n }\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n });\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config](this);\n });\n }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = SelectorEngine.getElementFromSelector(this);\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n if (isDisabled(this)) {\n return;\n }\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n });\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n dd: [],\n div: [],\n dl: [],\n dt: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\n// js-docs-end allow-list\n\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\n// eslint-disable-next-line unicorn/better-regex\nconst SAFE_URL_PATTERN = /^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i;\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue));\n }\n return true;\n }\n\n // Check if a regular expression validates the attribute.\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n }\n\n // Getters\n static get Default() {\n return Default$4;\n }\n static get DefaultType() {\n return DefaultType$4;\n }\n static get NAME() {\n return NAME$5;\n }\n\n // Public\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n hasContent() {\n return this.getContent().length > 0;\n }\n changeContent(content) {\n this._checkContent(content);\n this._config.content = {\n ...this._config.content,\n ...content\n };\n return this;\n }\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n const template = templateWrapper.children[0];\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n return template;\n }\n\n // Private\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n this._checkContent(config.content);\n }\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n if (!templateElement) {\n return;\n }\n content = this._resolvePossibleFunction(content);\n if (!content) {\n templateElement.remove();\n return;\n }\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n return;\n }\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n templateElement.textContent = content;\n }\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this]);\n }\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n templateElement.textContent = element.textContent;\n }\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 6],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' + '
' + '
' + '
',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n super(element, config);\n\n // Private\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null;\n\n // Protected\n this.tip = null;\n this._setListeners();\n if (!this._config.selector) {\n this._fixTitle();\n }\n }\n\n // Getters\n static get Default() {\n return Default$3;\n }\n static get DefaultType() {\n return DefaultType$3;\n }\n static get NAME() {\n return NAME$4;\n }\n\n // Public\n enable() {\n this._isEnabled = true;\n }\n disable() {\n this._isEnabled = false;\n }\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n this._activeTrigger.click = !this._activeTrigger.click;\n if (this._isShown()) {\n this._leave();\n return;\n }\n this._enter();\n }\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n this._disposePopper();\n super.dispose();\n }\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n }\n\n // TODO: v6 remove this or make it optional\n this._disposePopper();\n const tip = this._getTipElement();\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n const {\n container\n } = this._config;\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n if (this._isHovered === false) {\n this._leave();\n }\n this._isHovered = false;\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n hide() {\n if (!this._isShown()) {\n return;\n }\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n if (hideEvent.defaultPrevented) {\n return;\n }\n const tip = this._getTipElement();\n tip.classList.remove(CLASS_NAME_SHOW$2);\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n if (!this._isHovered) {\n this._disposePopper();\n }\n this._element.removeAttribute('aria-describedby');\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n update() {\n if (this._popper) {\n this._popper.update();\n }\n }\n\n // Protected\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n return this.tip;\n }\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml();\n\n // TODO: remove this check in v6\n if (!tip) {\n return null;\n }\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n // TODO: v6 the following can be achieved with CSS only\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n return tip;\n }\n setContent(content) {\n this._newContent = content;\n if (this._isShown()) {\n this._disposePopper();\n this.show();\n }\n }\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({\n ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n return this._templateFactory;\n }\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n }\n\n // Private\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n _createPopper(tip) {\n const placement = execute(this._config.placement, [this, tip, this._element]);\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n _getOffset() {\n const {\n offset\n } = this._config;\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n return offset;\n }\n _resolvePossibleFunction(arg) {\n return execute(arg, [this._element]);\n }\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return {\n ...defaultBsPopperConfig,\n ...execute(this._config.popperConfig, [defaultBsPopperConfig])\n };\n }\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n context._leave();\n });\n }\n }\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n _fixTitle() {\n const title = this._element.getAttribute('title');\n if (!title) {\n return;\n }\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n this._element.removeAttribute('title');\n }\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n this._isHovered = true;\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n this._isHovered = false;\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n config = {\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n this._typeCheckConfig(config);\n return config;\n }\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n return config;\n }\n _getDelegateConfig() {\n const config = {};\n for (const [key, value] of Object.entries(this._config)) {\n if (this.constructor.Default[key] !== value) {\n config[key] = value;\n }\n }\n config.selector = false;\n config.trigger = 'manual';\n\n // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n return config;\n }\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n this._popper = null;\n }\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = {\n ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' + '
' + '

' + '
' + '
',\n trigger: 'click'\n};\nconst DefaultType$2 = {\n ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n static get DefaultType() {\n return DefaultType$2;\n }\n static get NAME() {\n return NAME$3;\n }\n\n // Overrides\n _isWithContent() {\n return this._getTitle() || this._getContent();\n }\n\n // Private\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n }\n\n // Static\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n if (typeof config !== 'string') {\n return;\n }\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n data[config]();\n });\n }\n}\n\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n\n // this._element is the observablesContainer and config.target the menu links wrapper\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n }\n\n // Getters\n static get Default() {\n return Default$1;\n }\n static get DefaultType() {\n return DefaultType$1;\n }\n static get NAME() {\n return NAME$2;\n }\n\n // Public\n refresh() {\n this._initializeTargetsAndObservables();\n this._maybeEnableSmoothScroll();\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n dispose() {\n this._observer.disconnect();\n super.dispose();\n }\n\n // Private\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body;\n\n // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n return config;\n }\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n }\n\n // unregister any previous listeners\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n }\n\n // Chrome 60 doesn't support `scrollTo`\n root.scrollTop = height;\n }\n });\n }\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n }\n\n // The logic of selection\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n this._process(targetElement(entry));\n };\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n this._clearActiveClass(targetElement(entry));\n continue;\n }\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop;\n // if we are scrolling down, pick the bigger offsetTop\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry);\n // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n if (!parentScrollTop) {\n return;\n }\n continue;\n }\n\n // if we are scrolling up, pick the smallest offsetTop\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n const observableSection = SelectorEngine.findOne(decodeURI(anchor.hash), this._element);\n\n // ensure that the observableSection exists & is visible\n if (isVisible(observableSection)) {\n this._targetLinks.set(decodeURI(anchor.hash), anchor);\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n this._clearActiveClass(this._config.target);\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n this._activateParents(target);\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both